Tempest Run Command

https://blueprints.launchpad.net/tempest/+spec/tempest-run-cmd

描述一个特定领域的 tempest run 命令,作为运行 Tempest 测试的主要入口点。

问题描述

Tempest 的使用场景非常广泛,从 OpenStack gate 测试到在多个环境和配置中测试现有的公共和私有云。这些用户场景中的每一个都有其自身的要求和挑战。

目前,tempest 实际上并不控制自身的执行。相反,它依赖于外部测试运行器,没有为 Tempest 的使用者提供一致的体验。用户也常常认为 tempest 控制着自身的执行。此外,由于这些测试运行器与 Tempest 没有任何特定关联,任何特定领域的项目(例如配置)都必须通过 shell 脚本或其他方式进行外部配置。

提议的变更

由于已经有了一个创建 Tempest 特定命令行工具集的努力,本规范进一步定义了一个 tempest run 命令。本规范解决了以下问题

  • 提供一个灵活的运行器,支持多种测试发现和执行方法

  • 促进在多个环境和配置中轻松配置和执行 Tempest

  • 直接构建在 testrepository 之上,以便利用当前和未来的 testrepository 功能

本规范概述了 run 命令的初始实现步骤和基本功能。预计 run 的功能会随着时间的推移而增长,以适应 tempest 未来的需求。

该命令的实现可以分解为三个组件

  • 将 ostestr 中的选择正则表达式逻辑转换为可重用的模块

  • 用户将与之交互的命令行界面

  • 一个客户端,通过直接与 testrepository 交互来驱动测试的执行

拟议的测试运行器的逻辑流程如下

  • 解析任何命令行参数。

  • 根据输入设置 Tempest 必要的环境变量。

  • 使用 ostestr 正则表达式构建器确定要运行的测试集

  • 使用 testr 特定的参数调用 testrepository

  • 接收测试执行结果

  • 如果适用,对测试结果执行任何后处理。

命令行界面

拟议的命令行参数列表如下

测试执行

--parallel
--serial
--workers <workers>
--list

测试选择和发现

--tags <list of tag name>
--services <list of services>

--include <regex>
--whitelist-file <file name>
--exclude <regex>
--blacklist-file <file name>
  Sample regex file:

      (^tempest\.api) # Comments about this regex
      tempest.scenario.test_server_basic_ops # Matches this test explicitly

最常用正则表达式的别名

--smoke
--all

默认情况下,正则表达式将运行 tox 中完整的 jobs 的等效项。(运行所有内容,但不包括标记为 slow 的测试)

输出

--subunit
--html <file name>

默认情况下,控制台输出将来自 subunit-trace

Tempest 配置

--config <config file>

Tempest 运行具有特定领域知识的一部分是,它了解 Tempest 工作区并在其中运行。但是,工作区并不是实际运行 tempest 的要求,并且存在将 tempest 配置文件作为单独文件的情况。(以前只能通过环境变量指定)此选项提供了一个更易于使用的 CLI 位置来执行此操作。拥有 tempest 自己的运行器的一个关键优势是,它提供了另一个将此类信息传递到 tempest 的位置,而我们以前只能通过环境变量或配置文件来执行此操作。

Testrepository 集成

本规范的目标之一是开发一个从 Tempest 出发的入口点,直接与 testrepository 集成,而不是通过子进程调用 testr。这种集成是一种更强大的设计,可以更容易地将 testrepository 中的新功能传播到 Tempest 运行器。反之,随着 Tempest 运行器的发展,任何测试运行器都可能有用的功能可以推送到 testrepository 的堆栈中。

tempest run 命令与 testrepository 的计划集成点是 testr 的 CLI UI。但是,这只是其中一种可能的方法。最终解决方案可能会在开发过程中演变。

项目

  • openstack/tempest

实现

  • 将正则表达式构建逻辑从 ostestr 提取到外部可消耗的模块

  • 使用 cliff 在 Tempest 中创建一个 tempest run 入口点

  • 处理 Tempest 特定选项的设置,例如 Tempest 配置

  • 使用 ostestr 代码片段以及提供的过滤选项(正则表达式、标签等)实现测试选择逻辑

负责人

主要负责人:- mtreinish - slowrie

里程碑

完成目标里程碑

Newton-2

参考资料

以前的实现和规范