纳瓦尔探员
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会检查 返回代码,检索进程的stdout和stderr,然后 将它们作为计划的执行日志上载,以便用户可以 访问完整的执行日志(打印语句、日志消息, 等等)。
插件
用户可以编写插件,当 由narval run-plan执行。通常的方法是写一个立方体web 在其中添加_narval目录以添加python的多维数据集 模块和包。从源目录运行时,_narval 每个可用多维数据集的目录都将添加到 narval命令。
第页请以apycot多维数据集为例。