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 会检查返回码,检索进程的 stdout 和 stderr,并将它们作为 Plan 的 execution_log 上传,这样用户就可以访问完整的执行日志(打印语句、日志消息等)。
插件
用户可以编写插件,当通过 narval run-plan 执行时,可以从 recipes 中导入。正常方式是编写一个 cubicweb 立方体,在其中添加一个 _narval 目录,您可以在其中添加 Python 模块和包。当从源目录运行时,每个可用的立方体的 _narval 目录将添加到 narval 命令的 PYTHONPATH 中。
请参考 apycot 立方体作为示例。
项目详情
cubicweb-narval-4.2.3.tar.gz 的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 84ea383f7c01cd22e57366a9f6b3dc695e391386a93737290bf2757893080826 |
|
MD5 | 61b90b92d996ac56a8e2acfdef17a3e5 |
|
BLAKE2b-256 | df28e54692679bc14962de6ab80e44e36b9e5752765559a67d6f9e1ae8e38bd6 |