CN117194266A - 演练方法、装置、计算机设备及存储介质 - Google Patents
演练方法、装置、计算机设备及存储介质 Download PDFInfo
- Publication number
- CN117194266A CN117194266A CN202311237810.4A CN202311237810A CN117194266A CN 117194266 A CN117194266 A CN 117194266A CN 202311237810 A CN202311237810 A CN 202311237810A CN 117194266 A CN117194266 A CN 117194266A
- Authority
- CN
- China
- Prior art keywords
- fault
- thread
- drilling
- exercise
- target
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 53
- 238000003860 storage Methods 0.000 title claims abstract description 23
- 238000005553 drilling Methods 0.000 claims abstract description 246
- 238000012360 testing method Methods 0.000 claims abstract description 74
- 230000000739 chaotic effect Effects 0.000 claims abstract description 57
- 230000015654 memory Effects 0.000 claims description 39
- 238000012544 monitoring process Methods 0.000 claims description 6
- 238000012545 processing Methods 0.000 claims description 5
- 238000002360 preparation method Methods 0.000 description 9
- 239000000523 sample Substances 0.000 description 7
- 238000010586 diagram Methods 0.000 description 6
- 238000002347 injection Methods 0.000 description 5
- 239000007924 injection Substances 0.000 description 5
- 230000009286 beneficial effect Effects 0.000 description 4
- 238000004140 cleaning Methods 0.000 description 4
- 238000011161 development Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 239000000243 solution Substances 0.000 description 3
- 230000002159 abnormal effect Effects 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 206010000117 Abnormal behaviour Diseases 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Abstract
本发明涉及计算机技术领域,公开了一种演练方法、装置、计算机设备及存储介质,包括:获取第一演练场景的演练模式;当确认演练模式为混沌模式时,同时创建故障演练线程和用例演练线程;根据故障演练线程获取预配置的故障执行参数,并基于故障执行参数生成故障指令;根据用例演练线程获取待执行的测试用例;将故障指令和测试用例同步发送至目标云平台,以便目标云平台根据故障指令进行故障演练,并同时根据测试用例进行用例演练。本方法可以同时进行故障演练和用例演练,充分结合了用例测试和故障测试两者的优点,并且比任何一方都更具优势,能更加精准、高效地发现云平台中的脆弱点,提高云平台的鲁棒性。
Description
技术领域
本发明涉及计算机技术领域,具体涉及演练方法、装置、计算机设备及存储介质。
背景技术
随着信息技术的发展,云计算逐步成为业界的发展热点,在各个行业都发挥着重要作用,保证云平台的鲁棒性显得尤为重要,但是目前的云平台测试在故障方面和用例方面的测试都不够充分,在云平台的日常运行中尤其是在故障场景下依然存在较多问题。
发明内容
有鉴于此,本发明提供了一种演练方法、装置、计算机设备及存储介质,以解决云平台测试不够充分的问题。
第一方面,本发明提供了一种演练方法,包括:
获取第一演练场景的演练模式,其中,第一演练场景为所有的待演练场景中任一个演练场景;
当确认演练模式为混沌模式时,同时创建故障演练线程和用例演练线程;
根据故障演练线程获取预配置的故障执行参数,并基于故障执行参数生成故障指令;
根据用例演练线程获取待执行的测试用例;
将故障指令和测试用例同步发送至目标云平台,以便目标云平台根据故障指令进行故障演练,并同时根据测试用例进行用例演练。
通过上述方式,获取第一演练场景的演练模式,其中,第一演练场景为所有的待演练场景中任一个演练场景;当确认演练模式为混沌模式时,同时创建故障演练线程和用例演练线程;根据故障演练线程获取预配置的故障执行参数,并基于故障执行参数生成故障指令;根据用例演练线程获取待执行的测试用例;将故障指令和测试用例同步发送至目标云平台,以便目标云平台根据故障指令进行故障演练,并同时根据测试用例进行用例演练。混沌模式下,可以同时进行故障演练和用例演练,充分结合了用例测试和故障测试两者的优点,并且比任何一方都更具优势。与普通用例测试相比,混沌模式增加了故障注入,更有利于验证功能用例的健壮性、云平台的鲁棒性;与普通故障测试相比,混沌模式增加了用例执行,有利于验证特定故障对特定用例的影响,增加了测试的灵活性和准确性;另外,本方法的故障演练和用例演练均为自动化执行,能够减少人力成本,提高执行效率。更加精准地进行故障注入、制造混沌,有针对性地寻找云平台中不易发现的漏洞;并且以自动化的方式对难以通过人工分析一一排查验证的故障进行复现、分析、应对,能更加精准、高效地发现云平台中的脆弱点,提高云平台的鲁棒性。
在一种可选的实施方式中,故障演练线程和用例演练线程均包括同一个配对标识,方法还包括:
监控第一目标线程的状态,其中,第一目标线程包括故障演练线程或者用例演练线程;
当监控到第一目标线程的状态为停止演练时,根据配对标识在混沌模式创建的线程中查找第二目标线程,并停止第二目标线程的演练操作,其中,第二目标线程为混沌模式中创建的除第一目标线程以外的演练线程。
通过该方式,通过配对标识可以将属于同一演练场景的故障演练线程和用例演练线程建立关联,保证演练可以同步停止。
在一种可选的实施方式中,当确认用例演练模式为混沌模式时,同时创建故障演练线程和用例演练线程之后,方法还包括:
将配对标识、故障演练线程的第一线程信息,以及用例演练线程的第二线程信息存储至同一个全局变量中。
在一种可选的实施方式中,当监控到第一目标线程的状态为停止演练时,根据配对标识在混沌模式创建的线程中查找第二目标线程,并停止第二目标线程的演练操作,包括:
根据配对标识从全局变量中查找第二目标线程的线程信息;
根据线程信息确定第二目标线程;
向第二目标线程发送停止信号;
根据停止信号更新第二目标线程的执行状态为停止状态;
当监控到第二目标线程的执行状态为停止状态时,控制第二目标线程进入停止程序,停止程序用以控制第二目标进行停止演练操作,
其中,当第一目标线程包括用例演练线程时,第二目标线程包括与用例演练线程对应的故障演练线程;
或者,
当第一目标线程包括故障演练线程时,第二目标线程包括与故障演练线程对应的用例演练线程。
通过上述方式,可以通过向另一个线程发送停止信号来控制对应的线程进行停止程序,退出演练操作,保证两个线程的同步。
在一种可选的实施方式中,线程信息为线程对象引用地址。
在一种可选的实施方式中,故障执行参数包括故障场景和每一个故障场景分别对应的故障运行参数;根据故障演练线程获取预配置的故障执行参数,并基于故障执行参数生成故障指令,包括:
根据故障演练线程获取预配置的故障场景和每一个故障场景分别对应的故障场景参数;
根据第一故障场景和第一故障场景对应的故障场景参数生成第一故障指令,其中,第一故障场景为任一个故障场景。
在一种可选的实施方式中,用例演练模式包括故障演练模式、用例演练模式和混沌演练模式中的一种或多种,其中,
当确认演练模式为用例模式时,获取预配置的测试用例;
将测试用例发送至目标云平台,以便目标云平台根据测试用例进行用例演练;
或者,
当确认演练模式为故障模式时,获取预配置的故障执行参数,并基于故障执行参数生成故障指令;
将故障指令发送至目标云平台,以便目标云平台根据故障指令进行故障演练。
通过上述方式,还可以单独执行用例演练或者故障演练,演练方式更加灵活。
第二方面,本发明提供了一种演练装置,包括:
第一获取模块,用于获取第一演练场景的演练模式,其中,第一演练场景为所有的待演练场景中任一个演练场景;
创建模块,用于当确认演练模式为混沌模式时,同时创建故障演练线程和用例演练线程;
处理模块,用于根据故障演练线程获取预配置的故障执行参数,并基于故障执行参数生成故障指令;
第二获取模块,用于根据用例演练线程获取待执行的测试用例;
第一发送模块,用于将故障指令和测试用例同步发送至目标云平台,以便目标云平台根据故障指令进行故障演练,并同时根据测试用例进行用例演练。
在一些可选的实施方式中,装置还包括:
监控模块,用于监控第一目标线程的状态,其中,第一目标线程包括故障演练线程或者用例演练线程;
查找模块,用于当监控到第一目标线程的状态为停止演练时,根据配对标识在混沌模式创建的线程中查找第二目标线程,并停止第二目标线程的演练操作,其中,第二目标线程为混沌模式中创建的除第一目标线程以外的演练线程。
在一些可选的实施方式中,装置还包括:
存储模块,用于将配对标识、故障演练线程的第一线程信息,以及用例演练线程的第二线程信息存储至同一个全局变量中。
在一些可选的实施方式中,当监控到第一目标线程的状态为停止演练时,查找模块,包括:
查找单元,用于根据配对标识从全局变量中查找第二目标线程的线程信息;
确定单元,用于根据线程信息确定第二目标线程;
发送单元,用于向第二目标线程发送停止信号;
更新单元,用于根据停止信号更新第二目标线程的执行状态为停止状态;
停止单元,用于当监控到第二目标线程的执行状态为停止状态时,控制第二目标线程进入停止程序,停止程序用以控制第二目标进行停止演练操作,其中,当第一目标线程包括用例演练线程时,第二目标线程包括与用例演练线程对应的故障演练线程;或者,当第一目标线程包括故障演练线程时,第二目标线程包括与故障演练线程对应的用例演练线程。
在一些可选的实施方式中,查找单元中的线程信息为线程对象引用地址。
在一些可选的实施方式中,故障执行参数包括故障场景和每一个故障场景分别对应的故障运行参数;处理模块,包括:
获取单元,用于根据故障演练线程获取预配置的故障场景和每一个故障场景分别对应的故障场景参数;
生成单元,用于根据第一故障场景和第一故障场景对应的故障场景参数生成第一故障指令,其中,第一故障场景为任一个故障场景。
在一些可选的实施方式中,用例演练模式包括故障演练模式、用例演练模式和混沌演练模式中的一种或多种,装置还包括:
第三获取模块,用于当确认演练模式为用例模式时,获取预配置的测试用例;
第二发送模块,用于将测试用例发送至目标云平台,以便目标云平台根据测试用例进行用例演练;
或者,
第四获取模块,用于当确认演练模式为故障模式时,获取预配置的故障执行参数,并基于故障执行参数生成故障指令;
第三发送模块,用于将故障指令发送至目标云平台,以便目标云平台根据故障指令进行故障演练。
第三方面,本发明提供了一种计算机设备,包括:存储器和处理器,存储器和处理器之间互相通信连接,存储器中存储有计算机指令,处理器通过执行计算机指令,从而执行上述第一方面或其对应的任一实施方式的演练方法。
第四方面,本发明提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机指令,计算机指令用于使计算机执行上述第一方面或其对应的任一实施方式的演练方法。
附图说明
为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是根据本发明实施例的演练方法的流程示意图;
图2是根据本发明实施例的停止第二目标线程方法的流程示意图;
图3是根据本发明实施例的又一停止第二目标线程方法的流程示意图;
图4是根据本发明实施例的又一演练方法的流程示意图;
图5是根据本发明实施例的又一演练方法的示意图;
图6是根据本发明实施例的又一演练方法的流程示意图;
图7是根据本发明实施例的演练装置的结构框图;
图8是本发明实施例的计算机设备的硬件结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
随着信息科技的发展,云计算逐步成为业界的发展热点,国内外各大厂商的云计算服务平台也开始纷纷投入到多个领域进行使用。云计算包括以下几个层次的服务:基础设施即服务(Infrastructure as a Service,简称IaaS),平台即服务(Platform as aService,简称PaaS)和软件即服务(Software as a Service,简称SaaS)。而IaaS层面的作为云计算服务的管理平台—云平台,则在其中起着重要作用。云平台上管理着大量虚拟机,承载着各种各样的功能业务。同时也需要应对许多故障情况,包括硬盘故障、存储池IO压力过大,虚拟机操作系统崩溃,网卡故障、交换机故障、网络卡顿,服务器掉电等,以及上述众多故障的排列组合。因此,保证云平台系统的鲁棒性就显得尤为重要。
在一个复杂系统中,我们单靠人力无法阻止所有故障的发生,而应该致力于在故障导致的异常行为被触发之前,尽可能多地识别出会导致这些异常的、在系统中脆弱的、易出故障的环节。当我们识别出这些风险时,就可以有针对性地对系统进行加固、防范,从而避免故障发生时所带来的严重后果,而目前对这方面的测试尚不充分。
基于此,根据本发明实施例,提供了一种演练方法实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
在本实施例中提供了一种演练方法,可用于上述的计算机设备,如服务器、云平台等,图1是根据本发明实施例的演练方法的流程图,如图1所示,该流程包括如下步骤:
步骤S101,获取第一演练场景的演练模式。
具体的,第一演练场景为所有的待演练场景中任一个演练场景。
在一个可选的例子中,云平台的演练场景可以同时进行,一个演练场景可以选择一种演练模式,例如用例演练模式、故障演练模式或者混沌模式,用例演练模式指在正常云平台环境下执行规定的测试用例,故障演练模式指选择一个或多个故障场景,如主机CPU负载、主机内存负载等,对云平台进行所选故障的注入。混沌模式指在同一时间段内同时执行故障演练和用例演练。
在一个可选的例子中,例如可以使用混沌工程,同时配置故障演练模式、用例演练模式和混沌模式,用户只需选择需要的模式进行演练即可。
步骤S102,当确认演练模式为混沌模式时,同时创建故障演练线程和用例演练线程。
具体的,当确认演练模式为混沌模式时,可以通过异步执行器,同时创建两条独立的线程,即故障演练线程和用例演练线程,故障演练线程用于执行故障演练,用例演练线程用于执行用例演练,保证其开始演练的同步性。
步骤S103,根据故障演练线程获取预配置的故障执行参数,并基于故障执行参数生成故障指令。
具体的,利用故障演练线程获取预配置的故障执行参数,例如故障场景参数:主机CPU负载、主机掉电等;故障运行参数:如内存负载的百分比等。并根据故障执行参数生成故障指令,故障指令用以指示云平台进行故障演练。
在一个可选的例子中,例如利用混沌工程控制云平台进行演练,选择模式为故障演练模式,步骤可以为:
步骤a1,选择演练目标云平台,可以是一个也可以是多个;
步骤a2,选择故障场景参数,如主机CPU负载、主机内存负载、主机掉电等;
步骤a3,配置故障运行参数,如CPU负载的百分比、内存负载的百分比。
基于目标云平台、故障场景参数和故障运行参数生成故障指令。
步骤S104,根据用例演练线程获取待执行的测试用例。
具体的,利用用例演练线程获取待执行的测试用例。
在一个可选的例子中,例如确定目标云平台,目标云平台与执行故障演练的云平台相同,准备阶段用例集合,当需要确定执行次数时,可以获取准备阶段执行次数,也可以设置为若不获取执行次数则执行1次,获取运行阶段的用例集合,以及获取清理阶段的用例集合。
步骤S105,将故障指令和测试用例同步发送至目标云平台,以便目标云平台根据故障指令进行故障演练,并同时根据测试用例进行用例演练。
具体的,将故障指令和测试用例同步发送至目标云平台,云平台则根据故障指令进行故障演练,并同时根据测试用例进行用例演练。
在一个可选的例子中,也可以发送测试用例执行指令,目标云平台根据用例执行指令获取所需测试用例来执行用例演练。
在一个可选的例子中,例如可以利用混沌工程的指令模块,向目标云平台的探针模块发送故障指令,探针模块将故障指令转换为本地命令执行故障演练。指令模块通过定期主动查询以及接收探针的回调,获取故障演练执行进度和结果。
本实施例提供的演练方法,获取第一演练场景的演练模式,其中,第一演练场景为所有的待演练场景中任一个演练场景;当确认演练模式为混沌模式时,同时创建故障演练线程和用例演练线程;根据故障演练线程获取预配置的故障执行参数,并基于故障执行参数生成故障指令;根据用例演练线程获取待执行的测试用例;将故障指令和测试用例同步发送至目标云平台,以便目标云平台根据故障指令进行故障演练,并同时根据测试用例进行用例演练。混沌模式下,可以同时进行故障演练和用例演练,充分结合了用例测试和故障测试两者的优点,并且比任何一方都更具优势。与普通用例测试相比,混沌模式增加了故障注入,更有利于验证功能用例的健壮性、云平台的鲁棒性;与普通故障测试相比,混沌模式增加了用例执行,有利于验证特定故障对特定用例的影响,增加了测试的灵活性和准确性;另外,本方法的故障演练和用例演练均为自动化执行,能够减少人力成本,提高执行效率。更加精准地进行故障注入、制造混沌,有针对性地寻找云平台中不易发现的漏洞;并且以自动化的方式对难以通过人工分析一一排查验证的故障进行复现、分析、应对,能更加精准、高效地发现云平台中的脆弱点,提高云平台的鲁棒性。
在一种可选的实施方式中,故障演练线程和用例演练线程均包括同一个配对标识,方法还包括如图2所示的方法步骤:
步骤S201,监控第一目标线程的状态。
具体的,第一目标线程包括故障演练线程或者用例演练线程。利用可以利用监控程序,监控故障演练线程和用例演练线程的状态,是否正常运行。
步骤S202,当监控到第一目标线程的状态为停止演练时,根据配对标识在混沌模式创建的线程中查找第二目标线程,并停止第二目标线程的演练操作。
具体的,第二目标线程为混沌模式中创建的除第一目标线程以外的演练线程。当监控到用例演练线程停止演练时,根据配对标识从创建的线程中查找对应的故障演练线程,并停止故障演练。或者,当监控到故障演练线程时,根据配对标识从创建的线程中查找对应的用例演练线程,并停止用例演练。
在一个可选的例子中,配对标识可以为线程的父ID,将属于同一演练场景的混沌模式的用例演练线程和用例演练线程用相同的父ID进行关联,只需要查询父ID就可以查询到对应的线程。
在一种可选的实施方式中,当确认用例演练模式为混沌模式,同时创建故障演练线程和用例演练线程之后,方法还包括:
将配对标识、故障演练线程的第一线程信息,以及用例演练线程的第二线程信息存储至同一个全局变量中。
具体的,当确认用例演练模式为混沌模式,同时创建故障演练线程和用例演练线程之后,将配对标识、故障演练线程的第一线程信息,以及用例演练线程的第二线程信息存储至同一个全局变量中,该全局变量即为故障演练线程和用例演练线程之间通信的“桥梁”。后续可以通过该全局变量查询所需线程的线程信息。
在一个可选的例子中,当有多个演练场景均为混沌模式时,该全局变量中会同时存在多对故障演练和用例演练线程信息,一对线程信息通过相同的父ID进行关联。
在一种可选的实施方式中,当监控到第一目标线程的状态为停止演练时,根据配对标识在混沌模式创建的线程中查找第二目标线程,并停止第二目标线程的演练操作,包括如图3所示的方法步骤:
步骤S301,根据配对标识从全局变量中查找第二目标线程的线程信息。
具体的,配对标识可以为父ID,当然也可以为其他的标识,例如特定的标识名称等,只要是可以查询到唯一对应的第二目标线程即可。根据父ID从全局变量中查找第二目标线程的线程信息。
在一个可选的例子中,在混沌模式中,用例执行时,可以设置为即使用例执行失败也不停止测试,只有手动停止测试,或者用例执行完成时,或者当接收到故障演练线程发送的停止信号时才退出测试,因为在混沌模式下,用例执行失败的可能性大大增加,如果用例执行失败就停止测试,会导致大部分用例得不到执行,无法充分的进行测试。
在一种可选的实施方式中,线程信息为线程对象引用地址。
具体的,线程对象引用地址用以存储该线程对象,通过线程对象引用地址可以定位到目标线程。
步骤S302,根据线程信息确定第二目标线程。
具体的,根据线程对象引用地址定位到第二目标线程。
步骤S303,向第二目标线程发送停止信号。
具体的,向第二目标线程发送停止信号。因为第二目标线程不能立即中断,需要执行停止程序来执行停止演练,若立即中断有可能会造成云平台环境改变,还需手动恢复到原来的环境,造成一定的使用不便,因此,可以向第二目标线程发送停止信号。
在一个可选的例子中,停止信号可以为interrupt信号。
步骤S304,根据停止信号更新第二目标线程的执行状态为停止状态。
步骤S305,当监控到第二目标线程的执行状态为停止状态时,控制第二目标线程进入停止程序,停止程序用以控制第二目标进行停止演练操作。
具体的,当第一目标线程包括用例演练线程时,第二目标线程包括与用例演练线程对应的故障演练线程;或者,当第一目标线程包括故障演练线程时,第二目标线程包括与故障演练线程对应的用例演练线程。根据停止信号将第二目标线程的执行状态更新为停止状态。当监控到第二目标线程的执行状态为停止状态时,控制第二目标线程进行停止程序,停止对应的故障演练或者用例演练。
在一种可选的实施方式中,故障执行参数包括故障场景和每一个故障场景分别对应的故障运行参数;根据故障演练线程获取预配置的故障执行参数,并基于故障执行参数生成故障指令,包括:
步骤b1,根据故障演练线程获取预配置的故障场景和每一个故障场景分别对应的故障场景参数。
具体的,故障场景可以以故障场景参数的形式获取,例如主机CPU负载、主机内存负载、主机掉电等,故障运行参数包括运行时云平台的环境数据,例如CPU负载的百分比达到CPU故障阈值,例如80%、内存负载的百分比达到内存故障阈值。
步骤b2,根据第一故障场景和第一故障场景对应的故障场景参数生成第一故障指令。
具体的,第一故障场景为任一个故障场景,故障指令中包含故障场景和故障运行参数。
在一种可选的实施方式中,用例演练模式包括故障演练模式、用例演练模式和混沌演练模式中的一种或多种,其中,
步骤c1,当确认演练模式为用例模式时,获取预配置的测试用例。
步骤c2,将测试用例发送至目标云平台,以便目标云平台根据测试用例进行用例演练。
具体的,还可以配置演练模式为用例模式,当确认演练模式为用例模式时,获取需执行的测试用例,包括准备阶段用例集合、配置运行阶段用例集合和配置清理阶段用例集合,还可以获取用例执行次数,将所有的用例发送至目标平台。
在一个可选的例子中,还可以设定用例执行顺序以及执行场景,通过获取执行的执行时间节点,确定要执行的用例,例如执行时间节点为准备阶段,则获取准备阶段的测试用例并执行,直至所有时间节点的测试用例均执行完毕时结束。
或者,
步骤c3,当确认演练模式为故障模式时,获取预配置的故障执行参数,并基于故障执行参数生成故障指令。
步骤c4,将故障指令发送至目标云平台,以便目标云平台根据故障指令进行故障演练。
具体的,当配置为故障模式时,仅执行故障演练,获取预配置的故障执行参数,并基于故障执行参数生成故障指令,将故障指令发送至目标云平台,目标云平台根据接收到故障指令时根据故障执行参数进行故障演练。
为了使本发明的方法更加清楚,本发明还提供一个具体的演练方法实施例,例如将混沌工程的各个功能封装成功能模块,包括演练定义模块、故障演练执行模块、用例演练执行模块、演练结果反馈模块,如图4所示,演练定义模块用于定义演练执行策略(包括故障演练模式、用例演练模式或者混沌模式)、配置演练参数并创建演练。根据演练执行策略的不同,待配置项也有所不同。
若演练执行策略为故障演练模式,定义故障演练:1、选择演练目标云平台,可以是一个也可以是多个;2、选择故障场景,如主机CPU负载、主机内存负载、主机掉电等;3、配置故障参数,如CPU负载的百分比、内存负载的百分比。
若演练执行策略为用例演练模式,定义用例演练:1、选择演练目标云平台,可以是一个也可以是多个;2、配置准备阶段用例集合,以及准备阶段执行次数;3、配置运行阶段用例集合;4、配置清理阶段用例集合;5、配置用例参数,例如指定用例的操作对象为特定虚拟机。
若演练执行策略为混沌模式,定义故障演练和用例演练:1、选择演练目标云平台,可以是一个也可以是多个;2、选择故障场景,如主机CPU负载、主机内存负载、主机掉电等,用于执行模块在目标主机上进行对应故障的注入;3、配置故障参数,如CPU负载的百分比、内存负载的百分比4、配置准备阶段用例集合,以及准备阶段执行次数5、配置运行阶段用例集合6、配置清理阶段用例集合7、配置用例参数,例如指定用例的操作对象为特定虚拟机。
故障演练执行模块用于执行在演练定义模块定义的故障演练,进入该模块的前置条件为:演练执行策略为默认模式或混沌模式。故障演练执行模块由位于混沌工程系统的指令模块,和预安装于目标云平台所有主机上的探针模块组成,示意图如图5所示,指令模块向探针模块发送故障指令,探针模块将故障指令转为本地命令并在主机上执行。指令模块通过定期主动查询以及接收探针的回调,获取故障演练执行进度和结果。故障演练执行模块通过上述配合,控制演练定义模块中配置的故障,在云平台上的注入和恢复。因异常情况或手动触发停止时,如果有关联用例演练,会同时向其对应线程发送interrupt信号即停止信号。
用例演练执行模块用于执行在演练定义模块定义的用例演练,进入该模块的前置条件为:演练执行策略为长稳模式或混沌模式。一个用例可视为云平台一个或多个接口的集合,该模块通过使用云平台的SDK,调用云平台的相关接口,执行前述定义的用例集合中的用例。并且通过云平台的查询接口,获取用例执行的进度和结果。因异常情况或手动触发停止时,如果有关联故障演练,会同时向其对应线程发送interrupt信号,即停止信号。
演练结果反馈模块用于将故障演练执行模块和用例演练执行模块返回的演练执行结果持久化记录到数据库,并推送反馈给混沌工程系统的前端界面。
具体的流程如图6所示,选择演练策略,对演练策略进行判断,若为故障演练模式,则执行故障演练,若为用例演练模式,则执行用例演练,若均不为故障演练模式和用例演练模式,则确认为混沌模式,同时执行故障演练和用例演练,记录演练执行结果并反馈给混沌工程系统的前端界面。
在本实施例中还提供了一种演练装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
本实施例提供一种演练装置,如图7所示,包括:
第一获取模块701,用于获取第一演练场景的演练模式,其中,第一演练场景为所有的待演练场景中任一个演练场景;
创建模块702,用于当确认演练模式为混沌模式时,同时创建故障演练线程和用例演练线程;
处理模块703,用于根据故障演练线程获取预配置的故障执行参数,并基于故障执行参数生成故障指令;
第二获取模块704,用于根据用例演练线程获取待执行的测试用例;
第一发送模块705,用于将故障指令和测试用例同步发送至目标云平台,以便目标云平台根据故障指令进行故障演练,并同时根据测试用例进行用例演练。
在一些可选的实施方式中,装置还包括:
监控模块706,用于监控第一目标线程的状态,其中,第一目标线程包括故障演练线程或者用例演练线程;
查找模块707,用于当监控到第一目标线程的状态为停止演练时,根据配对标识在混沌模式创建的线程中查找第二目标线程,并停止第二目标线程的演练操作,其中,第二目标线程为混沌模式中创建的除第一目标线程以外的演练线程。
在一些可选的实施方式中,装置还包括:
存储模块708,用于将配对标识、故障演练线程的第一线程信息,以及用例演练线程的第二线程信息存储至同一个全局变量中。
在一些可选的实施方式中,当监控到第一目标线程的状态为停止演练时,查找模块707,包括:
查找单元,用于根据配对标识从全局变量中查找第二目标线程的线程信息;
确定单元,用于根据线程信息确定第二目标线程;
发送单元,用于向第二目标线程发送停止信号;
更新单元,用于根据停止信号更新第二目标线程的执行状态为停止状态;
停止单元,用于当监控到第二目标线程的执行状态为停止状态时,控制第二目标线程进入停止程序,停止程序用以控制第二目标进行停止演练操作,其中,当第一目标线程包括用例演练线程时,第二目标线程包括与用例演练线程对应的故障演练线程;或者,当第一目标线程包括故障演练线程时,第二目标线程包括与故障演练线程对应的用例演练线程。
在一些可选的实施方式中,查找单元中的线程信息为线程对象引用地址。
在一些可选的实施方式中,故障执行参数包括故障场景和每一个故障场景分别对应的故障运行参数;处理模块703,包括:
获取单元,用于根据故障演练线程获取预配置的故障场景和每一个故障场景分别对应的故障场景参数;
生成单元,用于根据第一故障场景和第一故障场景对应的故障场景参数生成第一故障指令,其中,第一故障场景为任一个故障场景。
在一些可选的实施方式中,用例演练模式包括故障演练模式、用例演练模式和混沌演练模式中的一种或多种,装置还包括:
第三获取模块709,用于当确认演练模式为用例模式时,获取预配置的测试用例;
第二发送模块710,用于将测试用例发送至目标云平台,以便目标云平台根据测试用例进行用例演练;
或者,
第四获取模块711,用于当确认演练模式为故障模式时,获取预配置的故障执行参数,并基于故障执行参数生成故障指令;
第三发送模块712,用于将故障指令发送至目标云平台,以便目标云平台根据故障指令进行故障演练。
上述各个模块和单元的更进一步的功能描述与上述对应实施例相同,在此不再赘述。
本实施例中的演练装置是以功能单元的形式来呈现,这里的单元是指ASIC(Application Specific Integrated Circuit,专用集成电路)电路,执行一个或多个软件或固定程序的处理器和存储器,和/或其他可以提供上述功能的器件。
本发明实施例还提供一种计算机设备,具有上述图7所示的演练装置。
请参阅图8,图8是本发明可选实施例提供的一种计算机设备的结构示意图,如图8所示,该计算机设备包括:一个或多个处理器10、存储器20,以及用于连接各部件的接口,包括高速接口和低速接口。各个部件利用不同的总线互相通信连接,并且可以被安装在公共主板上或者根据需要以其它方式安装。处理器可以对在计算机设备内执行的指令进行处理,包括存储在存储器中或者存储器上以在外部输入/输出装置(诸如,耦合至接口的显示设备)上显示GUI的图形信息的指令。在一些可选的实施方式中,若需要,可以将多个处理器和/或多条总线与多个存储器和多个存储器一起使用。同样,可以连接多个计算机设备,各个设备提供部分必要的操作(例如,作为服务器阵列、一组刀片式服务器、或者多处理器系统)。图8中以一个处理器10为例。
处理器10可以是中央处理器,网络处理器或其组合。其中,处理器10还可以进一步包括硬件芯片。上述硬件芯片可以是专用集成电路,可编程逻辑器件或其组合。上述可编程逻辑器件可以是复杂可编程逻辑器件,现场可编程逻辑门阵列,通用阵列逻辑或其任意组合。
其中,存储器20存储有可由至少一个处理器10执行的指令,以使至少一个处理器10执行实现上述实施例示出的方法。
存储器20可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储根据计算机设备的使用所创建的数据等。此外,存储器20可以包括高速随机存取存储器,还可以包括非瞬时存储器,例如至少一个磁盘存储器件、闪存器件、或其他非瞬时固态存储器件。在一些可选的实施方式中,存储器20可选包括相对于处理器10远程设置的存储器,这些远程存储器可以通过网络连接至该计算机设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
存储器20可以包括易失性存储器,例如,随机存取存储器;存储器也可以包括非易失性存储器,例如,快闪存储器,硬盘或固态硬盘;存储器20还可以包括上述种类的存储器的组合。
该计算机设备还包括输入装置30和输出装置40。处理器10、存储器20、输入装置30和输出装置20可以通过总线或者其他方式连接,图8中以通过总线连接为例。
输入装置30可接收输入的数字或字符信息,以及产生与该计算机设备的用户设置以及功能控制有关的键信号输入,例如触摸屏、小键盘、鼠标、轨迹板、触摸板、指示杆、一个或者多个鼠标按钮、轨迹球、操纵杆等。输出装置40可以包括显示设备、辅助照明装置(例如,LED)和触觉反馈装置(例如,振动电机)等。上述显示设备包括但不限于液晶显示器,发光二极管,显示器和等离子体显示器。在一些可选的实施方式中,显示设备可以是触摸屏。
本发明实施例还提供了一种计算机可读存储介质,上述根据本发明实施例的方法可在硬件、固件中实现,或者被实现为可记录在存储介质,或者被实现通过网络下载的原始存储在远程存储介质或非暂时机器可读存储介质中并将被存储在本地存储介质中的计算机代码,从而在此描述的方法可被存储在使用通用计算机、专用处理器或者可编程或专用硬件的存储介质上的这样的软件处理。其中,存储介质可为磁碟、光盘、只读存储记忆体、随机存储记忆体、快闪存储器、硬盘或固态硬盘等;进一步地,存储介质还可以包括上述种类的存储器的组合。可以理解,计算机、处理器、微处理器控制器或可编程硬件包括可存储或接收软件或计算机代码的存储组件,当软件或计算机代码被计算机、处理器或硬件访问且执行时,实现上述实施例示出的方法。
虽然结合附图描述了本发明的实施例,但是本领域技术人员可以在不脱离本发明的精神和范围的情况下做出各种修改和变型,这样的修改和变型均落入由所附权利要求所限定的范围之内。
Claims (10)
1.一种演练方法,其特征在于,所述方法包括:
获取第一演练场景的演练模式,其中,第一演练场景为所有的待演练场景中任一个演练场景;
当确认所述演练模式为混沌模式时,同时创建故障演练线程和用例演练线程;
根据所述故障演练线程获取预配置的故障执行参数,并基于所述故障执行参数生成故障指令;
根据所述用例演练线程获取待执行的测试用例;
将所述故障指令和所述测试用例同步发送至目标云平台,以便所述目标云平台根据所述故障指令进行故障演练,并同时根据所述测试用例进行用例演练。
2.根据权利要求1所述的方法,其特征在于,所述故障演练线程和所述用例演练线程均包括同一个配对标识,所述方法还包括:
监控第一目标线程的状态,其中,所述第一目标线程包括所述故障演练线程或者所述用例演练线程;
当监控到所述第一目标线程的状态为停止演练时,根据所述配对标识在所述混沌模式创建的线程中查找第二目标线程,并停止第二目标线程的演练操作,其中,所述第二目标线程为所述混沌模式中创建的除所述第一目标线程以外的演练线。
3.根据权利要求2所述的方法,其特征在于,当确认所述用例演练模式为混沌模式时,同时创建故障演练线程和用例演练线程之后,所述方法还包括:
将所述配对标识、所述故障演练线程的第一线程信息,以及所述用例演练线程的第二线程信息存储至同一个全局变量中。
4.根据权利要求3所述的方法,其特征在于,当监控到所述第一目标线程的状态为停止演练时,根据所述配对标识在所述混沌模式创建的线程中查找第二目标线程,并停止第二目标线程的演练操作,包括:
根据所述配对标识从所述全局变量中查找所述第二目标线程的线程信息;
根据所述线程信息确定所述第二目标线程;
向所述第二目标线程发送停止信号;
根据所述停止信号更新所述第二目标线程的执行状态为停止状态;
当监控到所述第二目标线程的执行状态为停止状态时,控制所述第二目标线程进入停止程序,所述停止程序用以控制所述第二目标进行停止所述演练操作,
其中,当所述第一目标线程包括所述用例演练线程时,所述第二目标线程包括与所述用例演练线程对应的故障演练线程;
或者,
当所述第一目标线程包括所述故障演练线程时,所述第二目标线程包括与所述故障演练线程对应的用例演练线程。
5.根据权利要求4所述的方法,其特征在于,所述线程信息为线程对象引用地址。
6.根据权利要求2至5任一项所述的方法,其特征在于,所述故障执行参数包括故障场景和每一个故障场景分别对应的故障运行参数;所述根据所述故障演练线程获取预配置的故障执行参数,并基于所述故障执行参数生成故障指令,包括:
根据所述故障演练线程获取预配置的故障场景和每一个故障场景分别对应的故障场景参数;
根据第一故障场景和所述第一故障场景对应的故障场景参数生成第一故障指令,其中,所述第一故障场景为任一个故障场景。
7.根据权利要求2至5任一项所述的方法,其特征在于,所述用例演练模式包括故障演练模式、用例演练模式和混沌演练模式中的一种或多种,其中,
当确认所述演练模式为用例模式时,获取预配置的测试用例;
将所述测试用例发送至所述目标云平台,以便所述目标云平台根据所述测试用例进行用例演练;
或者,
当确认所述演练模式为故障模式时,获取预配置的故障执行参数,并基于所述故障执行参数生成故障指令;
将所述故障指令发送至所述目标云平台,以便所述目标云平台根据所述故障指令进行故障演练。
8.一种演练装置,其特征在于,所述装置包括:
第一获取模块,用于获取第一演练场景的演练模式,其中,第一演练场景为所有的待演练场景中任一个演练场景;
创建模块,用于当确认所述演练模式为混沌模式时,同时创建故障演练线程和用例演练线程;
处理模块,用于根据所述故障演练线程获取预配置的故障执行参数,并基于所述故障执行参数生成故障指令;
第二获取模块,用于根据所述用例演练线程获取待执行的测试用例;
发送模块,用于将所述故障指令和所述测试用例同步发送至目标云平台,以便所述目标云平台根据所述故障指令进行故障演练,并同时根据所述测试用例进行用例演练。
9.一种计算机设备,其特征在于,包括:
存储器和处理器,所述存储器和所述处理器之间互相通信连接,所述存储器中存储有计算机指令,所述处理器通过执行所述计算机指令,从而执行权利要求1至7中任一项所述的演练方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机指令,所述计算机指令用于使计算机执行权利要求1至7中任一项所述的演练方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311237810.4A CN117194266A (zh) | 2023-09-22 | 2023-09-22 | 演练方法、装置、计算机设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311237810.4A CN117194266A (zh) | 2023-09-22 | 2023-09-22 | 演练方法、装置、计算机设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117194266A true CN117194266A (zh) | 2023-12-08 |
Family
ID=88994257
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311237810.4A Pending CN117194266A (zh) | 2023-09-22 | 2023-09-22 | 演练方法、装置、计算机设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117194266A (zh) |
-
2023
- 2023-09-22 CN CN202311237810.4A patent/CN117194266A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3916560A1 (en) | Fault injection method and apparatus, electronic device and storage medium to test microservices in the cloud | |
EP3522449B1 (en) | Service state transition method and device | |
CN110928799B (zh) | 一种软件故障定位方法及装置 | |
CN105095044A (zh) | 基于snmp的服务器监控方法和装置 | |
CN111666217B (zh) | 用于测试代码的方法和装置 | |
CN111405006B (zh) | 一种远程登录失败的处理方法、装置及远程登录系统 | |
CN112015665B (zh) | 测试验证的回溯方法、装置、电子设备及存储介质 | |
CN107181636B (zh) | 一种负载均衡系统中的健康检查方法及装置 | |
US20190044790A1 (en) | Testing and delivering verification of network configurations | |
CN111190823A (zh) | Ui自动化测试方法、电子装置及计算机可读存储介质 | |
CN106598594B (zh) | 一种快速恢复测试程序的测试系统及方法 | |
CN108170507B (zh) | 虚拟应用管理方法/系统、计算机可读存储介质及服务端 | |
CN112199240B (zh) | 一种节点故障时进行节点切换的方法及相关设备 | |
CN113986270B (zh) | 分布式应用部署方法、装置、存储介质及电子设备 | |
CN106612213B (zh) | 设备测试方法及装置 | |
CN117194266A (zh) | 演练方法、装置、计算机设备及存储介质 | |
JP6818654B2 (ja) | 試験自動化装置、試験方法、及びプログラム | |
CN110673793B (zh) | 存储设备节点事件管理方法、系统及电子设备和存储介质 | |
CN111030863B (zh) | 一种节点拓扑信息确定方法、装置、设备及存储介质 | |
CN110855526B (zh) | 检测数据源连接的方法、装置、存储介质及电子设备 | |
CN113079059A (zh) | 网络状态监测方法、装置、电子设备及可读存储介质 | |
JP6734689B2 (ja) | システム管理支援装置、システム管理支援方法、及びプログラム | |
CN112350879A (zh) | 数据通信设备测试管理方法、装置、系统及存储介质 | |
CN111338926A (zh) | 补丁的测试方法、装置及电子设备 | |
JP7047054B2 (ja) | 試験自動化装置、試験方法、及びプログラム |
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 |