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 中找到的主函数。
参考资料¶
eharney 提出的原始代码:https://review.openstack.org/#/c/52229/