基于Openstack的Tempest测试框架介绍

本文简要分析了 Tempest 的工作原理及其关键技术,并详细地介绍了如何实现 Tempest 配置与运行,最终结合实际的项目需求展示了如何对 Tempest 进行扩展。您可以通过本文了解 OpenStack Tempest,并进行合理地应用。

OpenStack(OS)是由网络主机服务商 Rackspace 和美国宇航局联合推出的一个开源项目,于 2010 年 7 月 18 日正式启动,迄今为止已经得到二百多家公司的支持,其中包括很多大型企业,如 IBM,惠普、戴尔、红帽和 Canonical 等。OpenStack 是一个 IaaS(基础设施即服务)云计算平台,它的目标是为公有云、私有云和混合云提供实施简单、可大规模延展的、功能丰富的解决方案。

Tempest 测试框架介绍

Tempest 是 Openstack 的测试框架。和 Openstack 类似,Tempest 由社区人员维护。Tempest 测试框架包含 Openstack 基本组件(nova, keystone, glance, quantum, cinder)的测试用例,同时支持 JSON、XML 两种 REST API 格式类型的测试, 以及 CLI 测试

基于 Openstack 的 Tempest 实践

在准备 Tempest 测试环境之前,我们需要准备好被测试的 Openstack 环境。下面将简要介绍 Openstack 环境搭建。

Openstack 环境搭建

首先可以参考 Openstack 官方文档(OpenStack 安装)手动搭建 Openstack 环境,本文不再详细介绍。在搭建过程中您会深入了解 Openstack 相关知识,并且了解 Openstack 各个模块相关内容。

如果您对 Openstack 架构已经有一部分了解,推荐下面两种自动化安装 Openstack,并对其自动配置的方法。

第一种自动安装方式。如果您是 IBM 内部员工,还以用 IBM 内部 git 源下载 Openstack installer,下载后修改 build.include 文件设置您需要的配置,运行 runall.sh 文件进行自动安装。此 Openstack 自动安装脚本已经在 redhat6.4 x64 操作系统测试通过。

git clone -b osee-havana http://gerrit.rtp.raleigh.ibm.com/p/osee-tools.git

第二种自动安装方式。用 DevStack 自动安装 Openstack 最新社区代码并自动配置环境。您可以参考 DevStack 官方网站了解细节及其最新动态。

DevStack 官方推荐安装操作系统为
Ubuntu 12.04 (Precise)或者 Fedora 16 执行以下命令下载 DevStack 到指定路径git clone git://github.com/openstack-dev/devstack.git 进入 DevStack 所在路径,并执行 stack.sh 脚本

Tempest 下载及环境搭建

如果您是用 DevStack 安装 OS 环境,Tempest 项目会自动被下载及配置在路径 /opt/stack/tempest。如果您是手动安装 OS 环境,或者用 IBM installer 安装 OS 环境,需要在社区手动下载 Tempest 项目并进行配置。

Tempest 下载地址 https://github.com/openstack/tempest,下载命令如下:

git clone https://github.com/openstack/tempest.git

Tempest 下载后,需要安装 unittest2 以及 nose Python 等库相关依赖。如果下载基于 OS Grizzly、OS Havana 最新的 tempest 项目,进入到 tempest 所在文件夹执行以下命令:

python setup.py install

如果下载 folsom 以及以前版本的 tempest 项目, 需要执行以下命令安装:

Unbuntu: pip install -r tools/pip-requirres(test-requires)Redhat: pip-python install -r tools/pip-requires(test-requires)

Tempest 代码结构

对于 Tempest 项目,会有来自不同公司的社区成员对其进行更新。在最新的 tempest 项目中,增加入了对 OS CLI 的测试。本文重点基于 REST API 测试目录结构进行描述:

图 1.Tempest 目录结构

图 2.Tempest 代码结构

Tempest 测试 OS

配置:

Tempest 的配置文件 tempest.conf 在 /tempest/etc 路径下面,用户需要将 tempest 配置文件拷贝到/etc 路径下

cd $TMEPEST_ROOT_DIRcp etc/tempest.conf.sample etc/tempest.conf

如果您用 devstack 搭建的 OS 环境,tempest 会自动配置在下面的路径, 同时会自动配置好 /opt/stack/tempest。

在 tempest.conf 配置文件中,分为以下 session, 这些 session 需要和测试的 OS 环境匹配。

[identity] – 这个 session 主要包括 user/tenant 相关的权限认证测试 [compute] – 这个 session 主要包括 OS Compute API/CLI 相关测试 [whitebox] – 这个 session 主要包括查看 Nova 数据库状态,ssh 到虚机中查看其状态等 [image] – 这个 session 主要包括 OS 镜像 API/CLI 相关测试 [network] – 这个 session 主要包括 OS 网络 API/CLI 相关测试 [volume] – 这个 session 主要包括 OS Cinder 存储 API/CLI 相关测试 [object-storage] – 这个 session 主要包括 OS Swift 对象存储 API/CLI 相关测试

运行及测试报告:

执行 tempest 所有测试用例

nosetests tempest

执行 tempest 某一个包下的所有测试用例,比如 identity 包下的所有测试用例

nosetests tempest/tests/identity

执行 tempest 某一个测试用例,比如 identity 包下的 test_tenants.py

nosetests tempest/api/identity/admin/test_tenants.py

下图为测试报告,用户可以参考以下文档了解 nosetests 更多用法。

https://nose.readthedocs.org/en/latest/usage.html

图 3:Tempest 运行

Tempest 扩展实践

SCEDriver adpter 介绍

SCEDriver adapter 又名 iaassmartcloud,是由 IBM CSTL 研发的、使用 Python 语言编写的一个 Openstack 插件,与 iaasgateway 同属 OpenStack IaaS 系列应用程序。通过它可以在 OpenStack 中注册一个 compute node,实现管理 VMControl 和 VMware 的目的,实现的功能包括网络、镜像以及虚拟机的管理等

IaaSgateway 介绍

IaaSGateway 是 IBM 公司研发的一个组件,它的宗旨是为基于 IaaS(基础设施即服务)架构的云提供统一的 API, 为用户屏蔽掉不同类型的云之间的差异。其内部包含一系列的 adapter 用于处理不同的类型的 API,从而对外提供统一的接口,同时用户也可以对 adapter 进行扩展,并通过配置文件非常方便地为不同类型的云以及 API 选择相应的 adapter。

Tempest 扩展实践

目前对 Tempest 的扩展可分为以下几部分:

对 Tempest 的 testcase 进行扩展,即添加 python unittest module,这些测试实例一般存放在 tempest/tests 目录下,可根据测试类别进一步划分。 扩展 Tempest 的公共类以及 client,使得 testcase 的创建更为便捷,一般分别存放在 tempests/common 以及 tempests/services 目录下。 扩展 Tempest 的环境变量,可进行更丰富的配置,通常是在 etc/tempest.conf 里添加新的环境变量,在 tempest/config.py 内补充对新增环境变量的解析。

对 Tempest 的扩展主要包括(但不限于)以上几种情况,这几种扩展能保持 Tempest 的代码结构,但某些情况下我们可以对它的代码结构进一步扩展,比如添加外部依赖的接口等。

Tempest 测试 iaasgateway

通过之前对 IaaSGateway 的介绍,我们了解到,IaaS Gateway 将为不同的 IaaS 架构的云提供统一的 API。 而 IaaSGateway 的 REST API 与 OpenStack 是比较相近的,所以我们只需要对 Tempest 的通用模块做较小的改动,就可以重用 Tempest 中大量现成的测试用例,并且基于调整后的框架添加新的测试用例也非常简便,这为 IaaS Gateway REST API 的自动化测试节约了很多时间,大大提高的工作效率。

整体思路将 IaaSGateway 和 OpenStack 做为两个黑盒子,比较它们之间 REST API 的差异,然后调 Tempest 框架对这些差异进行逐一的修改。IaaSGateway 与 OpenStack 的一个显著区别是 URL 不同。以 URL 为例,在 OpenStack Tempest Folsom 版本中,我们可以通过修改通用模块中的 config.py 脚本,以新的模式重新构建 URL。

图 4

对于 OpenStack Grizzly 版本,社区对 Tempest 框架做了改进,我们不再需要调整测试脚本,直接通过配置文件(tempest.conf)就可以实现对 IaaSGateway REST API 的测试。

Tempest 测试 SCEDriver

通过 Tempest 测试 SCEDriver 跟上文中测试 Openstack 非常类似,区别在于本测试将通过 SCEDriver 使得 SCE Server 作为 compute node。关于 SCEDriver 的安装配置过程请参考 IBM 官方文档,在正确地完成安装配置后,通过 nova-manage service list 命令可以检查到名为 nova-smartcloud 的服务状态正常。下面我们以通过 tempest 检索 SCE Server 上的 images 为测试用例来测试 SCEDriver 是否正常工作。

(一)首先还是确认 tempest.conf 里的配置,在默认的配置基础上,本次测试主要关注以下几项配置:

[identity]uri = http://demoHost:5000/v2.0/username = demopassword = demotenant_name = demo

(二)本次测试需要从 SCE Server 获取数据进行验证,因此扩展 SCE 相关的配置:

[SCE]Host = sceServerUsername = sceAdminpassword = scePwd

修改 config.py 以解析 SCE 相关的配置:

图 5

(三)接下来用 test_list_image_SCEDriver.py 文件创建 test case,注意测试中对 SCE 的操作,为方便演示而直接包括了一些可复用的代码(常用到的 SCE 操作可添加到 common 及 service 下):

图 6

上面的测试结果通过,说明 SCEDriver 能够正常将 SCE Server 上的 image 信息同步到 OpenStack。

时间: 2024-12-31 01:57:27

基于Openstack的Tempest测试框架介绍的相关文章

MySQL自动测试框架介绍

1.概述 在我们給MySQL打了patch后,不仅需要测试新增的功能,同时更重要的问题是,需要对原有的功能作回归――若新增的patch导致原有其他功能产生bug,就得不偿失. MySQL自动测试框架是一个以MySQL框架和内部引擎为测试对象的工具.主要执行脚本在发布路径的mysql-test目录下.自动测试框架的主要测试步骤,是通过执行一个case,将该case的输出结果,与标准的输出结果作diff.这里的"标准输出结果"指代在可信任的MySQL版本上的执行结果. 如果某个case的执

Openstack测试框架Tempest介绍

Tempest是Openstack的集成测试框架,它的实现基于python的unittest2测试框架和nose测试框架.Tempest对Openstack终端发起一系列API请求,并且对终端的响应进行验证.Tempest通过config文件来描述整个测试环境,包括compute API端点,Keystone server以及Glance server安装的镜像的UUID等信息.以下是Tempest的目录结构: Tempest的优点 1.Tempest可以自动寻找,执行测试:自动查找当前目录下所

《精通移动App测试实战:技术、工具和案例》一第2章 JUnit框架基础2.1 JUnit框架介绍

第2章 JUnit框架基础 精通移动App测试实战:技术.工具和案例 2.1 JUnit框架介绍 瀑布模型是最早出现的软件开发模型,如图2-1所示.该开发模型可以说在软件工程中占有重要的地位,它提供了软件开发的基本框架.其过程是从上一项活动接收该项活动的工作对象作为输入,利用这一输入实施该项活动应完成的内容,给出该项活动的工作成果,并作为输出传给下一项活动.同时评审该项活动的实施,若确认,则继续下一项活动:否则返回前面,甚至更前面的活动.对于经常变化的项目而言,瀑布模型毫无价值.然而,时至今日,

使用Spring 2.5 TestContext测试框架

概述 Spring 2.5 相比于 Spring 2.0 所新增的最重要的功能可以归结为以下 3 点: 基于注解的 IoC 功能: 基于注解驱动的 Spring MVC 功能: 基于注解的 TestContext 测试框架. Spring 推荐开发者使用新的基于注解的 TestContext 测试框架,本文我们将对此进行详细的讲述. 低版本的 Spring 所提供的 Spring 测试框架构在 JUnit 3.8 基础上扩展而来,它提供了若干个测试基类.而 Spring 2.5 所新增的基于注解

Coronis Test 0.2.0发布 测试框架

Coronis Test是一个基于jQuery的HTML测试框架.它是特别为AJAX准备.当它检查一个是否已知存在的文本时,如果它仍然还在运行中,则会等待一些时间直到运行结束.这样就很容易集中操作除非有意外事情发生.在运行时,它有一个内置进程的功能,这有助于在排除故障,比如登入进到一些Web应用程序的特定部分时会作为特别用户.这是一个很容易适应特定需求的广泛应用的框架.它还可以轻松地从任何一部分程序中使用的变量. Coronis Test 0.2.0这个版本更新了代码转移到GitHub上,并且修

《高度安全环境下的高级渗透测试》—第1章1.7节Dradis框架介绍

1.7 Dradis框架介绍Dradis框架是一个Rails应用程序,它可以用于管理在渗透测试时出现的数据过载情况.Dradis基于Web的用户界面体验良好,它简化了渗透测试周期的数据收集过程,并且能够将数据方便地分享给团队其他成员. 在结合不同的数据源,例如Nmap.Nessus,甚至Metasploit时,你通常需要构造某种数据库,然后使用各种方法管理导入的数据.Dradis可以让你单击几下鼠标,就能通过插件导入这些数据.Dradis也允许你上传附件(例如截图),或将你自己的注释添加至数据库

基于JUnit的InstallAnywhere安装程序图形界面自动测试框架

JUnit 简介 JUnit 是一个开源的单元测试框架,用于编写和运行自动测试,由 Erich Gamma 和 Kent Beck 在 1997 年开发完成.它包括以下特性: 提供的 API 可以让你写出测试结果明确的可重用单元测试用例: 提供了三种方式来显示你的测试结果,而且还可以扩展: 提供了单元测试用例成批运行的功能: 超轻量级而且使用简单,没有商业性的欺骗和无用的向导: 整个框架设计良好,易扩展. InstallAnywhere 简介 InstallAnywhere(下文简称 IA)是一

一种轻量级、可重用、可扩展的OSGi应用程序测试框架

引言 OSGi 是一个基于 Java 的,提供动态模块加载和管理的运行时框架,在业界已经得到广泛应用.OSGi 框架使用 Bundle 把复杂的应用程序模块化.在 OSGi 的框架中,Bundle 的生命周期由 OSGi 运行环境进行管理:Bundle 之间以松耦合的形式相互依赖:Bundle 有严格的访问安全限制.但也正是由于以上这些特点,给测试这些 Bundle 带来了很大的困难.许多测试用例要求被测 Bundle 及其依赖的 Bundle 同时运行于 OSGi 环境中:同时若需将测试代码和

iOS开发-常用第三方开源框架介绍(你了解的ios只是冰山一角)

图像: 1.图片浏览控件MWPhotoBrowser        实现了一个照片浏览器类似 iOS 自带的相册应用,可显示来自手机的图片或者是网络图片,可自动从网络下载图片并进行缓存.可对图片进行缩放等操作.       下载:https://github.com/mwaterfall/MWPhotoBrowser   目前比较活跃的社区仍旧是Github,除此以外也有一些不错的库散落在Google Code.SourceForge等地方.由于Github社区太过主流,这里主要介绍一下Gith