一种多机房缓存同步功能的测试方法及装置
技术领域
本申请涉及计算机技术领域,尤其涉及一种多机房缓存同步功能的测试方法及装置。
背景技术
多机房缓存同步,是一种使不同机房内的缓存设备保存的数据保持一致的技术,比如,使机房1内的缓存设备1保存的数据,与机房2~机房n内的各缓存设备保存的数据保持一致。其中,这里所说的机房,可以是指从逻辑上对一个机房设备进行划分得到的子设备,也可以是指物理空间上相互独立的机房。
该技术往往应用在这样的场景中:同一应用系统在多个机房部署,且各应用系统分别连接的缓存设备中的数据需要同步更新。在这样的场景下,一旦有某应用系统确定出需要更新该应用系统所在机房(称本地机房)的缓存设备,则该应用系统在更新该缓存设备的同时,会通过本地消息代理和其他机房(称远端机房)中的消息代理,向远端机房中的与该应用系统相同的其他应用系统发送命令,使得所述其他应用系统更新各自连接的缓存设备中的数据,从而保持缓存设备的数据同步。
对多机房缓存同步的自动化测试,是指对被测试的应用系统(简称被测系统)的多机房缓存同步功能进行测试。其中,被测系统的多机房缓存同步功能,是指被测系统使得不同机房内的缓存设备保存的数据保持一致的能力。
现有技术中,为了实现对被测系统上述功能的测试,需要测试设备触发被测系统向本地机房中的消息代理发送缓存设备更新指令;本地机房的消息代理会将该指令转发给一远端机房的消息代理,以使得该远端机房的应用系统(该应用系统与被测系统相同,也可理解为就是被测系统)根据该指令,通知包括本地机房在内的不同机房中的被测系统更新缓存设备。
在上述过程完成后,测试设备通过对不同机房中的缓存设备保存的数据进行一致性校验,可以得出对于被测系统的多机房缓存同步功能的测试结果。
现有技术中的该测试方法存在的问题在于,需要本地机房和远端机房中的多个设备配合完成缓存设备的数据更新,从而耗费的处理资源较多。
发明内容
本申请实施例提供一种多机房缓存同步功能的测试方法,用以利用较少的处理资源实现对被测系统的多机房缓存同步功能的测试。
本申请实施例还提供一种多机房缓存同步功能的测试装置,用以利用较少的处理资源实现对被测系统的多机房缓存同步功能的测试。
本申请实施例采用下述技术方案:
一种多机房缓存同步功能的测试方法,包括:
拦截被测系统向消息代理发送的缓存设备同步指令;
将拦截到的所述指令发送给至少两个缓存设备,以指示所述至少两个缓存设备进行数据更新;
根据所述至少两个缓存设备的数据更新结果,确定对于所述被测系统的缓存同步功能的测试结果。
一种多机房缓存同步功能的测试装置,包括:
消息拦截器,用于拦截被测系统向消息代理发送的缓存设备同步指令;
消息发送器,用于将消息拦截器拦截到的所述指令发送给至少两个缓存设备,以指示所述至少两个缓存设备进行数据更新;
测试结果确定单元,用于根据所述至少两个缓存设备的数据更新结果,确定对于所述被测系统的缓存同步功能的测试结果。
本申请实施例采用的上述至少一个技术方案能够达到以下有益效果:
由于可以对被测系统向消息代理发送的缓存设备同步指令进行拦截,并将该指令直接发送给至少两个缓存设备,以指示所述至少两个缓存设备进行数据更新,从而无需被测系统所在的本地机房内的消息代理、远端机房中的被测系统和消息代理配合完成缓存设备的数据更新,从而可以利用较少的处理资源,实现对被测系统的多机房缓存同步功能的测试。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1为本申请实施例1提供的一种多机房缓存同步功能的测试方法的实现流程示意图;
图2为现有技术中一个典型的多机房缓存同步架构示意图;
图3为本申请实施例2中设计的一种测试模型的结构示意图;
图4为本申请实施例2中测试用例的运行过程以及多机房缓存同步校验组件的结构示意图;
图5为本申请实施例2中的配置管理模块执行的操作示意图;
图6为本申请实施例2中的缓存操作组件执行的第一种操作示意图;
图7为本申请实施例2中的缓存操作组件执行的第二种操作示意图;
图8为本申请实施例2中的缓存操作组件执行的第三种操作示意图;
图9为本申请实施例2中的消息拦截器执行的操作示意图;
图10为本申请实施例3提供的一种多机房缓存同步功能的测试装置的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
以下结合附图,详细说明本申请各实施例提供的技术方案。
实施例1
考虑到三个因素:1、针对多机房缓存同步过程的测试目标而言,是为了测试被测系统的多机房缓存同步功能;2、就被测系统而言,其部署在不同机房中,即不同机房中运行的是相同的被测系统;3、同步两个缓存设备和同步两个以上缓存设备的实现逻辑是一样的。因此,本申请实施例1中,为了利用较少的处理资源实现对被测系统的多机房缓存同步功能的测试,提供了一种多机房缓存同步功能的测试方法。
该方法的执行主体,可以是自动化测试框架,也可以是自动化测试框架的运行设备,或者是任意的测试设备。该方法的流程示意图如图1所示,包括下述步骤:
步骤11,拦截被测系统向消息代理发送的缓存设备同步指令;
其中,该缓存设备同步指令可以是数据新增指令,用于指示缓存设备新增数据;也可以是数据删除指令,用于指示缓存设备删除数据;还可以是数据修改指令,用于指示缓存设备修改数据。
本申请实施例中,这里所说的缓存设备是指缓冲寄存器,比如可以是高速缓冲存储器(Cache)。
步骤12,将拦截到的缓存设备同步指令发送给至少两个缓存设备(后称所述至少两个缓存设备),以指示所述至少两个缓存设备进行数据更新;
基于上述因素中的第2个因素,即:同步两个缓存设备和同步两个以上缓存设备的实现逻辑是一样的,本申请实施例中,可以仅将拦截到的该指令发送给少量的缓存设备。其中,这里所说的“少量的缓存设备”,可以是2个缓存设备,也可以是3个缓存设备,等等。此外,这里所说的“少量的缓存设备”,往往包含至少两个不同机房的缓存设备。
需要说明的是,本申请实施例中,也可以将该指令发送给所有机房的缓存设备。由于该指令的发送无需本地机房的消息代理、远端机房的被测系统,以及远端机房的消息代理的配合,因此即便将该指令发送给所有机房的缓存设备,也可以达到节省处理资源的目的。
本申请实施例中,缓存设备接收到的缓存设备同步指令若是数据新增指令(该指令中包含待更新的数据的信息),则根据该指令在存储空间中新增数据;若该指令是数据删除指令(该指令中包含待删除的数据的信息),则根据该指令在存储空间中删除数据;若该指令是数据修改指令(该指令中包含待修改的数据的信息),则根据该指令修改存储空间中的数据。
为了尽量保证所述至少两个缓存设备都能够根据缓存设备同步指令完成数据更新,在一种实施方式中,步骤12的具体实现方式可以为:循环执行特定操作,直至所述至少两个缓存设备均根据缓存设备同步指令完成数据更新。
其中,这里所说的所述特定操作包括:将拦截到的缓存设备同步指令发送给所述至少两个缓存设备,以指示所述至少两个缓存设备进行数据更新;以及,判断所述至少两个缓存设备是否均根据缓存设备同步指令完成数据更新。
步骤13,根据所述至少两个缓存设备的数据更新结果,确定对于被测系统的缓存同步功能的测试结果。
所述至少两个缓存设备的数据更新结果,可能会有下面几种:
1、均更新失败;
2、均更新成功,但所述至少两个缓存设备根据缓存设备同步指令分别更新后的数据不一致。比如当所述至少两个缓存设备包括第一存储设备和第二存储设备时,第一存储设备根据缓存设备同步指令更新后的数据为1/2/3,第二存储设备根据该指令更新后的数据也为1/2/0。可采用数据一致性校验方法,判断数据是否一致。
3、均更新成功,且所述至少两个缓存设备根据缓存设备同步指令分别更新后的数据一致。比如当所述至少两个缓存设备包括第一存储设备和第二存储设备时,第一存储设备根据缓存设备同步指令更新后的数据为1/2/3,第二存储设备根据该指令更新后的数据也为1/2/3。可采用数据一致性校验方法,判断数据是否一致。
针对第一种数据更新结果,可以确定被测系统的缓存同步功能的测试结果为“非常差”,该测试结果可以量化为一数值,比如量化为“0”;针对第二种数据更新结果,可以确定被测系统的缓存同步功能的测试结果为“较差”,该测试结果可以量化为一数值,比如量化为“2”;针对第三种数据更新结果,可以确定被测系统的缓存同步功能的测试结果为“良好”,该测试结果可以量化为一数值,比如量化为“5”。
根据所述至少两个缓存设备的数据更新结果,确定对于被测系统的缓存同步功能的测试结果,与现有技术中根据不同缓存设备的数据更新结果,确定对于被测系统的缓存同步功能的测试结果的方式类似,此处不再赘述。
本申请实施例中,以自动化测试框架为例,其在调用测试用例后,运行测试用例的过程主要可以包括4个部分,分别为:初始化、准备数据、调用被测系统和校验数据。
其中,初始化,是指对测试用例的一些状态信息进行配置,比如配置需要被同步更新的缓存设备的数目等;准备数据,是指准备与该测试用例对应测试场景相关的数据,比如,在需要被同步更新的缓存设备中保存一些待查询的数据,或者对需要被同步更新的缓存设备执行清空操作,等等;调用被测系统,是指调用并运行被测系统;校验数据,是指对缓存设备根据缓存设备同步指令同步更新后的数据进行差异性校验,以使得后续能够根据校验结果确定被测系统的多机房缓存同步测试功能。
本申请实施例中,在上述“初始化”部分,可以利用配置管理单元,设置多机房缓存校验软件开关,并将该开关配置为打开状态。比如,可以利用标识位flag()来设置该开关,flag(0)表示该开关配置为关闭状态;flag(1)表示该开关配置为开启状态。
在上述“准备数据”部分,可以利用缓存操作单元,实现根据被调用的测试用例准备数据的目的,执行与该目的相匹配的操作。
具体而言,当该目的包括清除缓存设备中的数据时,执行该操作,包括:清除所述至少两个缓存设备缓存的数据;
当该目的包括先清除缓存设备中的数据,再向缓存设备写入数据时,执行该操作,包括:清除所述至少两个缓存设备缓存的数据后,向所述至少两个缓存设备中分别写入数据;
当该目的包括查询并获取缓存设备中的数据时,执行该操作,包括:根据查询关键词,查询并获取所述至少两个缓存设备缓存的数据。
需要说明的是,缓存操作单元在实现根据被调用的测试用例准备数据的目的,执行与该目的相匹配的操作前,可以对多机房缓存校验软件开关的状态进行确认。若该开关被配置为打开状态,则缓存操作单元根据被调用的测试用例准备数据的目的,执行与该目的匹配的操作。若该开关被配置为关闭状态,则缓存操作单元可以通知自动化测试框架终止测试过程。
本申请实施例中,被测系统向消息代理发送的指令可能会有多种类型,未必会是缓存设备同步指令。因此,本申请实施例中为了避免对其他类型的指令的拦截,可以先确定被测系统生成的指令的类型。若根据该类型,确定出生成的该指令为用于指示缓存设备进行数据更新的指令,则可以在被测系统向消息代理发送该指令时,对该指令进行拦截。
在一种实施方式中,确定被测系统生成的指令的类型的具体实现方式可以包括:在确认出多机房缓存校验软件开关被配置为打开状态时,确定被测系统生成的指令的类型。
若确认出多机房缓存校验软件开关被配置为关闭状态,则可以不再确定被测系统生成的指令的类型,进而也可以不用再对该指令进行拦截,而是可以终止测试流程。
需要说明的是,实施例1所提供方法的各步骤的执行主体均可以是同一设备,或者,该方法也由不同设备作为执行主体。比如,步骤11和步骤12的执行主体可以为设备1,步骤13的执行主体可以为设备2;又比如,步骤11的执行主体可以为设备1,步骤12和步骤13的执行主体可以为设备2;等等。
采用本申请实施例1提供的上述方法,由于可以对被测系统向消息代理发送的缓存设备同步指令进行拦截,并将该指令直接发送给至少两个缓存设备,以指示所述至少两个缓存设备进行数据更新,从而无需被测系统所在的本地机房内的消息代理、远端机房中的被测系统和消息代理配合完成缓存设备的数据更新,从而可以利用较少的处理资源,实现对被测系统的多机房缓存同步功能的测试。
实施例2
实施例2基于对现有技术中多机房缓存同步架构的介绍,引出对本申请实施例提供的缓存同步功能的测试方法的构思过程的说明,进而再详细说明该方法在实际中的应用流程。
现有技术中,一个典型的多机房缓存同步架构如图2所示。图2中,共有n个机房,它们分别是机房1、机房2~机房n。其中,每个机房中均有三个单元,分别为消息代理(即图中所示的MsgBroker,其为Message broker的简称)、被测系统和远程高速缓存器(RemoteCache)。其中,这三个单元可以运行在同一设备上;或者,这三个单元中至少有两个单元分别运行在不同设备上;等等。
这三个单元中,消息代理,用于在实现在不同机房之间传输数据;被测系统,用于根据接收到的命令,向RemoteCache发送数据同步命令,如发送数据修改命令或新增数据命令等;RemoteCache,用于根据被测系统发送的数据同步命令,对RemoteCache自身保存的数据进行更新。
按照现有技术,若要测试机房1中的被测系统的多机房缓存同步功能,则可以采用下述步骤1~步骤6。其中,被测系统的多机房缓存同步功能,是指被测系统有效使得不同机房内的RemoteCache保存的数据保持一致的能力。
步骤1:利用请求发送设备,将业务请求发送至机房1中的被测系统;
步骤2:被测系统在接收到该业务请求后,根据该业务请求,向RemoteCache推送“put all”命令,以使得RemoteCache利用该命令中的键值对,对RemoteCache自身缓存的数据进行更新;
步骤3:被测系统在RemoteCache自身缓存的数据被成功更新后,根据键值对组装消息体,并根据将该消息体构建一个异步消息发送给机房1中的MsgBroker;
步骤4:机房1中的MsgBroker将该异步消息发送给将另一个机房(机房2)中的MsgBroker;
步骤5:机房2中的MsgBroker将异步消息发送给机房2中的被测系统;
步骤6:机房2中的被测系统从异步消息中解析出所述键值对,并将该键值对put到机房1~机房n中的所有RemoteCache,即,将该键值对发送给机房1~机房n中的所有RemoteCache,目的是使得机房1~机房n中的所有RemoteCache分别利用该键值对对自身缓存的信息进行更新。
由上述多机房缓存同步过程可知,典型的同步过程包括更新本机房缓存、组装消息、发送消息、处理消息、更新所有机房缓存的过程,涉及到被测系统、MsgBroker,RemoteCache,调用链路较长,且存在较多的调用依赖。
基于上述现有技术,考虑到三个因素:1、针对多机房缓存同步过程的测试目标而言,是为了测试被测系统的多机房缓存同步功能;2、就被测系统而言,其部署在不同机房中,即不同机房中运行的是相同的被测系统;3、同步两份缓存和同步两分以上缓存的实现逻辑是一样的。因此,本申请实施例中,设计了如图3所示的测试模型。图3所示的该测试模型的核心思想在于:对现有技术中的同步过程进行简化,减少了该过程依赖的传输资源,仅需要一个被测系统以及两份缓存。
具体而言,基于图3所示的该测试模型,被测系统在接收到业务请求后,首先会向被测系统所在的机房的RemoteCache发送“put all”命令,以使得RemoteCache利用该命令中的键值对,对RemoteCache自身缓存的数据进行更新;之后,在RemoteCache自身缓存的数据被成功更新后,被测系统会根据键值对组装消息体,并根据将该消息体构建一个异步消息并发送;多机房缓存同步校验组件(该组件一般为运行在硬件设备上的软件单元,图3中未示出)对该异步消息进行拦截,并将拦截到的该异步消息中的键值对承载在“put all”命令中,分别发送给两个机房的RemoteCache。其中,图中带箭头的虚线,表示被测系统通过向被测系统所在的机房的RemoteCache发送“put all”命令,使得该RemoteCache根据该命令中的键值对,更新RemoteCache自身缓存的信息;图中带箭头的实线,表示多机房缓存同步校验组件在被测系统所在的机房1的RemoteCache根据“put all”命令中的键值对,对RemoteCache自身缓存的信息更新成功后,将拦截到的异步消息中的该键值对put到机房1和机房2中的RemoteCache,以使得机房1和机房2中的RemoteCache分别利用该键值对对自身缓存的信息进行更新。
相比于如图2可知,本申请实施例提供的该测试模型对现有技术中的多机房缓存同步架构进行了简化,该测试模型中仅需要一个被测系统应用以及两份缓存。
以下对上述多机房缓存同步校验组件进行详细介绍。
该组件可以实现对现有单机房自动化测试流程的扩展,以达到在不改动现有单机房自动化测试用例的情况下,实现对被测系统的多机房缓存同步功能的测试。
本申请实施例中,多机房缓存同步校验组件位于如图4所示的组件层,该组件主要包括配置管理模块、缓存操作组件和消息拦截器。以下分别说明多机房缓存同步校验组件各部分的功能。
1、配置管理模块
配置管理模块提供了多机房缓存同步测试功能的总开关,具体而言,该模块可以通过设置环境变量来选择是否启用多机房缓存同步测试功能。本申请实施例中,启用多机房缓存同步测试功能,表示启用上述测试模型;而不启用该功能,则表示仍然按照图2所示的现有技术实现多机房缓存同步。
具体地,该环境变量设置为1,可以用于表示启用该功能;而该变量设置为0,表示不启用该功能。
或者,也可以通过启动(或关闭)环境变量的方式,来实现启动(或关闭)该功能。
2、缓存操作组件
由于在设置测试用例时,往往是针对单个机房设置测试用例,该测试用例在运行到“准备数据(详见后文)”阶段时,仅能实现对单个机房的RemoteCache的操作,因此,本申请实施例中设置该缓存操作组件,用于协助针对单个机房设置的测试用例完成对至少两个机房的RemoteCache的操作。
3、消息拦截器
消息拦截器,用于对被测系统构建的前述异步消息进行拦截,并将该异步消息发送给图3中被测系统所在的机房1的RemoteCache,以及机房2的RemoteCache,以使得这两个RemoteCache根据该异步消息更新存储的数据。
以下对上述三个单元的功能在测试过程中的实现时机进行说明。
首先需要说明的是,利用自动化测试框架运行测试用例的过程,主要可以包括如图4所示的4个部分,分别为:初始化、准备数据、调用被测系统和校验数据。
其中,初始化,是指对测试用例的一些状态信息进行配置,比如配置需要被同步的RemoteCache的数目等;准备数据,是指准备与该测试用例对应测试场景相关的数据,比如,在需要被同步的RemoteCache中保存一些待查询的数据,或者对需要被同步的RemoteCache执行清空操作,等等;调用被测系统,是指调用并运行被测系统;校验数据,是指对能够体现被测系统运行情况(这里说的情况比如包括:运行情况正常和运行情况不正常等)的数据进行校验,具体而言,检验数据可以是指,对根据“put all”命令进行了信息更新的各RemoteCache中的缓存数据进行差异性校验,以判断被测系统是否成功完成了对不同RemoteCache的数据同步。
本申请实施例中,自动化测试框架在调用并运行测试用例后,即可调用并运行如图4所示的该多机房缓存同步校验组件;或者,自动化测试框架也可以在同一时刻,分别调用和运行测试用例和该组件。该组件包含的各部分的功能实现时机如下:
配置管理模块功能的实现时机,是上述过程中的“初始化”部分。在该部分中,配置管理模块执行的操作如图5所示,包括如下步骤A~步骤D:
步骤51:设置环境变量;
步骤52:判断是否启用该环境变量,在判断结果为是时,执行步骤53;在判断结果为否时,执行步骤54;
本申请实施例中,配置管理模块可以根据测试用例的类型,判断是否启用该环境变量。比如,若预先规定针对类型为“x”的测试用例,需要启用该环境变量,则在判断出某测试用例的类型是“x”时,执行步骤53。
步骤53:启用环境变量;
步骤54:不启用环境变量。
缓存操作组件功能的实现时机,是上述过程中的“准备数据”部分。在该部分中,若准备数据的目的是为了清空至少两个机房的RemoteCache,则缓存操作组件执行的操作如图6所示,包括如下步骤61~步骤64:
步骤61:判断环境变量的状态;
步骤62:根据环境变量的状态,判断环境变量是否被启用,在判断结果为是时,执行步骤63,在判断结果为否时,执行步骤64;
步骤63:清空图3所示的机房1和机房2的RemoteCache中缓存的数据;
步骤64:清空图3所示的机房1的RemoteCache中缓存的数据。
若准备数据的目的是清空至少两个机房的RemoteCache后向各清空的RemoteCache中分别写入相同的数据,则缓存操作组件执行的操作如图7所示,包括如下步骤71~步骤74:
步骤71:判断环境变量的状态;
步骤72:根据环境变量的状态,判断环境变量是否被启用,在判断结果为是时,执行步骤73,在判断结果为否时,执行步骤74;
步骤73:清空图3所示的机房1和机房2的RemoteCache中缓存的数据后,向机房1和机房2的RemoteCache分别写入期望写入的数据;
步骤74:清空图3所示的机房1的RemoteCache中缓存的数据后,向机房1的RemoteCache分别写入期望写入的数据。
若准备数据的目的是查询至少两个机房的RemoteCache中的数据是否一致,则缓存操作组件执行的操作如图8所示,包括如下步骤81~步骤89:
步骤81:判断环境变量的状态;
步骤82:根据环境变量的状态,判断环境变量是否被启用,在判断结果为是时,执行步骤83,在判断结果为否时,执行步骤88;
步骤83:获取对于图3所示的机房1和机房2的RemoteCache中缓存的数据的查询关键词,即获取缓存实例;
步骤84:根据各缓存实例,分别查询并获取图3所示的机房1和机房2的RemoteCache中缓存的相应数据,之后执行步骤85;
步骤85:对比通过执行步骤84后分别从不同RemoteCache中获取的数据一致,若一致,则执行步骤86,否则执行步骤87;
步骤86:返回默认值,以使得自动化测试框架获知数据对比结果为数据一致;
需要说明的是,在自动化测试框架获知数据对比结果为数据一致后,进一步地,在“调用被测系统”部分,自动化测试框架可以执行运行消息拦截器的操作。
步骤87:返回对于机房1的RemoteCache中缓存的数据的查询关键词,以使得自动化测试框架获知数据对比结果为数据不一致;
需要说明的是,在自动化测试框架获知数据对比结果为数据不一致后,进一步地,在“调用被测系统”部分,自动化测试框架可以不执行运行消息拦截器的操作。
步骤88:获取对于图3所示的机房1的RemoteCache中缓存的数据的查询关键词,之后执行步骤89;
步骤89:根据通过执行步骤88获取的查询关键词,从机房1的RemoteCache中查询并获取相应数据。
消息拦截器功能的实现时机,是“调用被测系统”部分。在该部分中,消息拦截器执行的操作如图9所示,包括如下步骤91~步骤97:
步骤91:在检测到自动化测试框架开始运行被测系统后,对被测系统发送的消息进行拦截,并在拦截到被测系统发送用于同步不同机房的RemoteCache的异步消息后,执行步骤92;
步骤92:根据环境变量的状态,判断环境变量是否被启用,在判断结果为是时,执行步骤93,在判断结果为否时,执行步骤97;
步骤93:消息拦截器将拦截到的异步消息,发送给如图3所示的机房1和机房2的RemoteCache;或者,消息拦截器可以调用一个叫消息处理器的组件,由该消息处理器来实现将拦截到的异步消息,发送给如图3所示的机房1和机房2中的RemoteCache;
步骤94:消息拦截器在等待一段时间(即sleep一段时间)后,通过对机房1和机房2的RemoteCache缓存的数据的校验,判断这两个RemoteCache是否均已根据该异步消息完成数据更新,在判断结果为否时,执行步骤95,否则执行步骤96;
步骤95:消息拦截器在等待一段时间(即sleep一段时间)后,执行步骤93;
步骤96:返回流程结束通知,以触发流程进入“校验数据”部分;
步骤97:消息拦截器将拦截到的异步消息,发送给机房1的MsgBroker。需要说明的是,当异步消息发送给机房1的MsgBroker后,基于该异步消息的后续处理步骤与前文所述的步骤4~步骤6相同,此处不再赘述。
实施例3
实施例3提供一种多机房缓存同步功能的测试装置,用以利用较少的处理资源实现对被测系统的多机房缓存同步功能的测试。该装置的结构示意图如图10所示,包括消息拦截器101、消息发送器102和测试结果确定单元103。以下对该些功能单元的具体功能进行详细介绍。
消息拦截器101,用于拦截被测系统向消息代理发送的缓存设备同步指令(后称所述指令);
消息发送器102,用于将消息拦截器101拦截到的所述指令发送给至少两个缓存设备(后称所述至少两个缓存设备),以指示所述至少两个缓存设备进行数据更新;
测试结果确定单元103,用于根据所述至少两个缓存设备的数据更新结果,确定对于被测系统的缓存同步功能的测试结果。
在一种实施方式中,消息拦截器101,可以用于:确定被测系统生成的指令的类型;根据该类型,确定出生成的指令为用于指示缓存设备进行数据更新的指令后,在被测系统向消息代理发送该生成的指令时,拦截该生成的指令。
在一种实施方式中,消息拦截器101,可以用于:在确认出多机房缓存校验软件开关被配置为打开状态时,确定被测系统生成的指令的类型。
在一种实施方式中,本申请实施例提供的该装置还可以包括:缓存操作单元。该缓存操作单元用于:在消息拦截器101确认出多机房缓存校验软件开关被配置为打开状态时,确定被测系统生成的指令的类型前,根据被调用的测试用例准备数据的目的,执行与该目的相匹配的操作。具体地,缓存操作单元具体可以用于在确认出多机房缓存校验软件开关被配置为打开状态时,根据该目的,执行与该目的相匹配的操作。
在一种实施方式中,当该目的包括清除缓存设备中的数据时,缓存操作单元用于:清除所述至少两个缓存设备缓存的数据;当该目的包括先清除缓存设备中的数据,再向缓存设备写入数据时,缓存操作单元用于:清除所述至少两个缓存设备缓存的数据后,向所述至少两个缓存设备中分别写入数据;当该目的包括查询并获取缓存设备中的数据时,缓存操作单元用于:根据查询关键词,查询并获取所述至少两个缓存设备缓存的数据。
在一种实施方式中,本申请实施例提供的该装置还可以包括配置管理单元。其中,该配置管理单元可以用于在缓存操作单元根据被调用的测试用例准备数据的目的,执行与该目的匹配的操作之前,在该测试用例的初始化阶段,设置多机房缓存校验软件开关,并将该开关配置为打开状态。
在一种实施方式中,上文所述的消息发送器102具体可以用于循环执行特定操作,直至所述至少两个缓存设备均根据所述指令完成数据更新。其中,这里所说的特定操作包括:将拦截到的所述指令发送给至少两个缓存设备,以指示所述至少两个缓存设备进行数据更新;判断所述至少两个缓存设备是否均根据所述指令完成数据更新。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个......”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。