发明内容
有鉴于此,本发明的主要目的在于提出一种测试分布式文件***性能的方法,提高测试效率、降低测试成本。
本发明的另一目的在于提出一种测试分布式文件***性能的***,提高测试效率、降低测试成本。
为达到上述目的,本发明提供了一种测试分布式文件***性能的方法,该方法包括:
接收测试用户输入的性能测试参数,生成测试场景表,并依据测试场景表,生成对应测试场景表中各测试场景的测试程序;
根据性能测试参数中设置的测试客户端平台类型及测试客户端的最大数量,创建各测试客户端对应的虚拟机VM,并为创建的VM配置测试网络参数;
为创建的VM自动安装测试客户端程序;
依序加载测试场景表中各测试场景所需的VM以及存储节点,启动测试;
收集存储节点运行测试的测试数据,生成测试结果报告。
所述性能测试参数包括:测试客户端平台类型、测试客户端的最大数量、存储节点最大数量、每个测试客户端的最大测试进程数量、测试客户端数量负载递增值、存储节点数量递增值、存储节点测试类型数量以及测试程序运行时间。
所述依序加载测试场景表中各测试场景所需的VM以及存储节点,启动测试包括:
确定当前测试场景为初始测试场景,初始化当前测试场景所需的VM以及存储节点,启动测试;
在当前测试场景测试完毕,根据当前测试场景以及下一测试场景,确定下一测试场景需要初始化的存储节点以及VM,执行初始化处理,将下一测试场景对应的测试程序分发到该下一测试场景中的VM,启动测试。
所述确定下一测试场景需要初始化的存储节点以及VM,执行初始化处理包括:
判断当前已执行测试的存储节点数量与VM数量分别相比于下一测试场景所需的存储节点数量与VM数量是否发生变化,如果是,调用数据清理程序,对存储节点进行数据清理,并将存储节点数量及VM数量初始化为与下一测试场景所需的存储节点数量与VM数量相等。
所述测试结果报告包括:单测试场景测试结果报告以及分布式文件***测试结果报告。
进一步包括:
监测各VM的资源占用状态信息,得到监控数据,并依据监控数据生成监控结果报告。
所述资源占用状态信息包括:CPU占用率、CPU等待时间、内存占用量以及网络流量。
一种测试分布式文件***性能的***,该***包括:性能测试场景生成器、控制台、虚拟机VM创建模块以及存储节点,其中,
性能测试场景生成器,用于接收测试用户在性能测试场景设置界面中输入的性能测试参数,生成测试场景表,并依据测试场景表,生成对应测试场景表中各测试场景的测试程序;
控制台,用于根据测试客户端平台类型,向VM创建模块下发测试客户端程序;确定当前测试场景为初始测试场景,初始化当前测试场景所需的VM以及存储节点;在当前测试场景测试完毕,根据当前测试场景以及下一测试场景,确定下一测试场景需要初始化的存储节点以及VM,执行初始化处理,将下一测试场景对应的测试程序分发到VM创建模块执行测试,收集存储节点运行测试的测试数据,生成测试结果报告;
VM创建模块,根据性能测试参数中设置的测试客户端平台类型及测试客户端的最大数量,创建各测试客户端对应的VM,并为创建的VM配置测试网络参数,根据接收的测试客户端程序,为创建的VM安装测试客户端程序;
与控制台交互,对下一测试场景需要初始化的VM进行初始化处理,按照接收的测试程序启动测试,向存储节点发送读/写指令;
存储节点,接收VM创建模块发送的读/写指令,进行读/写测试;
与控制台交互,对下一测试场景需要初始化的存储节点进行初始化处理。
所述控制台包括:测试客户端程序下发单元、测试程序监测单元、初始化单元、测试数据收集单元以及测试结果报告生成单元,其中,
测试客户端程序下发单元,用于根据测试客户端平台类型,向VM创建模块下发测试客户端程序;
初始化单元,确定当前测试场景为初始测试场景,初始化当前测试场景所需的VM以及存储节点;接收初始化指令,根据当前测试场景以及下一测试场景,确定下一测试场景需要初始化的存储节点以及VM,执行初始化处理;
测试程序监测单元,用于监测当前运行的测试程序,确定当前测试程序运行完毕,向初始化单元输出初始化指令,根据测试场景表中当前测试场景对应的下一测试场景,将下一测试场景对应的测试程序分发到VM创建模块;
测试数据收集单元,用于收集存储节点运行测试的测试数据;
测试结果报告生成单元,用于根据测试数据收集单元收集的测试数据,生成测试结果报告。
所述控制台进一步包括:
资源监视单元,监控并获取VM的资源占用状态信息,得到监控数据,输出至测试结果生成单元;
测试结果生成单元,进一步用于根据监控数据,生成监控结果报告。
由上述的技术方案可见,本发明实施例提供的一种测试分布式文件***性能的方法及***,接收测试用户输入的性能测试参数,生成测试场景表,并依据测试场景表,生成对应测试场景表中各测试场景的测试程序;根据性能测试参数中设置的测试客户端平台类型及测试客户端的最大数量,创建各测试客户端对应的虚拟机VM,并为创建的VM配置测试网络参数;为创建的VM自动安装测试客户端程序;依序加载测试场景表中各测试场景所需的VM以及存储节点,启动测试;收集存储节点运行测试的测试数据,生成测试结果报告。这样,通过设置统一规范与标准的通用于各性能测试的性能测试参数,性能测试场景生成器根据性能测试参数自动生成对应各测试场景的测试程序,控制台依据各测试场景构建相应的分布式文件***,并依据当前测试场景对应的测试程序自动启动测试,获取测试数据,能够实现多测试场景的测试,测试效率高;无需针对各分布式文件***分别编写测试程序,降低了测试成本。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图及具体实施例对本发明作进一步地详细描述。
现有采用单测试场景测试分布式文件***性能的方法,需要测试人员分别编写测试程序,不仅对测试人员要求高,也使得测试成本较高,测试效率较低,各跨平台性能测试结果不具有可比较性。本发明实施例中,通过统计分析各测试程序中共有的程序编码段,设置通用于各性能测试的性能测试参数,测试用户只需对性能测试参数进行设定,分布式文件***根据测试用户设置的性能测试参数自动生成测试程序,以降低对测试人员的要求及测试成本,同时,通过测试参数的统一规范与标准,实现跨平台性能测试结果的可比较性。
图1为本发明实施例测试分布式文件***性能的***结构示意图。参见图1,该***包括:性能测试场景生成器、控制台、虚拟机(VM,VirtualManufacturing)创建模块以及存储节点,其中,
性能测试场景生成器,用于接收测试用户在性能测试场景设置界面中输入的性能测试参数,生成测试场景表,并依据测试场景表,生成对应测试场景表中各测试场景的测试程序;
本发明实施例中,性能测试参数包括:测试客户端平台类型、测试客户端的最大数量Cmax、存储节点最大数量Smax、每个测试客户端的最大测试进程数量Pmax、测试客户端数量负载递增值Cplus、存储节点数量递增值Splus、存储节点测试类型数量Lr/w以及测试程序运行时间T等参数信息。其中,测试客户端平台类型可以是Linux平台,也可以是Windows平台,还可以是MAC平台等;存储节点测试类型包括读类型以及写类型。
控制台,用于根据测试客户端平台类型,向VM创建模块下发测试客户端程序;确定当前测试场景为初始测试场景,初始化当前测试场景所需的VM以及存储节点;在当前测试场景测试完毕,根据当前测试场景以及下一测试场景,确定下一测试场景需要初始化的存储节点以及VM,执行初始化处理,将下一测试场景对应的测试程序分发到VM创建模块执行测试,收集存储节点运行测试的测试数据,生成测试结果报告;
本发明实施例中,测试程序由控制台调用,在VM安装并运行,VM根据设置的测试程序运行时间按照测试程序对存储节点进行读/写测试,控制台监测存储节点进行读/写操作的测试数据,对测试数据进行统计、分析,得到测试结果报告。
测试结果报告包括:单测试场景测试结果报告以及分布式文件***测试结果报告。其中,分布式文件***测试结果报告为对各测试场景中的测试数据汇总后进行统计、分析,得到的报告。
较佳地,控制台还监测VM创建模块中的各VM的资源占用状态信息,例如,CPU占用率、CPU等待时间、内存占用量、网络流量等,得到监控数据,并依据监控数据生成监控结果报告。
VM创建模块,根据性能测试参数中设置的测试客户端平台类型及测试客户端的最大数量,创建各测试客户端对应的VM,并为创建的VM配置测试网络参数,根据接收的测试客户端程序,为创建的VM安装测试客户端程序;
与控制台交互,对下一测试场景需要初始化的VM进行初始化处理,按照接收的测试程序启动测试,向存储节点发送读/写指令;
本发明实施例中,通过先确定测试客户端平台类型,然后根据所设测试客户端的最大数量生成不同测试客户端平台类型的VM,例如,分别生成安装了linux的操作***的VM以及安装了Windows操作***的VM,然后为各VM配置测试网络参数,最后,自动安装对应的测试客户端程序以及测试程序。
一个测试客户端对应一个VM,每个创建的VM占用开放源代码虚拟机监视器(XEN)的一个独立网卡,并配置相应的IP地址信息,根据测试客户端平台类型,为创建的每个VM安装测试客户端程序,例如,如果测试客户端平台类型为windows,则为VM安装windows操作***程序。
由于不同的测试场景包含的VM数量可能不同,因而,在每一测试场景执行完毕后,需要与控制台交互,确定下一测试场景所需的VM数量,并依据当前测试场景的VM数量进行相应的增、减或保持不变。
存储节点,接收VM创建模块发送的读/写指令,进行读/写测试;
与控制台交互,对下一测试场景需要初始化的存储节点进行初始化处理。
本发明实施例中,与VM创建模块相类似,不同的测试场景包含的存储节点数量可能不同,需要在每一次测试场景中,确定其所需的存储节点数量,并依据当前测试场景的存储节点数量进行相应的增、减或保持不变。
其中,控制台包括:测试客户端程序下发单元、测试程序监测单元、初始化单元、测试数据收集单元以及测试结果报告生成单元(图中未示出),其中,
测试客户端程序下发单元,用于根据测试客户端平台类型,向VM创建模块下发测试客户端程序;
初始化单元,确定当前测试场景为初始测试场景,初始化当前测试场景所需的VM以及存储节点;接收初始化指令,根据当前测试场景以及下一测试场景,确定下一测试场景需要初始化的存储节点以及VM,执行初始化处理;
本发明实施例中,初始测试场景为测试场景表中的第一个测试场景。
测试程序监测单元,用于监测当前运行的测试程序,确定当前测试程序运行完毕,向初始化单元输出初始化指令,根据测试场景表中当前测试场景对应的下一测试场景,将下一测试场景对应的测试程序分发到VM创建模块;
测试数据收集单元,用于收集存储节点运行测试的测试数据;
本发明实施例中,测试数据主要包括存储节点的读/写效率信息,根据收集的预定时间内读/写的数据量,可以计算存储节点的读/写速度,从而获知读/写效率信息。
测试结果报告生成单元,用于根据测试数据收集单元收集的测试数据,生成测试结果报告。
本发明实施例中,测试结果报告包括:单测试场景测试结果报告以及分布式文件***测试结果报告。
较佳地,该控制台还包括:
资源监视单元,监控并获取VM的资源占用状态信息,得到监控数据,输出至测试结果生成单元;
测试结果生成单元,进一步用于根据监控数据,生成监控结果报告。
与前述相类似,本发明实施例中,监控结果报告包括:单测试场景监控结果报告以及分布式文件***监控结果报告。
图2为本发明实施例测试分布式文件***性能的方法流程示意图。参见图2,该流程包括:
步骤201,接收测试用户输入的性能测试参数,生成测试场景表,并依据测试场景表,生成对应测试场景表中各测试场景的测试程序;
步骤202,根据性能测试参数中设置的测试客户端平台类型及测试客户端的最大数量,创建各测试客户端对应的VM;
步骤203,为创建的VM配置测试网络参数,并安装测试客户端程序;
步骤204,依序加载测试场景表中各测试场景所需的VM以及存储节点,启动测试;
本步骤包括:
确定当前测试场景为初始测试场景,初始化当前测试场景所需的VM以及存储节点,启动测试;
在当前测试场景测试完毕,根据当前测试场景以及下一测试场景,确定下一测试场景需要初始化的存储节点以及VM,执行初始化处理,将下一测试场景对应的测试程序分发到该下一测试场景中的VM,启动测试。
步骤205,收集存储节点运行测试的测试数据,生成测试结果报告。
图3为本发明实施例测试分布式文件***性能的方法具体流程示意图。参见图3,该流程包括:
步骤301,在性能测试场景生成器界面中输入性能测试参数;
本步骤中,根据性能测试需求制定测试范围,在性能测试场景生成器界面中输入反映测试范围的性能测试参数。
步骤302,性能测试场景生成器根据输入的性能测试参数生成测试场景表;
本步骤中,测试场景表中包含的最大测试场景数量Nmax计算公式为:
步骤303,为测试场景表中每个测试场景,生成对应的测试程序;
本步骤中,如果测试场景表中包含的最大测试场景数量为Nmax,则针对每一种测试客户端平台类型,共生成该测试客户端平台类型下的Nmax个测试场景以及Nmax个测试程序,各测试程序中,测试客户端的最大数量Cmax、存储节点最大数量Smax、每个测试客户端的最大测试进程数量Pmax、测试客户端数量负载递增值Cplus以及存储节点测试类型数量Lr/w中的一项或多项参数不同。当然,对于其他测试客户端平台类型,只需在各测试客户端中安装相应的测试客户端程序,如果性能测试参数相同,则可以共用相同的测试程序,这样,无需为每一测试场景进行测试程序编程。
步骤304,根据设置的测试客户端的最大数量,创建各测试客户端对应的VM,并为创建的VM配置测试网络参数;
本步骤中,调用VM初始化程序,初始化测试客户端,创建各测试客户端对应的VM,并配置好IP,安装测试客户端平台类型的客户端软件。
步骤305,调用存储节点初始化脚本,构建初始测试场景中的存储节点;
步骤306,控制台根据测试场景表,将初始测试场景对应的测试程序分发至初始测试场景中的VM;
步骤307,确定当前存储节点数量正确;
本步骤中,如果已执行测试的当前存储节点数量小于待启动的测试场景所需的存储节点数量,则启动存储节点并加入到分布式文件***中,如果当前存储节点数量大于待启动的测试场景所需的存储节点数量,则删除存储节点,如果相等,则不作处理。
步骤308,判断是否要调用数据清理程序,是则先重置被测试***;
本步骤中,如果当前已执行测试的存储节点数量与VM数量相比于待启动的测试场景所需的存储节点数量与VM数量中的任意一个发生变化,则需要调用数据清理程序,对存储节点进行数据清理,并初始化VM。即将存储节点数量及VM数量初始化为与下一测试场景所需的存储节点数量与VM数量相等。
步骤309,触发VM启动测试,向存储节点发送读/写指令,获取测试数据;
步骤310,控制台调用资源监视器程序,分发到各测试客户端,执行资源监视脚本,执行时间结束后,将监控数据上传到控制台;
步骤311,判断当前测试结束且不为测试场景表中最后一个测试场景,重置存储节点,然后分发下一测试程序到各测试客户端,返回执行步骤307;
本步骤中,分发测试程序,逐个测试场景按步骤307~步骤311执行,直至所有测试场景完成。
步骤312,测试执行结束后,收集测试数据以及监控数据,生成单测试场景测试结果报告以及总的测试结果报告。
本步骤中,测试执行结束后,控制台收集测试数据以及监控数据,调用结果分析脚本,汇总各测试数据以及监控数据,并生成单测试场景测试结果报告,并汇总单测试场景测试结果报告,生成总的测试结果报告。
以下举一具体实施例,在对本发明的测试分布式文件***性能的方法作进一步说明。
图4为本发明实施例测试分布式文件***性能的方法另一流程示意图。参见图4,该流程包括:
步骤401,在性能测试场景生成器界面中输入性能测试参数;
本步骤中,在性能测试场景生成器界面中,设置测试客户端平台类型为Linux、测试客户端的最大数量Cmax为16、存储节点最大数量Smax为4、每个测试客户端的最大测试进程数量为1、测试客户端数量负载递增值Cplus为4、存储节点测试类型Lr/w为写/读、测试程序运行时间T为600秒。
步骤402,根据输入的性能测试参数生成测试场景表;
本步骤中,性能测试场景生成器依据步骤401中输入的性能测试参数,生成32
种测试场景,放到测试场景表中,生成的测试场景列表如下。其中,Si(i为自然数,1≤i≤4)表示该测试场景中的存储节点为1台,Cj(i为自然数,4≤j≤16)表示该测试场景中具有j个测试客户端,W/R分别代表写/读测试,P1表示每个测试客户端具有1个测试进程。
PE_S1_C4_W_P1、PE_S1_C4_R_P1;
PE_S1_C8_W_P1、PE_S1_C8_R_P1;
PE_S1_C12_W_P1、PE_S1_12_R_P1;
PE_S1_C16_W_P1、PE_S1_C16_R_P1;
PE_S2_C4_W_P1、PE_S2_C4_R_P1;
PE_S2_C8_W_P1、PE_S2_C8_R_P1;
PE_S2_C12_W_P1、PE_S2_12_R_P1;
PE_S2_C16_W_P1、PE_S2_C16_R_P1;
PE_S3_C4_W_P1、PE_S3_C4_R_P1;
PE_S3_C8_W_P1、PE_S3_C8_R_P1;
PE_S3_C12_W_P1、PE_S3_12_R_P1;
PE_S3_C16_W_P1、PE_S3_C16_R_P1;
PE_S4_C4_W_P1、PE_S4_C4_R_P1;
PE_S4_C8_W_P1、PE_S4_C8_R_P1;
PE_S4_C12_W_P1、PE_S4_12_R_P1;
PE_S4_C16_W_P1、PE_S4_C16_R_P1。
实际应用中,还可以根据需要,修改测试场景生成器生成的测试场景表中各测试场景的性能测试参数。
步骤403,调用VM初始化脚本,创建各测试客户端对应的VM,并为创建的VM配置测试网络参数以及安装测试客户端软件;
本步骤中,为每一测试场景中的测试客户端创建对应的VM,根据测试客户端的最大数量Cmax,设置IP地址范围,例如,172.16.96.10~172.16.96.50,在Xen平台上初始化16台Linux虚拟机后,VM初始化脚本按照预设的IP地址范围,为16台VM设置顺序的IP地址(测试网络参数),即,第一台VM的IP地址设置为172.16.96.10,第二台VM的IP地址设置为172.16.96.11,以此类推。然后在VM上安装测试客户端软件。
实际应用中,还可以为一部分VM安装测试客户端软件,而另一部分VM安装另外的测试客户端软件,这样,可以支持混合的客户端平台测试。
步骤404,为测试场景表中的各测试场景生成相应的测试程序;
本步骤中,测试场景表中包含32种测试场景,根据32种测试场景对应的性能测试参数,分别生成对应32种测试场景的测试程序。
步骤405,调用被测试***初始化脚本,部署被测试的分布式文件***;
本步骤中,调用被测试***初始化脚本,按照测试场景表中的各测试场景分别部署被测试的分布式文件***。
步骤406,控制台调用初始测试程序,分发到初始测试场景,初始化测试;
本步骤中,初始测试程序为初始测试场景对应的测试程序,初始测试场景为测试场景表中的第一个测试场景,即PE_S1_C4_W_P1。
步骤407,确定当前已执行测试的存储节点数量与下一待启动的测试场景中设置的存储节点数量相匹配;
本步骤中,判断当前已执行测试的存储节点数量是否与下一待启动的测试场景中设置的存储节点数量相匹配,如果匹配,则不作处理,如果不匹配,则通过启动新的存储节点或断开与已启动的存储节点的连接,使当前启动的存储节点数量与启动的测试场景中设置的存储节点数量相等。
本发明实施例中,在初始测试启动时,默认启动的存储节点数量为1,与测试场景PE_S1_C4_W_P1相匹配。
步骤408,确定是否需要重置被测试***,如果需要,重置被测试***,启动测试;如果不需要,直接启动测试;
本步骤中,确定是否需要重置被测试***,如果当前启动的测试客户端数量与启动的测试场景中设置的测试客户端数量不匹配,或者,步骤407中当前启动的存储节点数量与启动的测试场景中设置的存储节点数量不匹配,则需要重置被测试***,即调用数据清理程序执行数据清理,格式化存储节点,重新配置测试客户端以及存储节点,使其数量分别与启动的测试场景中设置的测试客户端数量以及存储节点数量相匹配,然后分发启动的测试场景对应的测试程序到各测试客户端执行。
步骤409,在测试程序运行时间内,获取存储节点的测试数据;
本步骤中,测试程序的脚本在每个测试客户端上执行600秒,向存储节点发送读写指令,存储节点根据接收的读写指令,执行相应的读写操作测试。在预先设置的测试程序运行时间(600秒)内,控制台监测存储节点的测试过程中的测试数据并进行收集。
步骤410,在测试程序运行时间内,获取测试客户端的监测数据;
本步骤中,控制台在监测并收集初始测试场景中的一个存储节点的测试数据的同时,也可以在600秒的时间内,监测并收集初始测试场景中的四个测试客户端的监测数据。
步骤411,在测试程序运行时间到时,判断当前启动的测试场景是否为测试场景表中的最后一个测试场景,如果是,执行步骤412,否则,加载测试场景表中当前启动的测试场景的下一测试场景,返回执行步骤407;
本步骤中,如果当前启动的测试场景为测试场景表中的最后一个测试场景,表明测试已执行完毕,需要控制台对测试数据进行分析,否则,还需要加载下一测试场景执行新的测试,例如,测试场景PE_S1_C4_W_P1执行完成后,控制台会根据下一测试场景PE_S1_C4_R_P1,加载第二测试场景PE_S1_C4_R_P1执行读测试,重复步骤步骤407~步骤411,最终完成测试场景表中的所有测试场景执行。
步骤412,根据收集的测试数据生成单测试场景测试报告以及分布式文件***测试结果报告。
本步骤中,控制台在判断各测试客户端的测试程序都执行完成后,收集存储节点的测试数据以及各测试客户端的监测数据,调用测试分析脚本,汇总各存储节点的测试数据以及各测试客户端的监测数据,并生成PE_S1_C4_W_P1的单测试场景测试报告。
当测试场景表中的所有测试场景执行完成后,测试分析脚本会汇总各测试场景的测试数据以及监测数据,生成分布式文件***测试结果报告,这样,为用户了解被测***的性能以及各测试平台的测试客户端的性能提供了参考信息,并可以对跨平台的被测***的性能进行比较。
由上述可见,本发明实施例的测试分布式文件***性能的方法及***,通过设置统一规范与标准的通用于各性能测试的性能测试参数,性能测试场景生成器根据性能测试参数自动生成对应各测试场景的测试程序,控制台依据各测试场景构建相应的分布式文件***,并依据当前测试场景对应的测试程序自动启动测试,获取测试数据。这样,能够实现多测试场景的测试,满足了测试用户日益增长的多性能、多测试场景同步测试的需求,测试效率高,大大缩短了整个性能测试周期;进一步地,无需针对各分布式文件***分别编写测试程序,对测试人员要求不高,不需具有程序开发基础,也降低了测试成本;而且,每轮测试完成前自动重置被测试***数量,使得每次测试结果更真实,支持跨客户端平台测试以及多种客户端平台类型混合测试,各跨平台性能测试结果具有可比较性;此外,对分布式文件***的吞吐量负载测试可以自动完成,提高了整个测试流程的自动化程度。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换以及改进等,均应包含在本发明的保护范围之内。