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 编码指南
依赖项¶
没有已知的外部依赖项。