共计 9298 个字符,预计需要花费 24 分钟才能阅读完成。
Tempest 基本介绍
总所周知,目前最流行的云计算解决方案当属 Openstack。OpenStack 是一个开源的云计算管理平台项目,支持几乎所有类型的云环境,可以大规模的管理计算资源、存储资源和网络资源等等。因此针对于 Openstack 的测试也尤为重要。Openstack 社区为此创建了 Tempest,它是一个旨在为云计算平台 OpenStack 提供集成功能测试的开源项目,包含了 Openstack 基本组件(nova, keystone, glance, neutron, cinder 等)的 API 测试用例与场景。它是基于 unittest2 和 nose 建立的,灵活且易于扩展及维护,使得 OpenStack 相关测试效率得到大幅度提升。
更多 Tempest 相关的信息可以上 Openstack 官网查询:http://docs.openstack.org/developer/tempest/overview.html
Rally 基本介绍
Rally 作为 Openstack 的性能测试工具被大家所熟知并使用。事实上 Rally 还可以实现云的部署和云产品的功能集成测试。Rally 主要包括三大部分:
- Deploy Engine:这不是一个真的部署工具,它只是一个插件形式的东西,它可以和其他部署工具(比如 DevStack,Fuel,Anvil 等)一起工作来简化和统一部署流程。
- Verification:这就是本文将要阐述的内容。目前只有将 Tempest 整合进了 Rally 来验证云的系统集成功能。
- Benchmark Engine:这是负责实现性能测试的一部分,本文将不多述。
下图 1 摘自 Openstack 官网,可以清楚明白的了解 Rally 的概况和结构,红框内即为本文将阐述的部分。
图 1. Rally 概图
使用 Rally 来运行 Tempest
目前使用 Rally 来实现系统功能测试还处于不太成熟阶段,从网上搜索的结果可以看出相关的信息还是很少,目前 Openstack 社区只是将 Tempest 整合进了 Rally,接下来可能会有更多的其他的测试框架会被融合进来,我们拭目以待。
总体来说,使用 Rally 来执行 Tempest 还是优点颇多:
- 它会把每次执行完的结果存到数据库当中,避免数据的丢失;
- 可以通过 rally 的命令将数据库当中的数据导出来,形成 html,csv 或者 json 格式,让结果一目了然更清晰;
- Rally 有对比功能,不需要借助其他第三方的工具,通过命令可以将数据库里的两个结果对比出来形成 html/csv/json 格式,这样分析阅读起来更明了。
- 和性能测试用同一个工具,减少学习成本和熟悉时间,更有效率。
前期准备
本文主要描述的是怎样利用 Rally 来执行 Tempest 测试,所以本文将从零开始,一步一步来实现 Rally 的安装和配置,Tempest 的安装,配置,执行和结果呈现。
我们前期的准备是:一台配置好的 Linux 机器!
大家都知道 Tempest 和 Rally 大部分的脚本都是用 Python 来写的,同时也需要安装许多的依赖包,因此用一台 Linux 最合适不过。在此我推荐用最新版本的 Ubuntu。当然,如果你是 Windows 机器,那么你还得先装 Virtualbox 或者 VMWare,然后在此基础上装虚拟机。更好的情况是你本身就拥有一台 Linux。
所谓配置好的虚拟机也很简单,是指:
- 网络是联通的,即能访问外网;
- Root 账户的密码重新设置过,这样保证你能知道 root 的密码;
- 共享文件夹是可行的,可保证随时可以从本地上传所需资源;
- Python, pip, easy_install, apt-get 等这些相关的资源是已经安装好了的(当然如果安装最新的 Ubuntu,这些都是默认安装好的,但最好还是检查一下);
- 上述这些源都是更新到最新的。
- 如果将用的云是需要 OpenVPN 之类的才能连通,那么还得安装 OpenVPN 等。
这样我们的前期准备就做好了!
Rally 安装
最简便快速的安装方法是只需执行一行命令:
清单 1.Rally 安装命令
1 2 3 4 | # 使用 wget $ wget -q -O- https://raw.githubusercontent.com/openstack/rally/master/install_rally.sh | bash # 或者使用 curl $ curl https://raw.githubusercontent.com/openstack/rally/master/install_rally.sh | bash |
该命令将会先检查 Rally 所依赖的软件包有没有已经被装上,如果没有,它会抛出类似下面的错误和修复的命令:
图 2. 提示缺少依赖包及解决办法
出现这种情况的时候,我们可以根据给出的解决办法手动安装所需依赖包:
清单 2. 安装依赖包
1 | $ sudo apt-get install libssl-dev libffi-dev python-dev libxml2-dev libxslt1-dev libpq-dev git python-pip |
依赖包安装成功后,再执行一遍最初的安装命令即可。安装完成!如图 3。在安装完成之后,会给出相应的 rally 信息的目录:虚拟环境,数据库,配置文件和实例。
图 3. Rally 安装完成
如果是用 root 账户来执行的话,如果有一些依赖包的缺失,它将会给出提示是否安装。这样的话 Rally 将会被装在系统里面而不是新的虚拟环境中。你可以这样执行:
清单 3.root 安装
1 | $ sudo ./install_rally.sh |
从图 2 可以看出,用一般的账户来执行的时候,Rally 默认的会被安装到一个虚拟环境,即在主目录下面会生成一个 rally 的目录来存放 Rally。当然也可以指定一个特定的目录来存放 Rally。比如像以下的这个命令,该命令需要手动将 install_rally.sh 下载下来之后再执行:
清单 4. 使用 –target 安装
1 | $ ./install_rally.sh --target /foo/bar |
执行 –help 来查看具体的参数配置:
图 4. install_rally.sh 参数配置
Rally 配置
Rally 安装成功之后,我们需要对 Rally 进行配置。
- 首先是进入到 Rally 的虚拟环境, 在终端的光标行首前会出现 (rally)。1
$ . ~/rally/bin/activate
- 然后建立 Rally 的数据库。1
$ rally-manage db recreate
- 为了能让 Rally 和我们的云建立连接,我们需要一个 openrc 文件,该文件可以从 Horizon 里面得到,具体路径是:Horizon->Project->Compute->Access &Security->API Access。从该页面下载 openrc 文件后,将它以及文件里所引用到的其他文件(比如 crt 文件等)一起放到 Rally 所在的机器里面来。比较方便的话我们可以就将他们放在主目录下。然后我们 source 一下该文件来导出里面的环境变量。1
$ . openrc
- 注册一个 Openstack deployment,注册成功后,将会默认使用这个 deployment,同时在主目录下会有一个新的目录出现:.rally。1
$ rally deployment create --fromenv --name=existing
- 检查验证一下刚注册的 deployment 是否存在。1
$ rally deployment list
- 最后检查一下 deployment 是否可行。如果出现如图 5 的表格,证明 Rally 的配置已经成功。1
$ rally deployment check
图 5.Rally deployment check
更多详情见请继续阅读下一页的精彩内容 :http://www.linuxidc.com/Linux/2017-10/148032p2.htm
基于 Rally 的 Tempest 安装
接下来是在 Rally 里面安装 Tempest。我们用到的命令就是“rally verify
”,让我们先看看这个命令:
图 6. 命令“rally verify…”
从图中可以看出,Rally 可以安装,卸载,运行 Tempest,也可以生成配置文件,对比结果等。
如果我们直接运行“rally verify start ...
”,它也会先验证我们的 tempest 有没有下载安装好,如果没有则会从 github 里下载下来安装。这里呢,我还是会先安装 Tempest,让整个思路更清晰。
执行以下命令即可安装 Tempest:用 git 下载 Tempest 脚本,然后再为 Tempest 新建一个虚拟环境,在此虚拟环境中安装 Tempest 所需的各种配置:
清单 5:安装 Tempest 命令
1 | $ rally verify install --deployment < deployment_name > |
图 7. 安装 Tempest
安装过程中如果出现类似安装虚拟环境失败的问题,可以手动的去执行各种软件包的安装。Tempest 所需的软件包清单都会放在 Tempest 目录下的 requirement.txt 和 test-requirement.txt 文件里。注意如果手动安装出现找不到匹配版本的问题,那么请试着用 root 账户来执行:
清单 6:安装 Tempest 所需的软件包
1 2 | $ sudo pip install -r requirement.txt $ sudo pip install -r test-requirement.txt |
手动执行安装软件包完成后,我们可以返回去重新执行 install 的命令。在 tempest 安装完成之后,我们可以在~/.rally/ 下面发现 tempest 目录。在 tempest 下面有 base 和 for-deployment-<deployment_uuid> 两个目录。deployment 的 uuid 可以通过“rally deployment list
”查到。
- base 目录是存放每次下载下来的 Tempest 脚本;
- for-deployment-<deployment_uuid> 目录是存放最近这次下载下来的 Tempest 脚本,并把新建的虚拟环境放在这个目录下的.venv 目录下。
图 8. Tempest 安装目录
基于 Rally 的 Tempest 配置
到这里其实也就是执行 Tempest 所需的配置了:配置文件的生成。
前一节讲到可以使用“rally verify genconfig”命令来生成配置文件,但是事实上生成出来的配置文件还是不能直接用的,里面会有一些变量缺失如 tempest 所需的一些 roles,也会有一些变量没有被赋值,如 image,flavor 的 id。
因此如果你之前在云里已经跑过 Tempest,那么很简单,直接把那个 Tempest 的配置文件拿过来即可,若是没有,最好是从 Openstack 官网上下载配置文件的实例,然后根据自己的云环境来配置变量参数,这里将不多讲。
需要记得的是在配置文件配好之后,需要将它放到 Tempest 脚本所在的路径下,即~/.rally/tempest/for-deployment-<deployment_uuid>。名字默认是 tempest.conf。
基于 Rally 的 Tempest 测试执行
在执行测试之前,我们来看看这个命令“rally verify start ...
”。
图 9. 命令“rally verify start …”
可以看出我们有很多种方法来执行测试:
- 执行全部的测试:1
$ rally verify start --deployment <
deployment_name
>
- 执行某一类的测试,如 smoke,compute,database 等等:1
$ rally verify start --deployment <
deployment_name
> --set smoke
- 根据正则表达式执行某一个用例或者某个文件里面的用例:1
$ rally verify start --deployment <
deployment_name
> --regex tempest.api.identity.admin.v2.test_roles
- 根据提供的用例清单执行测试:1
$ rally verify start --deployment <
deployment_name
> --tests-file <
path
of tests file>
当然如果在前一节没有将配置文件放到 Tempest 目录下面,我们也可以在执行这个命令的时候通过“–tempest-config”来指定所需的配置文件。
在第一次执行的时候,你或许还会遇到缺少 repository 的问题,如图 10,解决办法是在命令行里执行一下“testr init
”:
图 10. 缺少.testrepository
磕磕绊绊之后,最终 Tempest 会成功的在 Rally 里面跑起来。
图 11. Temest 运行实例
测试结果呈现与对比
关于测试结果的具体分析在本文中将不会介绍。本文关注的是测试执行完成后,数据被存储到数据库中,我们如何从数据库里拿出数据,并更直观的阅读测试结果。
Rally 实现了相应的命令来从数据库拿取数据:
- 先到数据库里得到最近这次结果对应的 uuid:1
$ rally verify list
- 然后根据这个 uuid 将结果导出成 html 形式(当然也可以导成 csv 或者 json 格式):1
$ rally verify results <
result_uuid
> --html --output-file <
file_name
>.html
- 最后将导出来的 html 文件用浏览器打开,就可很直观的看到这个测试结果。
页面的最上面是本次测试结果的一个总结,包括测试用例总数,失败数,成功数,跳过数,总时长等。也可以点击对应的按钮如 success,failed 等查看相应的测试用例结果。在具体某个失败的用例上点击一下,会出现相应的测试用例失败的日志主要部分。
图 12. 测试结果显示
同时 Rally 还提供了对比的功能,即可以将两个测试结果放在一起合并成一个文件再对比,可以直截了当的发现两次测试的不同之处,包括运行时间不同,出错的原因不同等。
清单 7:命令“rally veirfy compare …”
1 | $ rally verify compare --uuid-1 < one_result_uuid > --uuid-2 < other_result_uuid > --html --output-file **.html |
然而事实上对于同一个用例每次的运行时长不一样是比较正常的,所以这里我们还可以用到一个参数就是“–threshold”。在执行对比命令的时候加上这个参数,后面跟上对应的时间,导出的文件则只会显示那些在时间差大于这个域的用例,小于这个域的则忽略。
图 13. 测试结果对比
更详细的解释可以通过“rally verify compare --help
”来获取。
图 14. 命令“rally verify compare –help”
结束语
目前将 Tempest 与 Rally 结合,我们能看到一定的优越性,但是还存在很多的不足,比如说配置文件的生成还有缺陷,对比结果只能一次对比两个等等,希望社区以后能将这一块做的更好,让 Rally 可以不只是和 Tempest 结合,也可以和其他的测试框架结合,当然也欢迎大家积极的贡献自己的代码来完善这些不足。
本文永久更新链接地址 :http://www.linuxidc.com/Linux/2017-10/148032.htm
Tempest 基本介绍
总所周知,目前最流行的云计算解决方案当属 Openstack。OpenStack 是一个开源的云计算管理平台项目,支持几乎所有类型的云环境,可以大规模的管理计算资源、存储资源和网络资源等等。因此针对于 Openstack 的测试也尤为重要。Openstack 社区为此创建了 Tempest,它是一个旨在为云计算平台 OpenStack 提供集成功能测试的开源项目,包含了 Openstack 基本组件(nova, keystone, glance, neutron, cinder 等)的 API 测试用例与场景。它是基于 unittest2 和 nose 建立的,灵活且易于扩展及维护,使得 OpenStack 相关测试效率得到大幅度提升。
更多 Tempest 相关的信息可以上 Openstack 官网查询:http://docs.openstack.org/developer/tempest/overview.html
Rally 基本介绍
Rally 作为 Openstack 的性能测试工具被大家所熟知并使用。事实上 Rally 还可以实现云的部署和云产品的功能集成测试。Rally 主要包括三大部分:
- Deploy Engine:这不是一个真的部署工具,它只是一个插件形式的东西,它可以和其他部署工具(比如 DevStack,Fuel,Anvil 等)一起工作来简化和统一部署流程。
- Verification:这就是本文将要阐述的内容。目前只有将 Tempest 整合进了 Rally 来验证云的系统集成功能。
- Benchmark Engine:这是负责实现性能测试的一部分,本文将不多述。
下图 1 摘自 Openstack 官网,可以清楚明白的了解 Rally 的概况和结构,红框内即为本文将阐述的部分。
图 1. Rally 概图
使用 Rally 来运行 Tempest
目前使用 Rally 来实现系统功能测试还处于不太成熟阶段,从网上搜索的结果可以看出相关的信息还是很少,目前 Openstack 社区只是将 Tempest 整合进了 Rally,接下来可能会有更多的其他的测试框架会被融合进来,我们拭目以待。
总体来说,使用 Rally 来执行 Tempest 还是优点颇多:
- 它会把每次执行完的结果存到数据库当中,避免数据的丢失;
- 可以通过 rally 的命令将数据库当中的数据导出来,形成 html,csv 或者 json 格式,让结果一目了然更清晰;
- Rally 有对比功能,不需要借助其他第三方的工具,通过命令可以将数据库里的两个结果对比出来形成 html/csv/json 格式,这样分析阅读起来更明了。
- 和性能测试用同一个工具,减少学习成本和熟悉时间,更有效率。
前期准备
本文主要描述的是怎样利用 Rally 来执行 Tempest 测试,所以本文将从零开始,一步一步来实现 Rally 的安装和配置,Tempest 的安装,配置,执行和结果呈现。
我们前期的准备是:一台配置好的 Linux 机器!
大家都知道 Tempest 和 Rally 大部分的脚本都是用 Python 来写的,同时也需要安装许多的依赖包,因此用一台 Linux 最合适不过。在此我推荐用最新版本的 Ubuntu。当然,如果你是 Windows 机器,那么你还得先装 Virtualbox 或者 VMWare,然后在此基础上装虚拟机。更好的情况是你本身就拥有一台 Linux。
所谓配置好的虚拟机也很简单,是指:
- 网络是联通的,即能访问外网;
- Root 账户的密码重新设置过,这样保证你能知道 root 的密码;
- 共享文件夹是可行的,可保证随时可以从本地上传所需资源;
- Python, pip, easy_install, apt-get 等这些相关的资源是已经安装好了的(当然如果安装最新的 Ubuntu,这些都是默认安装好的,但最好还是检查一下);
- 上述这些源都是更新到最新的。
- 如果将用的云是需要 OpenVPN 之类的才能连通,那么还得安装 OpenVPN 等。
这样我们的前期准备就做好了!
Rally 安装
最简便快速的安装方法是只需执行一行命令:
清单 1.Rally 安装命令
1 2 3 4 | # 使用 wget $ wget -q -O- https://raw.githubusercontent.com/openstack/rally/master/install_rally.sh | bash # 或者使用 curl $ curl https://raw.githubusercontent.com/openstack/rally/master/install_rally.sh | bash |
该命令将会先检查 Rally 所依赖的软件包有没有已经被装上,如果没有,它会抛出类似下面的错误和修复的命令:
图 2. 提示缺少依赖包及解决办法
出现这种情况的时候,我们可以根据给出的解决办法手动安装所需依赖包:
清单 2. 安装依赖包
1 | $ sudo apt-get install libssl-dev libffi-dev python-dev libxml2-dev libxslt1-dev libpq-dev git python-pip |
依赖包安装成功后,再执行一遍最初的安装命令即可。安装完成!如图 3。在安装完成之后,会给出相应的 rally 信息的目录:虚拟环境,数据库,配置文件和实例。
图 3. Rally 安装完成
如果是用 root 账户来执行的话,如果有一些依赖包的缺失,它将会给出提示是否安装。这样的话 Rally 将会被装在系统里面而不是新的虚拟环境中。你可以这样执行:
清单 3.root 安装
1 | $ sudo ./install_rally.sh |
从图 2 可以看出,用一般的账户来执行的时候,Rally 默认的会被安装到一个虚拟环境,即在主目录下面会生成一个 rally 的目录来存放 Rally。当然也可以指定一个特定的目录来存放 Rally。比如像以下的这个命令,该命令需要手动将 install_rally.sh 下载下来之后再执行:
清单 4. 使用 –target 安装
1 | $ ./install_rally.sh --target /foo/bar |
执行 –help 来查看具体的参数配置:
图 4. install_rally.sh 参数配置
Rally 配置
Rally 安装成功之后,我们需要对 Rally 进行配置。
- 首先是进入到 Rally 的虚拟环境, 在终端的光标行首前会出现 (rally)。1
$ . ~/rally/bin/activate
- 然后建立 Rally 的数据库。1
$ rally-manage db recreate
- 为了能让 Rally 和我们的云建立连接,我们需要一个 openrc 文件,该文件可以从 Horizon 里面得到,具体路径是:Horizon->Project->Compute->Access &Security->API Access。从该页面下载 openrc 文件后,将它以及文件里所引用到的其他文件(比如 crt 文件等)一起放到 Rally 所在的机器里面来。比较方便的话我们可以就将他们放在主目录下。然后我们 source 一下该文件来导出里面的环境变量。1
$ . openrc
- 注册一个 Openstack deployment,注册成功后,将会默认使用这个 deployment,同时在主目录下会有一个新的目录出现:.rally。1
$ rally deployment create --fromenv --name=existing
- 检查验证一下刚注册的 deployment 是否存在。1
$ rally deployment list
- 最后检查一下 deployment 是否可行。如果出现如图 5 的表格,证明 Rally 的配置已经成功。1
$ rally deployment check
图 5.Rally deployment check
更多详情见请继续阅读下一页的精彩内容 :http://www.linuxidc.com/Linux/2017-10/148032p2.htm