CN111400182B - 故障注入方法、装置、服务器及计算机可读存储介质 - Google Patents

故障注入方法、装置、服务器及计算机可读存储介质 Download PDF

Info

Publication number
CN111400182B
CN111400182B CN202010181297.1A CN202010181297A CN111400182B CN 111400182 B CN111400182 B CN 111400182B CN 202010181297 A CN202010181297 A CN 202010181297A CN 111400182 B CN111400182 B CN 111400182B
Authority
CN
China
Prior art keywords
fault injection
tool
injection
target
instruction
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202010181297.1A
Other languages
English (en)
Other versions
CN111400182A (zh
Inventor
曾骁飙
黄晶
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN202010181297.1A priority Critical patent/CN111400182B/zh
Publication of CN111400182A publication Critical patent/CN111400182A/zh
Application granted granted Critical
Publication of CN111400182B publication Critical patent/CN111400182B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3688Test management for test execution, e.g. scheduling of test suites

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本申请提供了一种故障注入方法、装置、服务器及计算机可读存储介质,属于测试技术领域。所述方法包括:通过可以对至少两种故障注入工具进行调用的目标接口,接收携带目标故障注入工具的工具标识的调用指令,根据工具标识,对调用指令进行解析,得到故障注入参数,进而生成符合目标故障注入工具的指令格式的注入指令,响应于注入指令,通过目标故障注入工具根据故障注入参数,进行故障注入。本申请通过同一个目标接口,即可以接收各种调用指令,并对其进行解析,基于解析结果来生成针对于不同故障注入工具的注入指令,从而可以对各种故障进行注入,无需为不同故障注入工具配置不同的接口以及可执行文件或脚本,大大提高故障注入效率。

Description

故障注入方法、装置、服务器及计算机可读存储介质
技术领域
本申请涉及测试技术领域,特别涉及一种故障注入方法、装置、服务器及计算机可读存储介质。
背景技术
随着计算机系统越来越广泛的应用,对于计算机系统的可靠性要求也越来越高,故障注入技术作为一种在计算机系统的可靠性测试领域中应用比较广泛的方法,通过受控实验向系统中刻意引入故障,并观察系统中存在故障时的行为,来对系统的可靠性进行检测,进而根据检测结果对系统进行优化,以达到规避故障的目的。
目前主要是由技术人员根据要注入的故障,编写对应的可执行文件或脚本,服务器可以根据该可执行文件或脚本,确定对应的接口,进而通过该接口调用与要注入的故障对应的故障注入工具,来实现故障注入。
在对不同的故障进行注入时,需要根据不同的故障选择不同的可执行文件或脚本,目前没有一种故障注入方法能对不同的故障进行注入,而且对于不同的故障,需要使用不同的接口才能调用底层的故障注入工具,导致故障注入效率较低。
发明内容
本申请实施例提供了一种故障注入方法、装置、服务器及计算机可读存储介质,可以有效提高故障注入效率。该技术方案如下:
一方面,提供了一种故障注入方法,该方法包括:
通过目标接口,接收调用指令,该调用指令携带目标故障注入工具的工具标识,该目标接口用于执行对至少两种故障注入工具的调用;
根据该工具标识,对该调用指令进行解析,得到故障注入参数,该故障注入参数用于指示该目标故障注入工具的运行基本信息;
根据该故障注入参数,生成符合该目标故障注入工具的指令格式的注入指令;
响应于该注入指令,通过该目标故障注入工具根据该故障注入参数,进行故障注入。
一方面,提供了一种故障注入装置,该装置包括:
接收模块,用于通过目标接口,接收调用指令,该调用指令携带目标故障注入工具的工具标识,该目标接口用于执行对至少两种故障注入工具的调用;
解析模块,用于根据该工具标识,对该调用指令进行解析,得到故障注入参数,该故障注入参数用于指示该目标故障注入工具的运行基本信息;
生成模块,用于根据该故障注入参数,生成符合该目标故障注入工具的指令格式的注入指令;
注入模块,用于响应于该注入指令,通过该目标故障注入工具根据该故障注入参数,进行故障注入。
在一种可能的实现方式中,该装置还包括:
确定模块,用于根据该工具标识,确定该目标故障注入工具的指令格式;
封装模块,用于将该故障注入参数按照该目标故障注入工具的指令格式进行封装,得到该注入指令。
在一种可能的实现方式中,该装置还包括:
获取模块,用于获取进行故障注入后运行得到的回复数据包;
该解析模块,还用于对该回复数据包进行解析,得到该回复数据包的校验解析结果;
该封装模块,还用于将该校验解析结果基于该目标接口的指令格式进行封装,输出封装后的数据包。
一方面,提供了一种服务器,该服务器包括一个或多个处理器和一个或多个存储器,该一个或多个存储器中存储有至少一条程序代码,该程序代码由该一个或多个处理器加载并执行以实现该故障注入方法所执行的操作。
一方面,提供了一种计算机可读存储介质,该计算机可读存储介质中存储有至少一条程序代码,该程序代码由处理器加载并执行以实现该故障注入方法所执行的操作。
本申请实施例提供的方案,通过可以对至少两种故障注入工具进行调用的目标接口,接收携带目标故障注入工具的工具标识的调用指令,根据工具标识,对调用指令进行解析,得到故障注入参数,根据故障注入参数,生成符合目标故障注入工具的指令格式的注入指令,响应于注入指令,通过目标故障注入工具根据故障注入参数,进行故障注入。本申请通过同一个目标接口,即可以接收各种调用指令,并对其进行解析,基于解析结果来生成针对于不同故障注入工具的注入指令,从而可以对各种故障进行注入,无需为不同故障注入工具配置不同的接口以及可执行文件或脚本,大大提高故障注入效率。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种故障注入方法的实施环境示意图;
图2是本申请实施例提供的一种对象实施模型的示意图;
图3是本申请实施例提供的一种故障注入方法的流程图;
图4是本申请实施例提供的一种故障注入工具插件化执行器的架构示意图;
图5是本申请实施例提供的一种统一建模语言的执行器类图;
图6是本申请实施例提供的一种统一建模语言的执行器时序图;
图7是本申请实施例提供的一种统一建模语言执行器中的工作对象部分的时序图;
图8是本申请实施例提供的一种故障注入装置的结构示意图;
图9是本申请实施例提供的一种服务器的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
下面先对本申请涉及的关键术语进行解释:
故障注入:一种可靠性验证技术,通过受控实验向系统中刻意引入故障,并观察系统中存在故障时的行为。
执行器:执行故障注入行为的统一架构的服务名称。
图1是本申请实施例提供的一种故障注入方法的实施环境示意图,参见图1,该实施环境可以包括:计算机设备101和服务器102。
计算机设备101可以为可以是游戏主机、台式计算机、电脑一体机、掌上电脑、平板电脑、膝上型便携计算机和计算机设备集群等设备中的至少一种。计算机设备101可以根据用户在可视化界面上的操作,来生成与故障种类对应的调用指令,计算机设备101可以通过有线网络或无线网络与服务器102相连,进而将生成的调用指令发送给服务器102。
计算机设备101可以泛指多个计算机设备中的一个,本实施例仅以计算机设备101来举例说明。本领域技术人员可以知晓,上述计算机设备的数量可以更多或更少。比如上述计算机设备可以仅为一个,或者上述计算机设备为几十个或几百个,或者更多数量,本申请实施例对计算机设备的数量和设备类型不加以限定。
服务器102可以为一台服务器、多台服务器、云计算平台和虚拟化中心中的至少一种。服务器102可以通过无线网络或有线网络与计算机设备101相连,用户可以在计算机设备101上触发故障注入操作,计算机设备101响应于用户触发的操作,生成调用指令,并将该调用指令发送给服务器102,服务器102可以通过目标接口,接收调用指令,并根据工具标识,确定目标故障注入工具对应的执行器实例,对调用指令进行解析,得到用于指示目标故障注入工具的运行基本信息的故障注入参数,根据故障注入参数,生成符合目标故障注入工具的指令格式的注入指令,响应于注入指令,根据工具标识,确定与工具标识对应的指令下发通道,通过该指令下发通道,将该注入指令发送至目标故障注入工具,以使目标故障注入工具根据故障注入参数,进行故障注入。服务器101还可以获取进行故障注入后运行得到的回复数据包,对回复数据包进行解析,得到回复数据包的校验解析结果,将校验解析结果基于目标接口的指令格式进行封装,将封装后的数据包发送给计算机设备101,以使用户根据输出的数据包对该计算机设备101的系统可靠性进行判断。可选地,上述服务器的数量可以更多或更少,本申请实施例对此不加以限定。当然,目标服务器102还可以包括其他功能服务器,以便提供更全面且多样化的服务。
在通过本申请实施例提供的方案进行故障注入前,可以将所有的故障注入抽象成一套统一的对象实施模型(Targeting Model),通过该对象实施模型来将各种故障描述成模型范式,进而设计实现代码,以便通过与要注入的故障对应的模型解析单元和相应的执行器实例,来执行相应的指令,最终实现故障注入。图2是本申请实施例提供的一种对象实施模型的示意图,参见图2,服务器可以将各种故障的调用指令输入至该对象实施模型,通过该对象实施模型,服务器可以获取用于指示故障注入工具的运行基本信息的故障注入参数,例如实验靶点(Target)201、实验实施范围(Scope)202、实验匹配条件、实验行为(Action)204等。其中,实验靶点201也即是目标注入对象,用于指示实验发生的组件;实验实施范围202可以为具体触发实验的机器或集群等,通过实验实施范围即可以确定指令下发通道;实验匹配条件可以由规则匹配器(Matcher)403预先进行设置,由于不同的实验靶点可能具有各自特殊的实验匹配条件,如CPU核数、Disk区域等,因而规则匹配器可以根据不同的实验靶点来对实验匹配条件进行设置,以便对目标注入对象的相关信息进行进一步确定,一个规则匹配器可以用于对多个实验靶点对应的实验匹配条件进行设置;实验行为404也即是实验方法,由于实验靶点不同,导致目标注入对象不同,因而实验行为也会存在不同,例如,对于磁盘,可以对磁盘存储空间已满、磁盘输入/输出(Input/Output,I/O)读写高、磁盘硬件故障等进行实验,对于应用,可以对延迟、异常、返回指定值(错误码、大对象等)、参数篡改、重复调用等进行实验,进而可以根据上述信息来对故障注入工具进行拆解,从而通过拆解得到的模型解析单元和相应的执行器实例,以便通过统一的接口,来执行相应的指令,以实现故障注入。
需要说明的是,通过图2所示的对象实施模型的架构,可以实现所有种类的故障注入工具的调用。具体地,对于现有的或未来开发的即使故障注入工具并未预先设置有需要的故障注入参数,也可以通过对象实施模型来获取到需要的故障注入参数,例如,混沌工程平台的压测工具并未预先设置有需要的所有故障注入参数,但是可以通过对其进行封装,使其可以通过统一的接口被用户调用,来进行故障注入。此外,对于现有的或尚未开发的故障注入工具,若其符合该对象实施模型的模型范式,则服务器可以直接通过相应的执行器实例,调用故障注入工具,来进行故障注入,如开源故障注入工具(ChaosBlade),该开源故障注入工具本身设计即满足对象实施模型的模型范式,因此可以直接通过本申请提供的方案来进行故障注入;若现有的或尚未开发的故障注入工具不符合该对象实施模型的模型范式,则服务器可以先对该故障注入工具进行封装或开发协议,使其满足该对象实施模型的模型范式,进而可以通过本申请提供的方案来进行故障注入,极大地提高了故障注入工具的可用性和效率。
在通过对象实施模型得到用于构建模型解析单元和相应的执行器实例的信息后,即可以通过统一的目标接口,来进行故障注入,图3是本申请实施例提供的一种故障注入方法的流程图,参见图3,该方法包括:
301、服务器通过目标接口,接收调用指令,该调用指令携带目标故障注入工具的工具标识,该目标接口用于执行对至少两种故障注入工具的调用。
需要说明的是,服务器上可以预先设置有一个统一协议的目标接口,通过该目标接口,服务器可以接对各种不同的调用指令进行接收,进而根据该调用指令,来对与不同的调用指令对应的不同的故障注入工具进行调用。
其中,该调用指令可以用于指示服务器所要执行的操作,该调用指令中可以携带目标故障注入工具的工具标识,该目标故障注入工具即是本次要使用的故障注入工具。
在一种可能的实现方式中,计算机设备可以将多种故障展示在可视化界面上,用户可以选择需要注入的故障,计算机设备可以响应于用户触发的选择操作,确定与该故障对应的故障注入工具的工具标识,进而生成调用指令,并将生成的调用指令发送给服务器,参见图4,图4是本申请实施例提供的一种故障注入工具插件化执行器的架构示意图,服务器在接收到作为故障注入调用方401的用户发起的调用指令后,可以在步骤402中,通过目标接口接收该调用指令。
在另一种可能的实现方式中,计算机设备还可以将多种故障注入工具展示在可视化界面上,用户可以根据自己想要注入的故障选择对应的故障注入工具,计算机设备可以响应于用户触发的选择操作,确定被选中的故障注入工具的工具标识,进而生成调用指令,并将生成的调用指令发送给服务器,服务器可以通过目标接口,来获取该调用指令。
可选地,服务器还可以维护有一个标识信息数据库,用于存储各种故障与对应的故障注入工具的工具标识。具体地,服务器可以根据该调用指令所指示的故障种类,从该标识信息数据库中确定出该调用指令所指示的故障种类对应的目标故障注入工具的工具标识,例如,该调用指令可以为“注入故障A”,则服务器可以根据故障A,在标识信息数据库中进行查询,确定与故障A对应的目标故障注入工具的工具标识。
302、服务器根据该工具标识,确定该目标故障注入工具对应的执行器实例。
需要说明的是,服务器还可以维护有一个执行器信息数据库,用于存储各个故障注入工具与执行器实例的对应关系。可选地,服务器还可以根据该目标故障注入工具的工具标识,在执行器信息数据库中进行查询,进而确定出该目标故障注入工具对应的执行器实例。
其中,不同的故障注入工具对应于不同的执行器实例,该执行器实例可以用于指示与之对应的故障注入工具进行故障注入时所需的基本信息,而且,该执行器实例可以通过统一的接口被服务器调用,进而服务器可以通过该执行器实例来对统一接口处接收到的指令进行处理,得到底层的故障调用工具可以识别的指令,以便通过底层的故障注入工具,来进行故障注入。
在一种可能的实现方式中,仍可以参见图4,服务器可以通过步骤403,来对该调用指令进行解析,进而通过步骤404对该调用指令携带的工具标识进行判断,来执行步骤405以确定对应的执行器实例,该工具标识可以用tool_id表示,若tool_id为1或n,n可以为大于1的正整数,则服务器可以根据该工具标识来进行执行器实例的确定,若tool_id没有取值,例如,不为1且不为n,说明该调用指令无法实现调用,则服务器可以通过目标接口向用户反馈无法进行故障注入的提示信息。
303、服务器对该调用指令进行解析,得到故障注入参数,该故障注入参数用于指示该目标故障注入工具的运行基本信息。
需要说明的是,该故障注入参数可以包括故障的目标注入对象,例如,容器、中央处理器(Central Processing Unit,CPU)、数据中心产品(Performance OptimizationDatacenter,POD)、磁盘(Disk)等。
在一种可能的实现方式中,参见图4,服务器可以通过步骤406,基于已经确定出的执行器实例,来对调用指令进行解析,进而通过步骤407,对解析得到的目标注入对象进行判断,若该目标注入对象为CPU或其他组件,则服务器可以继续执行后续步骤,否则,服务器可以通过目标接口向用户反馈无法进行故障注入的提示信息。
304、服务器根据该工具标识,确定该目标故障注入工具的指令格式。
需要说明的是,该标识信息数据库中还可以存储有各个故障注入工具的指令格式,不同的故障注入工具对应的指令格式有所不同。由于通过统一接口接收到的调用指令无法被底层的故障注入工具识别,因此需要对目标故障注入工具对应的指令格式进行确定,进而可以根据确定出的指令格式,来对调用指令进行进一步处理,以得到底层调用工具可以识别的指令,以便实现故障注入。
在一种可能的实现方式中,参见图4,服务器通过步骤408和步骤409,来对调用指令进行进一步解析,确定目标故障注入工具的指令格式。可选地,服务器还可以根据该目标故障注入工具的工具标识,在标识信息数据库中进行查询,从而确定该目标故障注入工具的指令格式。
305、服务器将该故障注入参数按照该目标故障注入工具的指令格式进行封装,得到注入指令。
需要说明的是,通过上述步骤301至步骤304,仅确定了需要使用的目标故障注入工具,进一步地,服务器还需要使目标故障注入工具获取到进行故障注入的具体方法,参见图4,服务器还可以通过步骤410,根据目标注入对象,确定与注入指令对应的方法411,例如,该方法可以包括执行实验、查询实验状态、停止实验、工具版本存活状态检测等,可选地,该方法还可以包括其他类型,本申请实施例对此不加以限定。
本申请实施例提供的一种统一建模语言的执行器时序图,首先,服务器可以根据图5中各个类之间的调用关系,通过预设的代码指令,来进行故障注入工具的选择,其次,服务器可以根据已经选择的故障注入工具,来确定相应的方法,进而根据各个类之间的调用关系,来创建实验,进而可以在后续使用过程中,直接通过已有的代码来进行故障注入。示例性地,下面对图5中涉及的几个类进行简单介绍:
(1)执行代理类(ExecutorProxy)515根据命令字下发选择对应的执行器实例,实现了工具的热插拔能力。
(2)图5中以开源故障注入工具执行类(ChaosBladeExcutor)518为例说明了某一个执行器实例内部如何调用底层实现类,执行指令进行工作。
(3)开源故障注入工具运行类(ChaosBladeRun)519顶部展示的聚合类示例是针对要实施注入的靶点类,靶点类继承了实验行为(Actions)一系列实现方法和创建目标类(CreateTarget)513,通过根据命令字进行模型解析,可以生成对应的实际工具能识别的执行指令以及执行范围。此外,靶点类及其继承的方法的抽象便于后续增加更多的实验手段和实验对象。
(4)开源故障注入工具运行类(ChaosBladeRun)519、开源故障注入工具状态类(ChaosBladeStatus)520、开源故障注入工具终止类(ChaosBladeStop)521、开源故障注入工具版本类(ChaosBladeVersion)522是平台统一的方法类抽象,对于上层接口,通过这些方法类抽象可以定义平台可见的执行能力,对于下层故障注入工具,通过这些方法类抽象可以随时增加差异化的开源工具的统一出口。
具体地,基于图5所示的各个类之间的调用关系,可以确定执行器工作的时序图,参见图6,图6是本申请实施例提供的一种统一建模语言的执行器时序图,该图可以直观展示出视图(Views)601、安排(Schedule)602、执行器接口类603、执行器代理类604、开源故障注入工具执行类605、开源故障注入工具版本类606、开源故障注入工具运行类607、开源故障注入工具状态类608、开源故障注入工具终止类609、多进程类610以及开源故障注入工具响应分析类611之间的工作时序关系,进而可以根据该时序图来创建实验。对于图6所示的执行器时序图中,工作对象(Worker)部分的时序图可以参见图7,图7是本申请实施例提供的一种统一建模语言执行器中的工作对象部分的时序图,该图可以进一步展示出服务器工作对象部分对应的多进程类701、进程单元类702、Cpu_型号703、智云接口类704、远程外壳705以及目标组件706之间的工作时序关系,进而可以使根据各个组件对应的类,来将故障注入各个组件中。
基于图5所示的类和图6、图7所示的时序图进行代码编写,具体编写时可以按照选择需要使用的故障注入工具,也即是,目标故障注入工具,对目标故障注入工具需要执行的行为及处理操作进行设定,对进行实验的可选匹配条件和必要匹配条件进行设定,对目标组件的地址进行设定,再对指令下发通道、执行器服务名称、目标组件、类型以及实验标识进行设定,进而实现将故障注入相应的组件。
306、服务器根据该工具标识,确定与该工具标识对应的指令下发通道。
在一种可能的实现方式中,参见图4,服务器可以确定与注入指令对应的方法311对应的指令执行单元412,进而可以在步骤413中,通过指令执行单元,来对注入指令进行进一步解析,确定指令下发通道414,例如,该指令下发通道可以为节点(Node)、简单的旧数据结构(Plain Old Data Structure,POD)等,可选地,该指令下发通道还可以包括其他通道类型,本申请实施例对此不加以限定。
307、服务器通过该指令下发通道,将该注入指令发送至该目标故障注入工具,以使该目标故障注入工具根据该故障注入参数,进行故障注入。
在一种可能的实现方式中,服务器可以在步骤415中,通过确定出的指令下发通道,来向目标故障注入工具416发送注入指令。
需要说明的是,在目标故障注入工具根据该故障注入参数,完成故障注入后,服务器还可以在步骤417中,通过执行器获取进行故障注入后运行得到的回复数据包,在步骤418中,对该回复数据包进行解析,得到该回复数据包的校验解析结果,在步骤419中,将该校验解析结果基于该目标接口的指令格式进行封装,输出封装后的数据包,以使在步骤420中,作为故障注入调用方是用户可以获取到运行结果的数据包,进而可以根据输出的数据包对该服务器的性能进行判断。
需要说明的是,上述过程也可以由服务器执行,具体过程可以参见上述步骤301至步骤307,此处不再赘述。
本申请实施例提供的方案,通过同一个目标接口,即可以接收各种调用指令,并对其进行解析,基于解析结果来生成针对于不同故障注入工具的注入指令,从而可以对各种故障进行注入,无需为不同故障注入工具配置不同的接口以及可执行文件或脚本,大大提高故障注入效率。本方案将前端用户可读的故障描述通过对象实施模型,转化成统一的模型范式,进而可以基于转化得到的模型范式来编写代码,以便通过模型解析单元及相应的执行器实例,来进行注入指令的生成和发送等,服务器底层可以兼容多种开源或自研的实验工具,但对于作为故障注入调用方的用户,只有一个统一协议的接口以供调用,因此用户无需考虑底层故障注入工具的差距,工具的差异化以插件形式融入至执行器中,服务器直接通过统一协议的接口,即可以调用多种故障注入工具,来实现所有类型的故障注入,极大地降低了工具的使用成本和接入成本。本申请实施例提供的对象实施模型,也为后续故障注入工具的设计提供了一套统一可遵循且可操作性较高的方案和标准,提高了故障注入工具的可通用性和利用率。
上述所有可选技术方案,可以采用任意结合形成本申请的可选实施例,在此不再一一赘述。
图8是本申请实施例提供的一种故障注入装置的结构示意图,参见图8,该装置包括:
接收模块801,用于通过目标接口,接收调用指令,该调用指令携带目标故障注入工具的工具标识,该目标接口用于执行对至少两种故障注入工具的调用;
解析模块802,用于根据该工具标识,对该调用指令进行解析,得到故障注入参数,该故障注入参数用于指示该目标故障注入工具的运行基本信息;
生成模块803,用于根据该故障注入参数,生成符合该目标故障注入工具的指令格式的注入指令;
注入模块804,用于响应于该注入指令,通过该目标故障注入工具根据该故障注入参数,进行故障注入。
本申请实施例提供的装置,通过可以对至少两种故障注入工具进行调用的目标接口,接收携带目标故障注入工具的工具标识的调用指令,根据工具标识,对调用指令进行解析,得到故障注入参数,根据故障注入参数,生成符合目标故障注入工具的指令格式的注入指令,响应于注入指令,通过目标故障注入工具根据故障注入参数,进行故障注入。本申请通过同一个目标接口,即可以接收各种调用指令,并对其进行解析,基于解析结果来生成针对于不同故障注入工具的注入指令,从而可以对各种故障进行注入,无需为不同故障注入工具配置不同的接口以及可执行文件或脚本,极大地降低了故障注入工具的使用成本和接入成本,提高故障注入方法的通用性和故障注入效率。
在一种可能的实现方式中,该装置还包括:
确定模块,用于根据该工具标识,确定该目标故障注入工具对应的执行器实例;
该解析模块802,还用于对该调用指令进行解析,得到该故障注入参数中的注入目标组件和注入方法参数。
在一种可能的实现方式中,该确定模块,还用于根据该工具标识,确定与该工具标识对应的指令下发通道;
该装置还包括:
发送模块,用于通过该指令下发通道,将该注入指令发送至该目标故障注入工具,以使该目标故障注入工具根据该故障注入参数,进行故障注入。
在一种可能的实现方式中,该确定模块,用于根据该工具标识,确定该目标故障注入工具的指令格式;
该装置还包括:
封装模块,用于将该故障注入参数按照该目标故障注入工具的指令格式进行封装,得到该注入指令。
在一种可能的实现方式中,该装置还包括:
获取模块,用于获取进行故障注入后运行得到的回复数据包;
该解析模块802,还用于对该回复数据包进行解析,得到该回复数据包的校验解析结果;
该封装模块,还用于将该校验解析结果基于该目标接口的指令格式进行封装,输出封装后的数据包。
需要说明的是:上述实施例提供的故障注入装置在进行故障注入时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将服务器的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的故障注入装置与故障注入方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
图9是本申请实施例提供的一种服务器的结构示意图,该服务器900可因配置或性能不同而产生比较大的差异,可以包括一个或多个处理器(Central Processing Units,CPU)901和一个或多个的存储器902,其中,该一个或多个存储器902中存储有至少一条程序代码,该至少一条程序代码由该一个或多个处理器901加载并执行以实现上述各个方法实施例提供的方法。当然,该服务器900还可以具有有线或无线网络接口、键盘以及输入输出接口等部件,以便进行输入输出,该服务器900还可以包括其他用于实现设备功能的部件,在此不做赘述。
在示例性实施例中,还提供了一种计算机可读存储介质,例如包括程序代码的存储器,上述程序代码可由处理器执行以完成上述实施例中的故障注入方法。例如,该计算机可读存储介质可以是只读存储器(Read-Only Memory,ROM)、随机存取存储器(RandomAccess Memory,RAM)、只读光盘(Compact Disc Read-Only Memory,CD-ROM)、磁带、软盘和光数据存储设备等。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来程序代码相关的硬件完成,该程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
上述仅为本申请的可选实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

Claims (8)

1.一种故障注入方法,其特征在于,所述方法包括:
通过目标接口,接收调用指令,所述调用指令携带目标故障注入工具的工具标识,所述目标接口用于执行对至少两种故障注入工具的调用;
根据所述工具标识,确定所述目标故障注入工具对应的执行器实例;
基于所述执行器实例,对所述调用指令进行解析,得到故障注入参数,所述故障注入参数用于指示所述目标故障注入工具的运行基本信息,所述故障注入参数包括注入目标组件和注入方法参数;
根据所述故障注入参数,生成符合所述目标故障注入工具的指令格式的注入指令;
响应于所述注入指令,通过所述目标故障注入工具根据所述故障注入参数,进行故障注入。
2.根据权利要求1所述的方法,其特征在于,所述响应于所述注入指令,通过所述目标故障注入工具根据所述故障注入参数,进行故障注入包括:
根据所述工具标识,确定与所述工具标识对应的指令下发通道;
通过所述指令下发通道,将所述注入指令发送至所述目标故障注入工具,以使所述目标故障注入工具根据所述故障注入参数,进行故障注入。
3.根据权利要求1所述的方法,其特征在于,所述根据所述故障注入参数,生成符合所述目标故障注入工具的指令格式的注入指令包括:
根据所述工具标识,确定所述目标故障注入工具的指令格式;
将所述故障注入参数按照所述目标故障注入工具的指令格式进行封装,得到所述注入指令。
4.根据权利要求1所述的方法,其特征在于,所述响应于所述注入指令,通过所述目标故障注入工具根据所述故障注入参数,进行故障注入,所述方法还包括:
获取进行故障注入后运行得到的回复数据包;
对所述回复数据包进行解析,得到所述回复数据包的校验解析结果;
将所述校验解析结果基于所述目标接口的指令格式进行封装,输出封装后的数据包。
5.一种故障注入装置,其特征在于,所述装置包括:
接收模块,用于通过目标接口,接收调用指令,所述调用指令携带目标故障注入工具的工具标识,所述目标接口用于执行对至少两种故障注入工具的调用;
确定模块,用于根据所述工具标识,确定所述目标故障注入工具对应的执行器实例;
解析模块,用于基于所述执行器实例,对所述调用指令进行解析,得到故障注入参数,所述故障注入参数用于指示所述目标故障注入工具的运行基本信息,所述故障注入参数包括注入目标组件和注入方法参数;
生成模块,用于根据所述故障注入参数,生成符合所述目标故障注入工具的指令格式的注入指令;
注入模块,用于响应于所述注入指令,通过所述目标故障注入工具根据所述故障注入参数,进行故障注入。
6.根据权利要求5所述的装置,其特征在于,所述确定模块,还用于根据所述工具标识,确定与所述工具标识对应的指令下发通道;
所述装置还包括:
发送模块,用于通过所述指令下发通道,将所述注入指令发送至所述目标故障注入工具,以使所述目标故障注入工具根据所述故障注入参数,进行故障注入。
7.一种服务器,其特征在于,所述服务器包括一个或多个处理器和一个或多个存储器,所述一个或多个存储器中存储有至少一条程序代码,所述程序代码由所述一个或多个处理器加载并执行以实现如权利要求1至权利要求4任一项所述的故障注入方法所执行的操作。
8.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有至少一条程序代码,所述程序代码由处理器加载并执行以实现如权利要求1至权利要求4任一项所述的故障注入方法所执行的操作。
CN202010181297.1A 2020-03-16 2020-03-16 故障注入方法、装置、服务器及计算机可读存储介质 Active CN111400182B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010181297.1A CN111400182B (zh) 2020-03-16 2020-03-16 故障注入方法、装置、服务器及计算机可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010181297.1A CN111400182B (zh) 2020-03-16 2020-03-16 故障注入方法、装置、服务器及计算机可读存储介质

Publications (2)

Publication Number Publication Date
CN111400182A CN111400182A (zh) 2020-07-10
CN111400182B true CN111400182B (zh) 2021-08-17

Family

ID=71430837

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010181297.1A Active CN111400182B (zh) 2020-03-16 2020-03-16 故障注入方法、装置、服务器及计算机可读存储介质

Country Status (1)

Country Link
CN (1) CN111400182B (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112256568B (zh) * 2020-10-13 2023-06-06 四川新网银行股份有限公司 一种基于分布式故障注入的方法
CN112540887A (zh) * 2020-12-16 2021-03-23 北京奇艺世纪科技有限公司 故障演练方法、装置、电子设备及存储介质
CN112596934A (zh) * 2020-12-26 2021-04-02 中国农业银行股份有限公司 一种故障测试方法及装置
CN113407394B (zh) * 2021-05-31 2023-03-28 浪潮电子信息产业股份有限公司 一种服务器ras功能测试的方法、装置、设备和介质
CN114844813B (zh) * 2022-04-29 2023-07-04 广州文远知行科技有限公司 一种基于通信异常注入的测试方法、装置及相关设备

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104331324A (zh) * 2014-11-04 2015-02-04 哈尔滨工业大学 MapReduce故障注入套件

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101537018B1 (ko) * 2008-10-01 2015-07-17 삼성전자주식회사 보안 메모리 인터페이스, 이를 포함하는 시스템 및 스마트카드
CN104657244A (zh) * 2015-02-10 2015-05-27 上海创景计算机系统有限公司 嵌入式设备cpu总线故障注入测试系统及测试方法
CN106155883B (zh) * 2015-03-30 2019-02-19 华为技术有限公司 一种虚拟机可靠性测试方法及装置
US10467126B2 (en) * 2017-03-31 2019-11-05 Microsoft Technology Licensing, Llc Scenarios based fault injection
CN109032825B (zh) * 2018-06-06 2021-09-14 创新先进技术有限公司 一种故障注入方法、装置及设备
CN109947535A (zh) * 2019-03-22 2019-06-28 哈尔滨工业大学 面向虚拟机的故障注入套件

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104331324A (zh) * 2014-11-04 2015-02-04 哈尔滨工业大学 MapReduce故障注入套件

Also Published As

Publication number Publication date
CN111400182A (zh) 2020-07-10

Similar Documents

Publication Publication Date Title
CN111400182B (zh) 故障注入方法、装置、服务器及计算机可读存储介质
US6279124B1 (en) Method and system for testing hardware and/or software applications
US9652353B2 (en) Monitoring business transaction failures involving database procedure calls
US8151251B2 (en) e-Profiler: dynamic profiling and auditing framework
US20230065259A1 (en) Method and apparatus for protecting smart contracts against attacks
CN113434396A (zh) 接口测试方法、装置、设备、存储介质及程序产品
CN115408193A (zh) 多模块间错误码处理方法及装置
CN111695328A (zh) 模拟测试报文生成方法、装置、设备及存储介质
CN113127050B (zh) 一种应用资源打包过程监控方法、装置、设备和介质
CN113094238A (zh) 一种业务系统异常监控方法及装置
WO2023208012A1 (zh) 程序处理、运行方法、装置、终端、智能卡及存储介质
CN113760491A (zh) 一种任务调度系统、方法、设备及存储介质
CN111381989A (zh) 微服务链路生成方法、装置、服务器及存储介质
CN112631949B (zh) 一种调试方法、装置、计算机设备及存储介质
CN112115118B (zh) 数据库压测的优化方法及装置、存储介质、电子设备
CN112181816B (zh) 一种基于场景的接口测试方法、装置、计算机设备及介质
CN114116509A (zh) 程序分析方法、装置、电子设备和存储介质
WO2021036987A1 (zh) 一种实现运维监控的方法及装置
CN115220859A (zh) 数据输入方式的监测方法、装置、电子设备和存储介质
CN111488286A (zh) 一种Android模块独立开发的方法及装置
CN111045891A (zh) 基于java多线程的监控方法、装置、设备以及存储介质
CN109308256A (zh) 一种java程序动态分析方法、设备和存储介质
CN113127051B (zh) 一种应用资源打包过程监控方法、装置、设备和介质
CN111538491B (zh) 数据事件处理方法、装置、设备和存储介质
CN116302808A (zh) 异常信息捕获处理方法、装置、设备及存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant