纳瓦尔探员

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如何让用户决定按钮的特定颜色   java Tomcat jdbc连接池,使用后不释放连接   Java泛型类可分配性   javaactivemq&如何在路由路径中创建依赖关系   java为什么没有接收到操作用户?   windows如何启动使用cmd中预编译DLL的java swing应用程序?   java JFreechart实时组合图,在未收到数据点的情况下呈现step子图表的上一个值   java排序自定义数组列表   java如何从HSLFSlideShow获取文本格式信息   java不能将片段和活动登录结合起来   java是下载位于远程存储服务中的文件的有效方法   java AS:将点数交给GameOverActivity   java如何在textView中将焦点放在新生成文本的顶部?   HashMap中特定于Java存储的类类型   java使用不同的变量类型进行计算   if语句中的Java poll()   检查匹配括号的java字符堆栈没有错误,但也没有任何作用   java Netbeans不断将应用程序部署到错误的服务器