本期智汇华云,邀请到华云数据网络技术经理黄茂峰为大家带来“如何使用 Rally+Tempest 测试 OpenStack”。
Tempest是OpenStack的集成测试框架,它可以对OpenStack 各个组件进行全面的测试。Tempest支持JSON和XML两种类型的REST API测试以及OpenStack CLI(命令行)的测试。Tempest基于python的unittest2和nose建立,大大提升了 OpenStack的测试效率。 Rally也是OpenStack社区推出的测试工具,使用Rally 工具,用户可轻松完成OpenStack平台的集成部署、功能测试、性能测试、测试报告输出等一系列动作。Rally 架构如下图所示: 在上图中可以看出,Rally 主要有四块主要功能: Deploy:集成部署,以插件形式和其他部署工具集成来部署 OpenStack。 Verification:功能测试,通过整合Tempest框架来验证OpenStack功能。 Benchmark:性能测试,负责测试 OpenStack 的性能。 Report Generation: 测试报告,支持输出JSON、HTML、XML等多种格式的文档 本文将通过Demo方式讲述Rally如何整合Tempest 框架实现测试 OpenStack 。 准备工作 首先要确认将被测试的OpenStack 集群已经成功部署并已经在正常运行。 保存OpenStack上Admin 的客户端环境脚本信息,待会Demo时会使用到。 准备一台 Linux机器(裸机、虚机或容器都可以)来部署 rally 和 tempest,本Demo 中将使用 Centos 7.6 的 KVM虚机。 确保Linux机器能与OpenStack 集群的API网络可以连通。 部署Rally 在准备好的 Centos 7.6 虚机上安装 Rally 第一步:安装依赖软件包和准备 Python 3 环境 第二步:安装 rally,由于 python2已不再维护,最好使用 python3 的 venv 环境 注意:在 install_rally 过程中不要清除掉原来的 /root/rally 目录 第三步:启动 rally 并创建 deployment,这里会用到目标 OpenStack 集群 Admin 用户的客户端环境变量 自此,Rally 已经和目标 openstack 集群集成,可以开始测试 opensack 了。 Rally 有自带的测试用例(rally task),也可以和第三方测试框架集成,比如 tempest,这也是当前主流的使用方式。 Rally Task rally 支持用户自定义自己的 task,通过在 task file 描述任务的内容和参数即可。 同时,rally 自身也提供了基本的 task 样本,可以满足大部分的测试需求场景。 rally-openstack 也提供了丰富的关于每个 openstack 组件的测试场景用例。 开始测试 rally task 查看 rally task 测试结果和输出报告 使用浏览器打开 html 文件即可查看详细的测试报告。 Rally Tempest 使用 rally verify集成安装 tempest,并运行 tempest 对 rally deployment 进行测试。 根据自己的需要,配置 tempest rally tempest 可以进行全面测试,也可以通过模式匹配测试部分用例,如: rally verify start # 验证全部功能。 rally verify start --pattern set=compute # 验证部分功能,当前支持 full, smoke, clustering, compute, database, identity, image, network 等多种set。 rally verify start --pattern tempest.api.compute.admin.test_flavors.FlavorsAdminTestJSON # 验证具体用例。 我们在 demo 中使用 network set 测试了目标 openstack 集群,并输出了 html 格式的测试报告 我们在浏览器中可以打开 network-report.html 文件进行更详细的结果查看。 通过点击某个 failed 的测试用例可以详细了解失败的原因。 结束语 这次我们通过 Demo 的方式向大家简单介绍了OpenStack Rally 的使用以及如何通过集成 Tempest 来更方便地测试 OpenStack 集群。 如果大家想更深入地了解 Rally 和 Tempest 的原理和使用,可以通过社区或者其他技术文档进行进一步学习。 资料引用 - https://github.com/openstack/rally - https://github.com/openstack/tempest - https://rally.readthedocs.io/en/latest/ - https://github.com/openstack/rally-openstack