meta 数据和用于测试的 UUID

https://blueprints.launchpad.net/tempest/+spec/meta

本规范的目的是为附加到 tempest 将要使用的测试的元数据定义一个标准,例如通用唯一标识符 (UUID)。此规范应适用于要驻留在 tempest 仓库中的测试,以及最终将驻留在各自仓库中的测试。

问题描述

虽然有很多理由希望将元数据附加到测试。导致此规范的一个抱怨是缺乏测试的唯一标识符。如果无法跟踪特定测试随时间的变化,长期数据就意义不大,跟踪进度也更加复杂。

提议的变更

每个测试都将有一个装饰器,该装饰器将接受包含 uuid 和 meta 作为关键字参数的必需参数。这种开放式的元数据方法应确保未来的灵活性。例如,允许 Defcore 直接使用能力数据标记测试。

此更改还需要开发一个工具,用于为所有现有测试插入带有 uuid 内容的装饰器。该工具还可以用作 gate 中的唯一性验证和缺失 uuid 检查器。

替代方案

还建议元数据可以写入可解析的文档字符串。

实现

此更改需要开发以下组件。

  • 唯一性测试器 / 检测缺失元数据 / 插入元数据

该工具将检查所有 test_*py 文件中所有 test_* 方法的唯一 UUID 装饰器。这在一趟扫描中完成,以构建一个未装饰的测试列表,该列表可以用作 qa 管道中的 gate 检查。从该列表中,另一个工具将生成唯一的 UUID 元数据并将其插入到所有未装饰的测试中。

示例

meta_decorator_check.py /path/to/test(s)
  • 扫描路径中的目录/文件,解析缺少装饰器的测试方法或查找具有重复 UUID 的测试。

使用相同的工具,您可以添加 –insert-missing 参数。这将生成并插入缺失的装饰器。

示例

meta_decorator_check.py --insert-missing /path/to/test(s)
  • 装饰器

UUID 和 meta 装饰器的格式如下

'@test.meta(uuid='12345678-1234-5678-1234-567812345678',
            otherdata='another value')

为了在 sphinx autodoc 生成期间追加到文档字符串

uuid: '12345678-1234-5678-1234-567812345678'
otherdata :'another value'

为了确保将数据传递给 subunit 输出,我们添加了 testtools attr

uuid='12345678-1234-5678-1234-567812345678'
otherdata='another value'
  • hacking

需要添加新的 hacking 代码以确保为所有测试设置装饰器。首先,需要在 tempest/hacking/checks.py 中添加一条新规则。

all_tests_need_uuid_metadata

“””检查测试是否具有唯一的 UUID 元数据

所有测试都应具有以下形式的元数据中的唯一 UUID 标识符:@test.meta(uuid=’12345678-1234-5678-1234-567812345678’) 以提供稳定的参考点。

T108”””

Tempest 编码指南将更新以反映新的 hacking 规则。

负责人

主要负责人

David Lenwell (davidlenwell, dlenwell@gmail.com) Chris Hoge (hogepodge, chris@openstack.org) Sergey Slipushenko (自动化测试标记)

里程碑

完成目标里程碑

K-3

工作项

  • 创建装饰器

  • 创建 generate_meta / 唯一性测试工具

  • 使用 generate_meta 工具为所有现有测试生成默认元数据。

  • 实施 gate 测试

  • 使用新的 hacking 规则更新 tempest 编码指南

依赖项

  • 没有已知的外部依赖项。