Cinder 脚本的单元测试用例

https://blueprints.launchpad.net/cinder/+spec/unit-test-cases-for-cinder-scripts

目前,没有单元测试来测试 bin/cinder-{all, api, backup, manage, rtstool, scheduler, volume}。为这些脚本添加单元测试可以帮助防止类似 https://review.openstack.org/#/c/79791/ 的问题,并提高测试覆盖率。

问题描述

没有单元测试来测试 bin/cinder-{all, api, backup, manage, rtstool, scheduler, volume}。为这些脚本添加单元测试可以帮助防止类似 https://review.openstack.org/#/c/79791/ 的问题,其中导入了一个不存在的模块。此外,它提高了每个 cinder 脚本的测试覆盖率。

用例

提议的变更

为了为 bin/cinder-{all, api, backup, manage, rtstool, scheduler, volume} 创建单元测试,我们需要将它们移动到 cinder/cmd 目录下,并使用 pbr 设置正确的控制台脚本,这些脚本将调用 cinder/cmd 下每个脚本的相应主函数。这将允许我们从 cinder.cmd 导入并单独测试每个命令。

nova 已经将它们的脚本放在 nova/cmd 下,并使用 pbr 设置正确的控制台脚本。glance 也是如此,它具有类似于所提议的单元测试,例如 glance/tests/unit/api/test_cmd.py。

备选方案

可以保持现有的设置不变,不进行任何修改。但是,这种替代方案可能会引入更多类似 https://review.openstack.org/#/c/79791/ 的问题到 cinder 代码中。

数据模型影响

REST API 影响

安全影响

通知影响

其他最终用户影响

性能影响

其他部署者影响

开发人员影响

实现

负责人

主要负责人

thangp

其他贡献者

eharney

工作项

  • 将 bin/cinder-{all, api, backup, manage, rtstool, scheduler, volume} 移动到 cinder/cmd/cinder_{all, api, backup, manage, rtstool, scheduler, volume}.py。

  • 使用 pbr entry_points 来管理 cinder 脚本。

  • 为 cinder/cmd 下的每个 cinder 命令创建正向和反向单元测试用例,例如 cinder_{all, api, backup, manage, rtstool, scheduler, volume}。

依赖项

测试

目标是为当前位于 bin/ 下的每个 cinder 脚本创建正向和反向单元测试用例。

文档影响

打包人员应注意 setup.cfg 的以下更改。

cinder 使用 pbr 处理打包。setup.cfg 的 [files] 部分下的 cinder 脚本将被移动到 [entry_points] 部分。更具体地说,该提案将 console_scripts 添加到 setup.cfg 的 [entry_points] 部分,如下所示

[entry_points]
console_scripts =
cinder-all = cinder.cmd.cinder_all:main
cinder-api = cinder.cmd.api:main
cinder-backup = cinder.cmd.backup:main
cinder-manage = cinder.cmd.manage:main
cinder-rtstool = cinder.cmd.rtstool:main
cinder-scheduler = cinder.cmd.scheduler:main
cinder-volume = cinder.cmd.volume:main

这将导致安装每个控制台脚本,这些脚本执行在 cinder.cmd 中找到的主函数。

参考资料