来自收敛模拟器的端口测试¶
包含您的 Launchpad 蓝图的 URL
https://blueprints.launchpad.net/heat/+spec/convergence-simulator-tests
问题描述¶
在设计收敛的过程中,我们构建了一个模拟器,用于验证大量的测试场景。这些场景定义在本质上是一种简单的 DSL 中。如果我们能够对真实的 Heat 代码库运行完全相同的场景,那么我们不仅可以验证我们的收敛实现是否满足模拟器的要求,而且还可以随着时间的推移继续这样做,即使我们添加更多的场景,甚至如果仍然需要快速原型设计更改在模拟器中。
提议的变更¶
为 RPC API 实现一个桩函数,将消息放入内存队列中,由事件循环耗尽。
实现一种假的资源类型,使用内存存储来表示底层的物理资源。
为场景的全局输入提供包装器 - reality,verify,Template,RsrcDef,GetRes,GetAtt,engine,converger - 允许它们由 Heat 中的真实等效类支持。
最后,使用 testtools 原语重新实现 https://github.com/zaneb/heat-convergence-prototype/blob/resumable/test_converge.py,并将上述包装器作为全局变量传递,而不是在 https://github.com/zaneb/heat-convergence-prototype/blob/resumable/converge/__init__.py#L24-L41 中定义的那些。
备选方案¶
无
实现¶
负责人¶
- 主要负责人
ishant-tyagi
里程碑¶
- 完成目标里程碑
Kilo-3
工作项¶
实现 RPC 桩函数和事件循环
实现假的 TestResource 类型和后端模拟器
实现包装器,将场景 DSL 映射到真实的 Heat 类
实现一个单元测试框架来运行场景
依赖项¶
当然,在收敛的第一阶段基本完成后,这些测试中的很少一部分会通过。