CN111448553A - 故障注入系统和故障注入方法 - Google Patents

故障注入系统和故障注入方法 Download PDF

Info

Publication number
CN111448553A
CN111448553A CN201780097559.2A CN201780097559A CN111448553A CN 111448553 A CN111448553 A CN 111448553A CN 201780097559 A CN201780097559 A CN 201780097559A CN 111448553 A CN111448553 A CN 111448553A
Authority
CN
China
Prior art keywords
event
command
fault
fault injection
state
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
Application number
CN201780097559.2A
Other languages
English (en)
Other versions
CN111448553B (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.)
Huawei Cloud Computing Technologies Co Ltd
Original Assignee
Huawei Technologies 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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Publication of CN111448553A publication Critical patent/CN111448553A/zh
Application granted granted Critical
Publication of CN111448553B publication Critical patent/CN111448553B/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/3664Environments for testing or debugging software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/26Functional testing
    • G06F11/261Functional testing by simulating additional hardware, e.g. fault simulation
    • 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
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/556Detecting local intrusion or implementing counter-measures involving covert channels, i.e. data leakage between processes

Landscapes

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

Abstract

本发明提供了一种用于软件系统(200)的故障注入系统(300),其中所述软件系统包括可执行命令(command,CMD)、所述命令(command,CMD)生成的事件(event,E)和表示两个事件(event,E)之间的状态机的状态的状态(state,S)。故障注入规则数据库(350)用于提供用于注入选定故障的规则,所述规则在选定命令、发生故障注入的选定状态和发生故障注入的条件出现时提供故障注入决策。估计器模块(330)用于根据预测时间模型确定与执行所述选定命令相关的所述选定状态出现时间,并提供状态的持续时间作为故障注入的时间区间。注入器模块(360)用于执行所述选定命令并在所述时间区间内注入所述选定故障。

Description

故障注入系统和故障注入方法
技术领域
本发明涉及一种故障注入系统、故障注入方法及计算机程序。具体地,本发明涉及使用基于时间估计的状态驱动故障注入。
背景技术
本发明涉及软件实现的故障注入(Software Implemented Fault Injection,SWIFI)系统,尤其涉及大规模分布式系统中的故障注入。现有的SWIFI系统大多无法精确判断故障是在分布式系统的哪种状态下注入的。即使在所述SWIFI系统通过分析事件精确注入故障的情况下,这种系统在状态识别到实际故障注入之间的延迟仍然很高。现有的SWIFI系统存在以下限制之一。故障随机注入运行中的分布式系统。事件识别、分布式系统访问、故障注入之间的延迟形成了一个盲点,在此期间无法将故障注入分布式系统。
随着社会越来越依赖复杂的软件系统,大型分布式系统(例如云平台)的可靠性和恢复能力正变得越来越重要。云计算正变得与其它已建立的公用设施(例如水和电)一样重要。
支持云平台的新型软件系统极其复杂,需要具备恢复能力和可靠性工程的新方法。大规模云平台的复杂性和动态性要求自动化解决方案来降低最终故障的风险。需要处理的问题包括:服务暂时不可用、扩展困难、需求激增(即Slashdot效应)、关联故障、热升级和租户间干扰。
为了提高可靠性和恢复能力,可以使用软件实现的故障注入来扩展测试覆盖范围。近年来,故障注入受到了广泛关注。故障注入是一种可行的方法,通过分析对不经常发生且用常规测试技术无法检测到的故障的容忍度,来扩展测试覆盖范围。
软件实现的故障注入通常用于向具有通信或协作功能的代码注入故障,以便有足够的交互使该技术发挥作用。可能注入的典型故障包括寄存器和存储器故障、丢弃或复制的网络数据包以及错误的错误条件和标志。
与以前的测试系统相比,云平台是大规模复杂的分布式系统,需要新的方法使用故障注入来扩展测试覆盖范围。
传统的基于事件的SWIFI系统通常依赖于类似ECA(事件-条件-动作)的规则,持续评估所述规则以决定注入故障的时间。虽然基于事件的故障注入方法在集中式系统中运行良好,但在应用于测试大规模分布式系统时存在严重的局限性,因为它们受到注入延迟的影响,即存在盲点,在此期间无法注入故障。
使用基于事件的方法在测试中的分布式系统中注入故障的软件实现的故障注入系统有一个固有的问题:不能在从执行命令的时刻(t1)到所述注入系统能够注入故障的时刻(t2)期间注入故障。换句话说,不能在[t1,t2]期间注入故障。
当前的SWIFI系统通常使用一种方法,所述方法依赖于执行当命令CMD时触发的某种类型的ECA(事件-条件-动作)模型:
ON EVENT Ei CONDITION Cj ACTION Ak
响应于命令CMD,测试中的目标软件系统生成事件Ei、Ej……Ek。使用数据收集模块识别事件。使用消息传递系统传输所述事件。使用实时处理模块处理所述事件,以检测感兴趣的事件。当识别出感兴趣的事件Ei、Ej……Ek时,并满足条件Cj时,故障注入管理器执行动作Ak,并将故障注入目标软件系统。
这种方法的问题在于,由于生成、识别、传输、处理和标识事件以及注入故障涉及多个系统,因此在命令CMD的执行、事件Ei、Ej……Ek的生成和将故障注入到测试中的目标系统之间存在注入延迟。此注入延迟是一个盲点,在此期间无法注入故障
对于传统的基于事件的SWIFI系统,测试人员通常会编写一组类似ECA的规则,所述SWIFI系统会持续评估所述规则,以决定注入故障的时间。假设已指定以下反应性ECA规则:
ON EVENT Ek CONDITION SEQ(Ei,Ej……Ek-1)ACTION INJECT Ft
SEQ是决定是否要执行ECA规则的条件。如果评估为是(True),则执行下面的动作,否则跳过。当新的事件生成时,重新评估。其由函数处理,所述函数仅在所述测试中的目标系统生成事件序列ES=(Ei……Ek-1)时才返回是(True)。除了评估事件顺序的SEQ外,还可以指定其它类型的函数。INJECT Ft,F={F1……Fm}是一组可执行的动作。在SWIFI系统中,所述动作是注入目标系统的故障。
虽然基于事件的故障注入方法在集中式系统中运行良好,但在应用于测试大规模分布式系统时存在严重的局限性。基于事件的方法将用于说明这种类型的故障注入系统中盲点是如何出现的。
基于事件的方法包括以下步骤:数据收集、消息传递、实时处理和故障注入。
在数据收集期间,使用数据收集模块等在区间(t1-t2]内识别事件。这个子系统通常是所述测试中的目标系统的一部分。通常,这个子系统也会将事件构造成更高的层级,例如跟踪。
在消息传递期间,使用消息传递系统等传输事件。数据收集模块在区间(t2-t3]内将事件发送到所述消息传递系统。这需要将大量的日志或跟踪数据从许多不同的来源转移到一个集中的数据存储区。可以使用多种基于消息队列的传输机制。
在实时处理期间,使用实时处理引擎等处理事件,以检测感兴趣的事件和模式。模式匹配技术用于处理事件并检测区间(t3-t4]中特定事件序列或模式的存在。
在故障注入期间,识别感兴趣的事件(Ei、Ej……Ek),例如,故障注入管理器做出动作并将故障注入到所述测试中的目标系统中。所述动作在区间(t4-t5]内进行。管理器进行两项主要活动。查找要注入的故障,并在所述目标系统中注入故障Ft。所述故障被认为是在t5时注入的。
因此,所述ECA规则ON EVENT Ek CONDITION SEQ(Ei,Ej……Ek-1)ACTION INJECTFt的注入延迟为区间t5-t1。这种注入延迟是基于事件的方法构建SWIFI系统以测试分布式系统的一个盲点。
发明内容
鉴于上述问题和缺点,本发明的目的是改进软件实现的故障注入。因此,本发明的目的是提供一种故障注入系统和故障注入方法,与本领域已知的相应解决方案相比,所述系统和方法提供的性能更佳。
本发明的目的是通过所附独立权利要求书中提供的解决方案实现的。从属权利要求中进一步定义了本发明的有利实现方式。
具体地,本发明提出了一种用于消除盲点的持续时间的解决方案。通过分析过去事件生成的时刻,间接地建立了预测时间模型。预测模型是一种代理,其预测分布式系统的状态和转换发生时的时刻。
本发明第一方面提供一种用于软件系统的故障注入系统,所述软件系统包括可执行命令、所述命令生成的事件和表示两个事件之间的状态机的状态的状态。
故障注入规则数据库用于提供用于注入选定故障的规则,所述规则在选定命令、发生故障注入的选定状态和发生故障注入的条件出现时提供故障注入决策。
估计器模块用于根据预测时间模型确定与执行所述选定命令相关的所述选定状态出现时间,并提供状态的持续时间作为故障注入的时间区间。
注入器模块用于执行所述选定命令并在所述时间区间内注入所述选定故障。
本发明提供一种解决方案,用于精确地识别软件系统处于哪种状态时注入故障,并消除状态识别与故障注入之间的延迟问题。本发明对分布式软件系统特别有益。本发明可以使用分布式跟踪技术和时间估计,以在估计分布式系统处于特定状态时注入故障。分布式跟踪技术的使用支持构建分布式系统操作的状态图,并精确地识别在哪些状态应注入故障。时间估计可以支持对每个状态的开始时刻和结束时刻进行建模。
本发明提供了一种规避注入延迟并实现在盲点注入故障的解决方案。所述方案可以提供事件切片和动态事件切片两种技术,它们使用点估计值、置信区间、事件相关性和分布式跟踪来估计系统或分布式系统处于特定状态和应注入故障之间的时间区间。
本发明提供了一种在注入故障时减少盲点持续时间的解决方案。通过分析过去事件生成的时刻,间接地建立了预测时间模型。预测模型是一种代理,预测分布式系统的状态和转换发生时的瞬时时间。本发明不是实时生成、识别、传输、处理和标识事件以确定注入故障的时间,而是使用大量过去事件和时间信息来构建预测时间模型,所述预测时间模型用于估计应在所述目标系统中注入故障的时间。所述时间模型提供了关于分布式系统状态发生时间、状态的持续时间以及转换启用时间的统计信息。从本描述的上下文中可以看到,所述预测时间模型和某些时间、定时或时间区间与一个或多个命令的执行相关。
本发明具有边缘注入延迟的优点。所提出的时间驱动的故障注入是比纯粹基于事件的故障注入更佳的解决方案,这是因为所述时间驱动的故障注入不会受注入延迟的影响。另一优点是精确的故障注入。对状态进行识别,可选地使用分布式跟踪来获取分布式系统的行为,使得能够使用状态机来实现故障的精确注入。另一优点是注入的均匀可变性。可选地使用估计点和置信区间使得能够使用离散随机变量在选定状态内注入故障。另一优点是观察者效应。几种基于事件的方法使测试中的分布式系统变慢甚至暂停,以使故障注入模块在特定状态下注入故障。这些策略解决了注入延迟问题。所提出的时间驱动的故障注入不需要人为地改变测试中的系统的时间行为。
与纯粹基于事件的方法相比,因为本发明不需要生成、识别、传输、处理和标识事件,所以能够显著降低注入延迟。
在第一方面的一种实现方式中,所述规则包括以下公式:FOR COMMANDc ON STATES(EVENTm,EVENTn)CONDITION SEQ(EVENTi,EVENTj……EVENTk)ACTION INJECT FAULTt。这个公式允许简单地实现基于状态的注入规则。可以使用单个条件来代替条件序列(CONDITION SEQ)。可以注入单个故障和各种类型的故障。
在第一方面的另一实现方式中,自举模块用于执行命令,以确定通过所执行的命令生成的事件,并存储命令与事件之间的关系。这些关系可以用作基于时间估计的基础。为了生成所述关系,所述自举模块可以在所述软件系统的正常操作期间以训练模式操作,或者所述自举模块可以确定和存储这些关系。
在第一方面的一种实现方式中,所述自举模块用于多次执行命令。然后,统计方法可以用来在事件的发生或关系中求平均值。例如,可以计算从命令开始到事件结束的平均时间。
在第一方面的另一实现方式中,所述自举模块用于在执行所述命令时生成跟踪ID,并根据事件的匹配跟踪ID确定通过所执行的命令生成的事件。这种跟踪ID或跟踪机制允许(特别是对于分布式系统)对一个或多个特定命令生成的进程和事件进行精确映射。
在第一方面的一种实现方式中,所述估计器模块用于提供预测时间模型,所述状态的出现和持续时间是根据所述预测时间模型预测的,其中所述状态在第一事件耗时之后发生,所述状态的持续时间从所述第一事件之后开始到第二事件之前结束,两个事件均源自同一命令,所述耗时根据从所述命令执行开始到所述事件结束的时间区间来确定。预测时间模型的提供实现了基于状态的简单和可靠的模型。
在第一方面的另一实现方式中,所述估计器模块用于通过对事件进行切片以确定同一类型的事件,从而提供所述事件的耗时。通过对事件进行切片,可以识别出同一类型的事件,并对其进行统计分析。
在第一方面的一种实现方式中,所述估计器模块用于通过对所述事件的耗时求平均值来提供所述事件的耗时的时间点估计。通过对相同事件的经过的时间求平均值,提高了预测的准确性。
在第一方面的另一实现方式中,所述估计器模块用于为所述事件的耗时的时间点估计提供置信区间。提供置信区间可以降低预测误差。
在第一方面的一种实现方式中,所述注入器模块用于在所述时间区间中的随机时间点注入所述选定故障。通过将故障注入随机化,可以在时间区间内测试系统更多的可能状态。或者,可以使用已定义模式或分布来在所述时间区间内注入所述选定故障。这可以允许对其它更少见的情况或状态进行强化测试。
在第一方面的另一实现方式中,所述故障注入系统用于将故障注入到分布式软件系统。由于盲点问题对于分布式软件系统来说更为严重,因此本发明特别适用于这样的系统。
在第一方面的一种实现方式中,所述注入器模块用于检查所述选定故障是否在所述选定状态期间注入,如果所述选定故障没有在所述选定状态期间注入,则所述注入器模块还用于从所述估计器模块接收另一时间区间、再次执行所述选定命令,以及在所述另一时间区间内注入所述选定故障。只有在预测无效的情况下,才检查在所述选定状态期间是否已注入所述选定故障,以便在发生错误时可以重复注入。当时间估计显示不正确时,可以中止相关的故障注入测试,并且进行新的测试。这可以重复,直到某一估计归类为有效。
本发明第二方面提供一种将故障注入软件系统的方法,其中所述软件系统包括可执行命令、所述命令生成的事件和表示两个事件之间的状态机的状态的状态。所述方法包括:提供用于注入选定故障的规则,其中所述规则在选定命令、发生故障注入的选定状态和发生故障注入的条件出现时提供故障注入决策;根据预测时间模型确定所述选定状态出现时间,并提供状态的持续时间作为故障注入的时间区间;执行所述选定命令,并在所述时间区间内注入所述选定故障。上述相同的优点和修改也适用。
在第二方面的一种实现方式中,所述方法包括通过预测所述状态的出现和持续时间来提供所述预测时间模型,其中所述状态在第一事件耗时之后出现,所述状态的持续时间从所述第一事件之后开始到第二事件之前结束,两个事件均源自同一命令,耗时定义为从所述命令执行开始到所述事件结束的时间区间。预测时间模型的提供实现了基于状态的简单和可靠的模型。
本发明第三方面提供一种具有程序代码的计算机程序,当所述计算机程序在计算机或如上所述的故障注入系统上运行时,执行如上所述的方法。上述相同的优点和修改也适用。
应注意,本申请中所描述的所有设备、元件、单元和构件都可以在软件或硬件元件或其任何种类的组合中实现。本申请中描述的各种实体执行的所有步骤和所描述的将由各种实体执行的功能旨在表明各个实体适于或用于执行各自的步骤和功能。虽然在以下具体实施例的描述中,由外部实体执行的特定功能或步骤没有在执行特定步骤或功能的该实体的具体元件的描述中反映,但是技术人员应清楚的是这些方法和功能可以在各自的硬件或软件元件或其任意组合中实现。
附图说明
结合所附附图,下面具体实施例的描述将阐述上述本发明的各方面及其实现方式,其中:
图1示出了故障注入系统的架构的示例。
图2示出了分布式软件系统的示例。
图3示出了故障注入系统的架构的示例。
图4示出了故障注入的训练阶段的流程图。
图5示出了故障注入的操作阶段的流程图。
具体实施方式
图1示出了用于软件系统110的故障注入系统100。所述软件系统100包括可执行命令CMD、命令CMD生成的事件E和表示两个事件E之间的状态机的状态的状态S。
所述故障注入系统100包括故障注入规则数据库120,所述故障注入规则数据库120用于提供用于注入选定故障的规则,所述规则在选定命令、发生故障注入的选定状态和发生故障注入的条件出现时提供故障注入决策。
所述故障注入系统100还包括估计器模块130。根据预测时间模型,所述估计器模块130用于确定与执行所述选定命令相关的所述选定状态出现时间,并提供状态的持续时间作为故障注入的时间区间。
所述故障注入系统100还包括注入器模块140,所述注入器模块140用于执行所述选定命令并在所述时间区间内将所述选定故障注入所述软件系统100。
图1中示出了故障注入系统100的第一实施例。如图1中所描述的第一实施例的更详细的可选实现方式的进一步的实施例在以下附图中示出。
图2示出了分布式系统(distributed system,DS)200的典型架构。所述分布式系统200是一种软件系统,其中服务器210位于网络计算机220上。例如,所述服务器210是为其它程序提供功能的计算机程序。所述服务器210通过传递消息进行通信,因此需要使用HTTP、类似RPC的连接器、套接字和消息队列等。
本发明特别适用于使用面向服务的架构(service-oriented architecture,SOA)或遵循微服务模式实现的大规模复杂的分布式系统200,面向服务的架构和微服务模式是连接用于提供服务的系统的方法。这些系统是复杂的分布式系统,其中向最终用户提供服务需要在多个服务之间进行通信和交互。每种服务都提供特定和有价值的软件功能。最终用户230可直接调用最终用户服务。服务配置是指最终用户请求的某种服务的实现。其可以表示为有限状态机,所述状态机标识所有涉及的服务及其在配置期间的逻辑/时间依赖性。
下文中将解释整个描述中使用的一些术语。
软件实现的故障注入(Software Implemented Fault Injection,SWIFI)。SWIFI系统能够通过软件执行故障注入,并将故障注入运行中的软件系统。这种方法称为运行时注入。故障可以通过多种方法进行注入,并且故障的触发器可以通过多种方式实现,例如基于时间的、基于事件的和基于中断的触发器。
注入延迟。注入延迟是导致识别分布式系统状态的事件的生成与实际故障(可以)注入的时刻之间的时间。注入延迟是一个盲点,在此期间无法向测试中的系统注入故障。
事件。现代软件系统在处理用户请求时,生成事件来具体化它们的内部状态。例如,每当用户执行命令请求从数据库中插入、更新或删除记录时,或者观察中的分布式软件系统通过RPC(远程过程调用)技术调用外部服务器时,所述分布式软件系统都会产生一个或多个事件。
E={E1……En}是一组事件,该组事件标识分布式系统在操作期间达到的重要阶段点。事件Ei获取两个重要的维度:时间维度和空间维度。
一方面,其获取标记分布式系统重要行为或行为变化的时刻。另一方面,所述事件Ei也获取执行中的代码,这标记了一个阶段点。事件隐含地与三个重要概念相关。其标记了状态的开始、状态的结束,且其与转换相关,所述转换表示从一个状态到另一种状态的变化。在连续事件之间,假定系统没有发生任何变化。为简单起见,初始状态的时刻通常设置为0,并标记为所述分布式系统的第一状态的开始。
状态。状态S(CMDc,Ei,Ej)表示作为对命令CMDc的执行的响应而执行的、并且由事件Ei和Ej定界的连续指令段。所述状态从Ei生成后开始,到Ej生成前结束。在生成事件Ej前,分布式系统保持在状态S(CMDc,Ei,Ej),事件Ej的生成表示状态已改变。事件不是状态的一部分,而是表示状态机的转换。
事件序列。事件序列ES=(E0,E1……Ei)是事件的枚举集合,所述集合中允许事件重复。顺序很重要,并且同一事件可以在序列中的不同位置出现多次。序列(E0,E1……Ei-1,Ei)表示事件Ei-1在事件Ei之前生成,事件E1在E事件E0之后生成。事件序列是在用户执行命令时生成的。
命令。命令CMDc是用户发出的、请求分布式系统执行某项功能或服务的指令。例如,命令行接口可以使用命令CMDc=‘cloud_client server create VM1’创建虚拟机VM1。执行命令会触发生成一系列事件。事件、状态、事件序列和命令之间的关系可以表示为(箭头‘->’表示生成):
CMDc->S1(CMDc,E0,E1),S2(CMDc,E1,E2),S3(CMDc,E2,E3),S4(CMDc,E3,E4)
图3示出了故障注入系统300的架构的示例。故障注入系统300包括以下模块:首先,参考图2解释了所述故障注入系统300的结构。下面结合图3和图4以及图2解释所述故障注入系统300的操作。
自举模块310负责自举,自举是指利用命令CMDc和事件之间的关系填充存储库模块320的自启动过程。例如,这样的关系具有以下格式:
<R02,CMD01->(E1,E3,E5)>
所述存储库模块320是数据库,其存储自举过程生成的关系。所述存储库模块320提供接口,所述接口能够查询和检索哪些事件Ei是通过执行特定命令CMD生成的。所述存储库模块320从所述自举模块310接收已执行的命令,以便可以将事件与命令相关。
估计器模块330从存储库模块320检索关于事件的信息,以估计状态和转换的发生时间。
故障数据库340是数据库,包括可用于注入的故障的规范。
故障注入(fault injection,FI)规则数据库350存储形式为FOR CMDc ON STATES(Ek,Ek+1)CONDITION SEQ(Ei,Ej……Ek-1)ACTION INJECT Ft的规则。当执行命令时,此模块350将识别哪些规则指定了事件序列,所述事件序列是所述命令生成的事件的子序列。
所述注入器模块360负责执行命令CMDc,并且在预定时间t注入故障Ft。
图4示出了故障注入的训练阶段400的流程图。系统由所述自举模块310自举。所述自举利用命令CMD和事件(Ei、Ej……Ek)之间的关系填充所述存储库模块320。例如,利用关系CMD01->(E1,E3,E5)。所述自举模块310接收命令列表CMD_LIST。执行所述CMD_LIST中的每一个命令CMD,以确定哪些事件Ej是测试中的目标系统生成的。然后使用故障注入对每一个命令进行测试。
使用以下过程构建关系。在第一步骤410中,执行来自命令列表CMD_LIST的命令CMD01。在第二步骤420中,收集通过执行命令CMD01生成的事件(E1、E3、E5)。在第三步骤430中,建立命令与通过执行此命令生成的事件之间的关系,例如CMD01->(E1,E3,E5)。在第四步骤440中,所述关系作为<R02,CMD01->(E1,E3,E5)>存储在所述存储库模块320中。对命令列表中的每一个命令重复这个过程。
所述存储库模块320通常存储数千个关系Rr。建立命令CMDc与通过执行CMDc产生的事件(Ei、Ej……Ek)之间的关系对本发明很重要,并且可以采用分布式跟踪领域的特殊技术。在复杂的系统中,因为事件依赖于执行的上下文,所以同一类型的事件Ei可以在不同的时刻生成。例如,两个命令CMD1和CMD2可以在时间t1和t2生成相同的事件Ei,其中t1和t2不同。
此外,在多租户系统中,作为后台操作(例如缓存同步和存储复制)的一部分,会不断生成数百个事件。通常无法知道事件Ei属于命令CMDc、命令CMDc+1还是属于后台进程。或者,当并行执行命令时,需要确定事件属于哪个上下文。
本发明可以通过使用跟踪ID(trace ID,TID)作为通过执行命令生成的事件的上下文来处理这些问题。为了将TID用作上下文,需要在事件、命令和跟踪ID之间建立相关性。可以使用分布式跟踪建立这种相关性。
TID过程可以用通用术语进行如下描述。执行命令CMDc时生成TID。将所述TID传播到处理命令配置的所有进程/服务。进程/服务生成的事件具有相应的包含TID。将关系存储在所述存储库中,其中所述TID为<Rr,TID,CMDc->(Ei,Ej……Ek)>。为简单起见,在此描述中,省略所述TID,将关系表示为为<Rr,CMDc->(Ei,Ej……Ek)>。通过所述TID过程,所述存储库模块320可以从所述自举模块310接收已执行的命令和/或TID,以便可以将事件与命令相关。或者,所述存储库模块320可以通过所述TID从事件中提取相应的命令。
为了正确自举所述SWIFI,可能会多次执行每个命令。同一命令的大量样本确保为事件构建良好的估计器。
在此类训练阶段300之后,所述存储库模块320存储关系Rr。所述自举模块310还用于在正常操作时执行命令。如同在所述训练阶段300期间一样,测试中的目标系统也会对命令做出反应,并会向所述存储库模块320提供与所述命令相关的事件以建立关系。
图5示出了故障注入的操作阶段的流程图500。所述操作阶段500包括建立阶段510和执行阶段520。
在所述操作阶段500的建立阶段510期间,用户(例如质量保证(QualityAssurance,QA)工程师)根据以下步骤构建故障注入规则。
在第一步骤530中,从所述存储库模块320中选择待测试的命令CMDc。在第二步骤540中,选择其间将注入故障的状态S(CMDc,Em,En)。在第三步骤550中,选择将发生注入的条件SEQ(Ei,Ej……Ek)。在第四步骤560中,选择在所述命令CMDc的测试期间注入的故障Ft。
在步骤570中,使用所述信息构建所述故障注入规则数据库模块350管理的故障注入规则。此模块350存储以下形式的规则:
FIRu:FOR CMDc ON STATE S(Em,En)CONDITION SEQ(Ei,Ej……Ek)ACTIONINJECT Ft
在所述执行阶段520期间,QA工程师在第一步骤480中从故障注入规则数据库模块350中选择要应用于命令CMDc的故障注入规则FIRu。所述注入器模块360解析FIRu规则并与所述估计器模块330联系,以在第二步骤590中确定状态S(CMDc,Em,En)出现时间,从而确定开始执行命令CMDc后应注入故障Ft的时间。所述估计器模块330使用所述存储库模块320来检索关于事件的信息(例如定时),从而估计状态和转换发生的时间。
所述估计器模块320基于所述存储库模块320中的所有可用关系Rr估计测试中的目标系统将处于状态S(CMDc,Em,En)的时间区间为[t1,t2]。在步骤600中,所述注入器模块360执行命令CMDc。在步骤610中,所述注入器模块360在[t1,t2]中的时间t注入故障Ft。在步骤620中,执行完所述命令后,所述注入器模块360通过识别所述命令的开始时间和结束时间来检查在状态S(CMDc,Em,En)中是否确实注入了故障。在步骤630中,如果在状态S(CMDc,Em,En)中没有注入故障,则时间驱动的SWIFI系统忽略测试(因为估计不精确),并且重新执行执行阶段,直到给出有效的估计。
所提出的时间驱动的SWIFI系统300中的估计器模块630是重要组件之一,因为所述估计器模块630负责预测所述分布式系统达到特定状态的时间以及状态的持续时间。此时间信息用于故障注入。使用事件Em和En的分布的代表点(例如,平均值)来估计与状态S(Em,En)相关的时间区间。实际上,大多数事件的加速或延迟发生在平均持续时间附近,而只有少数离群值能在离期望时刻一定距离处找到。因此,在正常条件下运行的系统中,高斯分布噪声是一种用于估计的合理分布。
点估计值和置信区间可用于估计事件和状态的发生时间。为了估计状态S(Em,En)的发生时间及其持续时间[tm,tn],事件切片技术分析所述自举模块310生成的并存储在所述存储库模块320中的所有事件。这种技术会将所有使用事件类型存储的事件作为切片器进行切片,因此这种技术被称为事件切片。分析的目的是建立一个统计模型来估计同一类型事件的发生时间。
前提条件和定义如下:
每个事件Ei都有函数TY(Ei)返回的类型。属于同一类型的事件表示它们是类似的,并且可用于定义状态。例如,通过相同的模块、方法和代码指令生成但由IP不同的服务器生成的两个事件可以被认为属于同一类型,并且以相同的方式来定义状态的开始或结束。为了简化表示,具有相同索引的事件属于同一类型,即如果TY(Ei)=TY(Ej),则i=j。
每个事件都有一个经过的时间ET(CMDc,Ei),所述经过的时间是从执行生成所述事件的命令CMDc时开始测算的。
状态S(Ei,Ej)具有状态时间区间SIT(CMDc,Ei,Ej),其中SIT(CMDc,Ei,Ej)=[ET(CMDc,Ei),ET(CMDc,Ej)]。
为了估计状态S(Em,En)发生的时间,可以计算事件Em和En的点估计值。函数PTE(CMDc,Ei)提供命令CMDc下的Ei类型的事件的耗时的时间点估计(point timeestimation,PTE)。所述PTE计算所述存储库模块320中存储的通过CMDc生成的所有Ei类型的事件的平均值(算术平均)。例如,PTE(CMD01,E2)提供命令CMD01下的E2类型的事件耗时的时间估计,其例如通过(ET(CMD01_1,E2)+ET(CMD01_2,E2)+ET(CMD01_3,E2))/3进行计算,其中,命令CMD01_1、CMD01_2和CMD01_3是在不同的时间点执行的相同的命令CMD01。
点估计值给出了关于状态的定时信息的近似值,但是估计值容易出错。事件的置信区间是高于某一点估计值且低于某一点估计值的值范围,其在某个预定的置信水平上获取真实估计值。例如,获取点估计值的真实发生和持续时间以及相应的置信区间的概率为95%。置信水平越高,置信区间越小。置信区间的计算方法是先进行点估计,然后加上和减去误差幅度而形成一个范围。所述误差幅度取决于置信水平、数据的分布和事件样本的大小。
对于命令CMDc和状态S(CMDc,Ei,Ej)下的一组(n个)事件Ei,其中它们的时刻的标准偏差为σ,z为z临界值,则估计的SIT(CMDc,Ei,Ej)的置信区间计算如下:
[ts,te]=[ET(CMDc,Ei)-z*(σ/√n),ET(CMDc,Ej)+z*(σ/√n)],其中
ts为所述状态的开始时间
te为所述状态的结束时间
z临界值(z)是偏离正态分布的平均值的标准偏差数,用于获取与期望置信水平相关的数据的比例。对于95%的置信区间,z值为1.96。
对于测试中的命令CMDc以及对于QA工程师选择的状态S(CMDc,Ei,Ej),所述估计器模块330将估计的SIT(CMDc,Ei,Ej)的置信区间[ts,te]提供给所述注入器模块360。所述注入器模块360在时间t执行命令CMDc并注入故障Ff,其中t是从区间[ts,te]中随机抽取的点。
事件切片估计技术在稳定系统中运行良好,因为所述系统在由已知的置信区间统计地限制的时刻生成事件。
分布式系统的性能由于资源耗尽、碎片化和错误积累而逐渐下降,因此需要估计方法来解决事件发生的无规律性,以应对软件老化。例如,当分布式系统的物理节点的CPU使用率增加时,执行命令CMD生成的跟踪事件将在随后生成且耗时增加。
持续重新计算事件的时间估计,以反映试验中的分布式系统中最近的行为变化,提高了估计的准确性,从而也提高了与预定义状态中的故障注入相关的概率。
自适应事件切片估计使用时间序列平滑法来为事件提供更准确的估计,因为所述时间序列平滑法可以降低事件发生的瞬间变化。通过分析一段时间内的历史事件,可以更好地理解过去行为的模式,并更好地预测未来事件的发生时间。在执行测试实验时,所生成的事件也存储在所述存储库中。这些新事件用于更新事件的当前时间估计值。
根据与事件相关的时间序列,所述估计器模块330可以使用多种指数平滑技术。
当过去的事件没有显示趋势或季节变化时,使用单指数平滑法。
当事件显示趋势时,使用双指数平滑法。
当趋势和季节效应存在时,使用三指数平滑法(也称为Holt-Winters预测模型)。
针对单指数平滑法提出了以下过程。为了预测在命令CMDc和状态S(CMDc,Ei,Ej)下注入故障Ft的时间区间,所述估计器模块330从所述存储库模块320中选择Ei和Ej类型的所有过去事件Eik和Ejl,所述过去事件是通过执行命令CMDc创建的跟踪的一部分。索引k和l表示事件的逻辑顺序。在使用单指数平滑法时,应用以下公式来预测可注入故障的时间区间:
PTE(CMDc,Eik)=α*ET(CMDc,Eik-1)+(1–α)*ET(CMDc,Eik)
参数α是平滑常数(其值在0到1之间),并且可以使用莱文贝格-马夸特算法进行选择。这个参数能够使用递减的权重在时间上倒退一些距离。
移动平均值需要一个称为窗口宽度的窗口大小N。这定义了用于计算移动平均值的原始观察值的数量。例如,在时间t,具有相同权重的“长度3的中心/左移平均值”是在时间t3、t2和t1具有N个值的窗口N的平均值。移动平均中的“移动”是指将窗口宽度定义的窗口沿时间序列滑动,以计算新序列的平均值。这个平均值用于预测下一周期故障注入实验的时间序列值。移动平均对于在N次执行之间随着时间的推移保持相对稳定的分布式系统非常有用。
尽管已经结合作为实例的不同实施例以及实现方式对本发明进行了描述。但是,本领域技术人员和实践本发明的人员可以理解,通过研究附图、本公开和独立权利要求,可以实现其它变型。在权利要求和说明书中,词语“包括”不排除其它元件或步骤,且“一个”不排除多个。单个元件或其它单元可满足权利要求书中所叙述的若干实体或项目的功能。在互不相同的从属权利要求中列举某些措施并不表示这些措施的组合不能用于有益的实现方式。

Claims (16)

1.一种用于软件系统(100)的故障注入系统,其特征在于,所述软件系统包括可执行命令(command,CMD)、所述命令(command,CMD)生成的事件(event,E)和表示两个事件(event,E)之间的状态机的状态的状态(state,S),
所述故障注入系统包括:
故障注入规则数据库(120、350),所述故障注入规则数据库(120、350)用于提供用于注入选定故障的规则,所述规则在选定命令、发生故障注入的选定状态和发生故障注入的条件出现时提供故障注入决策。
估计器模块(130、330),所述估计器模块(130、330)用于根据预测时间模型确定与执行所述选定命令相关的所述选定状态出现时间,并提供状态的持续时间作为故障注入的时间区间;
注入器模块(140、360),所述注入器模块(140、360)用于执行所述选定命令并在所述时间区间内注入所述选定故障。
2.根据权利要求1所述的故障注入系统,其特征在于,
所述规则包括以下公式:FOR COMMANDc ON STATE S(EVENTm,EVENTn)CONDITION SEQ(EVENTi,EVENTj……EVENTk)ACTION INJECT FAULTt。
3.根据权利要求1或2所述的故障注入系统,其特征在于,还包括:
自举(bootstrap)模块(310),所述自举模块(310)用于执行命令,以确定通过所执行的命令生成的事件,并存储命令与事件之间的关系。
4.根据权利要求3所述的故障注入系统,其特征在于,
所述自举模块(310)用于执行所述命令多次。
5.根据权利要求3或4所述的故障注入系统,其特征在于,
所述自举模块(310)用于在执行所述命令时生成跟踪ID,并根据事件的匹配跟踪ID确定通过所执行的命令生成的事件。
6.根据权利要求1至5任一项所述的故障注入系统,其特征在于,
所述估计器模块(330)用于提供预测所述状态的出现和持续时间的预测时间模型,其中所述状态在第一事件的耗时之后发生,所述状态的持续时间从所述第一事件之后开始到第二事件之前结束,两个事件均源自同一命令,所述耗时基于从所述命令执行开始到所述事件结束的时间区间确定。
7.根据权利要求6所述的故障注入系统,其特征在于,
所述估计器模块(330)用于通过对事件进行切片以确定同一类型的事件,从而提供所述事件的耗时。
8.根据权利要求6或7所述的故障注入系统,其特征在于,
所述估计器模块(330)用于通过对所述事件的耗时求平均值来提供所述事件的耗时的时间点估计。
9.根据权利要求8所述的故障注入系统,其特征在于,
所述估计器模块(330)用于为所述事件的耗时的时间点估计提供置信区间。
10.根据权利要求6至9任一项所述的故障注入系统,其特征在于,
所述估计器模块(330)用于通过对所述事件类型的过去事件的耗时进行指数时间平滑处理,以提供所述事件耗时。
11.根据权利要求1至10任一项所述的故障注入系统,其特征在于,
所述注入器模块(360)用于在所述时间区间中的随机的时间点注入所述选定故障。
12.根据权利要求1至11任一项所述的故障注入系统,其特征在于,
所述故障注入系统(300)用于向分布式软件系统(200)注入故障。
13.根据前述权利要求中的一项所述的故障注入系统,其特征在于,
所述注入器模块(360)用于检查所述选定故障是否在所述选定状态期间注入,如果所述选定故障没有在所述选定状态期间注入,则所述注入器模块(360)还用于从所述估计器模块接收另一时间区间、再次执行所述选定命令,以及在所述另一时间区间内注入所述选定故障。
14.一种向软件系统(100)注入故障的方法,其特征在于,所述软件系统(100)包括可执行命令、所述命令生成的事件和表示两个事件之间的状态机的状态的状态,所述方法包括:
提供(580)用于注入选定故障的规则,其中所述规则在选定命令、发生故障注入的选定状态和发生故障注入的条件出现时提供故障注入决策。
根据预测时间模型确定(590)所述选定状态的出现时间,并提供状态的持续时间作为故障注入的时间区间;以及
执行(600)所述选定命令,并在所述时间区间内注入(610)所述选定故障。
15.根据权利要求14所述的方法,其特征在于,包括:
通过预测所述状态的出现和持续时间来提供所述预测时间模型,
其中所述状态在第一事件的耗时之后出现,所述状态的持续时间从所述第一事件之后开始到第二事件之前结束,两个事件均源自同一命令,所述耗时基于从所述命令执行开始到所述事件结束的时间区间确定。
16.一种具有程序代码的计算机程序,其特征在于,
当所述计算机程序在计算机或根据权利要求1至13任一项所述的故障注入系统(300)上运行时,用于执行根据权利要求14或15所述的方法。
CN201780097559.2A 2017-12-08 2017-12-08 故障注入系统和故障注入方法 Active CN111448553B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/EP2017/082049 WO2019110121A1 (en) 2017-12-08 2017-12-08 Fault injection system and method of fault injection

Publications (2)

Publication Number Publication Date
CN111448553A true CN111448553A (zh) 2020-07-24
CN111448553B CN111448553B (zh) 2021-11-09

Family

ID=60813827

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201780097559.2A Active CN111448553B (zh) 2017-12-08 2017-12-08 故障注入系统和故障注入方法

Country Status (4)

Country Link
US (1) US11307947B2 (zh)
EP (1) EP3714368B1 (zh)
CN (1) CN111448553B (zh)
WO (1) WO2019110121A1 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113157562A (zh) * 2021-03-16 2021-07-23 王轶昆 一种基于扩展有限状态机模型的测试用例生成方法及平台
CN114880157A (zh) * 2022-07-08 2022-08-09 中电金信软件有限公司 一种故障注入方法及装置

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11775405B2 (en) * 2020-03-20 2023-10-03 UncommonX Inc. Generation of an issue response evaluation regarding a system aspect of a system
WO2022033672A1 (en) * 2020-08-12 2022-02-17 Huawei Technologies Co., Ltd. Apparatus and method for injecting a fault into a distributed system
US11567855B1 (en) * 2020-09-09 2023-01-31 Two Six Labs, LLC Automated fault injection testing
CN112714015B (zh) * 2020-12-23 2023-08-22 上海科梁信息科技股份有限公司 通信数据故障注入方法及其系统、通信设备和存储介质
TWI812042B (zh) * 2021-03-30 2023-08-11 新唐科技股份有限公司 安全系統
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
CN116932366A (zh) * 2022-03-31 2023-10-24 长鑫存储技术有限公司 命令序列生成方法、测试方法、设备以及存储介质

Citations (5)

* Cited by examiner, † Cited by third party
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)
CN102760098A (zh) * 2012-06-13 2012-10-31 北京航空航天大学 面向bit软件测试的处理器故障注入方法及其模拟器
CN102768642A (zh) * 2012-06-25 2012-11-07 浪潮电子信息产业股份有限公司 一种基于源码分析的linux内核可靠性评测系统及其方法
CN103678129A (zh) * 2013-12-14 2014-03-26 中国航空工业集团公司第六三一研究所 一种基于时间触发的机电系统软件故障注入方法
US9628339B1 (en) * 2013-05-31 2017-04-18 Sandia Corporation Network testbed creation and validation

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7024592B1 (en) * 2000-08-07 2006-04-04 Cigital Method for reducing catastrophic failures in continuously operating software systems
US8756569B2 (en) * 2007-12-17 2014-06-17 International Business Machines Corporation Deterministic pseudo-random fault event recordation and injection tool
KR101269549B1 (ko) * 2009-05-08 2013-06-04 한국전자통신연구원 오류 주입을 이용한 소프트웨어 신뢰성 테스트 시스템 및 방법
US8863094B2 (en) * 2010-05-18 2014-10-14 International Business Machines Corporation Framework for a software error inject tool
US10235278B2 (en) * 2013-03-07 2019-03-19 International Business Machines Corporation Software testing using statistical error injection
EP2891981B1 (en) * 2014-01-06 2018-07-18 Fujitsu Limited Method and computing system allowing a method of injecting hardware faults into an executing application

Patent Citations (5)

* Cited by examiner, † Cited by third party
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)
CN102760098A (zh) * 2012-06-13 2012-10-31 北京航空航天大学 面向bit软件测试的处理器故障注入方法及其模拟器
CN102768642A (zh) * 2012-06-25 2012-11-07 浪潮电子信息产业股份有限公司 一种基于源码分析的linux内核可靠性评测系统及其方法
US9628339B1 (en) * 2013-05-31 2017-04-18 Sandia Corporation Network testbed creation and validation
CN103678129A (zh) * 2013-12-14 2014-03-26 中国航空工业集团公司第六三一研究所 一种基于时间触发的机电系统软件故障注入方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
郭姣姣: "随机故障注入结合神经网络法的机电系统可靠性计算方法", 《机械工程学报》 *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113157562A (zh) * 2021-03-16 2021-07-23 王轶昆 一种基于扩展有限状态机模型的测试用例生成方法及平台
CN114880157A (zh) * 2022-07-08 2022-08-09 中电金信软件有限公司 一种故障注入方法及装置
CN114880157B (zh) * 2022-07-08 2022-10-14 中电金信软件有限公司 一种故障注入方法及装置

Also Published As

Publication number Publication date
EP3714368A1 (en) 2020-09-30
WO2019110121A1 (en) 2019-06-13
US11307947B2 (en) 2022-04-19
US20200301798A1 (en) 2020-09-24
CN111448553B (zh) 2021-11-09
EP3714368B1 (en) 2021-09-15

Similar Documents

Publication Publication Date Title
CN111448553B (zh) 故障注入系统和故障注入方法
Dohi et al. Statistical non-parametric algorithms to estimate the optimal software rejuvenation schedule
Alonso et al. Adaptive on-line software aging prediction based on machine learning
US7453910B1 (en) Synchronization of independent clocks
US10282279B2 (en) System and method for diagnosing information technology systems in multiple virtual parallel universes
Peiris et al. Pad: Performance anomaly detection in multi-server distributed systems
US20120144236A1 (en) System and method for diagnosing information technology systems in multiple virtual parallel universes
US20100131952A1 (en) Assistance In Performing Action Responsive To Detected Event
CN109213684B (zh) 基于OpenMP线程心跳检测技术的程序检测方法及应用
US10528456B2 (en) Determining idle testing periods
US20120174231A1 (en) Assessing System Performance Impact of Security Attacks
CN114113984A (zh) 基于混沌工程的故障演练方法、装置、终端设备及介质
Bhattacharyya et al. Online phase detection and characterization of cloud applications
Pasqualin et al. Online sharing-aware thread mapping in software transactional memory
US9819569B2 (en) Transport script generation based on a user interface script
Liu et al. An empirical study on underlying correlations between runtime performance deficiencies and “bad smells” of microservice systems
WO2022033672A1 (en) Apparatus and method for injecting a fault into a distributed system
Guerriero et al. A hybrid framework for web services reliability and performance assessment
Sonoda et al. Prediction of failure occurrence time based on system log message pattern learning
US10437710B2 (en) Code coverage testing utilizing test-to-file maps
CN111338609A (zh) 信息获取方法、装置、存储介质及终端
Fedotova et al. Upper bounds prediction of the execution time of programs running on arm cortex-a systems
US20240134775A1 (en) Method and device for finding causality between application instrumentation points
Duttagupta et al. Software bottleneck analysis during performance testing
Zheng et al. Sensitivity Analysis of Software Rejuvenation Model with Markov Regenerative Process

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
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20220223

Address after: 550025 Huawei cloud data center, jiaoxinggong Road, Qianzhong Avenue, Gui'an New District, Guiyang City, Guizhou Province

Patentee after: Huawei Cloud Computing Technology Co.,Ltd.

Address before: 518129 Bantian HUAWEI headquarters office building, Longgang District, Guangdong, Shenzhen

Patentee before: HUAWEI TECHNOLOGIES Co.,Ltd.