本发明涉及存储测试技术领域,特别是涉及一种存储稳定性的测试方法、测试装置、测试设备及存储介质。
背景技术:
伴随数据规模的指数增长,对数据处理的要求更加苛刻,呈现数十万、上百万级的iops、tb级的带宽稳定性要求。如大数据或者ai应用,天气预报,金融交易等应用,亿级的文件构成庞大的数据链,所以存储的稳定性指数指标也随之要求越来越高。而存储稳定性测试,现阶段还需要大量的人工操作和人工设置,未有一种较好的自动化稳定性测试方案,虽有将重复的测试流程编写为测试脚本以供重复使用的方案,但在实际的存储稳定性测试中,从搭建测试环境到配置测试脚本,还是需要投入人力进行。
提供一种自动化水平更高的存储稳定性测试方案,是本领域技术人员需要解决的技术问题。
技术实现要素:
本发明的目的是提供一种存储稳定性的测试方法、测试装置、测试设备及存储介质,用于提高存储稳定性测试的自动化水平,从而提高存储稳定性测试的效率。
为解决上述技术问题,本发明提供一种存储稳定性的测试方法,包括:
接收测试环境部署命令与稳定性测试命令;
根据所述测试环境部署命令搭建测试集群;
根据所述稳定性测试命令调用稳定性测试脚本;
在所述测试集群中执行所述稳定性测试脚本。
可选的,所述根据所述测试环境部署命令搭建测试集群,具体为:
根据所述测试环境部署命令,基于teuthology平台搭建所述测试集群;
相应的,所述在所述测试集群中执行所述稳定性测试脚本,具体为:
通过teuthology命令在所述测试集群中执行所述稳定性测试脚本。
可选的,所述根据所述测试环境部署命令,基于teuthology平台搭建所述测试集群,具体包括:
解析所述测试环境部署命令得到所需测试节点的个数和集群配置要求;
将所述个数的物理节点加入teuthology资源池;
根据所述集群配置要求修改所述teuthology平台的集群配置文件,建立所述测试集群。
可选的,所述根据所述稳定性测试命令调用稳定性测试脚本,具体为:
根据所述稳定性测试命令,在git库中调用所述稳定性测试脚本。
可选的,所述在所述测试集群中执行所述稳定性测试脚本,具体包括:
在所述测试集群中执行所述稳定性测试脚本,调用稳定性测试工具和稳定性测试任务脚本;
将所述稳定性测试工具和所述稳定性测试任务脚本运行于所述测试集群。
可选的,在所述测试集群中执行所述稳定性测试脚本时,还包括:
监控所述测试集群的状态信息,收集所述测试集群的反馈结果;
根据预设规则分析所述状态信息和所述反馈结果,得到稳定性测试结果。
可选的,所述稳定性测试脚本的测试项目具体包括压力读写任务,场景化模拟任务和故障自适应恢复任务。
为解决上述技术问题,本发明还提供一种存储稳定性的测试装置,包括:
接收单元,用于接收测试环境部署命令与稳定性测试命令;
搭建单元,用于根据所述测试环境部署命令搭建测试集群;
调用单元,用于根据所述稳定性测试命令调用稳定性测试脚本;
测试单元,用于在所述测试集群中执行所述稳定性测试脚本。
为解决上述技术问题,本发明还提供一种存储稳定性的测试设备,包括:
存储器,用于存储指令,所述指令包括上述任意一项所述存储稳定性的测试方法的步骤;
处理器,用于执行所述指令。
为解决上述技术问题,本发明还提供一种存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如上述任意一项所述存储稳定性的测试方法的步骤。
本发明所提供的存储稳定性的测试方法,通过接收测试环境部署命令与稳定性测试命令,根据测试环境部署命令搭建测试集群,根据稳定性测试命令调用稳定性测试脚本,在测试集群中执行稳定性测试脚本,用户只需要给出相应的命令,即可完成从搭建测试环境到执行稳定性测试脚本的自动化执行,显著减少了存储稳定测试过程中所需的人力投入,提高了存储稳定性测试效率。本发明还提供一种存储稳定性的测试装置、测试设备及存储介质,具有上述有益效果,在此不再赘述。
附图说明
为了更清楚的说明本发明实施例或现有技术的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种存储稳定性的测试方法的流程图;
图2为本发明实施例提供的另一种存储稳定性的测试方法的流程图;
图3为本发明实施例提供的一种存储稳定性的测试装置的结构示意图;
图4为本发明实施例提供的一种存储稳定性的测试设备的结构示意图。
具体实施方式
本发明的核心是提供一种存储稳定性的测试方法、测试装置、测试设备及存储介质,用于提高存储稳定性测试的自动化水平,从而提高存储稳定性测试的效率。
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为本发明实施例提供的一种存储稳定性的测试方法的流程图。
如图1所示,本发明实施例提供的存储稳定性的测试方法包括:
s101:接收测试环境部署命令与稳定性测试命令。
本发明实施例出于实现从搭建测试环境到执行测试脚本的流程自动化的目的,预先设计测试环境部署配置文件及稳定性测试脚本,从而利用资源池内的节点组建测试集群进行自动化测试。整个自动化机制的实现只需一次部署,之后的测试就可以在原有部署的基础上进行调整,形成定制的测试流程。调整的依据即测试人员输入的测试环境部署命令与稳定性测试命令。
其中,测试环境部署命令可以包括稳定性测试所需的测试集群的集群规模(如物理节点的个数)以及集群要求(如物理节点必须为空闲节点)等。稳定性测试命令可以包括对稳定性测试脚本类型的选择、对执行时间的设定、测试结果输出位置的设定等。
具体可以为测试人员提供一个可供选择设置以及输入设置的交互界面,用以接收测试环境部署命令和稳定性测试命令。当测试人员提交设置完毕的信息时,检查各项设置是否存在、存在的设置是否合格,对于未进行选择的设置,可以应用历史设置,对于不合格的设置,可以在交互界面上弹出设置不合格的通知。
s102:根据测试环境部署命令搭建测试集群。
在具体实施中,具体可以根据测试环境部署命令,基于teuthology平台搭建测试集群。
teuthology平台具有灵活配置集群节点个数和集群配置的功能,通过定义的配置文件可以自动化部署和配置集群,如集群osd,mon,mds等个数,对资源池内节点组建集群进行自动化测试。因此,teuthology平台适用于多节点场景下集群环境自动化部署和测试,无需人员过多干预。
由于teuthology平台可以部署多台测试任务机节点统一分配管理,多个plana测试任务机并发执行,测试任务并发执行互不影响,在测试任务完成后自动清除环境并执行下一个任务,支持测试不仅限于功能,故障,性能等,故适用于本发明实施例中的存储稳定性测试。
在此基础上,步骤s102进一步包括:
解析测试环境部署命令得到测试节点的个数和集群配置要求;
将个数的物理节点加入teuthology资源池;
根据集群配置要求修改teuthology平台的集群配置文件,建立测试集群。
本发明实施例集成teuthology平台和git库,进行日构建编译和增量编译测试。其中,搭建测试集群代码tree结构如下:
其中,base,cluster,fs,override为基准集群部署环境,tasks下的running_stability_all_tc.yaml为稳定性测试入口,可调用稳定性测试shell脚本,其yaml脚本用于启动运行稳定性测试:
s103:根据稳定性测试命令调用稳定性测试脚本。
稳定性测试脚本指可以在搭建好的测试集群中直接运行,完成测试过程中的测试任务执行与工具调用等操作的脚本。可以预先编写好稳定性测试脚本框架,根据输入的稳定性测试命令在稳定性测试脚本框架上生成稳定性测试脚本。稳定性测试脚本框架可以存于git库中。相应的,步骤s103具体可以为根据稳定性测试命令,在git库中调用稳定性测试脚本。
s104:在测试集群中执行稳定性测试脚本。
在基于teuthology平台搭建测试集群的基础上,具体可以通过teuthology命令在测试集群中执行稳定性测试脚本。
步骤s104具体可以包括:
在测试集群中执行稳定性测试脚本,调用稳定性测试工具和稳定性测试任务脚本;
将稳定性测试工具和稳定性测试任务脚本运行于测试集群。
在此基础上,稳定性测试任务脚本可以为shell脚本,通过git库可以进行版本管理和变更维护。同时,稳定性测试工具也可以预先存于git库中。稳定性测试脚本执行时,在git库的指定位置获取稳定性测试工具和稳定性测试任务脚本。
针对存储稳定性测试,稳定性测试脚本的测试项目具体包括压力读写任务,场景化模拟任务和故障自适应恢复任务等。
其中,压力读写任务为对测试集群进行持续读写,检测测试集群的读写一致性。场景化模拟任务为执行ftp服务等特定任务,检查数据的传输结果。故障自适应恢复任务为检查测试集群能否对特定故障进行自适应与自动恢复,如在测试集群进行整体备份时,一个节点的故障重启(由测试任务脚本触发)是否会影响其他节点等。
稳定性测试任务代码文件tree结构如下:
其中f开头的脚本为稳定性测试任务脚本,running_all_tc_notimeout.sh为稳定性脚本执行,可收集脚本运行结果和集群日志作为存储稳定性测试结果的分析依据。
running_all_tc_notimeout.sh脚本可以依次调用稳定性测试任务脚本f,如下:
通过执行结果和集群状态即可判断稳定性测试任务脚本是否均执行通过。
本发明实施例提供的存储稳定性的测试方法,通过接收测试环境部署命令与稳定性测试命令,根据测试环境部署命令搭建测试集群,根据稳定性测试命令调用稳定性测试脚本,在测试集群中执行稳定性测试脚本,用户只需要给出相应的命令,即可完成从搭建测试环境到执行稳定性测试脚本的自动化执行,显著减少了存储稳定测试过程中所需的人力投入,提高了存储稳定性测试效率。
图2为本发明实施例提供的另一种存储稳定性的测试方法的流程图。
上述实施例提供了一种集成teuthology平台和git库的存储稳定性的测试方法,实现了从搭建稳定性测试集群到执行稳定性测试脚本的自动化。在执行稳定性测试脚本的过程中,还需要对测试集群的状态信息进行监控,检查测试集群能否执行稳定性测试脚本中的任务,如果能执行,还要对稳定性测试脚本的执行结果进行采集,进而通过这些信息来确定存储稳定性的测试结果。为了进一步提高存储稳定性测试的自动化程度,在上述实施例的基础上,本发明实施例提供的存储稳定性的测试方法还包括:
s201:监控测试集群的状态信息,收集测试集群的反馈结果。
其中,测试集群的状态信息主要包括能否执行稳定性测试任务、执行时间等。测试集群的反馈结果主要为执行测试任务中的场景化模拟任务等交互任务时给出的反馈。
s202:根据预设规则分析状态信息和反馈结果,得到稳定性测试结果。
可以预先编写分析脚本用于描述分析测试集群的状态信息和反馈结果的预设规则,通过测试集群的状态信息和反馈结果判断测试集群能否通过稳定性测试。
具体可以通过以下代码实现:
如果根据测试集群的反馈结果(0、1信息)判断测试结果通过,且在稳定性测试脚本执行过程中测试集群的状态无误,则返回该稳定性测试脚本测试通过(passed==running)。
如果测试集群长时间未反馈结果,则返回稳定性测试脚本测试超时失败(timeout),输出日志信息,供失败分析定位。
如果根据测试集群的反馈结果判断测试集群执行稳定性测试脚本的测试结果为失败,或者测试集群的状态异常,则返回该稳定性测试脚本测试失败(failed==running),输出日志信息,供失败分析定位。
上文详述了存储稳定性的测试方法对应的各个实施例,在此基础上,本发明还公开了与上述方法对应的存储稳定性的测试装置、设备及存储介质。
图3为本发明实施例提供的一种存储稳定性的测试装置的结构示意图。
如图3所示,本发明实施例提供的存储稳定性的测试装置包括:
接收单元301,用于接收测试环境部署命令与稳定性测试命令;
搭建单元302,用于根据测试环境部署命令搭建测试集群;
调用单元303,用于根据稳定性测试命令调用稳定性测试脚本;
测试单元304,用于在测试集群中执行稳定性测试脚本。
由于装置部分的实施例与方法部分的实施例相互对应,因此装置部分的实施例请参见方法部分的实施例的描述,这里暂不赘述。
图4为发明实施例提供的一种存储稳定性的测试设备的结构图。
如图4所示,本发明实施例提供的存储稳定性的测试设备包括:
存储器410,用于存储指令,所述指令包括上述任意一项实施例所述的存储稳定性的测试方法的步骤;
处理器420,用于执行所述指令。
其中,处理器420可以包括一个或多个处理核心,比如3核心处理器、8核心处理器等。处理器420可以采用dsp(digitalsignalprocessing,数字信号处理)、fpga(field-programmablegatearray,现场可编程门阵列)、pla(programmablelogicarray,可编程逻辑阵列)中的至少一种硬件形式来实现。处理器420也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称cpu(centralprocessingunit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器420可以在集成有gpu(graphicsprocessingunit,图像处理器),gpu用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器420还可以包括ai(artificialintelligence,人工智能)处理器,该ai处理器用于处理有关机器学习的计算操作。
存储器410可以包括一个或多个存储介质,该存储介质可以是非暂态的。存储器410还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。本实施例中,存储器410至少用于存储以下计算机程序411,其中,该计算机程序411被处理器420加载并执行之后,能够实现前述任一实施例公开的存储稳定性的测试方法中的相关步骤。另外,存储器410所存储的资源还可以包括操作系统412和数据413等,存储方式可以是短暂存储或者永久存储。其中,操作系统412可以为windows。数据413可以包括但不限于上述方法所涉及到的数据。
在一些实施例中,存储稳定性的测试设备还可包括有显示屏430、电源440、通信接口450、输入输出接口460、传感器470以及通信总线480。
本领域技术人员可以理解,图4中示出的结构并不构成对存储稳定性的测试设备的限定,可以包括比图示更多或更少的组件。
本申请实施例提供的存储稳定性的测试设备,包括存储器和处理器,处理器在执行存储器存储的程序时,能够实现如上所述的存储稳定性的测试方法,效果同上。
需要说明的是,以上所描述的装置、设备实施例仅仅是示意性的,例如,模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,执行本发明各个实施例所述方法的全部或部分步骤。
为此,本发明实施例还提供一种存储介质,该存储介质上存储有计算机程序,计算机程序被处理器执行时实现如存储稳定性的测试方法的步骤。
该存储介质可以包括:u盘、移动硬盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。
本实施例中提供的存储介质所包含的计算机程序能够在被处理器执行时实现如上所述的存储稳定性的测试方法的步骤,效果同上。
以上对本发明所提供的一种存储稳定性的测试方法、装置、设备及存储介质进行了详细介绍。说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置、设备及存储介质而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。
还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。