librgw的性能测试方法、装置和计算机设备与流程

文档序号:18101375发布日期:2019-07-06 11:22阅读:381来源:国知局
librgw的性能测试方法、装置和计算机设备与流程

本申请涉及性能测试技术领域,特别涉及一种librgw的性能测试方法、装置和计算机设备。



背景技术:

ceph是一种为优秀的性能、可靠性和可扩展性而设计的统一的、分布式文件系统,它提供了三种存储类型:块存储、文件存储和对象储存。其中,对象存储(云存储)是面向对象/文件的、海量的互联网存储,现有技术中ceph通过rgw(radosgateway)为互联网云服务提供商提供对象存储服务。客户端首先需要通过http请求rgw,再通过rgw访问ceph。而我司开发了一种新的访问ceph方式,在客户端中设置有librgw,在需要读取数据时,客户端需要通过java程序来调用librgw直接访问ceph集群,从而读取ceph集群中的数据。其中,librgw为一个应用程序。由于librgw是一种对ceph的新访问方式,目前并没有针对librgw的性能测试方法,开发人员无法了解librgw在对ceph中的数据进行读写时的相关性能数据。



技术实现要素:

本申请的主要目的为提供一种librgw的性能测试方法、装置和计算机设备,旨在解决现有技术中没有针对librgw性能的测试方法的弊端。

为实现上述目的,本申请提供了一种librgw的性能测试方法,用于多次对测试文件的读取和写入测试,所述方法包括:

接收测试指令,其中,所述测试指令包括测试文件大小和测试参数;

调用librgw按照所述测试参数,分别从预设服务器读取与所述测试文件大小对应的测试文件,并将所述测试文件写入存储空间,并记录每一次所述librgw对所述测试文件的读取和写入过程中产生的测试数据,以及分别获取每一次所述librgw读取和写入所述测试文件的读写状态;

将各所述测试数据和所述读写状态作为测试信息输出到显示界面。

进一步的,所述测试参数包括指定线程数、测试时间和/或测试请求量,所述指定线程数为读写过程中同时发起的调用librgw的线程总数量,所述测试时间为整个读写过程的总时间,所述测试请求量为整个读写过程中读写请求的总次数,所述调用librgw按照所述测试参数,分别从预设服务器读取与所述测试文件大小对应的测试文件,并将所述测试文件写入存储空间的步骤,包括:

判断是否已经开启智能测试功能;

若没有开启智能测试功能,则判断所述测试参数中是否包含所述测试请求量和/或所述测试时间;

若包含所述测试请求量和所述测试时间,则从所述测试请求量和所述测试时间中择一选择一个参数作为当前测试参数;或者,若包含所述测试请求量或所述测试时间,则将包含的所述测试请求量或所述测试时间作为所述当前测试参数;

判断所述测试参数中是否包含所述指定线程数;

若包含所述指定线程数,则将所述指定线程数和所述当前测试参数组合在一起作为测试条件进行测试,其中,当所述测试条件为所述指定线程数和所述测试时间的时候,在所述测试时间内,同时发起与所述指定线程数对应数量的用于调用librgw的单独线程,重复从所述预设服务器读取所述测试文件大小对应的所述测试文件,并将所述测试文件写入所述存储空间;或者,当所述测试条件为所述指定线程数和所述测试请求量时,同时发起与所述指定线程对应数量的用于调用librgw的单独线程,重复与所述测试请求量对应数量的从所述预设服务器读取所述测试文件大小对应的所述测试文件,并将所述测试文件写入所述存储空间的动作,其中,所述测试文件携带有与所述测试文件大小对应的文件前缀。

进一步的,所述判断是否已经开启智能测试功能的步骤之后,包括:

若已经开启智能测试功能,则调用第一预设线程数和预设单位时间,其中,所述第一预设线程数为初次智能测试时读写过程中同时发起的调用librgw的线程总数量,所述预设单位时间为智能测试时整个读写过程的总时间;

同时发起与所述第一预设线程数对应数量的用于调用librgw的单独线程,在所述预设单位时间内从预设服务器读取与所述测试文件大小对应的测试文件,并将所述测试文件写入存储空间,得到基准响应时间,其中,所述基准响应时间为librgw在所述预设单位时间内读写所述测试文件的平均响应时间;

根据第一预设规则和所述第一预设线程数计算得到第二预设线程数,以完成计算所述第二预设线程数动作,其中,所述第二预设线程数为二次智能测试时读写过程中同时发起的调用librgw的线程总数量;

同时发起与所述第二预设线程数对应数量的用于调用librgw的单独线程,在所述预设单位时间内从预设服务器读取与所述测试文件大小对应的测试文件,并将所述测试文件写入存储空间,得到二次响应时间,以完成读写所述测试文件动作;

判断所述二次响应时间是否大于预设倍数的所述基准响应时间,以完成判断响应时间动作;

若小于预设倍数的所述基准响应时间,则循环执行所述计算所述第二预设线程数动作、所述读写所述测试文件动作和所述判断响应时间动作,直至当前次得到的响应时间大于预设倍数的所述基准响应时间,其中,在循环过程中,当前次的第二预设线程数作为下一次的第一预设线程数。

进一步的,所述判断所述测试参数中是否包含所述指定线程数的步骤之后,包括:

若不包含所述指定线程数,则调取预先设置的系统线程数;

同时发起与所述系统线程数对应数量的用于调用librgw的线程,在所述测试时间内重复从所述预设服务器读取与所述测试文件大小对应的测试文件,并将所述测试文件写入存储空间。

进一步的,所述分别获取每一次所述librgw读取和写入所述测试文件的读写状态的步骤,包括:

分别计算所述librgw读取和写入的所述测试文件的读取md5值,并获取预先存储在所述预设服务终端的所述测试文件的上传md5值;

判断所述读取md5值与所述上传md5值是否相同;

若相同,则判定所述librgw读取和写入所述测试文件的读写状态为读写正确;

若不相同,则判定所述librgw读取和写入所述测试文件的读写状态为读写错误。

进一步的,所述测试信息由多组所述测试数据和所述读写状态组成,各组所述测试数据和所述读写状态以一次读写请求进行分组,所述将各所述测试数据和所述读写状态作为测试信息输出到显示界面的步骤,包括:

分别将各所述测试数据和所述读写状态按照数据类型进行图表化,生成所述测试信息;

将所述测试信息输出到显示界面。

进一步的,所述接收测试指令的步骤之前,包括:

获取用户输入的新建文件指令,其中,所述新建文件指令包括指定文件大小和文件类型,所述文件类型为文本、图片或音频;

根据所述新建文件指令生成随机文件,并在所述随机文件的文件名备注与所述指定文件大小对应的文件前缀,其中,所述随机文件为由随机数据组成的文件;

将备注后的所述随机文件作为测试文件上传到所述预设服务器。

本申请还提供了一种librgw的性能测试装置,用于多次对测试文件的读取和写入测试,所述测试装置包括:

接收模块,用于接收测试指令,其中,所述测试指令包括测试文件大小和测试参数;

读写模块,调用librgw按照所述测试参数,分别从预设服务器读取与所述测试文件大小对应的测试文件,并将所述测试文件写入存储空间,并记录每一次所述librgw对所述测试文件的读取和写入过程中产生的测试数据,以及分别获取每一次所述librgw读取和写入所述测试文件的读写状态;

输出模块,用于将各所述测试数据和所述读写状态作为测试信息输出到显示界面。

进一步的,所述测试参数包括指定线程数、测试时间和/或测试请求量,所述指定线程数为读写过程中同时发起的调用librgw的线程总数量,所述测试时间为整个读写过程的总时间,所述测试请求量为整个读写过程中读写请求的总次数,所述读写模块,包括:

第一判断单元,用于判断是否已经开启智能测试功能;

第二判断单元,用于判断所述测试参数中是否包含所述测试请求量和/或所述测试时间;

选择单元,用于从所述测试请求量和所述测试时间中择一选择一个参数作为当前测试参数;或者,若包含所述测试请求量或所述测试时间,则将包含的所述测试请求量或所述测试时间作为所述当前测试参数;

第三判断单元,用于判断所述测试参数中是否包含所述指定线程数;

第一读写单元,用于将所述指定线程数和所述当前测试参数组合在一起作为测试条件进行测试,其中,当所述测试条件为所述指定线程数和所述测试时间的时候,在所述测试时间内,同时发起与所述指定线程数对应数量的用于调用librgw的单独线程,重复从所述预设服务器读取所述测试文件大小对应的所述测试文件,并将所述测试文件写入所述存储空间;或者,当所述测试条件为所述指定线程数和所述测试请求量时,同时发起与所述指定线程对应数量的用于调用librgw的单独线程,重复与所述测试请求量对应数量的从所述预设服务器读取所述测试文件大小对应的所述测试文件,并将所述测试文件写入所述存储空间的动作,其中,所述测试文件携带有与所述测试文件大小对应的文件前缀。

进一步的,所述读写模块,还包括:

调用单元,用于调用第一预设线程数和预设单位时间,其中,所述第一预设线程数为初次智能测试时读写过程中同时发起的调用librgw的线程总数量,所述预设单位时间为智能测试时整个读写过程的总时间;

第二读写单元,用于同时发起与所述第一预设线程数对应数量的用于调用librgw的单独线程,从所述预设服务器读取与所述测试文件大小对应的测试文件,并将所述测试文件写入存储空间,得到基准响应时间,其中,所述基准响应时间为librgw在所述预设单位时间内读写所述测试文件的平均响应时间;

第一计算单元,用于根据第一预设规则和所述第一预设线程数计算得到第二预设线程数,以完成计算所述第二预设线程数动作,其中,所述第二预设线程数为二次智能测试时读写过程中同时发起的调用librgw的线程总数量;

第三读写单元,用于同时发起与所述第二预设线程数对应数量的用于调用librgw的单独线程,在所述预设单位时间内从所述预设服务器读取与所述测试文件大小对应的测试文件,并将所述测试文件写入存储空间,得到二次响应时间,以完成读写所述测试文件动作;

第四判断单元,用于判断所述二次响应时间是否大于预设倍数的所述基准响应时间,以完成判断响应时间动作;

循环单元,用于循环执行所述计算所述第二预设线程数动作、所述读写所述测试文件动作和所述判断响应时间动作,直至当前次得到的响应时间大于预设倍数的所述基准响应时间,其中,在循环过程中,当前次的第二预设线程数作为下一次的第一预设线程数。

进一步的,所述读写模块,还包括:

调取单元,用于调取预先设置的系统线程数;

发起单元,用于同时发起与所述系统线程数对应数量的用于调用librgw的线程,在所述测试时间内重复从所述预设服务器读取与所述测试文件大小对应的测试文件,并将所述测试文件写入存储空间。

进一步的,所述获取模块包括:

第二计算单元,用于分别计算所述librgw读取和写入的所述测试文件的读取md5值,并获取预先存储在所述预设服务终端的所述测试文件的上传md5值;

第五判断单元,用于判断所述读取md5值与所述上传md5值是否相同;

第一判定单元,用于判定所述librgw读取和写入所述测试文件的读写状态为读写正确;

第二判定单元,用于判定所述librgw读取和写入所述测试文件的读写状态为读写错误。

进一步的,所述测试信息由多组所述测试数据和所述读写状态组成,各组所述测试数据和所述读写状态以一次读写请求进行分组,所述输出模块,包括:

生成单元,用于分别将各所述测试数据和各所述读写状态按照数据类型进行图表化,生成所述测试信息;

输出单元,用于将所述测试信息输出到显示界面。

进一步的,所述测试装置,还包括:

获取模块,用于获取用户输入的新建文件指令,其中,所述新建文件指令包括指定文件大小和文件类型,所述文件类型为文本、图片或音频;

生成模块,用于根据所述新建文件指令生成随机文件,并在所述随机文件的文件名备注与所述指定文件大小对应的文件前缀,其中,所述随机文件为由随机数据组成的文件;

上传模块,用于将备注后的所述随机文件作为测试文件上传到所述预设服务器。

本申请还提供一种计算机设备,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器执行所述计算机程序时实现上述任一项所述方法的步骤。

本申请还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任一项所述的方法的步骤。

本申请中提供的一种librgw的性能测试方法、装置和计算机设备,根据用户输入的测试文件大小和测试参数,通过librgw从预设服务器读写对应的测试文件,从而测试出librgw对测试文件进行读写的所有测试信息,并将所有测试信息图形化后输出,从而使得开发人员可以快速得到librgw在读写数据过程中的相关数据,完成针对librgw的性能测试。

附图说明

图1是本申请一实施例中librgw的性能测试方法步骤示意图;

图2是本申请一实施例中librgw的性能测试装置整体结构框图;

图3是本申请一实施例的计算机设备的结构示意框图。

本申请目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。

具体实施方式

为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。

参照图1,本申请一实施例中提供了一种librgw的性能测试方法,用于多次对测试文件的读取和写入测试,所述方法包括:

s1:接收测试指令,其中,所述测试指令包括测试文件大小和测试参数;

s2:调用librgw按照所述测试参数,分别从预设服务器读取与所述测试文件大小对应的测试文件,并将所述测试文件写入存储空间,并记录每一次所述librgw对所述测试文件的读取和写入过程中产生的测试数据,以及分别获取每一次所述librgw读取和写入所述测试文件的读写状态;

s3:将各所述测试数据和所述读写状态作为测试信息输出到显示界面。

本实施例中,客户端在创建数据后,需要将数据上传到ceph集群,即预设服务器中进行存储。客户端中设置有librgw,在需要读取数据时,客户端需要通过java程序来调用librgw访问ceph集群,从而读取ceph集群中的数据,并将读取的数据写入客户端的硬盘中。其中,librgw为访问应用程序。客户端在做librgw的性能测试时,需要根据用户输入的测试指令进行相应的动作。其中,用户输入的测试指令中包括测试文件大小以及测试参数;测试文件大小为用于测试文件的存储占量大小,比如4kb、1mb等等;测试参数包括指定线程数、测试时间或测试请求量,指定线程数为读写过程中同时发起调用librgw的线程的总数量,测试时间为整个读写过程的总时间,测试请求量为整个读写过程中读写请求的总次数。客户端在接收到用户输入的测试指令后,通过预先构造的java程序调用librgw,根据测试文件的文件名的前缀,筛选到与测试文件大小对应的测试文件。其中,测试文件在生成时,会在文件名中携带有与测试文件的文件大小一致的文件前缀。比如,测试文件a的文件大小为4kb,则测试文件a的文件名为4kb_测试文件a。librgw在筛选到测试文件后,同时发起指定线程数个调用librgw的线程,从预设服务器中读取测试文件,并将测试文件写入客户端的硬盘中,直至整个读写用时达到测试时间则停止。或者,同时发起指定线程数个调用librgw的线程,从预设服务器中读取测试文件,并将测试文件写入客户端的硬盘中,直至整个读写请求的总数量达到测试请求量则停止。其中,测试时间和测试请求量在测试过程中只能任选其一进行,不能同时选中;一个读请求为一个请求量,一个写请求为一个请求量,因此一个读写请求为两个请求量。比如,测试请求量为80个,则在本次测试中总共有40个读请求和40个写请求。在librgw完成一个读写测试后,客户端根据md5的算法计算librgw从预设服务器读取的测试文件的md5值,得到读取md5值,并从预设服务端获取测试文件的上传md5值。其中,上传md5值为测试文件生成后计算得到的md5值,与将测试文件一起上传到预设服务器进行存储。客户端将测试文件的读取md5值与上传md5值进行比对,判断两者是否相同。若不相同,则判定测试文件读写错误,并记录当前次通过librgw读写测试文件的读写状态为读写错误。若相同,则判定测试文件读写正确,并记录当前次通过librgw读写测试文件的读写状态为读写正确。客户端将每一次librgw对测试文件的读取和写入过程中产生的测试数据和读写状态作为测试信息输出到客户端的显示界面。其中,测试数据包括请求时间,响应时间,文件名。

进一步的,所述测试参数包括指定线程数、测试时间和/或测试请求量,所述指定线程数为读写过程中同时发起的调用librgw的线程总数量,所述测试时间为整个读写过程的总时间,所述测试请求量为整个读写过程中读写请求的总次数,所述调用librgw按照所述测试参数,分别从预设服务器读取与所述测试文件大小对应的测试文件,并将所述测试文件写入存储空间的步骤,包括:

s201:判断是否已经开启智能测试功能;

s202:若没有开启智能测试功能,则判断所述测试参数中是否包含所述测试请求量和/或所述测试时间;

s203:若包含所述测试请求量和所述测试时间,则从所述测试请求量和所述测试时间中择一选择一个参数作为当前测试参数;或者,若包含所述测试请求量或所述测试时间,则将包含的所述测试请求量或所述测试时间作为所述当前测试参数;

s204:判断所述测试参数中是否包含所述指定线程数;

s205:若包含所述指定线程数,则将所述指定线程数和所述当前测试参数组合在一起作为测试条件进行测试,其中,当所述测试条件为所述指定线程数和所述测试时间的时候,在所述测试时间内,同时发起与所述指定线程数对应数量的用于调用librgw的单独线程,重复从所述预设服务器读取所述测试文件大小对应的所述测试文件,并将所述测试文件写入所述存储空间;或者,当所述测试条件为所述指定线程数和所述测试请求量时,同时发起与所述指定线程对应数量的用于调用librgw的单独线程,重复与所述测试请求量对应数量的从所述预设服务器读取所述测试文件大小对应的所述测试文件,并将所述测试文件写入所述存储空间的动作,其中,所述测试文件携带有与所述测试文件大小对应的文件前缀。

本实施例中,客户端内部设置有智能测试功能,该智能测试功能由用户自主选择是否开启。在客户端接收到用户输入的测试指令后,需要先检测当前是否已经开启智能测试功能。若客户端当前没有开启智能测试功能,则需要解析出当前的测试参数中的所有参数类型,并对测试参数中的参数类型进行筛选。客户端首先判断测试参数中是否包含有测试请求量,若包含有测试请求量,则选定测试请求量为本次读写测试需要使用的参数,不管测试参数中是否具有测试时间,都不再采用。若不包含有测试请求量,则需要判断测试参数中是否包含有测试时间。若不包含有测试时间,则本次读写测试的测试参数不完整,无法进行测试,本次测试失败。如果包含有测试时间,则选定测试时间为本次读写测试需要使用的参数,并进一步判断测试参数中是否包含有指定线程数。其中,测试请求量和测试时间的筛选步骤不分先后顺序,只是在一次读写测试中,测试请求量或测试时间只能使用一个,不能同时选中。如果包含有指定线程数,则同时发起指定线程数个调用librgw的线程,从预设服务器中读取与测试文件大小对应的测试文件,并将该测试文件写入客户端的硬盘中,直至整个读写用时达到测试时间则停止。其中,librgw根据测试文件的文件名的文件前缀,筛选到与测试文件大小对应的测试文件。比如,测试参数中测试时间为10分钟,指定线程数为80,测试文件大小为4kb,那么会同时发起80个调用librgw的线程,并发40个读请求和40个写请求,读取以4kb_文件前缀开头的测试文件。

进一步的,若测试指令中不包括指定文件大小,则librgw会自动读取以任意前缀开头的测试文件。比如,测试指令中指定了测试时间为10分钟,指定线程数为80,不指定测试文件大小,那么客户端会同时发起80个调用librgw的线程,并发40个读请求和40个写请求,从预设服务器读取以任意数字前缀开头的测试文件,也就是混合读写任意大小文件的测试。

进一步的,所述判断是否已经开启智能测试功能的步骤之后,包括:

s206:若已经开启智能测试功能,则调用第一预设线程数和预设单位时间,其中,所述第一预设线程数为初次智能测试时读写过程中同时发起的调用librgw的线程总数量,所述预设单位时间为智能测试时整个读写过程的总时间;

s207:同时发起与所述第一预设线程数对应数量的用于调用librgw的单独线程,在所述预设单位时间内从所述预设服务器读取与所述测试文件大小对应的测试文件,并将所述测试文件写入存储空间,得到基准响应时间,其中,所述基准响应时间为librgw在所述预设单位时间内读写所述测试文件的平均响应时间;

s208:根据第一预设规则和所述第一预设线程数计算得到第二预设线程数,以完成计算所述第二预设线程数动作,其中,所述第二预设线程数为二次智能测试时读写过程中同时发起的调用librgw的线程总数量;

s209:同时发起与所述第二预设线程数对应数量的用于调用librgw的单独线程,在所述预设单位时间内从所述预设服务器读取与所述测试文件大小对应的测试文件,并将所述测试文件写入存储空间,得到二次响应时间,以完成读写所述测试文件动作;

s2010:判断所述二次响应时间是否大于预设倍数的所述基准响应时间,以完成判断响应时间动作;

s2011:若小于预设倍数的所述基准响应时间,则循环执行所述计算所述第二预设线程数动作、所述读写所述测试文件动作和所述判断响应时间动作,直至当前次得到的响应时间大于预设倍数的所述基准响应时间,其中,在循环过程中,当前次的第二预设线程数作为下一次的第一预设线程数。

本实施例中,用户如果在客户端开启了智能测试功能,则在输入测试指令时,只需要设定测试时间和测试文件大小。客户端如果检测到用户开启了智能测试功能,则自动调取第一预设线程数和预设单位时间。其中,第一预设线程数和预设单位时间可以由用户自己设置具体的数值。客户端同时发起第一预设线程数个调用librgw从预设服务器读取与测试文件大小对应的测试文件,并将测试文件写入客户端的硬盘中,得到librgw在预设单位时间内读写测试文件的平均响应时间,即基准响应时间。然后,根据第一预设规则和第一预设线程数计算得到第二预设线程数,以完成计算第二预设线程数动作。并发起第二预设线程数个调用librgw从预设服务器读取与测试文件大小对应的测试文件,并将测试文件写入客户端的硬盘中,得到librgw在预设单位时间内读写测试文件的平均响应时间,即二次响应时间,以完成读写测试文件动作。其中,第一预设规则具体为:设置有递增线程数,将递增线程数和第一预设线程数的和作为第二预设线程数;或者设置有递增倍数,将递增倍数和第一预设线程数的积作为第二预设线程数。客户端将二次响应时间与预设倍数的基准响应时间进行比对,判断两者之间的大小关系,以完成判断响应时间动作。若二次响应时间大于预设倍数的基准时间,则判定此次的读写测试结束。若二次响应时间小于预设倍数的基准响应时间,则循环执行计算第二预设线程数动作、读写测试文件动作和判断响应时间动作,直至当前次得到的响应时间大于预设倍数的基准响应时间。其中,在循环过程中,当前次的第二预设线程数作为下一次的第一预设线程数。

进一步的,所述判断所述测试参数中是否包含所述指定线程数的步骤之后,包括:

s2012:若不包含所述指定线程数,则调取预先设置的系统线程数;

s2013:同时发起与所述系统线程数对应数量的用于调用librgw的线程,在所述测试时间内重复从所述预设服务器读取与所述测试文件大小对应的测试文件,并将所述测试文件写入存储空间。

本实施例中,客户端在判断测试参数是否包含指定线程数时,如果测试参数中没有包含指定线程数,为了读写测试能够顺利进行,客户端会自动调取用户预先设置的系统线程数。然后,同时发起系统线程数个调用librgw的线程,从预设服务器中读取与测试文件大小对应的测试文件,并将该测试文件写入客户端的硬盘中,直至整个读写用时达到测试时间则停止。进一步的,客户端如果检测不到预先设置的系统线程数,会自动输出提醒信息,提醒用户及时输入本次读写测试的线程数,以使读写测试可以顺利进行。其中,提醒信息包含系统自定义的至少一个线程数,以供用户选择,并在用户选中后直接根据该选择的线程数进行读写测试。

进一步的,所述分别获取每一次所述librgw读取和写入所述测试文件的读写状态的步骤,包括:

s2014:分别计算所述librgw读取和写入的所述测试文件的读取md5值,并获取预先存储在所述预设服务终端的所述测试文件的上传md5值;

s2015:判断所述读取md5值与所述上传md5值是否相同;

s2016:若相同,则判定所述librgw读取和写入所述测试文件的读写状态为读写正确;

s2017:若不相同,则判定所述librgw读取和写入所述测试文件的读写状态为读写错误。

本实施例中,md5是一种通用的数据校验方法,根据md5的算法,会生成一个字符串,即md5值,比如:ajk280aidjfoiquporwej。如果文件中的数据有变化,哪怕变了一个字符,那么生成的md5值也是不相同的,所以根据md5值来验证下载的文件和上传的文件是种可靠的方式。客户端在生成测试文件时,会生成相应的md5值,并在将测试文件上传到预设服务器时,将md5值随同测试文件一起存储在预设服务器中。在完成读写测试后,客户端根据md5的算法计算librgw从预设服务器读取的测试文件的md5值,得到读取md5值。然后从预设服务端获取测试文件的上传md5值。其中,上传md5值为测试文件生成后计算得到的md5值,与将测试文件一起上传到预设服务器进行存储。客户端将测试文件的读取md5值与上传md5值进行比对,判断两者是否相同。若不相同,则判定测试文件读写错误,并记录当前次通过librgw读写测试文件的读写状态为读写错误。若相同,则判定测试文件读写正确,并记录当前次通过librgw读写测试文件的读写状态为读写正确。

进一步的,所述测试信息由多组所述测试数据和所述读写状态组成,各组所述测试数据和所述读写状态以一次读写请求进行分组,所述将各所述测试数据和所述读写状态作为测试信息输出到显示界面的步骤,包括:

s301:分别将各所述测试数据和所述读写状态按照数据类型进行图表化,生成所述测试信息;

s302:将所述测试信息输出到显示界面。

本实施例中,客户端在完成读写测试后得到的测试信息是由多组测试数据和读写状态组成的,以每一次读写请求为一组数据。客户端以每次读写请求中不同的参数类型和读写状态为坐标横轴,以每次读写请求中的测试结果为坐标竖轴,将各组数据进行图表化,生成每次读写请求的柱形图。最后,将图表化后的各组测试数据输出到客户端的显示页面,以便用户/测试人员可以直观根据各组数据的柱形图比对出各次读写测试的测试数据之间的差别。

进一步的,所述接收测试指令的步骤之前,包括:

s4:获取用户输入的新建文件指令,其中,所述新建文件指令包括指定文件大小和文件类型,所述文件类型为文本、图片或音频;

s5:根据所述新建文件指令生成随机文件,并在所述随机文件的文件名备注与所述指定文件大小对应的文件前缀,其中,所述随机文件为由随机数据组成的文件;

s6:将备注后的所述随机文件作为测试文件上传到所述预设服务器。

本实施例中,用户在需要创建新文件时,需要输入新建文件指令到客户端中。其中,新建文件指令包括指定文件大小和文件类型,文件类型为文本、图片或音频。客户端根据新建文件指令,生成与指定文件大小和文件类型均对应的随机文件。其中,具体生成步骤为:当文件类型为文本时,如果文本为随机序列文本,客户端则将0-9的数字和a-z的大小写字母以及“*”、“&”、“^”等预置分隔符号,共计93种字符,采用每次生成一组随机序列,例如,第一次生成0123abc....第二次生成iu8kh122,这种方式拼接成完全无序的字符串,生成为指定文件大小的随机序列文本。这种方式生成的文本完全无序,并且每个文件均不相同。如果本文为word和excel格式文件,则采用微软公布的document接口(documentinterface),创建指定类型的文件,同时向其中写入随机序列文字,即可生成指定文件大小的随机文本文件。如果文件类型为图片时,客户端采用按照jpg格式,按照三原色rgb的配置,随机生成一组点颜色标,例如(0,0,100,90,80),这个点就描述,(0,0)这个位置上的点颜色为(100,90,80),如此反复填充整张图片,则得到一张全部是随机色的图片,因为可以指定画板的大小,所以大小也是可控的。如果文件类型为音频,因为在电脑解析中,音频是一组数字序列,比如123456代表do,ro,mi等,所以客户端可以随机生成一组数字序列,并将其组合起来,按照mp3的格式输出成二进制文件,即可得到指定文件大小的随机音频文件。客户端在随机文件的文件名中备注与指定文件大小相同的前缀,并将备注后的随机文件作为测试文件上传到预设服务器,即完成整个创建新文件的过程。

本实施例提供的一种librgw的性能测试方法,根据用户输入的测试文件大小和测试参数,通过librgw从预设服务器读写对应的测试文件,从而测试出librgw对测试文件进行读写的所有测试信息,并将所有测试信息图形化后输出,从而使得开发人员可以快速得到librgw在读写数据过程中的相关数据,完成针对librgw的性能测试。

参照图2,本申请一实施例中还提供了一种librgw的性能测试装置,用于多次对测试文件的读取和写入测试,所述测试装置包括:

接收模块1,用于接收测试指令,其中,所述测试指令包括测试文件大小和测试参数;

读写模块2,调用librgw按照所述测试参数,分别从预设服务器读取与所述测试文件大小对应的测试文件,并将所述测试文件写入存储空间,并记录每一次所述librgw对所述测试文件的读取和写入过程中产生的测试数据,以及分别获取每一次所述librgw读取和写入所述测试文件的读写状态;

输出模块3,用于将各所述测试数据和所述读写状态作为测试信息输出到显示界面。

本实施例中,客户端在创建数据后,需要将数据上传到ceph集群,即预设服务器中进行存储。客户端中设置有librgw,在需要读取数据时,客户端需要通过java程序来调用librgw访问ceph集群,从而读取ceph集群中的数据,并将读取的数据写入客户端的硬盘中。客户端在做librgw的性能测试时,需要根据用户输入的测试指令进行相应的动作。其中,用户输入的测试指令中包括测试文件大小以及测试参数;测试文件大小为用于测试文件的存储占量大小,比如4kb、1mb等等;测试参数包括指定线程数、测试时间或测试请求量,指定线程数为读写过程中同时发起调用librgw的线程的总数量,测试时间为整个读写过程的总时间,测试请求量为整个读写过程中读写请求的总次数。客户端在接收到用户输入的测试指令后,通过预先构造的java程序调用librgw,根据测试文件的文件名的前缀,筛选到与测试文件大小对应的测试文件。其中,测试文件在生成时,会在文件名中携带有与测试文件的文件大小一致的文件前缀。比如,测试文件a的文件大小为4kb,则测试文件a的文件名为4kb_测试文件a。librgw在筛选到测试文件后,同时发起指定线程数个调用librgw的线程,从预设服务器中读取测试文件,并将测试文件写入客户端的硬盘中,直至整个读写用时达到测试时间则停止。或者,同时发起指定线程数个调用librgw的线程,从预设服务器中读取测试文件,并将测试文件写入客户端的硬盘中,直至整个读写请求的总数量达到测试请求量则停止。其中,测试时间和测试请求量在测试过程中只能任选其一进行,不能同时选中;一个读请求为一个请求量,一个写请求为一个请求量,因此一个读写请求为两个请求量。比如,测试请求量为80个,则在本次测试中总共有40个读请求和40个写请求。在librgw完成一个读写测试后,客户端根据md5的算法计算librgw从预设服务器读取的测试文件的md5值,得到读取md5值,并从预设服务端获取测试文件的上传md5值。其中,上传md5值为测试文件生成后计算得到的md5值,与将测试文件一起上传到预设服务器进行存储。客户端将测试文件的读取md5值与上传md5值进行比对,判断两者是否相同。若不相同,则判定测试文件读写错误,并记录当前次通过librgw读写测试文件的读写状态为读写错误。若相同,则判定测试文件读写正确,并记录当前次通过librgw读写测试文件的读写状态为读写正确。客户端将每一次librgw对测试文件的读取和写入过程中产生的测试数据和读写状态作为测试信息输出到客户端的显示界面。其中,测试数据包括请求时间,响应时间,文件名。

进一步的,所述测试参数包括指定线程数、测试时间和/或测试请求量,所述指定线程数为读写过程中同时发起的调用librgw的线程总数量,所述测试时间为整个读写过程的总时间,所述测试请求量为整个读写过程中读写请求的总次数,所述读写模块2,包括:

第一判断单元,用于判断是否已经开启智能测试功能;

第二判断单元,用于判断所述测试参数中是否包含所述测试请求量和/或所述测试时间;

选择单元,用于从所述测试请求量和所述测试时间中择一选择一个参数作为当前测试参数;或者,若包含所述测试请求量或所述测试时间,则将包含的所述测试请求量或所述测试时间作为所述当前测试参数;

第三判断单元,用于判断所述测试参数中是否包含所述指定线程数;

第一读写单元,用于将所述指定线程数和所述当前测试参数组合在一起作为测试条件进行测试,其中,当所述测试条件为所述指定线程数和所述测试时间的时候,在所述测试时间内,同时发起与所述指定线程数对应数量的用于调用librgw的单独线程,重复从所述预设服务器读取所述测试文件大小对应的所述测试文件,并将所述测试文件写入所述存储空间;或者,当所述测试条件为所述指定线程数和所述测试请求量时,同时发起与所述指定线程对应数量的用于调用librgw的单独线程,重复与所述测试请求量对应数量的从所述预设服务器读取所述测试文件大小对应的所述测试文件,并将所述测试文件写入所述存储空间的动作,其中,所述测试文件携带有与所述测试文件大小对应的文件前缀。

本实施例中,客户端内部设置有智能测试功能,该智能测试功能由用户自主选择是否开启。在客户端接收到用户输入的测试指令后,需要先检测当前是否已经开启智能测试功能。若客户端当前没有开启智能测试功能,则需要解析出当前的测试参数中的所有参数类型,并对测试参数中的参数类型进行筛选。客户端首先判断测试参数中是否包含有测试请求量,若包含有测试请求量,则选定测试请求量为本次读写测试需要使用的参数,不管测试参数中是否具有测试时间,都不再采用。若不包含有测试请求量,则需要判断测试参数中是否包含有测试时间。若不包含有测试时间,则本次读写测试的测试参数不完整,无法进行测试,本次测试失败。如果包含有测试时间,则选定测试时间为本次读写测试需要使用的参数,并进一步判断测试参数中是否包含有指定线程数。其中,测试请求量和测试时间的筛选步骤不分先后顺序,只是在一次读写测试中,测试请求量或测试时间只能使用一个,不能同时选中。如果包含有指定线程数,则同时发起指定线程数个调用librgw的线程,从预设服务器中读取与测试文件大小对应的测试文件,并将该测试文件写入客户端的硬盘中,直至整个读写用时达到测试时间则停止。其中,librgw根据测试文件的文件名的文件前缀,筛选到与测试文件大小对应的测试文件。比如,测试参数中测试时间为10分钟,指定线程数为80,测试文件大小为4kb,那么会同时发起80个调用librgw的线程,并发40个读请求和40个写请求,读取以4kb_文件前缀开头的测试文件。

进一步的,若测试指令中不包括指定文件大小,则librgw会自动读取以任意前缀开头的测试文件。比如,测试指令中指定了测试时间为10分钟,指定线程数为80,不指定测试文件大小,那么客户端会同时发起80个调用librgw的线程,并发40个读请求和40个写请求,从预设服务器读取以任意数字前缀开头的测试文件,也就是混合读写任意大小文件的测试。

进一步的,所述读写模块2,还包括:

调用单元,用于调用第一预设线程数和预设单位时间,其中,所述第一预设线程数为初次智能测试时读写过程中同时发起的调用librgw的线程总数量,所述预设单位时间为智能测试时整个读写过程的总时间;

第二读写单元,用于同时发起与所述第一预设线程数对应数量的用于调用librgw的单独线程,从所述预设服务器读取与所述测试文件大小对应的测试文件,并将所述测试文件写入存储空间,得到基准响应时间,其中,所述基准响应时间为librgw在所述预设单位时间内读写所述测试文件的平均响应时间;

第一计算单元,用于根据第一预设规则和所述第一预设线程数计算得到第二预设线程数,以完成计算所述第二预设线程数动作,其中,所述第二预设线程数为二次智能测试时读写过程中同时发起的调用librgw的线程总数量;

第三读写单元,用于同时发起与所述第二预设线程数对应数量的用于调用librgw的单独线程,在所述预设单位时间内从所述预设服务器读取与所述测试文件大小对应的测试文件,并将所述测试文件写入存储空间,得到二次响应时间,以完成读写所述测试文件动作;

第四判断单元,用于判断所述二次响应时间是否大于预设倍数的所述基准响应时间,以完成判断响应时间动作;

循环单元,用于循环执行所述计算所述第二预设线程数动作、所述读写所述测试文件动作和所述判断响应时间动作,直至当前次得到的响应时间大于预设倍数的所述基准响应时间,其中,在循环过程中,当前次的第二预设线程数作为下一次的第一预设线程数。

本实施例中,用户如果在客户端开启了智能测试功能,则在输入测试指令时,只需要设定测试时间和测试文件大小。客户端如果检测到用户开启了智能测试功能,则自动调取第一预设线程数和预设单位时间。其中,第一预设线程数和预设单位时间可以由用户自己设置具体的数值。客户端同时发起第一预设线程数个调用librgw从预设服务器读取与测试文件大小对应的测试文件,并将测试文件写入客户端的硬盘中,得到librgw在预设单位时间内读写测试文件的平均响应时间,即基准响应时间。然后,根据第一预设规则和第一预设线程数计算得到第二预设线程数,以完成计算第二预设线程数动作。并发起第二预设线程数个调用librgw从预设服务器读取与测试文件大小对应的测试文件,并将测试文件写入客户端的硬盘中,得到librgw在预设单位时间内读写测试文件的平均响应时间,即二次响应时间,以完成读写测试文件动作。其中,第一预设规则具体为:设置有递增线程数,将递增线程数和第一预设线程数的和作为第二预设线程数;或者设置有递增倍数,将递增倍数和第一预设线程数的积作为第二预设线程数。客户端将二次响应时间与预设倍数的基准响应时间进行比对,判断两者之间的大小关系,以完成判断响应时间动作。若二次响应时间大于预设倍数的基准时间,则判定此次的读写测试结束。若二次响应时间小于预设倍数的基准响应时间,则循环执行计算第二预设线程数动作、读写测试文件动作和判断响应时间动作,直至当前次得到的响应时间大于预设倍数的基准响应时间。其中,在循环过程中,当前次的第二预设线程数作为下一次的第一预设线程数。

进一步的,所述读写模块2,还包括:

调取单元,用于调取预先设置的系统线程数;

发起单元,用于同时发起与所述系统线程数对应数量的用于调用librgw的线程,在所述测试时间内重复从所述预设服务器读取与所述测试文件大小对应的测试文件,并将所述测试文件写入存储空间。

本实施例中,客户端在判断测试参数是否包含指定线程数时,如果测试参数中没有包含指定线程数,为了读写测试能够顺利进行,客户端会自动调取用户预先设置的系统线程数。然后,同时发起系统线程数个调用librgw的线程,从预设服务器中读取与测试文件大小对应的测试文件,并将该测试文件写入客户端的硬盘中,直至整个读写用时达到测试时间则停止。进一步的,客户端如果检测不到预先设置的系统线程数,会自动输出提醒信息,提醒用户及时输入本次读写测试的线程数,以使读写测试可以顺利进行。其中,提醒信息包含系统自定义的至少一个线程数,以供用户选择,并在用户选中后直接根据该选择的线程数进行读写测试。

进一步的,所述读写模块2包括:

第二计算单元,用于分别计算所述librgw读取和写入的所述测试文件的读取md5值,并获取预先存储在所述预设服务终端的所述测试文件的上传md5值;

第五判断单元,用于判断所述读取md5值与所述上传md5值是否相同;

第一判定单元,用于判定所述librgw读取和写入所述测试文件的读写状态为读写正确;

第二判定单元,用于判定所述librgw读取和写入所述测试文件的读写状态为读写错误。

本实施例中,md5是一种通用的数据校验方法,根据md5的算法,会生成一个字符串,即md5值,比如:ajk280aidjfoiquporwej。如果文件中的数据有变化,哪怕变了一个字符,那么生成的md5值也是不相同的,所以根据md5值来验证下载的文件和上传的文件是种可靠的方式。客户端在生成测试文件时,会生成相应的md5值,并在将测试文件上传到预设服务器时,将md5值随同测试文件一起存储在预设服务器中。在完成读写测试后,客户端根据md5的算法计算librgw从预设服务器读取的测试文件的md5值,得到读取md5值。然后从预设服务端获取测试文件的上传md5值。其中,上传md5值为测试文件生成后计算得到的md5值,与将测试文件一起上传到预设服务器进行存储。客户端将测试文件的读取md5值与上传md5值进行比对,判断两者是否相同。若不相同,则判定测试文件读写错误,并记录当前次通过librgw读写测试文件的读写状态为读写错误。若相同,则判定测试文件读写正确,并记录当前次通过librgw读写测试文件的读写状态为读写正确。

进一步的,所述测试信息由多组所述测试数据和所述读写状态组成,各组所述测试数据和所述读写状态以一次读写请求进行分组,所述输出模块3,包括:

生成单元,用于分别将各所述测试数据和各所述读写状态按照数据类型进行图表化,生成所述测试信息;

输出单元,用于将所述测试信息输出到显示界面。

本实施例中,客户端在完成读写测试后得到的测试信息是由多组测试数据和读写状态组成的,以每一次读写请求为一组数据。客户端以每次读写请求中不同的参数类型和读写状态为坐标横轴,以每次读写请求中的测试结果为坐标竖轴,将各组数据进行图表化,生成每次读写请求的柱形图。最后,将图表化后的各组测试数据输出到客户端的显示页面,以便用户/测试人员可以直观根据各组数据的柱形图比对出各次读写测试的测试数据之间的差别。

进一步的,所述测试装置,还包括:

获取模块4,用于获取用户输入的新建文件指令,其中,所述新建文件指令包括指定文件大小和文件类型,所述文件类型为文本、图片或音频;

生成模块5,用于根据所述新建文件指令生成随机文件,并在所述随机文件的文件名备注与所述指定文件大小对应的文件前缀,其中,所述随机文件为由随机数据组成的文件;

上传模块6,用于将备注后的所述随机文件作为测试文件上传到所述预设服务器。

本实施例中,用户在需要创建新文件时,需要输入新建文件指令到客户端中。其中,新建文件指令包括指定文件大小和文件类型,文件类型为文本、图片或音频。客户端根据新建文件指令,生成与指定文件大小和文件类型均对应的随机文件。其中,具体生成步骤为:当文件类型为文本时,如果文本为随机序列文本,客户端则将0-9的数字和a-z的大小写字母以及“*”、“&”、“^”等预置分隔符号,共计93种字符,采用每次生成一组随机序列,例如,第一次生成0123abc....第二次生成iu8kh122,这种方式拼接成完全无序的字符串,生成为指定文件大小的随机序列文本。这种方式生成的文本完全无序,并且每个文件均不相同。如果本文为word和excel格式文件,则采用微软公布的document接口(documentinterface),创建指定类型的文件,同时向其中写入随机序列文字,即可生成指定文件大小的随机文本文件。如果文件类型为图片时,客户端采用按照jpg格式,按照三原色rgb的配置,随机生成一组点颜色标,例如(0,0,100,90,80),这个点就描述,(0,0)这个位置上的点颜色为(100,90,80),如此反复填充整张图片,则得到一张全部是随机色的图片,因为可以指定画板的大小,所以大小也是可控的。如果文件类型为音频,因为在电脑解析中,音频是一组数字序列,比如123456代表do,ro,mi等,所以客户端可以随机生成一组数字序列,并将其组合起来,按照mp3的格式输出成二进制文件,即可得到指定文件大小的随机音频文件。客户端在随机文件的文件名中备注与指定文件大小相同的前缀,并将备注后的随机文件作为测试文件上传到预设服务器,即完成整个创建新文件的过程。

本实施例提供的一种librgw的性能测试装置,根据用户输入的测试文件大小和测试参数,通过librgw从预设服务器读写对应的测试文件,从而测试出librgw对测试文件进行读写的所有测试信息,并将所有测试信息图形化后输出,从而使得开发人员可以快速得到librgw在读写数据过程中的相关数据,完成针对librgw的性能测试。

参照图3,本申请实施例中还提供一种计算机设备,该计算机设备可以是服务器,其内部结构可以如图3所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设计的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储测试文件等数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种librgw的性能测试方法,用于多次对测试文件的读取和写入测试,。

上述处理器执行上述librgw的性能测试方法的步骤:

s1:接收测试指令,其中,所述测试指令包括测试文件大小和测试参数;

s2:调用librgw按照所述测试参数,分别从预设服务器读取与所述测试文件大小对应的测试文件,并将所述测试文件写入存储空间,并记录每一次所述librgw对所述测试文件的读取和写入过程中产生的测试数据,以及分别获取每一次所述librgw读取和写入所述测试文件的读写状态;

s3:将各所述测试数据和所述读写状态作为测试信息输出到显示界面。

进一步的,所述测试参数包括指定线程数、测试时间和/或测试请求量,所述指定线程数为读写过程中同时发起的调用librgw的线程总数量,所述测试时间为整个读写过程的总时间,所述测试请求量为整个读写过程中读写请求的总次数,所述调用librgw按照所述测试参数,分别从预设服务器读取与所述测试文件大小对应的测试文件,并将所述测试文件写入存储空间的步骤,包括:

s201:判断是否已经开启智能测试功能;

s202:若没有开启智能测试功能,则判断所述测试参数中是否包含所述测试请求量和/或所述测试时间;

s203:若包含所述测试请求量和所述测试时间,则从所述测试请求量和所述测试时间中择一选择一个参数作为当前测试参数;或者,若包含所述测试请求量或所述测试时间,则将包含的所述测试请求量或所述测试时间作为所述当前测试参数;

s204:判断所述测试参数中是否包含所述指定线程数;

s205:若包含所述指定线程数,则将所述指定线程数和所述当前测试参数组合在一起作为测试条件进行测试,其中,当所述测试条件为所述指定线程数和所述测试时间的时候,在所述测试时间内,同时发起与所述指定线程数对应数量的用于调用librgw的单独线程,重复从所述预设服务器读取所述测试文件大小对应的所述测试文件,并将所述测试文件写入所述存储空间;或者,当所述测试条件为所述指定线程数和所述测试请求量时,同时发起与所述指定线程对应数量的用于调用librgw的单独线程,重复与所述测试请求量对应数量的从所述预设服务器读取所述测试文件大小对应的所述测试文件,并将所述测试文件写入所述存储空间的动作,其中,所述测试文件携带有与所述测试文件大小对应的文件前缀。

进一步的,所述判断是否已经开启智能测试功能的步骤之后,包括:

s206:若已经开启智能测试功能,则调用第一预设线程数和预设单位时间,其中,所述第一预设线程数为初次智能测试时读写过程中同时发起的调用librgw的线程总数量,所述预设单位时间为智能测试时整个读写过程的总时间;

s207:同时发起与所述第一预设线程数对应数量的用于调用librgw的单独线程,在所述预设单位时间内从所述预设服务器读取与所述测试文件大小对应的测试文件,并将所述测试文件写入存储空间,得到基准响应时间,其中,所述基准响应时间为librgw在所述预设单位时间内读写所述测试文件的平均响应时间;

s208:根据第一预设规则和所述第一预设线程数计算得到第二预设线程数,以完成计算所述第二预设线程数动作,其中,所述第二预设线程数为二次智能测试时读写过程中同时发起的调用librgw的线程总数量;

s209:同时发起与所述第二预设线程数对应数量的用于调用librgw的单独线程,在所述预设单位时间内从所述预设服务器读取与所述测试文件大小对应的测试文件,并将所述测试文件写入存储空间,得到二次响应时间,以完成读写所述测试文件动作;

s2010:判断所述二次响应时间是否大于预设倍数的所述基准响应时间,以完成判断响应时间动作;

s2011:若小于预设倍数的所述基准响应时间,则循环执行所述计算所述第二预设线程数动作、所述读写所述测试文件动作和所述判断响应时间动作,直至当前次得到的响应时间大于预设倍数的所述基准响应时间,其中,在循环过程中,当前次的第二预设线程数作为下一次的第一预设线程数。

进一步的,所述判断所述测试参数中是否包含所述指定线程数的步骤之后,包括:

s2012:若不包含所述指定线程数,则调取预先设置的系统线程数;

s2013:同时发起与所述系统线程数对应数量的用于调用librgw的线程,在所述测试时间内重复从所述预设服务器读取与所述测试文件大小对应的测试文件,并将所述测试文件写入存储空间。

进一步的,所述分别获取每一次所述librgw读取和写入所述测试文件的读写状态的步骤,包括:

s2014:分别计算所述librgw读取和写入的所述测试文件的读取md5值,并获取预先存储在所述预设服务终端的所述测试文件的上传md5值;

s2015:判断所述读取md5值与所述上传md5值是否相同;

s2016:若相同,则判定所述librgw读取和写入所述测试文件的读写状态为读写正确;

s2017:若不相同,则判定所述librgw读取和写入所述测试文件的读写状态为读写错误。

进一步的,所述测试信息由多组所述测试数据和所述读写状态组成,各组所述测试数据和所述读写状态以一次读写请求进行分组,所述将各所述测试数据和所述读写状态作为测试信息输出到显示界面的步骤,包括:

s301:分别将各所述测试数据和所述读写状态按照数据类型进行图表化,生成所述测试信息;

s302:将所述测试信息输出到显示界面。

进一步的,所述接收测试指令的步骤之前,包括:

s4:获取用户输入的新建文件指令,其中,所述新建文件指令包括指定文件大小和文件类型,所述文件类型为文本、图片或音频;

s5:根据所述新建文件指令生成随机文件,并在所述随机文件的文件名备注与所述指定文件大小对应的文件前缀,其中,所述随机文件为由随机数据组成的文件;

s6:将备注后的所述随机文件作为测试文件上传到所述预设服务器。

本申请一实施例还提供一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现一种librgw的性能测试方法,用于多次对测试文件的读取和写入测试,具体为:

s1:接收测试指令,其中,所述测试指令包括测试文件大小和测试参数;

s2:调用librgw按照所述测试参数,分别从预设服务器读取与所述测试文件大小对应的测试文件,并将所述测试文件写入存储空间,并记录每一次所述librgw对所述测试文件的读取和写入过程中产生的测试数据,以及分别获取每一次所述librgw读取和写入所述测试文件的读写状态;

s3:将各所述测试数据和所述读写状态作为测试信息输出到显示界面。

进一步的,所述测试参数包括指定线程数、测试时间和/或测试请求量,所述指定线程数为读写过程中同时发起的调用librgw的线程总数量,所述测试时间为整个读写过程的总时间,所述测试请求量为整个读写过程中读写请求的总次数,所述调用librgw按照所述测试参数,分别从预设服务器读取与所述测试文件大小对应的测试文件,并将所述测试文件写入存储空间的步骤,包括:

s201:判断是否已经开启智能测试功能;

s202:若没有开启智能测试功能,则判断所述测试参数中是否包含所述测试请求量和/或所述测试时间;

s203:若包含所述测试请求量和所述测试时间,则从所述测试请求量和所述测试时间中择一选择一个参数作为当前测试参数;或者,若包含所述测试请求量或所述测试时间,则将包含的所述测试请求量或所述测试时间作为所述当前测试参数;

s204:判断所述测试参数中是否包含所述指定线程数;

s205:若包含所述指定线程数,则将所述指定线程数和所述当前测试参数组合在一起作为测试条件进行测试,其中,当所述测试条件为所述指定线程数和所述测试时间的时候,在所述测试时间内,同时发起与所述指定线程数对应数量的用于调用librgw的单独线程,重复从所述预设服务器读取所述测试文件大小对应的所述测试文件,并将所述测试文件写入所述存储空间;或者,当所述测试条件为所述指定线程数和所述测试请求量时,同时发起与所述指定线程对应数量的用于调用librgw的单独线程,重复与所述测试请求量对应数量的从所述预设服务器读取所述测试文件大小对应的所述测试文件,并将所述测试文件写入所述存储空间的动作,其中,所述测试文件携带有与所述测试文件大小对应的文件前缀。

进一步的,所述判断是否已经开启智能测试功能的步骤之后,包括:

s206:若已经开启智能测试功能,则调用第一预设线程数和预设单位时间,其中,所述第一预设线程数为初次智能测试时读写过程中同时发起的调用librgw的线程总数量,所述预设单位时间为智能测试时整个读写过程的总时间;

s207:同时发起与所述第一预设线程数对应数量的用于调用librgw的单独线程,在所述预设单位时间内从所述预设服务器读取与所述测试文件大小对应的测试文件,并将所述测试文件写入存储空间,得到基准响应时间,其中,所述基准响应时间为librgw在所述预设单位时间内读写所述测试文件的平均响应时间;

s208:根据第一预设规则和所述第一预设线程数计算得到第二预设线程数,以完成计算所述第二预设线程数动作,其中,所述第二预设线程数为二次智能测试时读写过程中同时发起的调用librgw的线程总数量;

s209:同时发起与所述第二预设线程数对应数量的用于调用librgw的单独线程,在所述预设单位时间内从所述预设服务器读取与所述测试文件大小对应的测试文件,并将所述测试文件写入存储空间,得到二次响应时间,以完成读写所述测试文件动作;

s2010:判断所述二次响应时间是否大于预设倍数的所述基准响应时间,以完成判断响应时间动作;

s2011:若小于预设倍数的所述基准响应时间,则循环执行所述计算所述第二预设线程数动作、所述读写所述测试文件动作和所述判断响应时间动作,直至当前次得到的响应时间大于预设倍数的所述基准响应时间,其中,在循环过程中,当前次的第二预设线程数作为下一次的第一预设线程数。

进一步的,所述判断所述测试参数中是否包含所述指定线程数的步骤之后,包括:

s2012:若不包含所述指定线程数,则调取预先设置的系统线程数;

s2013:同时发起与所述系统线程数对应数量的用于调用librgw的线程,在所述测试时间内重复从所述预设服务器读取与所述测试文件大小对应的测试文件,并将所述测试文件写入存储空间。

进一步的,所述分别获取每一次所述librgw读取和写入所述测试文件的读写状态的步骤,包括:

s2014:分别计算所述librgw读取和写入的所述测试文件的读取md5值,并获取预先存储在所述预设服务终端的所述测试文件的上传md5值;

s2015:判断所述读取md5值与所述上传md5值是否相同;

s2016:若相同,则判定所述librgw读取和写入所述测试文件的读写状态为读写正确;

s2017:若不相同,则判定所述librgw读取和写入所述测试文件的读写状态为读写错误。

进一步的,所述测试信息由多组所述测试数据和所述读写状态组成,各组所述测试数据和所述读写状态以一次读写请求进行分组,所述将各所述测试数据和所述读写状态作为测试信息输出到显示界面的步骤,包括:

s301:分别将各所述测试数据和所述读写状态按照数据类型进行图表化,生成所述测试信息;

s302:将所述测试信息输出到显示界面。

进一步的,所述接收测试指令的步骤之前,包括:

s4:获取用户输入的新建文件指令,其中,所述新建文件指令包括指定文件大小和文件类型,所述文件类型为文本、图片或音频;

s5:根据所述新建文件指令生成随机文件,并在所述随机文件的文件名备注与所述指定文件大小对应的文件前缀,其中,所述随机文件为由随机数据组成的文件;

s6:将备注后的所述随机文件作为测试文件上传到所述预设服务器。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储与一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的和实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可以包括只读存储器(rom)、可编程rom(prom)、电可编程rom(eprom)、电可擦除可编程rom(eeprom)或闪存。易失性存储器可包括随机存取存储器(ram)或者外部高速缓冲存储器。作为说明而非局限,ram通过多种形式可得,诸如静态ram(sram)、动态ram(dram)、同步dram(sdram)、双速据率sdram(ssrsdram)、增强型sdram(esdram)、同步链路(synchlink)dram(sldram)、存储器总线(rambus)直接ram(rdram)、直接存储器总线动态ram(drdram)、以及存储器总线动态ram(rdram)等。

需要说明的是,在本文中,术语“包括”、“包含”或者其任何其它变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、装置、物品或者方法不仅包括那些要素,而且还包括没有明确列出的其它要素,或者是还包括为这种过程、装置、物品或者方法所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、装置、物品或者方法中还存在另外的相同要素。

以上所述仅为本申请的优选实施例,并非因此限制本申请的专利范围,凡是利用本申请说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其它相关的技术领域,均同理包括在本申请的专利保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1