如何为 OpenStack 创建 Tempest 插件

还没有读者喜欢这个。
Blue clouds, OpenStack

Opensource.com

Tempest 是 OpenStack 官方测试套件。它的目的是在 OpenStack 集群中运行 OpenStack API 验证测试,以了解我们云的健康状况。它也用作验证提交到 OpenStack 核心项目的关卡——它将避免在合并更改时破坏它们。有关 Tempest 的更多信息,请参阅开发者文档源代码仓库

由于社区中提出的新功能,我们可以为 Tempest 的代码创建独立的插件,以在 OpenStack 上运行自定义测试用例。这种方法称为 Tempest 测试插件接口

通过这个接口,任何项目都可以运行一组外部测试作为 Tempest 运行的一部分。现在我们只需要担心创建插件来将我们的测试用例组合在一起,我们可以忘记将自定义测试用例集成到 Tempest 代码结构中的复杂性。这意味着更多的独立性和灵活性!

插件结构

Tempest 插件基本上是一个 Python 包,其中包含您的自定义测试用例。它需要安装在 Tempest 所在的本地或虚拟环境 (venv) 中。当 Tempest 运行时,它将发现所有已安装的插件,而无需您执行任何额外的操作。

目录结构

setup.cfg
setup.py
README.rst
plugin_dir/
	__init__.py
 	config.py
  	plugin.py
 	tests/
    		__init__.py
    		api/
      			__init__.py
      			base.py
     	 		test_hello_world.py
    		scenario/
      			__init__.py
  • setup.cfg: 包含包元数据。例如:名称、版本、摘要、作者等。有关完整列表,请参阅:元数据文档

    在此文件中,最重要的是指定入口点,即项目主类的位置,这将允许 Tempest 找到插件。

    考虑以下示例,其中 hello-world-tempest-plugin 是插件的名称,hello_world_tempest_plugin 是文件结构中插件文件夹的名称,MyPlugin 是主类名称。因此,入口点将是

    [entry_points]
    tempest.test_plugins =
        hello-world-tempest-plugin = hello_world_tempest_plugin.plugin:MyPlugin
          
  • setup.py: 全局插件的要求在此处指定。在这种情况下,只需要 pbr。
  • README.rst 关于项目的信息。
  • plugin_dir: 主文件夹,通常具有插件的名称。示例:hello_world_tempest_plugin。
    • config.py: 包含插件中测试所需的配置变量。
    • plugin.py: 插件的主类,入口点,其中包含 Tempest 运行插件所需的所有配置。您只需实现 抽象类中的方法。
    • tests: 必须包含所有测试的文件夹。
      • api: 所有与 API 测试相关的测试用例。
      • scenario: 所有与场景测试相关的测试用例。

您可以查看 hello-world-tempest-plugin 作为构建您自己的插件的参考。此存储库是一个基本插件,它运行一个 hello world 测试用例。

在接下来的步骤中,我将在命令中使用该插件作为示例。

安装

当 Tempest 运行时,它将自动发现已安装的插件。因此,我们只需要安装包含插件的 Python 包。

升级 pip 和 setuptools

$ pip install -U pip

从插件根目录安装软件包

$ cd hello-world-tempest-plugin
$ sudo pip install -e .

使用虚拟环境

如果您在虚拟环境中运行 Tempest,则必须确保包含插件的 Python 包也安装在 venv 中。

例如,在 Tempest (通过 Rally) venv 中安装插件

$ . ~/.rally/tempest/for-deployment-x-x-x-x-x/.venv/bin/activate
$ ~/.rally/tempest/for-deployment-x-x-x-x-x/.venv/bin/pip install -e ~/hello-world-tempest-plugin/

验证插件是否正确安装

$ ~/.rally/tempest/for-deployment-x-x-x-x-x/.venv/bin/pip list

如何运行测试

  1. 要验证 Tempest 是否发现了插件中的测试,您可以运行

    $ testr list-tests | grep hello_world_tempest_plugin

    此命令将显示插件中测试用例的完整列表。

  2. 您可以通过名称或运行用作装饰器的集合名称来运行测试用例,通过 testr (Tempest) 或 Rally

    $ testr run hello_world_tempest_plugin.tests.api.test_hello_world.TestHelloWorld.test_hello_world
    $ testr run --subunit smoke | subunit-2to1 | ./tools/colorizer.py
    $ rally verify start --set smoke

资源

OpenStack 峰会
演讲者访谈

本文是为期四天的 OpenStack 云软件开发者、用户和管理员会议 OpenStack 峰会东京站演讲者访谈系列的一部分.

User profile image.
Marcela Bonell 是一名在英特尔从事与云计算相关的开源项目的软件工程师。在 Twitter 上关注她 @mbonell

评论已关闭。

Creative Commons License本作品根据 Creative Commons Attribution-Share Alike 4.0 International License 获得许可。
© . All rights reserved.