一种压力模拟方法及装置与流程

文档序号:11177042阅读:811来源:国知局
一种压力模拟方法及装置与流程

本申请属于计算机软件测试领域,具体地说,涉及一种压力模拟方法和装置。



背景技术:

近年来,随着互联网技术的迅速发展,非结构化数据、大数据、云存储已经毫无争议地成为了信息技术发展趋势和热点,分布式文件系统作为核心基础被推到了浪潮之巅,广泛被工业界和学术界热推。

分布式系统通常由网络、数据库、应用服务器多个部分组成。现代分布式文件系统普遍具有高性能、高扩展、高可用、高效能、易使用、易管理等特点。然而,在确定一个分布式系统具有上述优点之前,需要对系统进行各方面的测试,从而保证系统足以满足用户的需求。

对于分布式系统而言,压力测试非常重要。一个分布式系统能够承受多大的压力是衡量这个分布式系统的关键因素之一。因此,为了测试的真实,每个测试压力器都会尽可能的模拟分布式集群产生的压力。

在现有的技术方案中,通常采用极限压力的测试方法对文件操作使用方式进行模拟。其问题在于,随着压力测试场景的变换和增加,需要不断的增加压力生成方式进行测试,这样需要不断增加新的开发,造成技术资源的浪费;与此同时,现有技术不能通过配置的方式配置模拟出任意复杂的压力测试场景,模拟方式较单一。

因此,一种新型的分布式压力模拟方法和装置亟待提出。



技术实现要素:

有鉴于此,本申请所要解决的技术问题是提供了一种压力模拟方法和装置。

为了解决上述技术问题,本申请公开了一种压力模拟方法,包括如下步骤:

获取压力模拟类型,并读取所述模拟类型相对应的配置文件;解析所述配置文件并根据所述配置文件的解析结果创建一定数量的线程;所述线程调用execute方法,根据所述配置文件的解析结果执行与所述压力模型相对应的预设的原子操作。

其中,所述压力模拟类型包括文件类型以及文件的操作类型。

其中,执行与所述压力模型相对应的预设的原子操作之前,所述方法还包括:将一种文件类型的一种操作类型封装成一个原子操作。

其中,根据配置文件创建一定数量的线程,还包括:在每个所述线程中创建一个原子操作的类的对象。

其中,解析所述配置文件包括:由执行框架解析第一类参数,其中所述第一类参数包括所述压力模拟类型对应的当前原子操作的执行时间、所述当前原子操作的执行频率以及为所述当前原子操作创建的线程数。

其中,解析所述配置文件包括:所述执行框架将第二类参数传递至所述原子操作的类的对象,并由所述原子操作的类的对象解析所述第二类参数。

其中,所述方法还包括:在所述第二类参数中,使用分布的方式描述所述原子操作的参数。

本申请公开了一种压力模拟装置,包括:

参数获取模块,用于获取压力模拟类型,并读取所述模拟类型相对应的配置文件;

解析与创建模块,用于解析所述配置文件并根据所述配置文件的解析结果创建一定数量的线程;

压力产生模块,所述线程调用execute方法,用于根据所述配置文件的解析结果执行与所述压力模型相对应的预设的原子操作。

其中,所述压力模拟类型包括文件类型以及文件的操作类型。

所述装置还包括原子操作封装模块:所述原子操作封装模块,用于执行与所述压力模型相对应的预设的原子操作之前,将一种文件类型的一种操作类型封装成一个原子操作。

所述解析与创建模块还用于:在每个所述线程中创建一个原子操作的类的对象。

所述解析与创建模块具体用于:由执行框架解析第一类参数,其中所述第一类参数包括所述压力模拟类型对应的当前原子操作的执行时间、所述当前原子操作的执行频率以及为所述当前原子操作创建的线程数。

所述解析与创建模块具体用于:所述执行框架将第二类参数传递至所述原子操作的类的对象,并由所述原子操作的类的对象解析所述第二类参数。

所述装置还包括:在所述第二类参数中,使用分布的方式描述所述原子操作的参数。

与现有技术相比,本申请可以获得包括以下技术效果:

1)采用配置文件的方式为压力测试编程进行配置描述,可以通过对配置文件的修改模拟出任意复杂的压力测试场景;

2)将复杂的压力生成方式拆分成不同类型的原子操作,并通过原子操作的任意组合实现不同场景下的压力测试,降低迭代开发成本;

3)采用分布的方式来描述原子操作的参数,使得参数可以动态变化从而动态模拟分布式集群产生的压力,更加真实。

当然,实施本申请的任一产品必不一定需要同时达到以上所述的所有技术效果。

附图说明

此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:

图1是本申请实施例一的技术流程图;

图2是本申请实施例二的技术流程图;

图3是本申请实施例三的技术流程图;

图4是本申请实施例四的装置结构示意图。

具体实施方式

以下将配合附图及实施例来详细说明本申请的实施方式,藉此对本申请如何应用技术手段来解决技术问题并达成技术功效的实现过程能充分理解并据以实施。

在一个典型的配置中,计算设备包括一个或多个处理器(cpu)、输入/输出接口、网络接口和内存。

内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flashram)。内存是计算机可读介质的示例。

计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitorymedia),如调制的数据信号和载波。

如在说明书及权利要求当中使用了某些词汇来指称特定组件。本领域技术人员应可理解,硬件制造商可能会用不同名词来称呼同一个组件。本说明书及权利要求并不以名称的差异来作为区分组件的方式,而是以组件在功能上的差异来作为区分的准则。如在通篇说明书及权利要求当中所提及的“包 含”为一开放式用语,故应解释成“包含但不限定于”。“大致”是指在可接收的误差范围内,本领域技术人员能够在一定误差范围内解决所述技术问题,基本达到所述技术效果。此外,“耦接”一词在此包含任何直接及间接的电性耦接手段。因此,若文中描述一第一装置耦接于一第二装置,则代表所述第一装置可直接电性耦接于所述第二装置,或通过其他装置或耦接手段间接地电性耦接至所述第二装置。说明书后续描述为实施本申请的较佳实施方式,然所述描述乃以说明本申请的一般原则为目的,并非用以限定本申请的范围。本申请的保护范围当视所附权利要求所界定者为准。

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

图1是本申请实施例一的技术流程图,结合图1,本申请实施例一种压力模拟方法,可以由如下的步骤实现:

步骤s110:获取压力模拟类型,并读取所述模拟类型相对应的配置文件;

步骤s120:解析所述配置文件并根据所述配置文件的解析结果创建一定数量的线程;

步骤s130:所述线程调用execute方法,根据所述配置文件的解析结果执行与所述压力模型相对应的预设的原子操作。

需要说明的是,本申请实施例中,预先将每个文件类型的一次写或读或删除或创建封装成一个原子操作,例如,现有的压力测试文件有a、b、c三种文件类型,那么对于读、写、删除、创建这四种操作类型,将会得到3*4=12种原子类型,即a文件的写、b文件的写、c文件的写、a文件的读、b文件的读、c文件的读、a文件的删除、b文件的删除、c文件的删除、a文件的创建、b文件的创建、c文件的创建等等,共12种压力测试类型。

具体的,在步骤s110中,获取压力模拟类型,所述压力模拟类型可以是测试人员选择的,也可以是压力模拟器配置的。压力模拟类型中主要包括文件类型以及文件的操作类型,即当前的压力测试想要采用哪种文件类型的 那些操作对当前的系统进行压力测试。其中,文件的操作类型主要包括读、写、删除、创建、调用等。不同的文件类型适用于不同的读写删除创建等,其性能不同,自然对系统产生的压力也不同,例如txt的读、doc的写等等。

对于每一种压力模拟类型,为其配置一个相应的配置文件,配置文件中描述了压力模拟过程中的压力生成方式,例如,压力模拟类型对应的原子操作类型、执行时间、执行频率等。

比如:一个压力场景可以表示为1个a文件的写和1个b文件的读。

一个典型的配置文件的描述方式举例如下:

[a_write]

class=awrite

time=100

thread=10

qps=g1(1,2)

arg1=g4(111)

如上配置文件所示,两个配置文件描述的压力模拟类型分别是a文件的写。在a文件的写这一压力模拟类型的配置文件中,class=awrite表示a文件的写对应的原子操作类型以及原子操作对应的类的对象;time=100表示a文件的写对应的原子操作的执行时间;thread=10表示为a文件的写这一压力模拟类型创建的线程数;qps=g1(1,2)表示a文件的写对应的原子操作的执行频率,arg1=g4(111)表示a文件对应的原子操作在执行时的写入的文件长度,其中,g()函数表示一种分布,通过分布类将其解析后通常会返回一个数值或者字符串。

具体的,在步骤s120中,首先对所述配置文件进行解析。配置文件中主要包含两类参数,具体解析时,先由执行框架frame对第一类参数进行解析,其中,所述第一类参数具体包括所述压力模拟类型对应的当前原子操作的执行时间、所述当前原子操作的执行频率以及为所述当前原子操作创建的线程数等。

在本步骤中,当执行框架frame对第一类参数进行解析的结果包括当前原子操作创建的线程数时,为当前的所述压力模拟类型创建相应数量的线程。

具体的,在创建线程之后,在每个所述线程中创建一个原子操作的类的对象,所述原子操作的类的对象是根据所述压力模拟类型进行创建的。例如,当压力模拟类型是“a文件的读”时,创建的原子操作的类的对象即是“a文件的读”,记为classa。所述classa能够解析与原子操作有关的参数。因此,对于配置文件中的第二类参数,所述执行框架frame将其传递至classa进行解析。

需要说明的是,所述第二类参数主要是原子操作的需求参数,包括当前原子操作的文件的长度、文件大小等。通常采用分布的方式动态描述这些参数,例如cauchy(柯西分布),constant(常量分布),empirical(经验分布),exponent(指数分布),extreme(极值分布),geometric(几何分布),lognormal(对数正态分布),normal(正态分布),poisson(泊松分布),uniform(均匀分布)等。利用这些不同的分布来描述原子操作的参数,使得这些参数能够不断的动态变化,可以在一次设置的情况下,模拟出不同的压力生成方式,对系统的测试更加真实,同时也能够节省时间,避免对配置文件的不断修改。

具体的,在步骤130中,建立的每个线程在执行的时候,调用当前线程中创建的原子操作的类的对象的execute方法,每调用一次execute方法就是执行一次原子操作,即完成一次预设类型的压力模拟。

本实施例中,通过将不同类型文件的不同操作封装成原子操作并通过配置文件的方式对原子操作进行配置描述,能够组合成任意复杂的压力测试场景;与此同时,采用分布的方式来描述原子操作的参数,使得原子操作的参数能够动态变化从而实现了对压力的动态模拟,实现了更加真实的压力测试。

图2是本申请实施例二的技术流程图,结合图2,本申请一种压力模拟方法还可以有如下可行的实施方式:

步骤s210:将不同文件类型的一次执行操作封装成一个原子操作。

其中,所述不同文件类型包括能够在系统操作并对系统产生一定压力的 所有文件的类型;所述执行操作包括写或读或删除或创建或调用等,当然,应当理解,所有能够对文件执行的操作都应在本发明的保护范围之内。

步骤s220:为压力模拟写配置文件。

所述配置文件中描述了产生模拟压力的压力器的压力生产方式,解析所述配置文件能够得到所述压力器在进行压力模拟时采用何种压力模拟类型、压力模拟类型对应的原子操作、原子操作的执行时间、执行频率以及第二参数的传递对象等等。

本实施例中,假设现有file1\file2两种不同类型的文件,其适用的两种操作分别为读\写。假设file1的读\写、file2的读\写对应的所述配置文件分别如下所展示的:

[file1_write]

class=a

qps=g1(n1)

thread=20

time=100

arg1=g1(n2)

[file1_read]

class=b

qps=g4(n3)

thread=10

time=120

arg2=g2(n4)

[file2_read]

class=c

qps=g4(n5)

thread=20

time=100

arg3=g3(n6)

[file2_write]

class=d

qps=g1(n7)

thread=20

time=150

arg4=g4(n8)

在file1_write的配置文件中,对file1这一文件类型的写操作对应的原子操作是a,且在为file1的写操作创建线程后,在每个线程中创建a的类的对象classa,并由a来解析file1_write的配置文件中的第二参数;qps=g1(n1)表示,以n1的g1()分布来描述file1_write对应的原子操作的执行频率;thread=20,表示为file1_write这一压力模拟创建20个进程;time=100表示ile1_write对应的原子操作的执行时间为100;arg1=g1(n2)表示以n2的g2()f分布来描述ile1_write对应的原子操作的文件长度。其中,每执行一次原子操作,qps=g1(n1)以及arg1=g1(n2)都会返回一个值或者字符串供压力器直接使用。

file1_read、file2_read以及file2_write的配置文件参考以上描述进行理解,此处不做赘述。

需要说明的是,本申请实施例中,步骤s210和步骤s220并无固定的先后顺序,也可以是先写配置文件再进行原子操作的封装,上述分步描述仅供阐述说明使用,对本申请实施例并不构成限制。

步骤s230:获取压力模拟类型并读取所述压力模拟类型对应的配置文件。

本实施例中,压力模拟类型可以是自定义的,可由测试人员进行选择。假设本实施例中,测试类型为file1文件的读以及file2文件的写。当获取到压力模拟类型之后,可根据所述压力模拟类型读取写好的配置文件,承接上一步骤中所举的例子,本实施例中,读取的是file1_read以及file2_write。

步骤s240:执行框架frame对所述配置文件进行解析并创建相应的线程。

在配置文件中,执行框架并非能够完全解析所有的参数,它只能够解析部分特殊参数,即第一类参数,例如步骤s220中的class、qps、thread、tim等。除这些参数外,还有另一类参数是执行框架frame不能直接解析的,即第二类参数。frame将自己不能解析的第二类参数传递给能够对第二类参数进行解析的类,具体传递对象就是frame解析出的class。例如,承接步骤s230,执行框架对配置文件的解析结果中,class=a,则第二类参数的将由执行框架传递给classa进行解析,例如file1_write配置文件中的arg1=g1(n2)。

所述执行框架frame除解析配置文件以及传递参数之外,还需根据解析到的压力模拟类型创建的线程数为当前压力模拟创建相应数量的线程。承接步骤s220以及s230中的例子,为file1的读操作创建20个线程,为file2的写操作创建20个线程。

步骤s250:在每个线程中创建一个原子操作的类的对象并将第二参数传递至每个线程里的对象;

每个原子操作都是一个类,本实施例中,在每个线程中为原子操作创建类的对象。承接上一步骤的例子,为file1的读操作创建20个线程之后,在每个线程中创建classa的对象,并将第二参数,即arg1=g1(n2)传递给classa里的对象。

步骤s260:每个线程执行调用execute方法执行相应的原子操作。

本步骤中,每个线程的参数配置好之后,即可调用execute方法,执行与所述压力模拟类型相对应的原子操作。例如,在file1的读操作创建的线程中调用execute方法时,执行的是与file1的读操作相对应的原子操作;同理,若是在file2的写操作创建的线程中调用execute方法时,执行的是与file2的写操作相对应的原子操作。

在每个线程中,每调用一次execute方法都是执行一次原子操作,重复执行步骤s270直至到timeout或出现任何异常。

优选的,在步骤s260之后,本申请实施例还可包括步骤s270以及步骤s280。

步骤s270:修改压力模拟类型。

压力测试场景越接近真实的压力场景对系统抗压能力的测试越有效,然而真实的系统产生压力时是多变的且不定性的,因此,如上述步骤所示的单一压力测试方式并不能够完全满足测试需求。本申请实施例中,当压力测试所需的压力模拟类型修改或增加时,并不需要重新进行进行测试代码的编写,只需要告知进行压力模拟的压力器需要进行模拟的压力类型是什么。

例如,本申请实施例中,测试类型更改为file1文件的写以及file1文件的读以及file2文件的删除。

步骤s280:根据所述压力模拟类型读取相应的配置文件。

不同压力模拟类型的配置文件是已经写好的,当获知压力测试的压力模拟类型时,直接根据所需读取现有的配置文件并进行解析即可。

承接上一步骤的例子,根据压力模拟类型读取file1文件的写的配置文件file1_write、file1文件的读的配置文件file1_read以及file2文件的删除的配置文件file2_delete。

在步骤s280之后的步骤如步骤s240~步骤s260所述,此处不做赘述。

特别的,当压力模拟类型增加时,将分别为不同类型的压力模拟创建预设数量的线程,并在不同类型的线程中调用execute方法执行相应不同类型的原子操作。承接上述例子,本实施例中,将在为file1文件的写创建的线程中,调用execute方法执行写file1文件的原子操作,在为file1文件的读创建的线程中,调用execute方法执行读file1文件的原子操作,为file2文件的删除创建的线程中,调用execute方法执行删除file2文件的原子操作。

当压力模拟类型再变化或是更加复杂时,只需获取目标模拟类型,便可读取相应的配置文件并执行相应的原子操作,从而通过不同类型原子操作的组合实现任意类型的压力模拟。

本实施例中,通过将压力测试拆分成不同的原子操作,并且通过不同的原子操作进行组合的方式实现不同场景的压力测试,降低了压力测试的开发成本,简易而高效。

图3是本申请实施例三的技术流程图,结合图2,本申请一种压力模拟方法还有如下另一种可行的实施方式:

步骤s310:将不同文件类型的一次执行操作封装成一个原子操作。

其中,所述不同文件类型包括能够在系统操作并对系统产生一定压力的所有文件的类型;所述执行操作包括写或读或删除或创建或调用等,当然,应当理解,所有能够对文件执行的操作都应在本发明的保护范围之内。

步骤s320:为压力模拟写配置文件。

所述配置文件中描述了产生模拟压力的压力器的压力生产方式,解析所述配置文件能够得到所述压力器在进行压力模拟时采用何种压力模拟类型、压力模拟类型对应的原子操作、原子操作的执行时间、执行频率以及第二参数的传递对象等等。

本实施例中,假设现有file1\file2两种不同类型的文件,其适用的两种操作分别为读\写。假设file1的读\写、file2的读\写对应的所述配置文件分别如下所展示的:

[file1_write]

class=a

qps=g1(n1)

thread=20

time=100

arg1=g1(n2)

[file1_read]

class=b

qps=g4(n3)

thread=10

time=120

arg2=g2(n4)

[file2_read]

class=c

qps=g4(n5)

thread=20

time=100

arg3=g3(n6)

[file2_write]

class=d

qps=g1(n7)

thread=20

time=150

arg4=g4(n8)

在file1_write的配置文件中,对file1这一文件类型的写操作对应的原子操作是a,且在为file1的写操作创建线程后,在每个线程中创建a的类的对象classa,并由a来解析file1_write的配置文件中的第二参数;qps=g1(n1)表示,以n1的g1()分布来描述file1_write对应的原子操作的执行频率;thread=20,表示为file1_write这一压力模拟创建20个进程;time=100表示ile1_write对应的原子操作的执行时间为100;arg1=g1(n2)表示以n2的g2()f分布来描述ile1_write对应的原子操作的文件长度。其中,每执行一次原子操作,qps=g1(n1)以及arg1=g1(n2)都会返回一个值或者字符串供压力器直接使用。

file1_read、file2_read以及file2_write的配置文件参考以上描述进行理解,此处不做赘述。

需要说明的是,本申请实施例中,步骤s310和步骤s320并无固定的先后顺序,也可以是先写配置文件再进行原子操作的封装,上述分步描述仅供阐述说明使用,对本申请实施例并不构成限制。

步骤s330:获取压力模拟类型并读取所述压力模拟类型对应的配置文件。

本实施例中,压力模拟类型可以是自定义的,可由测试人员进行选择。假设本实施例中,测试类型为file1文件的读以及file2文件的写。当获取到压力模拟类型之后,可根据所述压力模拟类型读取写好的配置文件,承接上一步骤中所举的例子,本实施例中,读取的是file1_read以及file2_write。

步骤s340:执行框架frame对所述配置文件进行解析并创建相应的线程。

在配置文件中,执行框架并非能够完全解析所有的参数,它只能够解析部分特殊参数,即第一类参数,例如步骤s320中的class、qps、thread、time等。除这些参数外,还有另一类参数是执行框架frame不能直接解析的,即第二类参数。frame将自己不能解析的第二类参数传递给能够对第二类参数进行解析的类,具体传递对象就是frame解析出的class。例如,承接步骤s230,执行框架对配置文件的解析结果中,class=a,则第二类参数的将由执行框架传递给classa进行解析,例如file1_write配置文件中的arg1=g1(n2)。

所述执行框架frame除解析配置文件以及传递参数之外,还需根据解析到的压力模拟类型创建的线程数为当前压力模拟创建相应数量的线程。承接步骤s320以及s330中的例子,为file1的读操作创建20个线程,为file2的写操作创建20个线程。

步骤s350:在每个线程中创建一个原子操作的类的对象并将第二参数传递至每个线程里的对象;

每个原子操作都是一个类,本实施例中,在每个线程中为原子操作创建类的对象。承接上一步骤的例子,为file1的读操作创建20个线程之后,在 每个线程中创建classa的对象,并将第二参数,即arg1=g1(n2)传递给classa里的对象。

步骤s360:每个线程执行调用execute方法执行相应的原子操作。

本步骤中,每个线程的参数配置好之后,即可调用execute方法,执行与所述压力模拟类型相对应的原子操作。例如,在file1的读操作创建的线程中调用execute方法时,执行的是与file1的读操作相对应的原子操作;同理,若是在file2的写操作创建的线程中调用execute方法时,执行的是与file2的写操作相对应的原子操作。

在每个线程中,每调用一次execute方法都是执行一次原子操作,重复执行步骤s370直至到timeout或出现任何异常。

优选的,在步骤s360之后,本申请实施例还可包括步骤s370以及步骤s380。

步骤s370:修改压力模拟类型对应的的配置文件。

在本实施例中,假设这样一种压力测试场景,对file1的写操作的测试时间需要加长,且测试频率需要更快,按照本申请实施例的技术方案,不需要重新编写测试程序,只需更改file1的写操作的配置文件即可,配置文件中的第一类参数和第二类参数都可根据测试的需要进行修改。

承接步骤s320中的例子,file1的写操作的配置文件可以更改如下:

[file1_write]

class=a

qps=g1(n7)

thread=20

time=200

arg1=g1(n8)

上述对配置文件的修改,更新了写file1原子操作对应的执行频率,创建的线程数、执行时间以及写文件的长度等。当然,应当理解,上述修改仅供举例使用,对本申请实施例不构成任何限制。

本申请实施例中,当压力测试所需的压力模拟类型的压力生成方式产生变化时,并不需要重新进行进行测试代码的编写,只需更改相应的配置文件即可实现不同场景、不同压力大小的压力测试。

步骤s380:执行框架frame对所述配置文件进行解析并创建相应的线程。

在上一步骤中,配置文件经过修改更新,此步骤中,需重新读取更新后的配置文件,并对更新后的配置文件进行解析,从而根据配置文件产生目标压力对系统进行测试。

在步骤s380之后的步骤如步骤s350~步骤s360所述,此处不做赘述。

本实施例中,通过修改不同压力测试类型对应的配置文件,改变压力模拟的压力产生方式,即使压力测试的要求有所更改,也无需增加新的测试代码,修改配置文件即可模拟出任意场景的压力测试。

图4是本申请实施例四的装置结构示意图,结合图4,本申请一种压力模拟装置,包括:

参数获取模块410,用于获取压力模拟类型,并读取所述模拟类型相对应的配置文件;

解析与创建模块420,用于解析所述配置文件并根据所述配置文件的解析结果创建一定数量的线程;

压力产生模块430,所述线程调用execute方法,用于根据所述配置文件的解析结果执行与所述压力模型相对应的预设的原子操作。

其中,所述压力模拟类型包括文件类型以及文件的操作类型。

所述装置还包括原子操作封装模块440:所述原子操作封装模块,用于执行与所述压力模型相对应的预设的原子操作之前,将一种文件类型的一种操作类型封装成一个原子操作。

所述解析与创建模块420还用于:在每个所述线程中创建一个原子操作的类的对象。

所述解析与创建模块420具体用于:由执行框架解析第一类参数,其中所述第一类参数包括所述压力模拟类型对应的当前原子操作的执行时间、所述当前原子操作的执行频率以及为所述当前原子操作创建的线程数。

所述解析与创建模块420具体用于:所述执行框架将第二类参数传递至所述原子操作的类的对象,并由所述原子操作的类的对象解析所述第二类参数。

所述装置还包括:在所述第二类参数中,使用分布的方式描述所述原子操作的参数。

图4所示实施例可以执行图1、图2及图3所示实施例所述方法,其实现原理和技术效果不做赘述。

上述说明示出并描述了本发明的若干优选实施例,但如前所述,应当理解本发明并非局限于本文所披露的形式,不应看作是对其他实施例的排除,而可用于各种其他组合、修改和环境,并能够在本文所述发明构想范围内,通过上述教导或相关领域的技术或知识进行改动。而本领域人员所进行的改动和变化不脱离本发明的精神和范围,则都应在本发明所附权利要求的保护范围内。

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