天天看点

使用Tempest Docker测试OpenStack

笔者,从事基于OpenStack产品的QA测试工作半年多来,一直对相关测试环境的构建记忆深刻,尤其是测试环境的安装和部署。举个很简单的例子,当测试A环境的OpenStack时,需要构建好一个诸如Tempest在内的测试平台;当测试B环境的OpenStack时,又需要构建好一个同样的测试平台;亦或者要运行诸如社区那样的分布式大规模异步测试任务等。

通常,为了构建这样的一个测试平台,即便是熟练者往往也需要花费30多分钟时间。通过使用Docker容器化,将Tempest独立于宿主机OS,而单独运行在容器中,可以做到系统隔离,平台复用和简单分化等高效作用。

社区对OpenStack的集成测试工具采用Tempest,性能测试采用Rally。Tempest的实现基于Python的unittest2测试框架和nose测试框架。Tempest对Openstack终端发起一系列API请求,并且对终端的响应进行验证。Tempest通过config文件来描述整个测试环境,包括compute 、Keystone、Glance、Neutron等OpenStack相关服务。

备注:这里,我的测试环境是Tempest docker和OpenStack环境均构建在同一个CentOS 7中。

1)Docker 软件包已经包含在默认的 CentOS-Extras 软件源里,安装命令如下:

2)当 Docker 安装完成之后,你需要启动 docker 进程:

3)如果我们希望 Docker 默认开机启动,如下操作:

4)配置Docker加速器。这里我们使用daocloud提供的docker镜像加速服务:

5)重启服务:

6)现在,我们来验证 Docker 是否正常工作以及为下一步安装Tempest做足准备。为此,我们需要下载centos 7镜像。

7)下一步,我们运行下边的命令来查看镜像,确认镜像是否存在:

OK,事已至此,Docker和CentOS7镜像现在已经build好了。我们继续进行下一步。

1)首先,我们需要进入到CentOS 7这个Docker镜像中,执行安装和配置任务等。

2)安装相关的依赖关系

3)下载和安装Tempest

4)生成Tempest配置文件

5)查看,是否成功生成配置文件

6)编辑Tempest文件

由于,这里我们只测试OpenStack identity服务(Keystone)。所以,我们只针对了[identity]部分进行了相关的配置和运行Tempest测试,以此来验证我们的整个环节是否都是成功的。如果,你需要配置和测试诸如Compute、network、volume等服务,只需要按照注释配置相关选项即可。

如下,OpenStack identity服务配置:

7)执行Tempest测试

这里,我们测试的对象是Keystone服务v2版本中的test_list_tenants_returns_only_authorized_tenants测试用例。命令如下,所示:

通过,观察测试结果信息,我们已经知道该测试用例已经执行成功了。

8)测试用例分析

该测试用例的主要测试内容是:检查用户只可以看见他所属租户下的用户;成功验证用户所使用的credentials和租户名;最后就是检查用户不能登录alt用户的租户。主要是调用assertEqual、assertRaises等断言方法来判断程序的执行结果和预期值是否相符。

1)保存Tempest Docker镜像当我们制作好了Tempest镜像之后,如果不做commit保存起来,那么container停止以后再启动,这些更改就消失了。在完成操作之后,输入 exit命令来退出这个容器。

现在,我们可以使用 docker commit 来保存镜像。

这里的-m标识我们指定提交的信息,-a标识来指定一个作者,tempest/centos是一个新的镜像名,v1是版本号。

现在,我们可以使用 docker images 命令来查看我们的新镜像tempest/centos。

2)使用我们的新镜像来运行Tempest docker

3)最后,我们使用docker save 命令将镜像导出到本地文件,默认目录为执行docker命令的用户家目录下。

4)当我们把自己做好的镜像push到Docker Hub公共库或内部私有库中后,别人可以直接导入镜像或者pull(这将导入镜像以及其相关的元数据信息,包括标签等)。

作者简介:徐超。专注于工作和研究基于OpenStack产品研发测试过程的持续集成、持续测试和持续部署/交付领域,曾参与创建国内一OpenStack服务提供商从0到1+的测试体系。

本文转自    OpenStack2015 博客,原文链接:    http://blog.51cto.com/andyliu/1902212    如需转载请自行联系原作者

<a href="http://blog.51cto.com/search/result?q=linux+openstack+dock" target="_blank">linux openstack dock</a>