Stratovirt-hydropper测试框架搭建及使用

一、Hydropper简介

hydropper是一个基于pytest的轻量级测试框架,在其基础上封装了虚拟化的相关测试原子,用于stratovirt的黑盒测试。当前hydropper已经提供了一些测试用例,可以帮助开发人员发现和定位stratovirt的问题。

二、环境配置

1、安装Stratovirt

hydropper是运行在stratovirt虚拟化平台上的测试框架,所以使用hydropper前需要保证stratovirt已经存在。本文将使用openEuler-stratovirt官方仓库源。
关于stratovirt的安装,可以参考下面这个博客:
Stratovirt的安装及环境搭建

2、安装python3

hydropper测试框架是使用python语言编写的,所以需要确保openEuler系统中已经安装python3。
如果没有python3可以试用以下命令进行安装

$ yum install python3

3、安装hydropper依赖包

在hydropper目录下的requirements.txt中包含了hydropper的依赖包:

  • pytest>5.0.0
  • aexpect>1.5.0
  • retrying

pytest是一个非常成熟的Python测试框架,能够参数化支持单元测试和功能测试,为hydropper提供了大量接口使用。

aexpect是一个类似于pexpect库的软件包,能够为hydropper生成和控制诸如ssh、sftp等交互应用程序

retrying提供了不断试错的功能,增强了hydropper的测试能力

通过以下命令可以完成对于这三个依赖包的安装

$ pip3 install -r requirements.txt

4、安装网络依赖包

为了支持用例执行,需要用以下命令安装网络依赖包

$ yum install nmap
$ yum install iperf3

5、网络配置

brctl addbr <virbr_name>			//name the br
ifconfig <virbr_name> up			//open the br
ifconfig <virbr_name> <br_ip>		//set ip for br 

6、构建测试镜像

虚拟光驱的镜像。简单点说,就是把一张光盘,做成一个文件(后缀名一般是iso或者mdf),当你用某些程序打开这个文件之后,里面的内容是和原来的光盘完全相同的(这里指的完全相同是指数据排列方式相同,比如盘里有加密内容一类的东西也可以复制下来。和简单的复制文件–粘贴是不一样的)。这个文件就可以叫这个光盘的一个镜像。

构建测试镜像,利用镜像文件对stratovirt软件进行测试。

6.1、下载kernel镜像和rootfs镜像
$ wget https://repo.openeuler.org/openEuler-21.03/stratovirt_img/x86_64/openEuler-21.03-stratovirt-x86_64.img.xz	//rootfs镜像
$ wget https://repo.openeuler.org/openEuler-21.03/stratovirt_img/x86_64/vmlinux.bin		//kernel镜像
6.2、扩容镜像
  • 创建一个2G大小的空镜像文件extend.img
 dd if=/dev/zero of=extend.img bs=50M count=40

可以看到生成了一个2.0G大小的extend.img文件
在这里插入图片描述

  • 扩容stratovirt_img
 cat extend.img >> openEuler-21.03-stratovirt-x86_64.img

发现文件系统镜像大小改变
在这里插入图片描述

  • 3)调整文件系统大小
 e2fsck -f openEuler-21.03-stratovirt-x86_64.img && resize2fs openEuler-21.03-stratovirt-x86_64.img

看到如下图反馈便说明完成了文件系统镜像扩容
在这里插入图片描述

6.3、添加依赖包
  • 挂载镜像
$ mount openEuler-21.03-stratovirt-x86_64.img /mnt
  • 配置在线yum源
 cp ./openEuler.repo /mnt/etc/yum.repos.d
  • 进入镜像挂载目录,通过yum命令安装依赖包
 cd /mnt
 chroot .
 yum -y install openSSH
  • 离开当前目录后,使用umount命令卸载镜像。
 exit
 umount /mnt

三、 参数配置

请在config目录下的config.ini里配置参数和对应路径,通常的用例都需要配置好kernel和rootfs:

[env.params]
...
VM_USERNAME = <usrname>
VM_PASSWORD = <passwd>
...
[stratovirt.params]
...
STRATOVIRT_VMLINUX = /path/to/kernel
STRATOVIRT_ROOTFS = /path/to/rootfs
...

注意:相关参数均有初始化填充,需要根据自己的实际情况进行相应改动

请在config.ini中配置好IP_PREFIX和IP_3RD,这两项表示虚拟机IPv4地址的前24位, 最后8位会由hydropper来自动配置。请注意虚拟机需要和主机在同一网段。

[network.params]
# such as 'IP_PREFIX.xxx.xxx'
IP_PREFIX = 1.1
# such as 'xxx.xxx.IP_3RD.xxx'
IP_3RD = 1

四、运行测试用例

你可以在hydropper目录下通过以下的命令来执行用例:

# 执行所有用例
$ pytest

# 执行所有带有关键字microvm的用例
$ pytest -k microvm

# 执行test_microvm_cmdline中的全部用例
$ pytest testcases/microvm/functional/test_microvm_cmdline.py

# 执行test_microvm_with_json用例
$ pytest testcases/microvm/functional/test_microvm_cmdline.py::test_microvm_with_json

五、添加测试用例

在testcases目录下的microvm目录里来增加自定义的用例。你可以新增一个python文件或者是在已存在的python文件里新增一个新的函数,文件名和函数名都必须形如test_*:

test_microvm_xxx.py
def test_microvm_xxx()

已经预置了一些虚拟机对象,用户可以通过生成它们的实例来对虚拟机测试:

def test_microvm_xxx(microvm):
    test_vm = microvm
    test_vm.launch()

另外,Fixture也可以帮助我们来更好的编写用例,用户可以参照以下方式来使用Fixture:

# 标记该函数为system用例
@pytest.mark.system
def test_microvm_xxx(microvm):
    test_vm = microvm
    test_vm.launch()

现在你可以使用pytest -m system来执行所有的“system”用例了。

用户可以使用basic_config()函数,来配置一些虚拟机的参数:

# 设置虚拟机配置4个VCPU和4G内存
def test_microvm_xxx(microvm):
    test_vm = microvm
    test_vm.basic_config(vcpu_count=4, mem_size='4G')
    test_vm.launch()

六、日志

  • pytest默认日志路径:/var/log/pytest.log
  • stratovirt默认日志路径:/var/log/stratovirt

七、参考网站

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值