跳转到主要内容

Narval代理

项目描述

摘要

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

  • narval立方体,它实现了模式和一些Web UI,用于创建、配置和运行测试活动,以及

  • narval机器人,它等待执行工作。它通过轮询CubicWeb应用程序以获取要运行的新任务(在narval术语中称为“计划”),并在有任务等待执行时执行它们。

Narval机器人通过执行HTTP(S)请求与Web应用程序通信。

配方和计划

立方体的模式定义了2个实体

配方:

表示要执行的Python脚本来运行测试,

计划:

表示配方的执行;它有一个工作流程(以下状态:“准备就绪”,“运行中”,“完成”,“错误”,“被终止”);当执行时,配方的执行日志文件(stdout和stderr)通过执行日志关系附加到计划

配方的执行过程

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

在Web UI中,这可以通过在配方主视图中的“开始计划”按钮来完成。这将在状态为“准备就绪”的计划实体中创建一个新的计划

然后,当narval机器人请求应用程序获取等待的工作(即处于“准备就绪”工作流程状态的计划)时,它最终获得计划的eid。

然后,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 […])以传递给< cite>run-plan命令。

run-plan narval 命令检索 Plan(要执行的 Python 代码和一些执行选项)的参数,然后

  • 触发 start 工作流转换(通过 HTTP 请求),

  • 执行 Recipe Python 脚本(通过 execfile 调用);脚本在定义一个变量的全局(和局部)字典中执行,该变量为 plan,它引用具有以下属性的 Python 对象

    • cnxh:一个 HTTP 连接处理器,允许从执行脚本向 Web 应用程序发送请求,

    • plandata:一个字典,包含执行的 Plan 参数,

    • options:一个包含 Plan 所定义的所有选项的字典,

    • name:要执行 Recipe 的名称,

    • script:包含要运行的 Python 脚本字符串。

    警告:Python 脚本是在 run-plan Python 进程的上下文中执行的。

  • 如果执行顺利(没有崩溃),则触发

    • end 转换,

    • 如果执行超出了某些资源限制(内存、执行时间),则触发 kill

    • 如果抛出了未捕获的异常,则触发 fail

narval run-plan 命令返回时,bot 会检查返回码,检索进程的 stdoutstderr,并将它们作为 Planexecution_log 上传,这样用户就可以访问完整的执行日志(打印语句、日志消息等)。

插件

用户可以编写插件,当通过 narval run-plan 执行时,可以从 recipes 中导入。正常方式是编写一个 cubicweb 立方体,在其中添加一个 _narval 目录,您可以在其中添加 Python 模块和包。当从源目录运行时,每个可用的立方体的 _narval 目录将添加到 narval 命令的 PYTHONPATH 中。

请参考 apycot 立方体作为示例。

项目详情


下载文件

下载适用于您的平台的文件。如果您不确定选择哪个,请了解有关 安装包 的更多信息。

源分布

cubicweb-narval-4.2.3.tar.gz (39.5 kB 查看哈希

上传时间

支持者

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面