CN113900928B - 一种io负载自动化测试方法、装置 - Google Patents
一种io负载自动化测试方法、装置 Download PDFInfo
- Publication number
- CN113900928B CN113900928B CN202111087857.8A CN202111087857A CN113900928B CN 113900928 B CN113900928 B CN 113900928B CN 202111087857 A CN202111087857 A CN 202111087857A CN 113900928 B CN113900928 B CN 113900928B
- Authority
- CN
- China
- Prior art keywords
- load
- parameter
- file
- parameters
- list
- 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
Links
- 238000010998 test method Methods 0.000 title abstract description 6
- 238000012360 testing method Methods 0.000 claims description 33
- 238000000034 method Methods 0.000 claims description 18
- 238000006243 chemical reaction Methods 0.000 claims description 6
- 238000012545 processing Methods 0.000 claims description 6
- 238000004364 calculation method Methods 0.000 claims description 5
- 230000011218 segmentation Effects 0.000 claims description 2
- 238000012795 verification Methods 0.000 description 11
- 238000004891 communication Methods 0.000 description 4
- 230000006835 compression Effects 0.000 description 2
- 238000007906 compression Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000006467 substitution reaction Methods 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 1
- 238000013524 data verification Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3688—Test management for test execution, e.g. scheduling of test suites
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)
- Test And Diagnosis Of Digital Computers (AREA)
Abstract
本发明提供一种IO负载自动化测试方法、装置,包括如下步骤:通过配置文件设置负载库;从负载库中选择要测试的IO负载并对IO负载参数进行分类;按照参数的类别将IO负载参数存入相应的列表;按照设定的参数格式将列表中存放的IO负载参数和值转换成字符串写入参数文件;将执行命令写入到执行参数文件中生成自动化执行文件,并指定日志输出文件;执行自动化执行文件,并在每次执行完成后通过日志文件校验是否执行成功。IO负载库中将常用以及用过的IO负载保留在负载库中,当需要测试某个负载时,只需要打开执行开关即可,大大提高了自动化覆盖率。
Description
技术领域
本发明涉及存储自动化测试技术领域,具体涉及一种IO负载自动化测试方法、装置。
背景技术
在linux系统下测试块设备和文件中工作中,经常会用到vdbench工具来测试文件系统或块设备IO基准性能。然而vdbench的配置参数异常的多,还要将参数按照一定的格式写入到参数文件中,对于新手甚至不是很熟练的用户,往往不知道如何设置参数。
现在很多的vdbench自动化方法,仅仅是自动启动vdbench,或者固定某些比较少的参数设置,自动将参数按照固定格式写入到参数文件中然后启动vdbench运行。目前现在自动使用vdbench的方法都太局限性,扩展性弱,不能满足当前多种多样的负载设置,而且使用性上并没有降低配置难度。
发明内容
针对目前现在自动使用vdbench的方法具有局限性,扩展性弱,不能满足当前多种多样的负载设置,而且使用性上并没有降低配置难度的问题,本发明提供一种IO负载自动化测试方法、装置。
本发明的技术方案是:
一方面,本发明技术方案提供一种IO负载自动化测试方法,包括如下步骤:
通过配置文件设置负载库;
从负载库中选择要测试的IO负载并对IO负载参数进行分类;
按照参数的类别将IO负载参数存入相应的列表;
按照设定的参数格式将列表中存放的IO负载参数和值转换成字符串写入参数文件;
将执行命令写入到执行参数文件中生成自动化执行文件,并指定日志输出文件;
执行自动化执行文件,并在每次执行完成后通过日志文件校验是否执行成功。
IO负载库中将常用以及用过的IO负载保留在负载库中,当需要测试某个负载时,只需要打开执行开关即可。基本实现所有场景的IO测试,大大提高了自动化覆盖率。
进一步的,通过配置文件设置负载库的步骤包括:
定义用于记录各种参数的参数库,并且定义参数库中参数分类,参数库中对每个参数进行详细的注释说明;
定义负载库;
参照参数库将参数配置到负载库。
通过配置文件设置一个IO负载库和一个参数库,从IO负载库中选择要测试的IO负载进行设置实现自动化测试。
进一步的,所述的从负载库中选择要测试的IO负载并对IO负载参数进行分类的步骤包括:
从负载库中选择要测试的IO负载;
通过参数库定义的参数分类,对IO负载参数进行分类设置生成负载参数配置文件。
进一步的,通过参数库定义的参数分类,对IO负载的参数进行分类设置生成负载参数配置文件的步骤中,负载参数配置文件中包括:
若是多个块设备或文件系统且IO负载的参数类型相同,设置参数值时用逗号作为分隔符;
若是多个块设备或多个文件系统且IO负载的参数类型不同时,设置参数值时用竖线作为分隔符。
进一步的,按照参数的类别将IO负载参数存入相应的列表的步骤包括:
解析负载参数配置文件中配置的IO负载参数;
将解析的所有的IO负载参数和值存放到列表中;其中,每个参数以key-value的字典形式作为列表元素存放。
进一步的,按照设定的参数格式将列表中存放的IO负载参数和值转换成字符串写入参数文件的步骤包括:
根据参数值中的竖线分隔符计算子负载个数;
根据子负载个数将列表分割成同等数量的子列表存放到一个列表中;其中参数值若没有竖线分隔符,则存放到子列表中时值value相同,若有竖线分隔符,则存放到子列表中时值value不相同;
按照设定的参数格式将列表中所有的元素转为字符串;
将所有列表中的每一个字符串元素作为一行按照设定的顺序写入参数文件中。
运用列表存放IO负载参数和参数库参数,并按照参数类别进行多个列表存放;然后以正确的方式分裂列表,实现一个IO工作负载中多种子负载的存放;然后将列表存放的IO负载参数和值转化成字符串,并按照正确的顺序和格式将字符串写入参数文件中;为了实现多个IO负载批量执行,将vdbench可执行命令行写入到一个可执行文件中,若有日志校验,则自动添加日志校验执行步骤。
进一步的,将所有列表中的每一个字符串元素作为一行按照设定的顺序写入参数文件中的步骤包括:
以设定的顺序将每个字符串推入到一个队列;
从队列中取出每个字符串元素作为文件参数的一行写入到参数文件中。
进一步的,定义负载库的步骤包括:
定义全局变量和IO负载;其中,全局变量包含负载开关列表;
将IO负载加入负载开关列表中。
另一方面,本发明技术方案还提供一种IO负载自动化测试装置,包括负载库设置模块、负载参数分类模块、负载参数存储模块、参数文件生成模块、执行文件生成模块、执行处理模块;
负载库设置模块,用于通过配置文件设置负载库;
负载参数分类模块,用于从负载库中选择要测试的IO负载并对IO负载参数进行分类;
负载参数存储模块,用于按照参数的类别将IO负载参数存入相应的列表;
参数文件生成模块,用于按照设定的参数格式将列表中存放的IO负载参数和值转换成字符串写入参数文件;
执行文件生成模块,用于将执行命令写入到执行参数文件中生成自动化执行文件,并指定日志输出文件;
执行处理模块,用于执行自动化执行文件,并在每次执行完成后通过日志文件校验是否执行成功。
进一步的,该装置还包括参数库定义模块;
负载库设置模块包括负载库定义单元和参数配置单元;
参数库定义模块,用于定义用于记录各种参数的参数库,并且定义参数库中参数分类,参数库中对每个参数进行详细的注释说明;
负载库定义单元,用于定义负载库;
参数配置单元,用于参照参数库将参数配置到负载库。
进一步的,负载参数分类模块包括IO负载选择单元、分类设置单元;
IO负载选择单元,用于从负载库中选择要测试的IO负载;
分类设置单元,用于通过参数库定义的参数分类,对IO负载参数进行分类设置生成负载参数配置文件。
进一步的,分类设置单元,具体用于若是多个块设备或文件系统且IO负载的参数类型相同,设置参数值时用逗号作为分隔符;若是多个块设备或多个文件系统且IO负载的参数类型不同时,设置参数值时用竖线作为分隔符。
进一步的,负载参数存储模块包括参数解析单元和存储单元;
参数解析单元,用于解析负载参数配置文件中配置的IO负载参数;
存储单元,用于将解析的所有的IO负载参数和值存放到列表中;其中,每个参数以key-value的字典形式作为列表元素存放。
进一步的,参数文件生成模块包括计算单元、分割单元、转换单元、生成单元;
计算单元,用于根据参数值中的竖线分隔符计算子负载个数;
分割单元,用于根据子负载个数将列表分割成同等数量的子列表存放到一个列表中;其中参数值若没有竖线分隔符,则存放到子列表中时值value相同,若有竖线分隔符,则存放到子列表中时值value不相同;
转换单元,用于按照设定的参数格式将列表中所有的元素转为字符串;
生成单元,用于将所有列表中的每一个字符串元素作为一行按照设定的顺序写入参数文件中。
进一步的,生成单元,具体用于以设定的顺序将每个字符串推入到一个队列;从队列中取出每个字符串元素作为文件参数的一行写入到参数文件中。
进一步的,负载库定义单元,具体用于定义全局变量和IO负载;其中,全局变量包含负载开关列表;将IO负载加入负载开关列表中。
从以上技术方案可以看出,本发明具有以下优点:不仅可定制化IO工作负载,也可批量顺序执行多个IO负载,亦可按照校验方式进行正确数据校验,应用于IO性能基准测试中。定义的参数库中,详细解释了每个参数的类型和使用说明,形同一个说明书,基本无需再去查看繁琐的初始用户手册。若运用在自动化测试中,大大提高了自动化覆盖率。
此外,本发明设计原理可靠,结构简单,具有非常广泛的应用前景。
由此可见,本发明与现有技术相比,具有突出的实质性特点和显著地进步,其实施的有益效果也是显而易见的。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明一个实施例的方法的示意性流程图。
图2是本发明一个实施例的装置的示意性框图。
具体实施方式
为了使本技术领域的人员更好地理解本发明中的技术方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
如图1所示,本发明实施例一提供一种IO负载自动化测试方法,包括如下步骤:
步骤11:通过配置文件设置负载库;负载库中记录各种常用的IO负载;
步骤12:从负载库中选择要测试的IO负载并对IO负载参数进行分类;
步骤13:按照参数的类别将IO负载参数存入相应的列表;
步骤14:按照设定的参数格式将列表中存放的IO负载参数和值转换成字符串写入参数文件;要启动IO工具测试一个IO负载时,无需关注各种参数应该怎样组合以及怎样正确的写入到参数文件中,只需要设置主要参数即可。
步骤15:将执行命令写入到执行参数文件中生成自动化执行文件,并指定日志输出文件;
步骤16:执行自动化执行文件,并在每次执行完成后通过日志文件校验是否执行成功。
参数库中设定了几乎所有能用到的参数,按照分类进行存放,判断IO负载设置的参数若是同属一类进行对应的格式转化,最后写入到参数文件中
IO负载库中将常用以及用过的IO负载保留在负载库中,当需要测试某个负载时,只需要打开执行开关即可。基本实现所有场景的IO测试,大大提高了自动化覆盖率。
本发明实施例二提供一种IO负载自动化测试方法,包括如下步骤:
步骤21:通过配置文件设置负载库;
本步骤具体包括:定义用于记录各种参数的参数库,并且定义参数库中参数分类,参数库中对每个参数进行详细的注释说明;
参数库中按照vdbench的参数类别分为不同的类型,将常用参数按照不同类型进行分类,在判断负载参数属于哪类参数时,将所有参数预取一次放入到几个列表中,作为分类依据,可新增和删除参数。参照参数库将参数配置到负载库。首先定义全局变量和IO负载;其中,全局变量包含负载开关列表;将IO负载加入负载开关列表中。
步骤22:从负载库中选择要测试的IO负载;
步骤23:通过参数库定义的参数分类,对IO负载参数进行分类设置生成负载参数配置文件;
需要说明的是,负载参数配置文件中包括:若是多个块设备或文件系统且IO负载的参数类型相同,设置参数值时用逗号作为分隔符;若是多个块设备或多个文件系统且IO负载的参数类型不同时,设置参数值时用竖线作为分隔符。
步骤24:按照参数的类别将IO负载参数存入相应的列表;本步骤具体包括:步骤241:解析负载参数配置文件中配置的IO负载参数;
步骤242:将解析的所有的IO负载参数和值存放到列表中;其中,每个参数以key-value的字典形式作为列表元素存放。
步骤25:按照设定的参数格式将列表中存放的IO负载参数和值转换成字符串写入参数文件;
本步骤具体包括:
步骤251:根据参数值中的竖线分隔符计算子负载个数;
步骤252:根据子负载个数将列表分割成同等数量的子列表存放到一个列表中;其中参数值若没有竖线分隔符,则存放到子列表中时值value相同,若有竖线分隔符,则存放到子列表中时值value不相同;
步骤253:按照设定的参数格式将列表中所有的元素转为字符串;
步骤254:将所有列表中的每一个字符串元素作为一行按照设定的顺序写入参数文件中。具体包括:运用列表存放IO负载参数和参数库参数,并按照参数类别进行多个列表存放;然后以正确的方式分裂列表,实现一个IO工作负载中多种子负载的存放;然后将列表存放的IO负载参数和值转化成字符串,并按照正确的顺序和格式将字符串写入参数文件中;
步骤26:将执行命令写入到执行参数文件中生成自动化执行文件,并指定日志输出文件;
步骤27:执行自动化执行文件,并在每次执行完成后通过日志文件校验是否执行成功。
为了实现多个IO负载批量执行,将vdbench可执行命令行写入到一个可执行文件中,若有日志校验,则自动添加日志校验执行步骤。
具体实施过程如下:
(1)首先要设置负载参数,确定IO负载。
在IO负载库中,定义全局变量和负载单元(WLU)。全局变量包含负载开关(ON)列表,将要测试的负载加入到此列表中(ON=[WLU1,WLU2,WLU3…]),实现批量测试多个负载。负载单元设置可设置多个,可提前设置好多个常用负载单元,亦可新增负载单元,只需要适当改变一下参数即可满足个人测试需求。负载单元可以是多个负载的组合。
测试对象可设置成块设备、文件系统,因为vdbench不适合同时测试块设备和文件系统,所以定义两个IO负载库,一个是块设备负载库(rawdisk_wl.conf)一个是文件系统负载库(file_wl.conf)。
以块设备负载库(rawdisk_wl.conf)设置为样例:
[Globle]
ON=[WLU1,WLU2,WLU3…]
[WLU1]
#主机IP地址或主机名
System=node1,node2
#slave和master通信使用用户
User=root
#可选值为rsh、ssh或vdbench,默认值为rsh,多主机联机测试时通信方式
shell=ssh
#块设备
Lun=/dev/sda,/dev/sdb|/dev/sdc
#对每个SD的最大并发I/O请求数量
Threads=8
#寻址方式,随机或顺序,取值:sequential/random,或者0/100
seekpct=100
#取请求占请求总数的百分比,设置为0时表示写,设置为100时表示读
rdpct=100|0
#默认值为30,测试运行持续时间(单位为秒)
Elapsed=3600
#报告时间间隔(单位为秒)
interval=2
#压缩率compratio
Compratio=2
#命令行参数,不用写入到参数文件中的参数,可设置多个参数
exec_param=-jn-v
[WLU2]
……
[WLU3]
……
(2)读取参数库中所有的参数放入到参数类列表中,作为IO负载库中配置的负载单元的参数的分类依据。
参数库中按照vdbench的参数类别分为不同的类型,将常用参数按照不同类型进行分类,在判断负载参数属于哪类参数时,将所有参数预取一次放入到几个列表中,作为分类依据,可新增和删除参数。块设备参数类型分为:General、HD、SD、WD、RD,在参数中库(vdbench_params.conf)配置格式如下(以块设备参数为例):
[General]
#压缩率compratio
compratio
[HD]
#主机IP地址或主机名
system
#slave和master通信使用用户
user
#可选值为rsh、ssh或vdbench,默认值为rsh,多主机联机测试时通信方式
shell
[SD]
#块设备
lun
#对每个SD的最大并发I/O请求数量
threads
[WD]
#寻址方式,随机或顺序,取值:sequential/random,或者0/100
seekpct
#取请求占请求总数的百分比,设置为0时表示写,设置为100时表示读rdpct
[RD]
#默认值为30,测试运行持续时间(单位为秒)
elapsed
#报告时间间隔(单位为秒)
interval
测试启动时,读取配置文件,将所有参数读取到内存中放入到列表中待用,列表如下:
General=[compratio,dedupratio]
HD=[hd,system,vdbench,user,shell],
SD=[sd,hd,lun,openflags,threads],
WD=[wd,sd,seekpct,rdpct,xfersize,skew],
RD=[rd,wd,iorate,warmup,maxdata,elapse,interval];
文件系统参数类型分为:General、HD、FSD、FWD、RD,存放列表如下:
General=[compratio,dedupratio]
HD=[hd,system,vdbench,user,shell],
FSD=[fsd,anchor,depth,width,files,size,shared],
FWD=[fwd,fsd,host,operation,rdpct,fileio,fileselect,xfersizes,threads],RD=[rd,fwd,fwdrate,format,elapse,interval]。
不在这些队列中的默认为都是General变量参数。
(3)自动化程序会自动根据配置的IO负载库(rawdisk_wl.conf),按照vdbench固有的格式生成一个或多个vdbench执行参数文件。
在负载库中,判断参数类型,然后按照vdbench参数文件格式,将所有同属一类型的参数,按照正确的参数文件格式组成一个字符串,以正确的顺序将每个字符串推入到一个队列,然后从队列中取出每个字符串元素作为文件参数的一行写入到参数文件中。这种队列形式存放参数字符串,不仅可以实现按照约定的顺序逐行写入文件,主要功能是逐个判断参数然后将多个同类型参数组成一个字符串。
如果是多个块设备或文件系统且负载参数相同,则可在设置参数值时用符号逗号作为分隔符;对于多个块设备或多个文件系统同时测试且负载参数不同时,可在设置参数值时用符号竖线作为分隔符。解析文件中配置的WLU所有的参数,然后将其所有的参数名称和值存放到列表中,每个参数以key-value的字典形式作为列表元素存放,然后再按照正确的格式组成字符串写入到参数文件中。
对于块设备,定义四个列表,分别是General参数列表(General_list)存放General名称和值,HD列表(HD_list)存放HD相关参数名称和值,SD列表(SD_list)存放SD相关参数名称和值,WD列表(WD_list)存放WD相关参数名称和值,RD列表(RD_list)存放RD相关参数名称和值,需要vdbench命令中执行的参数单独放入到字符串exec_params中。单机运行时不需要配置HD参数,当多机运行时,此发明方法仅仅支持多主机相同负载运行,此种情况也是大多数测试场景。
通过参数lun或者anchor的值中的分隔符,判断本次的WLU是不是具有多个工作负载,并记录负载数量。对于所有的测试设备和文件都一样工作负载的情况,这只需要关注块设备或文件系统是不是多个,如果是多个就设置多个SD或者FSD,其他FWD或WD、RD参数设置都一样。对于有不同工作负载场景,都是不同的块设备或者文件系统测试不同的负载,所以根据块设备或者文件系统参数值中的分隔符计算子负载个数。然后其他参数再根据分隔符分割,将列表SD_list、WD_list按照子负载个数分割成同等数量的子列表存放到一个大列表中,其中参数值若没有分隔符,则存放到小列表中时值value都是相同的,只有有分隔符的值才会不同。分割样例如下:
Big_HD_list=[{‘system’:‘node1,node2’},{‘user’:‘root’}]
Big_SD_list=[[{‘lun’:‘/dev/sda,/dev/sdb’},{‘threads’:‘6’}],[{‘lun’:‘/dev/sdc’},{‘threads’:‘6’}]]
Big_SW_list=[[{‘seekpct’:‘100’,{‘rdpct’:‘100’}],[{‘seekpct’:‘100’,{‘rdpct’:‘0’}]]
Big_RD_list=[{‘elapse’:‘3600’,{‘interval’:‘2’}]
然后按照顺序转化成正确格式的字符串,存放到对应的字符串列表中。若参数值中有分隔符则表示有多个值,则会组成同等数量的字符串,某些固定参数序号会自动递增,比如sd=sd*;对于WD的参数字符串转化,一定要与SD对应,Big_SW_list第N个字列表对应Big_SD_list的第N个子列表中所有的参数,比如参数WD中参数sd会被转为sd=sd[1-2]。同理,文件系统FWD要与FSD按照相同原理进行转化字符串。
块设备测试按照Generl->HD->SD->WD->RD的顺序写入到参数文件,同理文件系统会按照Generl->HD->FSD->FWD->RD的顺序写入到参数文件,每一个字符串即为一行。以块设备生成的参数文件testcase1_params为例,如下:
compratio=2
hd=hd1,system=node1,user=root
hd=hd2,system=node2,user=root
sd=sd1,hd=hd*,lun=/dev/sda,threads=6
sd=sd2,hd=hd*,lun=/dev/sdb,threads=6
sd=sd3,hd=hd*,lun=/dev/sdc,threads=6
wd=wd1,sd=sd[1-2],seekpct=100,rdpct=100
wd=wd2,sd=sd[3],seekpct=100,rdpct=0
rd=rd1,wd=wd*,elapse=3600,interval=2
如是多个WLU则会生成多个参数文件,比如testcase1_params和testcase2_params.
(4)将vdbench执行命令写入到执行文件中,若有日志校验,并添加日志校验执行命令。
将执行命令写入到一个执行文件(exec_file)中,若exec_param不为空则将命令参数添加到执行命令行中,并自动指定日志输出文件,则可实现顺序的批量测试多个工作负载。文件如下:
vdbench-f testcase1-o terstcase1.log-jn-v
vdbench-f testcase2-o terstcase2.log-jn-v
如果指定日志校验方式,则会在执行完毕后,自动写入对应的日志校验方式,执行文件exec_file中执行命令如下:
vdbench-f testcase1-o terstcase1.log-jn-v
vdbench-f testcase1-jro-cn
vdbench-f testcase2-o terstcase2.log-jn–v
vdbench-f testcase2-jro–cn。
(5)最后执行自动化程序vdbench_auto-f rawdisk_wl.conf,并在每次执行完成后,通过log文件校验是否执行成功。
如图2所示,本发明实施例还提供一种IO负载自动化测试装置,包括负载库设置模块11、负载参数分类模块22、负载参数存储模块33、参数文件生成模块44、执行文件生成模块55、执行处理模块66;
负载库设置模块11,用于通过配置文件设置负载库;
负载参数分类模块22,用于从负载库中选择要测试的IO负载并对IO负载参数进行分类;
负载参数存储模块33,用于按照参数的类别将IO负载参数存入相应的列表;
参数文件生成模块44,用于按照设定的参数格式将列表中存放的IO负载参数和值转换成字符串写入参数文件;
执行文件生成模块55,用于将执行命令写入到执行参数文件中生成自动化执行文件,并指定日志输出文件;
执行处理模块66,用于执行自动化执行文件,并在每次执行完成后通过日志文件校验是否执行成功。
需要说明的是,该装置还包括参数库定义模块77;
负载库设置模块11包括负载库定义单元和参数配置单元;
参数库定义模块,用于定义用于记录各种参数的参数库,并且定义参数库中参数分类,参数库中对每个参数进行详细的注释说明;
负载库定义单元,用于定义负载库;具体用于定义全局变量和IO负载;其中,全局变量包含负载开关列表;将IO负载加入负载开关列表中。
参数配置单元,用于参照参数库将参数配置到负载库。
在有些实施例中,负载参数分类模块22包括IO负载选择单元、分类设置单元;
IO负载选择单元,用于从负载库中选择要测试的IO负载;
分类设置单元,用于通过参数库定义的参数分类,对IO负载参数进行分类设置生成负载参数配置文件。具体用于若是多个块设备或文件系统且IO负载的参数类型相同,设置参数值时用逗号作为分隔符;若是多个块设备或多个文件系统且IO负载的参数类型不同时,设置参数值时用竖线作为分隔符。
在有些实施例中,负载参数存储模块33包括参数解析单元和存储单元;
参数解析单元,用于解析负载参数配置文件中配置的IO负载参数;
存储单元,用于将解析的所有的IO负载参数和值存放到列表中;其中,每个参数以key-value的字典形式作为列表元素存放。
在有些实施例中,参数文件生成模块44包括计算单元、分割单元、转换单元、生成单元;
计算单元,用于根据参数值中的竖线分隔符计算子负载个数;
分割单元,用于根据子负载个数将列表分割成同等数量的子列表存放到一个列表中;其中参数值若没有竖线分隔符,则存放到子列表中时值value相同,若有竖线分隔符,则存放到子列表中时值value不相同;
转换单元,用于按照设定的参数格式将列表中所有的元素转为字符串;
生成单元,用于将所有列表中的每一个字符串元素作为一行按照设定的顺序写入参数文件中。具体用于以设定的顺序将每个字符串推入到一个队列;从队列中取出每个字符串元素作为文件参数的一行写入到参数文件中。
通过配置文件设置一个IO负载库和一个参数库,从IO负载库中选择要测试的IO负载,并通过参数库定义的参数分类,对IO负载参数进行分类;运用列表存放IO负载参数和参数库参数,并按照参数类别进行多个列表存放;将列表分裂,实现一个IO负载中多种子负载的存放;然后按照vdbench参数格式将列表存放的IO负载参数和值转化成字符串,并按照正确的顺序和格式将字符串写入参数文件中;为了实现多个IO负载批量执行,将vdbench可执行命令行写入到一个可执行文件中,若有日志校验,则自动添加日志校验执行步骤。
尽管通过参考附图并结合优选实施例的方式对本发明进行了详细描述,但本发明并不限于此。在不脱离本发明的精神和实质的前提下,本领域普通技术人员可以对本发明的实施例进行各种等效的修改或替换,而这些修改或替换都应在本发明的涵盖范围内/任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
Claims (5)
1.一种IO负载自动化测试方法,其特征在于,包括如下步骤:
通过配置文件设置负载库;
从负载库中选择要测试的IO负载并对IO负载参数进行分类;
按照参数的类别将IO负载参数存入相应的列表;
按照设定的参数格式将列表中存放的IO负载参数和值转换成字符串写入参数文件;
将执行命令写入到执行参数文件中生成自动化执行文件,并指定日志输出文件;
执行自动化执行文件,并在每次执行完成后通过日志文件校验是否执行成功;
从负载库中选择要测试的IO负载并对IO负载参数进行分类的步骤包括:
从负载库中选择要测试的IO负载;
通过参数库定义的参数分类,对IO负载参数进行分类设置生成负载参数配置文件;其中,负载参数配置文件中包括:若是多个块设备或文件系统且IO负载的参数类型相同,设置参数值时用逗号作为分隔符;若是多个块设备或多个文件系统且IO负载的参数类型不同时,设置参数值时用竖线作为分隔符;
按照设定的参数格式将列表中存放的IO负载参数和值转换成字符串写入参数文件的步骤包括:
根据参数值中的竖线分隔符计算子负载个数;
根据子负载个数将列表分割成同等数量的子列表存放到一个列表中;其中参数值若没有竖线分隔符,则存放到子列表中时值value相同,若有竖线分隔符,则存放到子列表中时值value不相同;
按照设定的参数格式将列表中所有的元素转为字符串;
将所有列表中的每一个字符串元素作为一行按照设定的顺序写入参数文件中;具体包括: 以设定的顺序将每个字符串推入到一个队列;从队列中取出每个字符串元素作为文件参数的一行写入到参数文件中。
2.根据权利要求1所述的IO负载自动化测试方法,其特征在于,通过配置文件设置负载库的步骤包括:
定义用于记录各种参数的参数库,并且定义参数库中参数分类,参数库中对每个参数进行详细的注释说明;
定义负载库;
参照参数库将参数配置到负载库。
3.根据权利要求2所述的IO负载自动化测试方法,其特征在于,按照参数的类别将IO负载参数存入相应的列表的步骤包括:
解析负载参数配置文件中配置的IO负载参数;
将解析的所有的IO负载参数和值存放到列表中;其中,每个参数以key-value的字典形式作为列表元素存放。
4.根据权利要求3所述的IO负载自动化测试方法,其特征在于,定义负载库的步骤包括:
定义全局变量和IO负载;其中,全局变量包含负载开关列表;
将IO负载加入负载开关列表中。
5.一种IO负载自动化测试装置,其特征在于,包括负载库设置模块、负载参数分类模块、负载参数存储模块、参数文件生成模块、执行文件生成模块、执行处理模块;
负载库设置模块,用于通过配置文件设置负载库;
负载参数分类模块,用于从负载库中选择要测试的IO负载并对IO负载参数进行分类;
负载参数存储模块,用于按照参数的类别将IO负载参数存入相应的列表;
参数文件生成模块,用于按照设定的参数格式将列表中存放的IO负载参数和值转换成字符串写入参数文件;
执行文件生成模块,用于将执行命令写入到执行参数文件中生成自动化执行文件,并指定日志输出文件;
执行处理模块,用于执行自动化执行文件,并在每次执行完成后通过日志文件校验是否执行成功;
负载参数分类模块包括IO负载选择单元、分类设置单元;
IO负载选择单元,用于从负载库中选择要测试的IO负载;
分类设置单元,用于通过参数库定义的参数分类,对IO负载参数进行分类设置生成负载参数配置文件;
负载参数分类模块,具体用于若是多个块设备或文件系统且IO负载的参数类型相同,设置参数值时用逗号作为分隔符;若是多个块设备或多个文件系统且IO负载的参数类型不同时,设置参数值时用竖线作为分隔符;
参数文件生成模块包括计算单元、分割单元、转换单元、生成单元;
计算单元,用于根据参数值中的竖线分隔符计算子负载个数;
分割单元,用于根据子负载个数将列表分割成同等数量的子列表存放到一个列表中;其中参数值若没有竖线分隔符,则存放到子列表中时值value相同,若有竖线分隔符,则存放到子列表中时值value不相同;
转换单元,用于按照设定的参数格式将列表中所有的元素转为字符串;
生成单元,用于将所有列表中的每一个字符串元素作为一行按照设定的顺序写入参数文件中; 具体用于以设定的顺序将每个字符串推入到一个队列;从队列中取出每个字符串元素作为文件参数的一行写入到参数文件中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111087857.8A CN113900928B (zh) | 2021-09-16 | 2021-09-16 | 一种io负载自动化测试方法、装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111087857.8A CN113900928B (zh) | 2021-09-16 | 2021-09-16 | 一种io负载自动化测试方法、装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113900928A CN113900928A (zh) | 2022-01-07 |
CN113900928B true CN113900928B (zh) | 2024-01-12 |
Family
ID=79028429
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111087857.8A Active CN113900928B (zh) | 2021-09-16 | 2021-09-16 | 一种io负载自动化测试方法、装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113900928B (zh) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104407973A (zh) * | 2014-11-25 | 2015-03-11 | 珠海格力电器股份有限公司 | 一种自动化单元测试的实现方法及装置 |
CN107908568A (zh) * | 2017-11-29 | 2018-04-13 | 中标软件有限公司 | 操作系统性能自动化测试方法及装置 |
-
2021
- 2021-09-16 CN CN202111087857.8A patent/CN113900928B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104407973A (zh) * | 2014-11-25 | 2015-03-11 | 珠海格力电器股份有限公司 | 一种自动化单元测试的实现方法及装置 |
CN107908568A (zh) * | 2017-11-29 | 2018-04-13 | 中标软件有限公司 | 操作系统性能自动化测试方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN113900928A (zh) | 2022-01-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10552301B2 (en) | Completing functional testing | |
US20070022324A1 (en) | Multi-platform test automation enhancement | |
US7797684B2 (en) | Automatic failure analysis of code development options | |
US8752023B2 (en) | System, method and program product for executing a debugger | |
CN114546738B (zh) | 服务器通用测试方法、系统、终端及存储介质 | |
CN111949545A (zh) | 自动化测试方法、系统、服务器及存储介质 | |
CN108255689A (zh) | 一种基于历史任务分析的Apache Spark应用自动化调优方法 | |
CN111625434A (zh) | 一种数据库oltp基准性能测试方法、系统及相关组件 | |
CN112650676A (zh) | 软件测试方法、装置、设备及存储介质 | |
CN111462811A (zh) | 自动化测试方法、装置、存储介质和电子设备 | |
CN116166525A (zh) | 一种测试脚本的生成方法及装置 | |
CN111814354A (zh) | 仪器性能的模拟测试方法、系统、介质及电子设备 | |
US8850407B2 (en) | Test script generation | |
CN112395182A (zh) | 自动化测试方法、装置、设备及计算机可读存储介质 | |
CN117539754A (zh) | 压力测试方法、装置、存储介质及电子设备 | |
CN113900928B (zh) | 一种io负载自动化测试方法、装置 | |
CN107360050B (zh) | 视频云存储节点性能自动化测试方法及其装置 | |
CN112860587A (zh) | Ui自动测试方法和装置 | |
CN112269697A (zh) | 一种设备存储性能测试方法、系统及相关装置 | |
CN111400171A (zh) | 一种接口测试方法、系统、装置及可读存储介质 | |
CN110795304A (zh) | 分布式存储系统性能测试的方法及装置 | |
CN111400117B (zh) | 一种自动化测试Ceph集群的方法 | |
CN111104334A (zh) | 基于eeprom模块接口软件的测试方法、装置及可读取存储介质 | |
CN113127312A (zh) | 用于数据库性能测试的方法、装置、电子设备及存储介质 | |
CN111290895A (zh) | 一种服务器io性能测试方法、装置、设备、介质 |
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 |