CN117472785B - Linux系统下的Openstack测试方法及系统 - Google Patents

Linux系统下的Openstack测试方法及系统 Download PDF

Info

Publication number
CN117472785B
CN117472785B CN202311793817.4A CN202311793817A CN117472785B CN 117472785 B CN117472785 B CN 117472785B CN 202311793817 A CN202311793817 A CN 202311793817A CN 117472785 B CN117472785 B CN 117472785B
Authority
CN
China
Prior art keywords
test
openstack
function
environment
exiting
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202311793817.4A
Other languages
English (en)
Other versions
CN117472785A (zh
Inventor
黄科岩
唐晓东
李金丽
杨清玉
王丽君
王宇琦
冯策
李笑迎
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Galaxy Qilin Software Changsha Co ltd
Original Assignee
Galaxy Qilin Software Changsha Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Galaxy Qilin Software Changsha Co ltd filed Critical Galaxy Qilin Software Changsha Co ltd
Priority to CN202311793817.4A priority Critical patent/CN117472785B/zh
Publication of CN117472785A publication Critical patent/CN117472785A/zh
Application granted granted Critical
Publication of CN117472785B publication Critical patent/CN117472785B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3688Test management for test execution, e.g. scheduling of test suites
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3664Environments for testing or debugging software
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明公开了一种Linux系统下的Openstack测试方法及系统,方法包括:执行测试脚本并进行环境部署测试的日志和测试结果处理,测试脚本在调用函数时将正在执行的函数的返回值输出到指定的结果文件中;若结果文件中的返回值为指定的值,则将测试脚本已经执行过的函数、测试脚本中的全部函数进行比较以确定尚未执行过的函数,将尚未执行过的函数生成新的测试脚本继续执行测试,直到测试脚本中的函数执行完毕,得到搭建好的Openstack测试环境;在搭建好的Openstack测试环境中执行测试用例,得到执行结果和对应的日志。本发明实现了Openstack测试环境的自动化部署及测试。

Description

Linux系统下的Openstack测试方法及系统
技术领域
本发明涉及Linux操作系统上的Openstack的测试技术,具体涉及一种Linux系统下的Openstack测试方法及系统。
背景技术
Openstack是一个云平台管理的开源项目,它不是一个软件。Openstack项目由几个主要的组件组合起来以用于完成一些具体的工作,被广大云计算厂商普遍应用于市场上。随着Linux操作系统的崛起和发展,Openstack在Linux操作系统上稳定运行的需求也逐渐增多,Linux操作系统的厂商对于Openstack的测试、适配需求也逐渐增大。目前,针对Openstack的测试主要是靠人工测试,但是由于Openstack版本众多、搭建过程极其复杂,因此对Openstack的测试费时费力,测试人员往往花费几天的时间进行环境搭建,搭建完成后的测试过程遇到问题也无法分析是搭建过程的问题还是平台本身与操作系统的兼容问题,严重阻碍了测试进度。因此如何实现Openstack的自动化测试,已成为一项亟待解决的关键技术问题。
发明内容
本发明要解决的技术问题:针对现有技术的上述问题,提供一种Linux系统下的Openstack测试方法及系统,能够自动化的进行Openstack测试环境部署和功能测试。
为了解决上述技术问题,本发明采用的技术方案为:
一种Linux系统下的Openstack测试方法,包括:
S101,执行测试脚本run.sh并进行环境部署测试的日志和测试结果处理,所述测试脚本run.sh在调用函数时将正在执行的函数的返回值输出到指定的结果文件中;
S102,若结果文件中的返回值为指定的值,则将测试脚本run.sh已经执行过的函数、测试脚本run.sh中的全部函数进行比较以确定尚未执行过的函数,将尚未执行过的函数生成新的测试脚本run.sh,跳转步骤S101以继续执行测试,直到测试脚本run.sh中的函数执行完毕,得到搭建好的Openstack测试环境;
S103,在搭建好的Openstack测试环境中执行测试用例,得到执行结果和对应的日志。
进一步的,步骤S102中指定的值为1,已经执行过的函数是指结果文件中的返回值为0的所有函数。
进一步的,步骤S101中执行测试脚本run.sh并进行环境部署测试的日志和测试结果处理包括:
S201,执行测试脚本run.sh时,创建与当前测试的每个模块对应的日志存储文件;
S202,获取配置文件的mode的值;
S203,若为第一值,本机根据测试脚本run.sh进行单机环境搭建,将单机环境搭建过程中当前步骤的执行输出保存在本机的对应模块的日志存储文件中;若为第二值,本机控制远程机器根据测试脚本run.sh进行集群环境搭建,将集群环境搭建过程中的当前步骤的执行输出保存在远程机器的对应模块的日志存储文件中;
S204,本机获取日志存储文件中的执行结果,使用预设的匹配方法将执行结果与预期结果进行匹配判断,若匹配成功,则将当前步骤的执行函数的返回值标记为0,跳转步骤S203以继续进行单机环境搭建过程或集群环境搭建过程,若匹配失败则将当前步骤的执行函数的返回值标记为1,结束并退出环境部署测试,并打印测试结果。
进一步的,所述集群环境相对单机环境而言将Openstack测试所需的数据库服务、消息中间件服务采用多台服务器进行集群化处理,且通过额外配置一台服务器实现对多台服务器构成的集群的心跳检测、高可用集群和负载均衡集群管理。
进一步的,步骤S101之前还包括:
S301,进行操作系统版本检查,若检查通过则跳转步骤S302,否则结束并退出;
S302,进行Openstack版本检查,若检查通过则跳转步骤S303,否则结束并退出;
S303,进行存储介质检查,若检查通过则跳转步骤S101,否则结束并退出。
进一步的,步骤S302包括:判断配置文件中指定的Openstack软件仓库是否可用,若Openstack软件仓库不可用,则抛出异常,结束并退出;否则读取Openstack软件仓库中的Openstack版本,若Openstack软件仓库中的Openstack版本与配置文件中指定的Openstack版本一致,则判定检查通过,跳转步骤S303,否则抛出异常,结束并退出。
进一步的,步骤S303包括:
S401,读取配置文件中指定的存储介质;
S402,判断存储介质是否存在,若存储介质不存在,则抛出异常,结束并退出;否则跳转步骤S403;
S403,通过人机交互获取存储介质是否可以被格式化的用户确认结果,若用户确认不可以格式化,则抛出异常,结束并退出;否则跳转步骤S404;
S404,格式化存储介质,若格式化失败,则抛出异常,结束并退出;否则跳转步骤S405;
S405,将存储介质挂载到指定目录,若挂载失败,则抛出异常,结束并退出;否则跳转步骤S406;
S406,往指定目录中创建文件并进行文件读写操作,若操作失败,则抛出异常,结束并退出;否则跳转步骤S101。
进一步的,步骤S101之前或者步骤S102之后还包括添加计算节点功能并测试:
S501,获取待添加计算节点的ip;
S502,检测待添加计算节点的ip是否可以连通,是则跳转步骤S503,否则结束并退出,并告知退出原因;
S503,检测本机控制节点的状态,若检测通过则跳转步骤S504,否则结束并退出,并告知退出原因;
S504,本机控制节点将部署代码发送给待添加计算节点,待添加计算节点根据部署代码执行部署命令并部署完毕后,测试计算服务功能和网络服务功能,并输出测试结果。
本发明还提出一种Linux系统下的Openstack测试系统,包括相互连接的微处理器和存储器,所述微处理器被编程或配置以执行任意一项所述Linux系统下的Openstack测试方法。
本发明还提出一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,所述计算机程序用于被微处理器编程或配置以执行任意一项所述Linux系统下的Openstack测试方法。
本发明相比现有技术,具有以下优点:
本发明对Openstack测试环境的搭建过程进行测试输出,搭建失败时以未执行过的函数来生成测试脚本重新进行搭建,无需重装操作系统,支持继续搭建功能,并提供详细的测试日志,还支持单机、集群两种自动化测试方式,Openstack测试环境搭建后可以任意扩展节点,实现了部署+功能测试一体化测试。
附图说明
图1为本发明实施例的总体流程图。
图2为本发明实施例中搭建前环境检测的操作系统版本检查流程图。
图3为本发明实施例中搭建前环境检测的Openstack版本检查流程图。
图4为本发明实施例中搭建前环境检测的存储介质检查流程图。
图5为本发明实施例中搭建Openstack测试环境的环境部署测试的日志和测试结果处理流程图。
图6为本发明实施例中单机环境的模块部署图。
图7为本发明实施例中集群环境的模块部署图。
图8为本发明实施例中搭建Openstack测试环境的部署中断再继续流程图。
图9为本发明实施例中搭建完成后执行测试用例的流程图。
图10为本发明实施例中执行测试用例时的结果处理流程图。
图11为本发明实施例中搭建完成后添加计算节点功能并测试的流程图。
图12为本发明实施例中用到的公共函数库的结构图。
图13为本发明实施例中Openstack版本差异化处理流程图。
图14为本发明实施例中自动化测试工具的逻辑框架图。
具体实施方式
以下结合说明书附图和具体优选的实施例对本发明作进一步描述,但并不因此而限制本发明的保护范围。
实施例一
目前的Openstack测试方法搭建前期的准备工作复杂,使用者往往连搭建前期的准备工作都无法顺利完成、支持的Openstack版本单一、不能够随意扩展计算节点、搭建过程不进行测试,一旦搭建出现错误只能把节点的操作系统重新安装、搭建过程没有日志输出,导致无法分析错误原因、不支持集群方式自动化部署、不能够对Openstack平台进行部署+功能测试、当操作系统版本发生迭代更新,工具代码不容易后期维护等等。
本实施例针对性的提出一种Linux系统下的Openstack测试方法,对搭建过程进行测试输出,搭建失败无需重装操作系统,支持继续搭建功能,提供详细的测试日志,支持单机、集群两种自动化测试方式,搭建后任意扩展节点,真正做到部署+功能测试一体化测试,如图1所示,总体思路为:
S1:搭建前环境检测,包括:仓库检测、主机名检测、openstack软件源检测、数据盘检测、主机名和IP映射是否正确。
S2:搭建前环境自动化配置,包括:修改内核参数、关闭防火墙、设置时间同步
S3:获取用户需求,包括:搭建方式、openstack搭建版本
S4:搭建过程测试,包括:数据库、消息中间件、高可用集群、负载均衡、高速缓存、网络服务、计算服务、镜像服务、身份认证服务、仪表盘部署、资源回收服务、存储服务
S5:搭建过程日志输出
S6:搭建结束结果处理
S7:搭建完成后测试用例执行
S8:openstack功能测试过程中日志输出
S9:openstack功能测试执行结果输出到excel
如果在搭建完成后需要进行添加计算节点测试,则运行对应的脚本,如add_compute.sh。
本实施例在搭建前环境检测执行的步骤具体包括:
S301,进行操作系统版本检查,若检查通过则跳转步骤S302,否则结束并退出;
本实施例中的Linux系统具体采用麒麟操作系统,如图2所示,使用不同版本的麒麟操作系统,在搭建openstack测试环境过程中会进行不同的操作,所以用户将操作系统版本信息写入配置文件后,搭建前环境检测首先会进行版本信息检查,如果配置文件中信息与操作系统真实信息一致的情况下,会继续执行后续步骤,如果两者信息不一致,会抛出异常信息,并且提示用户两者信息不一致,并终止测试;
S302,进行Openstack版本检查,若检查通过则跳转步骤S303,否则结束并退出;
如图3所示,Openstack版本检查时,首先判断Openstack仓库是否可用,Openstack仓库是由用户自己指定,如果不可用则提示用户配置正确的仓库地址,如果仓库正常可用,会接着检查仓库中openstack版本与配置文件中用户指定的版本是否一致,如果不一致,告知用户配置与实际版本不符合,提示用户修改,如果一致就继续执行后续步骤;具体的,步骤S302包括:判断配置文件中指定的Openstack软件仓库是否可用,若Openstack软件仓库不可用,则抛出异常,提示Openstack软件仓库的正确地址,结束并退出;否则读取Openstack软件仓库中的Openstack版本,若Openstack软件仓库中的Openstack版本与配置文件中指定的Openstack版本一致,则判定检查通过,跳转步骤S303,否则抛出异常,提示配置正确的Openstack仓库,结束并退出;
S303,进行存储介质检查,若检查通过则跳转步骤S101,否则结束并退出;
如图4所示,进行存储介质检查时,读取用户写入的存储介质目录,比如/dev/sdb,查询此分区是否存在,如果不存在,退出测试,存在的话需要检查存储中是否存在数据,并询问用户是否可以格式化,如果用户回复不可以格式化,则提示用户提供可用的数据盘,如果用户回复可以格式化,则表明能够正常使用,将设备格式化成xfs格式,格式化后的设备挂载到/mnt目录,在/mnt目录下新建一个文件进行读写操作,如果以上各个步骤都能成功,则正常往下进行,否则任何一个步骤失败都将退出测试,具体的,步骤S303包括:
S401,读取配置文件中指定的存储介质;
S402,判断存储介质是否存在,若存储介质不存在,则抛出异常,提示存储介质不存在,结束并退出;否则跳转步骤S403;
S403,通过人机交互获取存储介质是否可以被格式化的用户确认结果,若用户确认不可以格式化,则抛出异常,提示提供合适的存储介质,结束并退出;否则跳转步骤S404;
S404,格式化存储介质,若格式化失败,则抛出异常,提示格式化失败,结束并退出;否则跳转步骤S405;
S405,将存储介质挂载到指定目录,若挂载失败,则抛出异常,提示挂载失败,结束并退出;否则跳转步骤S406;
S406,往指定目录中创建文件并进行文件读写操作,若操作失败,则抛出异常,提示文件读写操作失败,结束并退出;否则跳转步骤S101。
本实施例中,搭建Openstack测试环境的步骤包括:
S101,执行测试脚本run.sh并进行环境部署测试的日志和测试结果处理,所述测试脚本run.sh在调用函数时将正在执行的函数的返回值输出到指定的结果文件中;
如图5所示,在执行测试脚本run.sh的时候,会调用公共函数创建日志存储文件,根据当前测试的模块,自动创建跟模块名相同名字的文件,判断用户在配置文件写的mode的值如果是single,表明进行单节点方式搭建,然后执行搭建过程,将每一步执行的输出追加到相应模块日志存储文件中,调用预期匹配方法将真实结果和预期结果做匹配判断,当匹配成功后,表明该步骤执行成功,会将result标记为0,继续执行下一个搭建过程;如果是cluster,表明要进行集群方式搭建,因为远程机器不存在任何脚本,所以需要在本机调用远程传送命令方法将搭建命令传送到远程机器,然后调用远程连接方法给远程机器发送运行指令,将每一步的执行输出日志先存放到远程机器中,再将执行结果通过远程传送命令方法传回到本机做判断,当匹配成功后,表明该步骤执行成功,会将result标记为0,继续执行下一个搭建过程。具体的,执行测试脚本run.sh并进行环境部署测试的日志和测试结果处理包括:
S201,执行测试脚本run.sh时,创建与当前测试的每个模块对应的日志存储文件;
S202,获取配置文件的mode的值;
S203,若为第一值single,本机根据测试脚本run.sh进行单机环境搭建,将单机环境搭建过程中当前步骤的执行输出保存在本机的对应模块的日志存储文件中;
本实施例中,单机环境的部署模块分别如图6所示,每个模块的重点配置过程如下:
基础环境部署:执行命令修改内核参数,查询内核参数是否修改成功;通过服务状态查询方法查询防火墙的状态,如果状态为启动就关闭。
数据库部署:使用函数安装方法安装mariadb相关软件包,通过安装状态返回值判断软件包是否安装成功;初始化数据库密码需要用户交互输入信息,使用spawn方法实现,考虑到初始化过程重复执行导致交互信息不一致的问题,先对两种情况分别判断,当前是哪种情况就走哪个分支脚本,示例代码
mysql -uroot -pqwer1234 -e "show databases;">>$log_dir/run.log 2>&1
if [[ $? -eq 0 ]];then
expect -c "
spawn mysql_secure_installation
else
expect -c "
spawn mysql_secure_installation
消息中间件部署:使用函数安装方法安装rabbitmq相关软件包,通过安装状态返回值判断软件包是否安装成功;执行搭建基础命令,通过回显信息与预期结果做对比;通过curl访问web界面,预期匹配方法进行关键字检查判断。
高速缓存部署:使用函数安装方法安装memcached相关软件包,通过安装状态返回值判断软件包是否安装成功;使用sed修改服务监听本地地址;通过服务状态查询方法查询memcached服务的状态,如果状态为关闭就启动;使用netstat查询端口号。
身份认证:使用函数安装方法安装keystone相关软件包,通过安装状态返回值判断软件包是否安装成功;使用数据库查询命令进行数据库操作;使用crudini修改配置文件;进行数据库同步的时候,将数据表输出与预期表名对比;初始化fernet密钥存储,无报错即为初始化成功;
镜像服务:使用函数安装方法安装glance相关软件包,通过安装状态返回值判断软件包是否安装成功;使用数据库查询命令进行数据库操作;使用crudini修改配置文件;进行数据库同步的时候,将数据表输出与预期表名对比;创建虚拟机镜像的时候,通过check_architecture函数判断服务器架构,从而创建适合的镜像。
s1=$(lscpu |grep "架构")
echo $s1 |grep "x86_64"
if [[ $? -eq 0 ]];then
architecture=x86_64
else
architecture=arm
fi
资源收集服务:使用函数安装方法安装glance相关软件包,通过安装状态返回值判断软件包是否安装成功;使用数据库查询命令进行数据库操作;使用crudini修改配置文件;进行数据库同步的时候,将数据表输出与预期表名对比;创建placement服务用户需要使用openstack -f参数将输出信息转化为json格式方便判断;验证检查placement健康状态,placement-status upgrade check。
计算资源管理服务、计算服务:使用函数安装方法安装glance相关软件包,通过安装状态返回值判断软件包是否安装成功;使用数据库查询命令进行数据库操作;使用crudini修改配置文件;进行数据库同步的时候,将数据表输出与预期表名对比;使用cat<<EOF>>/etc/libvirt/qemu.conf在所有节点增加qemu对UEFI的支持;通过服务状态查询方法查询nova服务的状态,如果状态为关闭就启动;使用curl:ip:端口号发送get请求验证服务状态;nova-manage cell_v2 discover_hosts –verbose手动发现计算节点;nova-status upgrade check验证计算节点添加成功。
网络资源管理服务、网络服务:使用openstack user命令创建neutron用户、openstack role向neutron用户赋予admin权限、openstack service创建neutron服务实体、openstack endpoint创建API服务端点;在配置linuxbridge网桥代理的时候需要使用本机活跃网卡的名称ip a |grep noprefixroute|head -n 1|awk -F ' ' '{print $NF}';通过服务状态查询方法查询neutron服务的状态,如果状态为关闭就启动;openstackextension list –network验证neutron网络服务。存储资源管理服务、存储服务:使用函数安装方法安装cinder相关软件包,通过安装状态返回值判断软件包是否安装成功;使用数据库查询命令进行数据库操作;使用crudini修改配置文件;进行数据库同步的时候,将数据表输出与预期表名对比;sed -i "145 i \filter = [ \"a/sda/\", \"a/$conf_letter/\", \"r/./\"]"/etc/lvm/lvm.conf配置LVM卷;通过服务状态查询方法查询cinder服务的状态,如果状态为关闭就启动;使用openstack volume service list验证cinder服务状态。
仪表盘部署:使用函数安装方法安装dashboard相关软件包,通过安装状态返回值判断软件包是否安装成功;将预先生成好的配置文件替换cp -r $dash_dir/local_settings /etc/openstack-dashboard/
sed -i "s/1.1.1.1/$conf_ip/g" /etc/openstack-dashboard/local_settings
sed -i "s/2.2.2.2/$conf_hostname/g" /etc/openstack-dashboard/local_settings
替换本地节点IP和主机名;通过服务状态查询方法查询dashboard服务的状态,如果状态为关闭就启动;
若为第二值cluster,本机控制远程机器根据测试脚本run.sh进行集群环境搭建,将集群环境搭建过程中的当前步骤的执行输出保存在远程机器的对应模块的日志存储文件中;
本实施例中,集群环境的部署模块分别如图7所示,与单机环境的部署模块大体相同,但是集群环境相对单机环境而言将Openstack测试所需的数据库服务、消息中间件服务采用多台服务器进行集群化处理,且通过额外配置一台服务器实现对多台服务器构成的集群的心跳检测、高可用集群和负载均衡集群管理。相关模块的重点配置过程如下:
处理另一台服务:使用一个host2目录来存放远程机器配置所需的脚本,通过远程传送命令方法、远程连接方法连接远程服务器、向远程服务器下发指令。代码如下:
数据库集群部署:使用函数安装方法安装mariadb相关软件包,相比单节点需要额外安装galera相关软件包保证写入数据的一致性与完整性,通过安装状态返回值判断软件包是否安装成功;两台机器分别进行数据库初始化;/usr/libexec/mysqld --wsrep-new-cluster --user=root&方式启动任意一台机器的数据库服务,另一台机器start_service方式加入mariadb集群,然后停止主服务器的mariadb服务,修改/var/lib/mysql/grastate.dat中safe_to_bootstrap值为1,最后galera_new_cluster启动数据库集群;验证数据库同步功能,任意一台服务器创建cluster_test数据库,另一台服务器查询数据库是否同步。
设置心跳检测:将心跳检测脚本放置到/usr/bin/目录下,创建心跳检测文件放置到/etc/xinetd.d/galera-monitor;启动心跳检测服务;测试心跳检测脚本/usr/bin/clustercheck
HTTP/1.1 200 OK
Content-Type: text/plain
Connection: close
Content-Length: 40
消息中间件集群部署:使用远程传送命令方法将.erlang.cookie分发给另一台节点,构建集群rabbitmqctl join_cluster --ram rabbit@controller01,将两台机器以ram节点的形式加入集群,rabbitmqctl start_app开启集群。
高可用、负载均衡集群部署:通过get_up_interface_name函数获取当前环境使用的网卡名称,并写入haproxy.cfg;将haproxy.cfg分别下发到两台机器;启动keepalived服务;安装haproxy相关包;创建HAproxy记录日志文件并授权;配置内核参数,允许进行IP转发;启动haproxy服务;
S204,本机获取日志存储文件中的执行结果,使用预设的匹配方法将执行结果与预期结果进行匹配判断,若匹配成功,则将当前步骤的执行函数的返回值result标记为0,跳转步骤S203以继续进行单机环境搭建过程或集群环境搭建过程,若匹配失败则将当前步骤的执行函数的返回值result标记为1,结束并退出环境部署测试,并打印测试结果。
S102,若结果文件中的返回值为0,则跳转步骤S101继续执行当前的测试脚本run.sh,直到当前测试脚本run.sh中的函数执行完毕,得到搭建好的Openstack测试环境;若结果文件中的返回值为1,则将当前测试脚本run.sh已经执行过的函数、当前测试脚本run.sh中的全部函数进行比较以确定尚未执行过的函数,已经执行过的函数是指结果文件中的返回值为0的所有函数,将尚未执行过的函数生成新的测试脚本run.sh,跳转步骤S101以新的测试脚本run.sh继续执行测试,直到新的测试脚本run.sh中的函数执行完毕,得到搭建好的Openstack测试环境;
如图8所示,在真实测试场景中,Openstack测试环境搭建过程中会因为某些测试项测试失败,导致退出环境部署测试,这种情况可能不是本身操作系统的bug,比如说因为网络状况不好,超出脚本规定的延时时间等等。诸如此类非bug情况导致退出环境部署测试的情况下,用户在排除问题后想继续后续的测试,如果再次运行run.sh,首先是比较耗时间,其次之前已经部署过的服务和配置已经生效,如果强行去删除一些配置会导致后续搭建出现错误,只能重装系统,为了避免这样的情况出现,本实施例在运行run.sh后调用函数名输出方法将正在执行的函数名输出到一个文件中,根据当前执行函数的返回值判断,如果是1,表明当前函数执行失败,将测试结果输出后,调用函数名对比方法将已经执行过的函数和所有函数对比生成未执行过的函数列表,生成新的run-xx.sh,用户需要查看日志判断当前脚本退出的原因,解决问题后,运行新的run-xx.sh继续执行测试。
Openstack测试环境搭建完成后执行测试用例时,包括以下步骤
S103,在搭建好的Openstack测试环境中执行测试用例,得到执行结果和对应的日志。
具体的,如图9所示,从config获取控制节点IP,调用test_token.py脚本判断openstack平台的连通性,即调用接口输入用户名密码测试能否访问平台,例如IP为172.30.243.102,接口就为http://172.30.243.102:5000/v3/auth/tokens,先定义web接口访问头文件:
headers = {"a":"b"}
访问主体:
body = {
"auth": {
"identity": {
"methods": ['password'],
"password": {
"user": {
"domain": {
"name": "default"
},
"name": "admin",
"password": "qwer1234"
}
}
},
"scope": {
"project": {
"domain": {
"name": "default"
},
"name": "admin"
}
}
}
}
接口测试:
headers["X-Auth-Token"] = requests.post("http://172.30.243.102:5000/v3/auth/tokens",headers=headers,json=body).headers["X-Subject-Token"]
判断是否访问成功,对返回的json文件进行判断:
if flag ==True:
return flag=1
else:
return flag=0
如果flag为0,证明openstack平台不能登录,则把日志输出,结果处理,输出测试结果。
如果flag为1,证明openstack平台能够成功访问,接着执行测试用例,其中create_instance_type.py是创建实例类型、create_net.py是创建网络、create_vm.py是创建虚拟机,这三个测试用例是默认执行的,输出日志,结果处理,输出测试结果。
测试用例存放目录为testcase目录,可以进行添加,如果测试需求有变更,可以在这个目录添加新的测试用例;log为日志存放目录,可以在此目录查看执行过程日志;result为结果存放目录,可以在此目录查看测试结果。
本实施例中,通过单独的方法函数run_log.py来处理日志打印。
def setup_logger(self, logfile, level=logging.DEBUG, log_dir=None):
"""
定义日志输出格式
"""
if log_dir:
logfile = os.path.join(log_dir, logfile)
self.logger = logging.getLogger("DiffISO")
ch = logging.FileHandler(logfile)
self.logger.setLevel(level)
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s- %(message)s')
ch.setFormatter(formatter)
self.logger.addHandler(ch)
return self.logger
本实施例中,步骤S103中得到执行结果后的处理流程如图10所示,包括:
创建子表:
调用Workbook()方法创建子表
# 创建Excel工作簿
wb = Workbook()
# 创建子表
ws1 = wb.active
ws1.append(['环境搭建测试结果', '平台功能测试结果', '测试用例执行结果',])
新建工作表:
调用Workbook().create_sheet()方法新建工作表
ws2 = wb.create_sheet("测试结果")
设置表格样式:
调用Font()方法进行样式设置
for cell in ws1['1:1']:
cell.font = Font(bold=True)
cell.fill = PatternFill(fill_type='solid', fgColor='99ccff')
保存excel文件:
调用Workbook().save()方法保存excel文件
wb.save(filename)
self.logger.info("测试结果已保存到%s中" % filename)
print("测试结果已保存到%s中" % filename)
在测试openstack功能的时候,openstack的可扩展能力也是重要的一项测试项,所谓可扩展能力就是在openstack部署完毕后,能够添加新的机器作为计算节点。如图11所示,添加计算节点时,运行add_compute.sh脚本从add_compute_config文件中获取待添加节点的ip和root密码,检测配置文件中的ip是否可以连通,如果不能连通就退出测试,并且告知退出原因,连通性检测通过后检测本机控制节点状态,这是为了防止控制节点功能异常导致计算节点不能添加成功,这里主要检测控制节点的典型服务的状态,比如nova、glance、keystone服务,控制节点状态检测不通过,异常退出,提示退出原因,检测通过会将部署代码通过sshation、远程传送命令方法发送给测试机远程执行部署命令,部署完毕后自动测试远程计算节点的nova计算服务功能和neutron网络服务功能,最后输出测试结果。因此。本实施例中,步骤S101之前或者步骤S102之后还包括添加计算节点功能并测试:
S501,获取待添加计算节点的ip;
S502,检测待添加计算节点的ip是否可以连通,是则跳转步骤S503,否则结束并退出,并告知退出原因;
S503,检测本机控制节点的状态,若检测通过则跳转步骤S504,否则结束并退出,并告知退出原因;
S504,本机控制节点将部署代码发送给待添加计算节点,待添加计算节点根据部署代码执行部署命令并部署完毕后,测试计算服务功能和网络服务功能,并输出测试结果。
如图12所示,本实施例设置有公共函数库,后期维护对于冗余性较高的代码,可以写成公共函数放入该库,公共函数包括:
日志打印函数:使用方法函数run_log.py来处理日志打印。
启动服务/重启服务函数:调用此函数来处理各个服务的启动和重启,并判断状态。
安装软件包函数:调用install_soft函数安装各个模块需要的软件包,并判断是否安装成功。
架构判断函数:用来判断当前系统的架构,针对不通的架构,脚本需要执行不同的代码。
Ssh连接远程机器函数:在执行集群方式搭建的时候,需要在控制端连接远程机器下发执行命令。
Scp传输文件函数:在执行集群方式搭建的时候,需要互相传输配置文件。
检查仓库是否完善函数:在执行搭建测试前,需要检查软件仓库是否设置完善。
查询数据库密码是否进行初始化函数:应用于测试中断再继续功能。
删除旧日志函数:测试开始前,需要先删除之前生成的日志,防止无关日志对机器资源造成占用。
生成测试结果函数:每一步执行结果都需调用此函数生成测试结果。
本实施例中,搭建Openstack测试环境时,还针对openstack版本差异化处理,如图13所示,首先获取架构类型,然后根据所获取的架构类型选择对应的启动方式以及openstack版本。
由于openstack版本的差异会Openstack测试环境搭建所需的模块名称、配置名称和服务名称存在一些区别,因此针对openstack版本差异化处理后,在步骤S203中,根据由配置文件的mode的值所确定的搭建方式搭建Openstack测试环境时,还通过openstack版本来选取Openstack测试环境搭建所需的模块、配置和服务。
实施例二
如图14所示,本实施例基于实施例一提出一种openstack自动化测试工具,包括配置文件模块、检测模块、添加计算节点模块、日志处理模块、搭建过程测试模块、判断模块、测试用例执行模块、结果处理模块,其中:
配置文件模块用于在Openstack测试环境搭建之前配置操作系统版本、Openstack测试环境搭建方式、openstack版本以及本机和远程机器的ip、用户名和密码;
检测模块用于在搭建前环境检测时进行仓库检测、主机名检测、openstack软件源检测和数据盘检测;
添加计算节点模块用于在Openstack测试环境搭建之后添加计算节点;
日志处理模块用于在Openstack测试环境搭建过程中以及执行测试用例过程中生成对应的日志;
搭建过程测试模块用于在Openstack测试环境搭建过程中针对单机环境或者集群环境搭建的过程进行测试;
判断模块用于在针对openstack版本差异化处理时进行openstack版本判断,还用于在搭建前环境检测时进行操作系统版本判断,还用于在Openstack测试环境搭建时进行搭建方式判断;
测试用例执行模块用于在搭建好的Openstack测试环境中执行测试用例;
结果处理模块用于在Openstack测试环境搭建过程中以及执行测试用例过程中进行结果处理。
本实施例还提出一种Linux系统下的Openstack测试系统,包括相互连接的微处理器和存储器,所述微处理器被编程或配置以执行实施例一所述Linux系统下的Openstack测试方法。
本实施例还提出一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,所述计算机程序用于被微处理器编程或配置以执行实施例一所述Linux系统下的Openstack测试方法。
综上所述,本发明能够按照用户的需求进行任何版本的openstack平台自动化测试、单机方式的环境部署测试、集群方式的环境部署测试、环境部署测试日志输出、部署中断再继续功能、环境部署测试结果处理、任意添加计算节点、部署成功后平台自动化测试、自动化测试日志输出、自动化测试结果输出
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可读存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

Claims (9)

1.一种Linux系统下的Openstack测试方法,其特征在于,包括:
S101,执行测试脚本run.sh并进行环境部署测试的日志和测试结果处理,所述测试脚本run.sh在调用函数时将正在执行的函数的返回值输出到指定的结果文件中;
S102,若结果文件中的返回值为指定的值,则将测试脚本run.sh已经执行过的函数、测试脚本run.sh中的全部函数进行比较以确定尚未执行过的函数,将尚未执行过的函数生成新的测试脚本run.sh,跳转步骤S101以继续执行测试,直到测试脚本run.sh中的函数执行完毕,得到搭建好的Openstack测试环境;
S103,在搭建好的Openstack测试环境中执行测试用例,得到执行结果和对应的日志;
步骤S101中执行测试脚本run.sh并进行环境部署测试的日志和测试结果处理包括:
S201,执行测试脚本run.sh时,创建与当前测试的每个模块对应的日志存储文件;
S202,获取配置文件的mode的值;
S203,若为第一值,本机根据测试脚本run.sh进行单机环境搭建,将单机环境搭建过程中当前步骤的执行输出保存在本机的对应模块的日志存储文件中;若为第二值,本机控制远程机器根据测试脚本run.sh进行集群环境搭建,将集群环境搭建过程中的当前步骤的执行输出保存在远程机器的对应模块的日志存储文件中;
S204,本机获取日志存储文件中的执行结果,使用预设的匹配方法将执行结果与预期结果进行匹配判断,若匹配成功,则将当前步骤的执行函数的返回值标记为0,跳转步骤S203以继续进行单机环境搭建过程或集群环境搭建过程,若匹配失败则将当前步骤的执行函数的返回值标记为1,结束并退出环境部署测试,并打印测试结果。
2.根据权利要求1所述的Linux系统下的Openstack测试方法,其特征在于,步骤S102中指定的值为1,已经执行过的函数是指结果文件中的返回值为0的所有函数。
3.根据权利要求1所述的Linux系统下的Openstack测试方法,其特征在于,所述集群环境相对单机环境而言将Openstack测试所需的数据库服务、消息中间件服务采用多台服务器进行集群化处理,且通过额外配置一台服务器实现对多台服务器构成的集群的心跳检测、高可用集群和负载均衡集群管理。
4.根据权利要求1所述的Linux系统下的Openstack测试方法,其特征在于,步骤S101之前还包括:
S301,进行操作系统版本检查,若检查通过则跳转步骤S302,否则结束并退出;
S302,进行Openstack版本检查,若检查通过则跳转步骤S302,否则结束并退出;
S303,进行存储介质检查,若检查通过则跳转步骤S101,否则结束并退出。
5.根据权利要求4所述的Linux系统下的Openstack测试方法,其特征在于,步骤S302包括:判断配置文件中指定的Openstack软件仓库是否可用,若Openstack软件仓库不可用,则抛出异常,结束并退出;否则读取Openstack软件仓库中的Openstack版本,若Openstack软件仓库中的Openstack版本与配置文件中指定的Openstack版本一致,则判定检查通过,跳转步骤S303,否则抛出异常,结束并退出。
6.根据权利要求4所述的Linux系统下的Openstack测试方法,其特征在于,步骤S303包括:
S401,读取配置文件中指定的存储介质;
S402,判断存储介质是否存在,若存储介质不存在,则抛出异常,结束并退出;否则跳转步骤S403;
S403,通过人机交互获取存储介质是否可以被格式化的用户确认结果,若用户确认不可以格式化,则抛出异常,结束并退出;否则跳转步骤S404;
S404,格式化存储介质,若格式化失败,则抛出异常,结束并退出;否则跳转步骤S405;
S405,将存储介质挂载到指定目录,若挂载失败,则抛出异常,结束并退出;否则跳转步骤S406;
S406,往指定目录中创建文件并进行文件读写操作,若操作失败,则抛出异常,结束并退出;否则跳转步骤S101。
7.根据权利要求1所述的Linux系统下的Openstack测试方法,其特征在于,步骤S101之前或者步骤S102之后还包括添加计算节点功能并测试:
S501,获取待添加计算节点的ip;
S502,检测待添加计算节点的ip是否可以连通,是则跳转步骤S503,否则结束并退出,并告知退出原因;
S503,检测本机控制节点的状态,若检测通过则跳转步骤S504,否则结束并退出,并告知退出原因;
S504,本机控制节点将部署代码发送给待添加计算节点,待添加计算节点根据部署代码执行部署命令并部署完毕后,测试计算服务功能和网络服务功能,并输出测试结果。
8.一种Linux系统下的Openstack测试系统,包括相互连接的微处理器和存储器,其特征在于,所述微处理器被编程或配置以执行权利要求1~7中任意一项所述Linux系统下的Openstack测试方法。
9.一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,其特征在于,所述计算机程序用于被微处理器编程或配置以执行权利要求1~7中任意一项所述Linux系统下的Openstack测试方法。
CN202311793817.4A 2023-12-25 2023-12-25 Linux系统下的Openstack测试方法及系统 Active CN117472785B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311793817.4A CN117472785B (zh) 2023-12-25 2023-12-25 Linux系统下的Openstack测试方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311793817.4A CN117472785B (zh) 2023-12-25 2023-12-25 Linux系统下的Openstack测试方法及系统

Publications (2)

Publication Number Publication Date
CN117472785A CN117472785A (zh) 2024-01-30
CN117472785B true CN117472785B (zh) 2024-04-16

Family

ID=89634991

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311793817.4A Active CN117472785B (zh) 2023-12-25 2023-12-25 Linux系统下的Openstack测试方法及系统

Country Status (1)

Country Link
CN (1) CN117472785B (zh)

Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105224459A (zh) * 2015-10-21 2016-01-06 浪潮电子信息产业股份有限公司 一种linux平台下测试bmc通过oem命令读写bios配置功能的方法
CN106484613A (zh) * 2016-09-13 2017-03-08 郑州云海信息技术有限公司 一种基于fitnese的接口自动化测试框架
CN107515823A (zh) * 2017-08-16 2017-12-26 郑州云海信息技术有限公司 一种生成配置文件的方法
CN107704395A (zh) * 2017-10-24 2018-02-16 武大吉奥信息技术有限公司 一种基于Openstack下云平台自动化测试实施方法与系统
CN108536593A (zh) * 2018-04-02 2018-09-14 泰华智慧产业集团股份有限公司 基于ui的cs架构软件自动化测试方法及系统
CN110347598A (zh) * 2019-07-10 2019-10-18 上海达梦数据库有限公司 一种测试脚本生成方法、装置、服务器及存储介质
CN110399306A (zh) * 2019-07-31 2019-11-01 中国工商银行股份有限公司 软件模块自动化测试方法及装置
CN110928760A (zh) * 2018-09-20 2020-03-27 杭州海康汽车技术有限公司 一种嵌入式系统中的单元测试方法与装置
CN112000567A (zh) * 2019-12-04 2020-11-27 国网河北省电力有限公司 一种基于云平台的调控软件测试服务方法
CN116166525A (zh) * 2022-11-16 2023-05-26 超聚变数字技术有限公司 一种测试脚本的生成方法及装置
CN116501596A (zh) * 2022-01-18 2023-07-28 腾讯科技(深圳)有限公司 应用程序的测试方法及装置
CN116662203A (zh) * 2023-06-28 2023-08-29 平安银行股份有限公司 测试方法、装置、计算机设备及存储介质

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100218168A1 (en) * 2009-02-23 2010-08-26 Gonzales Ii Jesus Orlando System and Method for Generating a Test Environment Script File
US9450985B2 (en) * 2014-08-04 2016-09-20 International Business Machines Corporation Server validation with dynamic assembly of scripts
US11061809B2 (en) * 2019-05-29 2021-07-13 Red Hat, Inc. Software debugging system with improved test execution and log file tracking

Patent Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105224459A (zh) * 2015-10-21 2016-01-06 浪潮电子信息产业股份有限公司 一种linux平台下测试bmc通过oem命令读写bios配置功能的方法
CN106484613A (zh) * 2016-09-13 2017-03-08 郑州云海信息技术有限公司 一种基于fitnese的接口自动化测试框架
CN107515823A (zh) * 2017-08-16 2017-12-26 郑州云海信息技术有限公司 一种生成配置文件的方法
CN107704395A (zh) * 2017-10-24 2018-02-16 武大吉奥信息技术有限公司 一种基于Openstack下云平台自动化测试实施方法与系统
CN108536593A (zh) * 2018-04-02 2018-09-14 泰华智慧产业集团股份有限公司 基于ui的cs架构软件自动化测试方法及系统
CN110928760A (zh) * 2018-09-20 2020-03-27 杭州海康汽车技术有限公司 一种嵌入式系统中的单元测试方法与装置
CN110347598A (zh) * 2019-07-10 2019-10-18 上海达梦数据库有限公司 一种测试脚本生成方法、装置、服务器及存储介质
CN110399306A (zh) * 2019-07-31 2019-11-01 中国工商银行股份有限公司 软件模块自动化测试方法及装置
CN112000567A (zh) * 2019-12-04 2020-11-27 国网河北省电力有限公司 一种基于云平台的调控软件测试服务方法
CN116501596A (zh) * 2022-01-18 2023-07-28 腾讯科技(深圳)有限公司 应用程序的测试方法及装置
CN116166525A (zh) * 2022-11-16 2023-05-26 超聚变数字技术有限公司 一种测试脚本的生成方法及装置
CN116662203A (zh) * 2023-06-28 2023-08-29 平安银行股份有限公司 测试方法、装置、计算机设备及存储介质

Also Published As

Publication number Publication date
CN117472785A (zh) 2024-01-30

Similar Documents

Publication Publication Date Title
US20210349706A1 (en) Release lifecycle management system for multi-node application
JP5535484B2 (ja) 自動ソフトウェアテストフレームワーク
US7392148B2 (en) Heterogeneous multipath path network test system
US20210326196A1 (en) A remediation system to prevent incompatible program module installation in an information processing system
CN112148315A (zh) 软件部署方法、装置、服务器及存储介质
CN113687858B (zh) 配置文件的检查方法、装置、电子设备及存储介质
Dunagan et al. Towards a self-managing software patching process using black-box persistent-state manifests
US20080172579A1 (en) Test Device For Verifying A Batch Processing
CN112363731A (zh) 一种应用自动化部署方法、装置和计算机可读存储介质
US20240118884A1 (en) Automated deployment method for upgrading client&#39;s internal business software systems
CN117472785B (zh) Linux系统下的Openstack测试方法及系统
US9069619B2 (en) Self-testable HA framework library infrastructure
US20210271467A1 (en) Automation Controller For Upgrading An IT Infrastructure
WO2005096736A2 (en) Clusterization with automated deployment of a cluster-unaware application
US11954469B2 (en) Bases for pattern-based cloud computing
CN115664948B (zh) 虚拟资源自动配置下发方法、装置、系统及存储介质
CN117251201A (zh) 车辆的应用软件发布方法及装置
CN116775044A (zh) 集群部署方法、装置、设备及存储介质
CN117608729A (zh) 一种远程控制方法及系统、存储介质
CN116225617A (zh) 容器实例的管理迁移方法、装置和电子设备及存储介质
Krogh et al. MySQL Cluster Manager
CN113900688A (zh) 软件升级方法、装置、服务器及存储介质
CN116644405A (zh) 一种linux系统权限检查方法、装置、电子设备及存储介质
CN112994907A (zh) 虚拟机的网络配置方法、装置、存储介质及设备
CN117632209A (zh) 一种Kubernetes环境应用程序配置热更新的方式

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant