纳瓦尔探员

cubicweb-narval的Python项目详细描述


摘要

narval是一个基于cubicweb的框架,用于运行自动化测试。它 由两部分组成:

  • 实现模式的narval多维数据集和一些web ui 创建、配置和运行测试活动,然后
  • 等待作业执行的narval机器人。它调查 用于运行新任务的cubicweb应用程序(在narval的 行话),并在一些人等待执行时执行。

narval bot通过执行http(s)与web应用程序通信 请求。

配方和计划

多维数据集的架构定义了两个实体:

Recipe:represents a Python script to be executed to run the tests,
Plan:represents the execution of a Recipe; it has a workflow (with the following states: ‘ready’, ‘running’, ‘done’, ‘error’, ‘killed’); when executed, the execution log file (stdout and stderr) of the recipe is attached to the Plan (via the execution_log relation).

配方的执行过程

为了运行配方,必须创建一个计划(执行 计划)。

在web用户界面中,这可以通过食谱上的开始计划按钮来完成 意见这将在 就绪状态。

然后,当narval机器人请求应用程序等待作业时 (即在工作流状态下,它最终得到 计划

然后,narval守护进程生成一个新进程来管理 计划在一个单独的过程中;执行的命令类似于:

narval run-plan narval https://webapp.com/3071/ --uid narval --threads 1 --max-reprieve 1min --log-threshold DEBUG

其中3071是要执行的计划的EID。选项 计划的属性 “key1=value1nkey2=value2n[…]”)转换为命令行 要传递给的参数(–key1 value1–key2 value2[…]运行计划命令。

运行计划narval命令检索计划的参数 (要执行的python代码和一些执行选项),然后:

  • 它启动工作流转换(通过http请求),

  • 它执行配方python脚本(通过execfile call);脚本使用全局(和局部)执行 定义一个变量的字典,该变量引用python 具有下列属性的对象:

    • cnxh:允许向 执行脚本中的web应用程序,
    • plandata:保存已执行的计划参数的字典,
    • 选项:包含计划的所有已定义选项的字典
    • name:要执行的配方的名称,
    • 脚本:要运行python脚本的字符串。

    警告:python脚本在 运行计划python进程。

  • 它触发转换:

    • 结束如果执行顺利(没有崩溃),
    • 如果执行超过某些资源限制(内存、执行时间),则终止
    • 如果引发了某些未修补的异常,则失败。

narval run planshell命令返回时,bot会检查 返回代码,检索进程的stdoutstderr,然后 将它们作为计划的执行日志上载,以便用户可以 访问完整的执行日志(打印语句、日志消息, 等等)。

插件

用户可以编写插件,当 由narval run-plan执行。通常的方法是写一个立方体web 在其中添加_narval目录以添加python的多维数据集 模块和包。从源目录运行时,_narval 每个可用多维数据集的目录都将添加到 narval命令。

第页请以apycot多维数据集为例。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java是否可以创建一个正则表达式来查找与模式不匹配的字符串?   使用“debugUnreturnedConnectionStackTraces”进行java调试连接丢失   java如何在openLDAP中禁用/启用用户帐户?   java无法从jsoup api获取某些类   java无法从APK提取XML文件   如何在linux命令行中替换多个文件中的字符串   java学生班。如何根据单位输入打印成绩?   java有没有办法将Struts配置为绑定null而不是空字符串?   python使用OpenCV[Java]检测简单几何形状   java文件。isFile()和文件。isDirectory()返回false   java Fetch有条件地加入hibernate,还是将实体设计更改为子实体上的条件Fetch?   java lombok@Data generated setter是否对成员对象(如映射)执行深度复制?   java如何使JLabel从下一行开始   java Gradle依赖解决了配置文件的问题