Nova/CoverageExtension
目录
注意:覆盖率扩展在Icehouse版本中已从Nova中移除。这是因为在使用eventlet运行覆盖率时存在问题,导致结果不太有用。
Nova 覆盖率扩展
Nova 覆盖率扩展增加了从外部API调用启用 Ned Batchelder 的 coverage 模块 的支持。该模块目前已有一个 nose 插件,用于 Jenkins 执行的周期性 nova-coverage 运行。预期的目标是使外部集成测试套件(如 tempest)能够为其使用 nova 生成覆盖率报告(参见:https://blueprints.launchpad.net/nova/+spec/coverage-extension 和 https://blueprints.launchpad.net/tempest/+spec/tempest-coverage-reporting)。这将使 tempest 能够轻松识别其测试中正在执行的 nova 部分,并利用这些信息添加更多测试以确保覆盖更多的 nova 代码。
用法
预期使用场景
目前,覆盖率扩展仅在所有 nova 服务运行在同一台机器上时才能工作。这是由于 eventlet 后门(用于服务间控制 coverage 模块)默认绑定到 127.0.0.1 的限制。这对于使用 tempest 的 devstack 来说工作正常,只要系统的主机名解析为 127.0.0.1。要使用 eventlet 后门,您仍然需要在 nova.conf 中设置后门端口。您可以通过使用 0 作为端口来使用一个 conf 文件。这将为每个服务随机分配一个端口。
启动覆盖率
在所有 OpenStack 服务上启动覆盖率是通过 API 操作 'start' 来执行的。'start' 接受一个可选字段 'combine',它启用组合报告。如果在 API 请求中将 'combine' 设置为 True,那么在生成覆盖率报告时,它将输出一个包含每个 nova 服务组合报告的单个文件。另一种情况是为每个服务生成一个报告文件。
生成报告
在测试完成后生成报告是通过使用 API 操作 'report' 来完成的。API 请求具有强制字段 'file',它是一个用于生成报告的文件名。如果 'start coverage' 中设置了 'combine',则输出文件将使用此文件名;否则,对于每个服务,'. service_name' 将自动附加到文件名。
报告操作还有一个可选字段 'xml',用于指定生成报告的输出类型。coverage 模块允许 3 种类型的报告输出:人类可读文本、xml 和 html。覆盖率扩展支持输出文本或 xml 报告。如果将 'xml' 字段设置为 True,则生成的报告(或多个报告)将采用 xml 格式,否则输出将采用人类可读文本格式。
停止覆盖率
停止覆盖率仅在您不想使用报告操作提供的默认报告生成时才使用。发送停止覆盖率操作将停止覆盖率报告并将生成的数据文件保存到临时目录。这使得可以直接使用 coverage.py 以不同的格式生成自己的报告。与报告一样,此步骤要成功,覆盖率必须正在运行。
如果您正在使用覆盖率扩展 API 生成报告,则无需手动发送“停止”操作,“报告”操作会自动运行此步骤。
当前支持使用后门进行覆盖率的服务
- 计算
- API
- 网络
- Conductor
- Cert
- Console
- Console Auth
- 调度器