CN104699601A - 用于执行状态机驱动的注入的方法和系统 - Google Patents
用于执行状态机驱动的注入的方法和系统 Download PDFInfo
- Publication number
- CN104699601A CN104699601A CN201410697471.2A CN201410697471A CN104699601A CN 104699601 A CN104699601 A CN 104699601A CN 201410697471 A CN201410697471 A CN 201410697471A CN 104699601 A CN104699601 A CN 104699601A
- Authority
- CN
- China
- Prior art keywords
- injection
- perform
- events
- failure
- sequence
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 claims abstract description 75
- 238000002347 injection Methods 0.000 claims abstract description 29
- 239000007924 injection Substances 0.000 claims abstract description 29
- 230000008569 process Effects 0.000 claims description 46
- 238000004458 analytical method Methods 0.000 claims description 7
- 238000000429 assembly Methods 0.000 claims description 6
- 230000000712 assembly Effects 0.000 claims description 6
- 238000004519 manufacturing process Methods 0.000 abstract description 4
- 238000012544 monitoring process Methods 0.000 abstract description 4
- 238000010586 diagram Methods 0.000 description 30
- 230000006870 function Effects 0.000 description 16
- 238000005516 engineering process Methods 0.000 description 14
- 238000004590 computer program Methods 0.000 description 13
- 238000003860 storage Methods 0.000 description 11
- 238000012360 testing method Methods 0.000 description 11
- 238000012545 processing Methods 0.000 description 8
- 230000009471 action Effects 0.000 description 7
- 230000007246 mechanism Effects 0.000 description 6
- 230000006399 behavior Effects 0.000 description 5
- 230000000694 effects Effects 0.000 description 3
- 239000007943 implant Substances 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 230000001364 causal effect Effects 0.000 description 2
- 239000004020 conductor Substances 0.000 description 2
- 238000009434 installation Methods 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 239000000203 mixture Substances 0.000 description 2
- 238000003032 molecular docking Methods 0.000 description 2
- 230000006855 networking Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000002776 aggregation Effects 0.000 description 1
- 238000004220 aggregation Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 239000003795 chemical substances by application Substances 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000013506 data mapping Methods 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 238000002474 experimental method Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 230000004807 localization Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 230000005012 migration Effects 0.000 description 1
- 238000013508 migration Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 230000000379 polymerizing effect Effects 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3644—Software debugging by instrumenting at runtime
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/202—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
- G06F11/2023—Failover techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/202—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
- G06F11/2023—Failover techniques
- G06F11/2028—Failover techniques eliminating a faulty processor or activating a spare
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/202—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
- G06F11/2023—Failover techniques
- G06F11/2033—Failover techniques switching over of hardware resources
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/3006—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system is distributed, e.g. networked systems, clusters, multiprocessor systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3604—Software analysis for verifying properties of programs
- G06F11/3612—Software analysis for verifying properties of programs by runtime analysis
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/08—Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
- H04L43/0805—Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters by checking availability
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Environmental & Geological Engineering (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明涉及一种用于执行状态机驱动的注入的方法和系统。在此提供用于在分布式应用的选择执行点处注入故障的方法、系统和制造品。一种方法包括:监视分布式应用的多个组件中的每一个的运行时状态,以便确定在所述多个组件中的一个处触发故障注入点的一个或多个事件序列;基于所述监视,在规范中定义故障注入场景,其中所述故障注入场景包括一个或多个事件序列的描述,在所述一个或多个事件序列期间,要在一个选定事件处将预定故障注入到所述多个组件中的目标组件;以及执行在所述规范中定义的所述故障注入,以便在所述分布式应用的运行时期间执行所述预定故障的注入。
Description
技术领域
本发明的各实施例一般地涉及信息技术,更具体地说,涉及分布式应用管理。
背景技术
故障测试是分布式应用和系统的一个常见和重要的方面。但是,现有故障测试方法面临许多挑战。例如,现有方法不包括引导式和/或精确故障注入(FI)技术,这些技术使开发人员、测试人员和/或操作代理能够测试特定的场景。现有FI工具本质上是统计性的,并且需要大量注入以便获得足够的置信度和覆盖度。此外,此类FI工具不包括在并发请求的准确位置处插入故障的能力,现有FI工具也不包括将单元测试实例与精确故障注入相关联的能力。
因此,需要用于在分布式应用的选择执行点和场景处插入故障的技术。
发明内容
在本发明的一个方面,提供用于在分布式应用的选择执行点处注入故障的技术。一种示例性计算机实现的方法可以包括以下步骤:监视分布式应用的多个组件中的每一个的运行时状态,以便确定在所述多个组件中的一个处触发故障注入点的一个或多个事件序列;基于所述监视,在规范中定义故障注入场景,其中所述故障注入场景包括一个或多个事件序列的描述,在所述一个或多个事件序列期间,要在一个选定事件处将预定故障注入到所述多个组件中的目标组件;以及执行在所述规范中定义的所述故障注入,以便在所述分布式应用的运行时期间执行所述预定故障的注入。
本发明的另一个方面或其元素可以以制造品的形式实现,所述制造品有形地包含计算机可读指令,当实现所述计算机可读指令时,导致计算机执行在此描述的多个方法步骤。此外,本发明的另一个方面或其元素可以以装置的形式实现,所述装置包括存储器和至少一个处理器,所述至少一个处理器耦合到所述存储器并且被配置为执行所述方法步骤。更进一步,本发明的另一个方面或其元素可以以装置的形式实现,以便执行在此描述的方法步骤或其元素;所述装置可以包括硬件模块(多个)或硬件和软件模块的组合,其中所述软件模块存储在有形计算机可读存储介质(或多个此类介质)中。
从以下将结合附图阅读的对本发明的示例性实施例的详细描述,本发明的这些和其它目标、特性以及优点将变得显而易见。
附图说明
图1是示出根据本发明的一个实施例的用于进行故障注入的过程流的示意图;
图2是示出根据本发明的一个实施例的用于执行状态机驱动的注入的实例流过程的示意图;
图3是示出根据本发明的一个方面的一个实例实施例的框图;
图4是示出根据本发明的一个方面的一个实例实施例的框图;
图5是示出根据本发明的一个实施例的中央协调器组件的示意图;
图6是示出根据本发明的一个实施例的技术的流程图;以及
图7是其上可以实现本发明的至少一个实施例的示例性计算机系统的系统图。
具体实施方式
如在此描述的,本发明的一个方面包括用于在分布式应用的选择执行点和场景处插入故障的技术。本发明的至少一个实施例包括在根据消息的因果事件和C标准库(LIBC)和/或系统调用定义的给定目标点处执行故障注入(FI),以及发现这些因果事件和对应的依赖性和/或序列。此外,本发明的一个方面包括在给定分布式应用的运行时期间,协调分布式组件以便进行故障注入。如在此进一步描述的,可以实现集中控制服务器以便监视每个分布式组件的运行时状态,跟踪当前执行流,并且判定是否满足触发故障注入的条件。
本发明的至少一个实施例包括基于收集的执行踪迹的预注入分析,以便获得目标系统的内部语义。此类分析可以用于确定导致预定注入点(多个)的事件序列。此外,在运行时,本发明的至少一个实施例包括拦截函数调用(例如,LIBC)以便与给定事件序列匹配,并且指导在预定点(多个)处的故障插入。
此外,本发明的此类实施例的一个方面包括生成FI规范,其指定用于插入故障的事件依赖性。举例来说,FI规范可以包括用于定义故障注入场景的人类可读规范。此外,驱动一个或多个FI试验可以包括从FI规范获得输入,并且在跨机器分布的目标进程处协调事件以便执行精确故障注入。
图1是示出根据本发明的一个实施例的用于进行故障注入的过程流的示意图。步骤102包括预FI分析。此类分析可以包括在各种工作负载下剖析给定系统,以便标识FI点和事件依赖性。因此,预注入分析另外可以包括跨多个进程的流生成。步骤104包括生成FI规范。如在此详述的,FI规范定义精确故障注入场景,并且允许用户(或自动化工具)基于从在步骤102执行的预注入分析发现的事件依赖性来定义FI场景。举例来说,FI规范可能包括指示“AT Event x INJECT Fault TO Target(在事件x处将故障注入到目标)”的表项。
因此,FI规范可以包括在其处和/或其间要在指定目标处注入故障的事件和/或事件序列(函数、匹配数据等)的描述。故障例如可以指示应用崩溃、网络拥塞、存储器和/或磁盘空间不足、LIBC调用返回错误、存储器、磁盘或网络损坏、配置错误等。此外,用于故障注入的指定目标可以包括特定函数、进程、虚拟机(VM)、物理机等。
再次参考图1,在步骤106,开发一种工具以使FI试验自动化。举例来说,下面结合图2提供步骤106的进一步描述。步骤108包括分析在步骤106进行的试验的结果。举例来说,可以收集日志(从试验获得)并且将其加载到机构中,该机构允许用户直观地导航注入、日志文件、消息类型等。此外,本发明的至少一个实施例包括提供有关进行的注入的统计信息,以及提供手段以便用户查找故障场景。
图2是示出根据本发明的一个实施例的用于执行状态机驱动的注入的实例流过程的示意图。图2中所示的流过程是经由图1中的步骤106开发的本发明的一个方面的实例。举例来说,图2示出为了驱动注入而经由FI工具的内部操作执行的动作序列。步骤202包括开始流过程,而步骤204包括确定操作系统(OS)已完成引导(即,没有启动新进程)。步骤206包括确定已发出“创建虚拟机(VM)”消息。如图2中所示的实例中描述的,标识为nova-api的组件(即,软件进程)将有关该任务的消息发送到nova-conductor组件。
步骤208包括确定任务处于联网状态。举例来说,在OpenStack软件中,具有指示当前状态的变量task_state。注意,图2示出驱动定向故障注入的状态机的一个实例,并且图2实例示出状态机可以包括特定于被监视的分布式软件的信息。如图2中所示的实例中描述的,nova-conductor将指示task_state=“联网”的消息写入到mysql。步骤210包括使nova-network进程崩溃,并且步骤212包括结束流过程。此外,如下面描述的,步骤214包括执行超时,并且步骤216包括记录故障。
结合图2中所示的实例,如在此详述的,本发明的至少一个实施例可以包括为用户提供给定分布式应用的执行流程图。用户可以以消息和/或系统调用/LIBC调用的粒度确定任何注入点,并且可以如在此描述的那样执行故障注入并可以获得对应的结果。
在本发明的一个实例实施例中,用户在图中确定注入点之后,用户写入FI规范以便精确描述在图中导向注入点的相关流(消息或系统调用/LIBC调用)。此类实施例还包括读取FI规范并启动目标分布式应用。经由使用状态机驱动的机构(例如经由图5示出),执行FI规范中给出的指导。通过遵循状态机,系统可以成功执行被请求注入(例如图2中的步骤210描述的“使nova-network进程崩溃”注入)。此外,如果在故障注入试验期间出现错误或问题,则试验可能失败和/或系统将终止该试验(分别如图2中的步骤214和216的“超时”和“失败”动作指示)。
图3是示出本发明的一个实例实施例的框图。举例来说,图3示出FI规范302、FI中央控制器304以及FI运行时系统中的每目标节点306。如在此进一步描述的,FI中央控制器304以事件驱动的方式操作以便驱动注入。还如在此详述的,目标应用可以包括跨多个节点的多个进程。在图3中所示的实例中,目标节点306包括目标进程组件308,其进一步包括流跟踪器310和库故障注入(LIBFI)组件312。此外,目标节点306包括本地控制器314,其与FI中央控制器304以及流跟踪器310和库故障注入组件312交互。本地控制器314还与日志收集器组件316交互,日志收集器组件316输出日志聚合组件318。
如图3中所示,FI规范302是目标FI场景的规范,而FI中央控制器304是中央单元,其协调分布在不同节点中的故障注入组件以便执行在FI规范302中指定的故障注入场景。例如,图4示出FI中央控制器的内部结构。
每目标节点306包括具有运行的被监视的分布式应用(例如,OpenStack)的一部分的任何节点(VM或物理机)。在每目标节点306中,每目标进程308包括被监视的分布式应用(例如,OpenStack)的任何进程。此外,流跟踪器310包括故障注入方案中监视每目标进程308的执行的组件(例如,库代码)。每个进程308具有安装的流跟踪器310。
此外,库故障注入组件312包括故障注入方案的在进程308内部执行故障注入工作的组件(例如,库代码)。每个进程308具有安装的库故障注入组件312。此外,本地控制器314包括故障注入方案的协调流跟踪器310和库故障注入组件312的组件,以便根据FI中央控制器304发送的命令执行定向故障注入。
此外,如图3中所示,日志收集器316包括故障注入方案的收集分布式应用的日志的组件。因为日志信息可以用于FI规范302中以便描述故障注入场景,所以本地控制器314获得日志信息以执行FI规范302以便进行定向故障注入。此外,在本发明的一个或多个实施例中,日志聚合组件318包括故障注入方案的从被监视的分布式应用的不同组件聚合收集的日志以便将来使用的组件。
图4是示出根据本发明的一个方面的一个实例实施例的框图。举例来说,图4示出FI中央控制器304和目标节点408。FI中央控制器304包括簿记服务器402,其进一步包括全局状态组件404。全局状态组件404包括所有每目标节点中的所有每目标进程(例如图3中的组件308)、流跟踪器组件(例如图3中的组件310)、库故障注入组件(例如图3中的组件312)以及本地控制器(例如图3中的组件314)的状态。簿记服务器402充当系统状态簿记器并且包括通信通道。FI中央控制器304另外包括中央协调器组件406,其充当状态机驱动的机构,并且与簿记服务器402交互以便查询状态,设置警报并发出命令。具体地说,中央协调器组件406(另外结合图5详述)包括引擎,该引擎将FI规范作为状态机解释和执行。中央协调器组件406还跨进程和节点执行某些注入场景需要的协调,并且还跟踪目标节点和进程的活跃性。
如上所述,图4还示出目标节点408。目标节点408包括目标进程410和414,它们分别具有对应的LIBFI组件412和416。目标节点408的每个进程具有其由LIBFI库拦截的LIBC调用(或系统调用)。目标节点408还在本地状态组件418中维护数据结构和其它数据,其中此类数据映射到本地存储器映射的文件。目标节点408的本地状态组件418执行与FI中央控制器304的簿记服务器402的全局状态组件404的状态同步。此外,目标节点408经由本地状态组件418从FI中央控制器304读取命令和状态,并且相应地采取动作。
本发明的至少一个实施例(例如图4中所示的实例实施例)可以包括进行扩展以便处理并发请求。在此类实施例中,将前缀(例如,请求标识符(ID))添加到目标请求(例如,创建VM,例如图2的步骤206所述)的第一消息。随后,相关LIBFI将该前缀传播到同一流中所有被拦截的消息。为了维持原始消息的格式,在每次发送之前添加前缀,并且在每次接收之后删除前缀,以便应用不会观察到前缀。此外,在本发明的至少一个实施例中,前缀用于FI规范中以便与仅属于目标请求的事件相匹配。
图5是示出根据本发明的一个实施例的中央协调器组件的示意图。举例来说,图5示出状态机模板502,其解释和执行FI规范,如步骤506到514表示的那样。步骤504包括开始注入过程。步骤506包括设置命令并且将其发送到一个或多个目标,并且步骤508包括开始观察预定事件。如果在步骤508期间出现错误和/或问题,则可以执行超时518,其最终导致在步骤516结束注入过程。
步骤510包括确定接收的预定事件(多个),并且步骤512包括重设目标命令。还如图5中所示,在步骤506、510和/或512出现的错误和/或问题可以导致故障520,其最终导致在步骤516结束注入过程。此外,步骤514包括响应于所接收的事件(多个),在记录的目标处注入故障。
如根据本发明的一个或多个实施例实现的故障注入可以包括进程级别故障模型和节点级别故障模型。进程级别故障模型在LIBFI内部实现,并且在LIBC调用拦截处调用。此类故障例如可以包括进程崩溃、连接丢失或网络延迟。节点级别故障模型在本地控制器处实现,并且可以包括诸如存储器和/或磁盘不足、OS内核崩溃、VM迁移或配置更改之类的故障。
如根据本发明的一个或多个实施例实现的故障注入的类型可以包括统计故障注入和定向故障注入。统计故障注入包括通过在目标应用的所有执行点处穷尽执行FI,或者在选择执行点处概率性地(使用某种分布)执行FI,进行系统试验活动。举例来说,可以在目标应用的每个LIBC调用处注入故障,或者在给定周期内随机注入故障。此外,在统计故障注入中,可以选择某种粒度,例如每LIBC调用、函数调用、指令级别或时间。
定向故障注入包括使用指定场景和故障点进行一组FI。举例来说,可以紧接在目标进程接收某个消息之后注入故障。此外,本发明的至少一个实施例可以包括实现混合故障注入,其包括经由使用定向FI在某个条件下的统计FI。
图6是示出根据本发明的一个实施例的技术的流程图。步骤602包括监视分布式应用的多个组件中的每一个的运行时状态,以便确定在多个组件中的一个处触发故障注入点的一个或多个事件序列。监视可以包括基于所收集的分布式应用的执行踪迹,监视多个组件中的每一个的运行时状态。此外,监视可以包括在多个工作负载下,监视分布式应用的多个组件中的每一个的运行时状态。
步骤604包括基于所述监视,在规范中定义故障注入场景,其中所述故障注入场景包括其间要在一个选定事件处将预定故障注入到多个组件中的目标组件的一个或多个事件序列(例如,日志事件序列)的描述。定义可以包括基于从所述监视发现的一个或多个事件依赖性,定义故障注入场景。
步骤606包括执行在规范中定义的故障注入,以便在分布式应用的运行时期间执行预定故障的注入。预定故障例如可以包括应用崩溃、网络拥塞、存储器和/或磁盘空间不足、存储器、磁盘或网络损坏和/或配置错误。此外,目标组件例如可以包括给定函数、给定进程、虚拟机和/或物理机。
图6中所示的技术还可以包括分析来自预定故障的所述注入的结果。分析可以包括收集从预定故障的所述注入获得的多个日志。分析还可以包括生成有关预定故障的所述注入的统计信息。此外,本发明的至少一个实施例可以包括向用户显示所述多个日志。此外,图6中所示的技术可以包括同时执行多个预定故障的注入。
如在此描述的,图6中所示的技术还可以包括提供一种系统,其中所述系统包括不同软件模块,每个不同软件模块包含在有形的计算机可读可记录存储介质中。例如,所有模块(或其任何子集)可以在相同介质中,或者每个模块可以在不同介质中。所述模块可以包括附图中示出和/或在此描述的任何或全部组件。在本发明的一个方面,所述模块例如可以在硬件处理器上运行。然后可以使用所述系统的不同软件模块(如上所述,在硬件处理器上执行)执行所述方法步骤。此外,计算机程序产品可以包括有形的计算机可读可记录存储介质,其具有适合于被执行的代码以便执行在此描述的至少一个方法步骤,包括为所述系统提供所述不同软件模块。
此外,图6中所示的技术能够经由可以包括计算机可用程序代码的计算机程序产品来实现,所述计算机可用程序代码存储在数据处理系统内的计算机可读存储介质中,并且其中所述计算机可用程序代码通过网络从远程数据处理系统下载。此外,在本发明的一个方面,所述计算机程序产品可以包括存储在服务器数据处理系统内的计算机可读存储介质中的计算机可用程序代码,并且其中所述计算机可用程序代码通过网络下载到远程数据处理系统,以便在远程系统的计算机可读存储介质中使用。
本发明的一个方面或其元素可以以装置的形式实现,所述装置包括存储器和至少一个处理器,至少一个处理器耦合到存储器并且被配置为执行示例性方法步骤。
此外,本发明的一个方面可以使用在通用计算机或工作站上运行的软件。参考图7,此类实现例如可以采用处理器702、存储器704和输入/输出接口(例如,由显示器706和键盘708形成)。术语“处理器”如在此使用的,旨在包括任何处理设备,例如包括CPU(中央处理单元)和/或其它形式处理电路的处理设备。此外,术语“处理器”可以指多个个体处理器。术语“存储器”旨在包括与处理器或CPU关联的存储器,例如RAM(随机存取存储器)、ROM(只读存储器)、固定存储器件(例如,硬盘驱动器)、可移动存储器件(例如,软盘)、闪存等。此外,词组“输入/输出接口”如在此使用的,旨在包括例如用于将数据输入到处理单元的机构(例如,鼠标),以及用于提供与处理单元关联的结果的机构(例如,打印机)。处理器702、存储器704和输入/输出接口(例如显示器706和键盘708)例如可以经由总线710互连,作为数据处理单元712的一部分。还可以例如经由总线710为网络接口714(例如网卡,其可以用于与计算机网络对接)以及介质接口716(例如软盘或CD-ROM驱动器,其可以用于与介质718对接)提供合适的互连。
因此,如在此描述的,包括用于执行本发明方法的指令或代码的计算机软件可以被存储在关联的存储器件(例如,ROM、固定或可移动存储器)中,并且当准备使用时,被部分或全部加载(例如,加载到RAM中)并由CPU实现。此类软件可以包括但不限于固件、驻留软件、微代码等。
适合于存储和/或执行程序代码的数据处理系统将包括至少一个通过系统总线710直接或间接耦合到存储元件704的处理器702。所述存储元件可以包括在程序代码的实际执行期间采用的本地存储器、大容量存储装置以及提供至少某些程序代码的临时存储以减少必须在执行期间从大容量存储装置检索代码的次数的高速缓冲存储器。
输入/输出或I/O设备(包括但不限于键盘708、显示器706、指点设备等)可以直接(例如经由总线710)或通过中间I/O控制器(为了清楚起见而被省略)与系统相连。
网络适配器(例如网络接口714)也可以被耦合到系统以使数据处理系统能够通过中间专用或公共网络变得与其它数据处理系统或远程打印机或存储器件相连。调制解调器、电缆调制解调器和以太网卡只是当前可用的网络适配器类型中的少数几种。
如在此(包括权利要求)使用的,“服务器”包括运行服务器程序的物理数据处理系统(例如,如图7中所示的系统712)。应当理解,此类物理服务器可以包括也可以不包括显示器和键盘。
所属技术领域的技术人员知道,本发明的各个方面可以实现为系统、方法或计算机程序产品。因此,本发明的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、驻留软件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。此外,本发明的各个方面还可以实现为在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可读的程序代码。
可以采用一个或多个计算机可读介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是—但不限于—电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括例如在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括—但不限于—电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括—但不限于—无线、有线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本发明的各个方面的操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
下面将参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述本发明的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。
也可以把这些计算机程序指令存储在计算机可读介质中,这些指令使得计算机、其它可编程数据处理装置、或其它设备以特定方式工作,从而,存储在计算机可读介质中的指令就产生出包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的指令的制造品(article ofmanufacture)。
也可以把计算机程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机或其它可编程装置上执行的指令提供实现流程图和/或框图中的一个或多个方框中规定的功能/动作的过程。
附图中的流程图和框图显示了根据本发明的不同实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
应当注意,在此描述的任何方法都可以包括提供一种系统的额外步骤,所述系统包括包含在计算机可读存储介质中的不同软件模块;所述模块例如可以包括在此详述的任何或全部组件。然后可以使用所述系统的不同软件模块和/或子模块(如上所述,在硬件处理器702上执行)执行所述方法步骤。此外,计算机程序产品可以包括计算机可读存储介质,其具有适合于被执行的代码以便执行在此描述的至少一个方法步骤,包括为所述系统提供所述不同软件模块。
在任何情况下,应当理解,在此示出的组件可以以各种形式的硬件、软件或它们的组合来实现,例如,专用集成电路(多个)(ASIC)、功能电路、具有关联存储器的经过适当编程的通用数字计算机等。给予了在此提供的本发明的教导后,相关技术领域的普通技术人员将能够构想本发明的组件的其它实现。
在此使用的术语只是为了描述特定的实施例并且并非旨在作为本发明的限制。如在此使用的,单数形式“一”、“一个”和“该”旨在同样包括复数形式,除非上下文明确地另有所指。还将理解,当在此说明书中使用时,术语“包括”和/或“包含”指定了声明的特性、整数、步骤、操作、元素和/或组件的存在,但是并不排除另一个特性、整数、步骤、操作、元素、组件和/或其组合的存在或增加。
下面权利要求中的对应结构、材料、操作以及所有功能性限定的装置或步骤的等同替换,旨在包括任何用于与在权利要求中具体指出的其它元件相组合地执行该功能的结构、材料或操作。
本发明的至少一个方面可以提供有益的效果,例如在不需要知道应用语义的情况下确定故障点。
出于示例目的给出了对本发明的不同实施例的描述,但所述描述并非旨在是穷举的或是限于所公开的实施例。在不偏离所述实施例的范围和精神的情况下,对于所属技术领域的普通技术人员来说许多修改和变化都将是显而易见的。在此使用的术语的选择,旨在最好地解释实施例的原理、实际应用或对市场中的技术的技术改进,或者使所属技术领域的其它普通技术人员能理解在此所公开的实施例。
Claims (15)
1.一种方法,包括:
监视分布式应用的多个组件中的每一个的运行时状态,以便确定在所述多个组件中的一个处触发故障注入点的一个或多个事件序列;
基于所述监视,在规范中定义故障注入场景,其中所述故障注入场景包括一个或多个事件序列的描述,在所述一个或多个事件序列期间,要在一个选定事件处将预定故障注入到所述多个组件中的目标组件;以及
执行在所述规范中定义的所述故障注入,以便在所述分布式应用的运行时期间执行所述预定故障的注入;
其中由计算设备执行所述监视、所述定义和所述执行中的至少一个。
2.根据权利要求1的方法,其中所述一个或多个事件序列包括日志事件序列。
3.根据权利要求1的方法,其中所述监视包括基于所收集的所述分布式应用的执行踪迹,监视所述多个组件中的每一个的所述运行时状态。
4.根据权利要求1的方法,其中所述监视包括在多个工作负载下,监视所述分布式应用的所述多个组件中的每一个的所述运行时状态。
5.根据权利要求1的方法,其中所述定义包括基于从所述监视发现的一个或多个事件依赖性,定义故障注入场景。
6.根据权利要求1的方法,其中所述预定故障包括以下至少一个:应用崩溃;网络拥塞;存储器和/或磁盘空间不足;存储器、磁盘或网络损坏;以及配置错误。
7.根据权利要求1的方法,其中所述目标组件包括以下至少一个:给定函数、给定进程、虚拟机和物理机。
8.根据权利要求1的方法,包括:
分析来自所述预定故障的所述注入的结果。
9.根据权利要求8的方法,其中所述分析包括收集从所述预定故障的所述注入获得的多个日志。
10.根据权利要求9的方法,包括:
向用户显示所述多个日志。
11.根据权利要求8的方法,其中所述分析包括生成有关所述预定故障的所述注入的统计信息。
12.根据权利要求1的方法,包括:
同时执行多个预定故障的注入。
13.一种系统,包括:
存储器;以及
至少一个处理器,其耦合到所述存储器并且被配置为:
监视分布式应用的多个组件中的每一个的运行时状态,以便确定在所述多个组件中的一个处触发故障注入点的一个或多个事件序列;
基于所述监视,在规范中定义故障注入场景,其中所述故障注入场景包括一个或多个事件序列的描述,在所述一个或多个事件序列期间,要在一个选定事件处将预定故障注入到所述多个组件中的目标组件;以及
执行在所述规范中定义的所述故障注入,以便在所述分布式应用的运行时期间执行所述预定故障的注入。
14.根据权利要求13的系统,其中所述定义包括基于从所述监视发现的一个或多个事件依赖性,定义故障注入场景。
15.根据权利要求13的系统,其中所述至少一个处理器还被配置为:
同时执行多个预定故障的注入。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/097713 | 2013-12-05 | ||
US14/097,713 US9483383B2 (en) | 2013-12-05 | 2013-12-05 | Injecting faults at select execution points of distributed applications |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104699601A true CN104699601A (zh) | 2015-06-10 |
CN104699601B CN104699601B (zh) | 2017-12-29 |
Family
ID=53271285
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410697471.2A Expired - Fee Related CN104699601B (zh) | 2013-12-05 | 2014-11-27 | 用于执行状态机驱动的注入的方法和系统 |
Country Status (2)
Country | Link |
---|---|
US (1) | US9483383B2 (zh) |
CN (1) | CN104699601B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108052422A (zh) * | 2017-11-08 | 2018-05-18 | 北京旋极信息技术股份有限公司 | 一种故障注入方法和系统、控制设备及故障注入管理系统 |
CN109032825A (zh) * | 2018-06-06 | 2018-12-18 | 阿里巴巴集团控股有限公司 | 一种故障注入方法、装置及设备 |
CN111274053A (zh) * | 2020-01-20 | 2020-06-12 | 山东汇贸电子口岸有限公司 | 一种通过nova调用qemu guest agent接口的方法 |
CN111666563A (zh) * | 2020-06-05 | 2020-09-15 | 北京百度网讯科技有限公司 | 用于验证应用运行状态的方法及装置 |
Families Citing this family (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9612935B2 (en) * | 2014-11-21 | 2017-04-04 | Vmware, Inc. | Enhanced resiliency testing by enabling state level control for request |
US9753826B2 (en) | 2015-07-21 | 2017-09-05 | International Business Machines Corporation | Providing fault injection to cloud-provisioned machines |
CN105159809B (zh) * | 2015-09-29 | 2018-11-16 | 杭州华为数字技术有限公司 | 基于状态机故障定位方法以及装置 |
US10387231B2 (en) | 2016-08-26 | 2019-08-20 | Microsoft Technology Licensing, Llc | Distributed system resiliency assessment using faults |
US10467126B2 (en) | 2017-03-31 | 2019-11-05 | Microsoft Technology Licensing, Llc | Scenarios based fault injection |
US10579503B2 (en) * | 2017-05-15 | 2020-03-03 | Microsoft Technology Licensing, Llc | Conditionally crashing software applications to track software use |
KR20190079809A (ko) * | 2017-12-28 | 2019-07-08 | 현대자동차주식회사 | 결함 주입 테스트 장치 및 그 방법 |
CN108764864A (zh) * | 2018-04-09 | 2018-11-06 | 阿里巴巴集团控股有限公司 | 一种配置支付流程、执行支付流程的方法、装置及设备 |
US11474837B2 (en) | 2018-04-09 | 2022-10-18 | Advanced New Technologies Co., Ltd. | Method and apparatus for efficient programming of electronic payment processing |
US11080157B1 (en) | 2019-03-22 | 2021-08-03 | Amazon Technologies, Inc. | Automated resiliency analysis in distributed systems |
CN109947535A (zh) * | 2019-03-22 | 2019-06-28 | 哈尔滨工业大学 | 面向虚拟机的故障注入套件 |
US11341012B2 (en) * | 2020-05-14 | 2022-05-24 | EMC IP Holding Company LLC | Test platform employing test-independent fault insertion |
CN111651353B (zh) * | 2020-05-29 | 2023-07-18 | 北京百度网讯科技有限公司 | 故障注入的方法、装置、电子设备和存储介质 |
US11301350B1 (en) * | 2020-09-29 | 2022-04-12 | Amazon Technologies, Inc. | Automated testing of systems and applications |
US20220100599A1 (en) * | 2020-09-29 | 2022-03-31 | Amazon Technologies, Inc. | Automated testing of systems and applications |
US11983100B2 (en) * | 2020-09-29 | 2024-05-14 | Amazon Technologies, Inc. | Automated testing of systems and applications |
US11550683B2 (en) * | 2021-04-09 | 2023-01-10 | EMC IP Holding Company LLC | Fault definition and injection process to simulate timing based errors in a distributed system |
US20240118991A1 (en) * | 2022-10-07 | 2024-04-11 | The Bank Of New York Mellon | Application scenario injection and validation system |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6477666B1 (en) * | 1999-11-22 | 2002-11-05 | International Business Machines Corporation | Automatic fault injection into a JAVA virtual machine (JVM) |
US20080134160A1 (en) * | 2006-06-22 | 2008-06-05 | Abhijit Belapurkar | Software fault injection in java enterprise applications |
CN102354298A (zh) * | 2011-07-27 | 2012-02-15 | 哈尔滨工业大学 | 基于staf的高端容错机故障注入自动化测试平台及方法 |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6484276B1 (en) * | 1999-10-25 | 2002-11-19 | Lucent Technologies Inc. | Method and apparatus for providing extensible object-oriented fault injection |
US7536605B2 (en) * | 2005-05-25 | 2009-05-19 | Alcatel-Lucent Usa Inc. | Injection of software faults into an operational system |
US20070050740A1 (en) * | 2005-08-29 | 2007-03-01 | Christian Jacobi | Method and System for Performing Functional Formal Verification of Logic Circuits |
US20070271082A1 (en) * | 2006-05-22 | 2007-11-22 | Scott Dominguez | User configurable device simulator with injection error capability |
US20080215925A1 (en) | 2007-03-02 | 2008-09-04 | International Business Machines Corporation | Distributed fault injection mechanism |
US7779298B2 (en) * | 2007-06-11 | 2010-08-17 | International Business Machines Corporation | Distributed job manager recovery |
US7933759B2 (en) | 2008-03-28 | 2011-04-26 | Microsoft Corporation | Predicate checking for distributed systems |
US7827438B2 (en) | 2008-06-10 | 2010-11-02 | Microsoft Corporation | Distributed testing system and techniques |
US8863094B2 (en) * | 2010-05-18 | 2014-10-14 | International Business Machines Corporation | Framework for a software error inject tool |
US8271932B2 (en) * | 2010-06-24 | 2012-09-18 | International Business Machines Corporation | Hierarchical error injection for complex RAIM/ECC design |
US8046639B1 (en) * | 2010-07-29 | 2011-10-25 | Oracle International Corporation | Cycle accurate fault log modeling for a digital system |
US8572529B2 (en) * | 2011-06-08 | 2013-10-29 | Cadence Design Systems, Inc. | System and method for dynamically injecting errors to a user design |
WO2013094048A1 (ja) * | 2011-12-21 | 2013-06-27 | 富士通株式会社 | 試験サーバ、情報処理システム、試験プログラムおよび試験方法 |
US9069668B2 (en) * | 2012-11-14 | 2015-06-30 | International Business Machines Corporation | Diagnosing distributed applications using application logs and request processing paths |
US9195555B2 (en) * | 2013-05-24 | 2015-11-24 | International Business Machines Corporation | Error injection into the leaf functions of call graphs |
US9523736B2 (en) * | 2014-06-19 | 2016-12-20 | Nuvoton Technology Corporation | Detection of fault injection attacks using high-fanout networks |
-
2013
- 2013-12-05 US US14/097,713 patent/US9483383B2/en not_active Expired - Fee Related
-
2014
- 2014-11-27 CN CN201410697471.2A patent/CN104699601B/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6477666B1 (en) * | 1999-11-22 | 2002-11-05 | International Business Machines Corporation | Automatic fault injection into a JAVA virtual machine (JVM) |
US20080134160A1 (en) * | 2006-06-22 | 2008-06-05 | Abhijit Belapurkar | Software fault injection in java enterprise applications |
CN102354298A (zh) * | 2011-07-27 | 2012-02-15 | 哈尔滨工业大学 | 基于staf的高端容错机故障注入自动化测试平台及方法 |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108052422A (zh) * | 2017-11-08 | 2018-05-18 | 北京旋极信息技术股份有限公司 | 一种故障注入方法和系统、控制设备及故障注入管理系统 |
CN109032825A (zh) * | 2018-06-06 | 2018-12-18 | 阿里巴巴集团控股有限公司 | 一种故障注入方法、装置及设备 |
CN109032825B (zh) * | 2018-06-06 | 2021-09-14 | 创新先进技术有限公司 | 一种故障注入方法、装置及设备 |
CN111274053A (zh) * | 2020-01-20 | 2020-06-12 | 山东汇贸电子口岸有限公司 | 一种通过nova调用qemu guest agent接口的方法 |
CN111666563A (zh) * | 2020-06-05 | 2020-09-15 | 北京百度网讯科技有限公司 | 用于验证应用运行状态的方法及装置 |
CN111666563B (zh) * | 2020-06-05 | 2023-07-18 | 北京百度网讯科技有限公司 | 用于验证应用运行状态的方法及装置 |
US11709767B2 (en) | 2020-06-05 | 2023-07-25 | Beijing Baidu Netcom Science And Technology Co., Ltd. | Method and apparatus for verifying operation state of application |
Also Published As
Publication number | Publication date |
---|---|
US9483383B2 (en) | 2016-11-01 |
US20150161025A1 (en) | 2015-06-11 |
CN104699601B (zh) | 2017-12-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104699601A (zh) | 用于执行状态机驱动的注入的方法和系统 | |
Arnold et al. | Stack trace analysis for large scale debugging | |
US8667334B2 (en) | Problem isolation in a virtual environment | |
Tan et al. | Visual, log-based causal tracing for performance debugging of mapreduce systems | |
CN102279790B (zh) | 分布式调试方法和系统 | |
US10430324B2 (en) | System and method for automated intelligent mobile application testing | |
US8938729B2 (en) | Two pass automated application instrumentation | |
US20130249917A1 (en) | Profile data visualization | |
US9563411B2 (en) | Flow analysis instrumentation | |
Beschastnikh et al. | Mining temporal invariants from partially ordered logs | |
US9239773B1 (en) | Method and system for debugging a program that includes declarative code and procedural code | |
US10177984B2 (en) | Isolation of problems in a virtual environment | |
US9122784B2 (en) | Isolation of problems in a virtual environment | |
US9355003B2 (en) | Capturing trace information using annotated trace output | |
US9367428B2 (en) | Transparent performance inference of whole software layers and context-sensitive performance debugging | |
CN105468517B (zh) | 一种基于黑盒测试用例约简的统计错误定位方法 | |
CN105302717A (zh) | 一种大数据平台的检测方法及装置 | |
CN111367786B (zh) | 一种符号执行方法、电子设备以及存储介质 | |
CN113590454A (zh) | 测试方法、装置、计算机设备和存储介质 | |
Jiang et al. | Ranking the importance of alerts for problem determination in large computer systems | |
CN106529304A (zh) | 一种安卓应用并发漏洞检测系统 | |
CN112698974A (zh) | 故障注入测试方法、装置和存储介质 | |
CN105610643B (zh) | 一种云计算监控方法及装置 | |
CN103713995A (zh) | 潜在缺陷识别 | |
Altisen et al. | SASA: a SimulAtor of Self-stabilizing Algorithms |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20171229 |
|
CF01 | Termination of patent right due to non-payment of annual fee |