CN112328487A - 故障注入用例的并行联合仿真调度方法、装置和设备 - Google Patents
故障注入用例的并行联合仿真调度方法、装置和设备 Download PDFInfo
- Publication number
- CN112328487A CN112328487A CN202011236758.7A CN202011236758A CN112328487A CN 112328487 A CN112328487 A CN 112328487A CN 202011236758 A CN202011236758 A CN 202011236758A CN 112328487 A CN112328487 A CN 112328487A
- Authority
- CN
- China
- Prior art keywords
- simulation
- task
- calculation
- error
- node
- 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
Images
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/3668—Software testing
- G06F11/3672—Test management
- G06F11/3684—Test management for test design, e.g. generating new test cases
-
- 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/3668—Software testing
- G06F11/3672—Test management
- G06F11/3688—Test management for test execution, e.g. scheduling of test suites
-
- 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/3668—Software testing
- G06F11/3672—Test management
- G06F11/3692—Test management for test results analysis
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)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本申请涉及一种故障注入用例的并行联合仿真调度方法、装置和设备。所述方法中,首先将原来的整体的用例文件分解成多个子用例文件,并生成对应的仿真任务文件,从而可以对分解后得到的仿真任务分别进行仿真计算,进而当仿真计算出错后,可以根据统计结果确定出错的内容和原因等,此外,当仿真计算出错后,可以对出错的仿真任务重新进行多次仿真计算,直至确定仿真任务确实出错,或是由于计算节点的错误导致仿真计算出错,从而能够很好地应对现有技术中的大量用例任务出错与计算节点出错的情况。
Description
技术领域
本申请涉及故障注入技术领域,尤其涉及一种故障注入用例的并行联合仿真调度方法、装置和设备。
背景技术
故障注入是一种可靠性验证技术,通过受控实验向系统中刻意引入故障,并观察系统中存在故障时的行为。基于软件的故障注入,是通过在软件级生成错误,从而造成硬件级的故障。
目前,用户在使用Saber(一种故障注入仿真软件)时,对大量的用例(超过1000个)在多个计算节点(超过3台)进行并行分布式执行,过程中用例或计算节点都有出错误的可能,如果用例出错超过N次(用户指定)则认为用例出错,将出错用例移到出错队列;而如果计算节点出错M次(用户指定,且M>>N)则认为计算节点出错,后续不再使用此节点。循环执行用例直至用例全部执行完成,或者用例执行全部出错,或者无可用计算节点为止。
但由于Saber软件生成的仿真用例是一个整体文件,因此,在用例出错时不能很好地确定出错的内容和原因。另外,由于故障注入的用例特殊性,有时会导致用例任务大量出错,并且由于各种原因,计算节点本身也会出现故障,但现有方法不能很好地处理这些大量用例任务出错与计算节点出错的情况(包括出错的影响及导致的问题),例如,连续大量测试用例出错会导致将可用计算节点也全部设置为不可用,导致误判。
发明内容
本申请提供一种故障注入用例的并行联合仿真调度方法、装置和设备,以解决传统的基于软件的故障注入方法中,在用例出错时不能很好地确定出错的内容和原因,以及不能很好地处理大量用例任务出错与计算节点出错等情况的问题。
本申请的上述目的是通过以下技术方案实现的:
第一方面,本申请提供一种故障注入用例的并行联合仿真调度方法,其包括:
基于获取的用例文件的内容段和预设的分解数量,对所述用例文件进行分解,得到多个子用例文件;
针对各所述子用例文件生成对应的任务文件;
将仿真计算参数初始化,并将所有任务文件对应的仿真任务添加至待执行任务队列中;
重复执行仿真计算流程,直至所述待执行任务队列中没有仿真任务或没有可用计算节点时,对仿真数据进行汇总和统计并生成仿真报告;
其中,所述仿真计算流程包括:
从所述待执行任务队列中提取与可用计算节点的数量相同的多个仿真任务,并将所述多个仿真任务以及各仿真任务相关的数据、程序和模板分发至各可用计算节点,以使各可用计算节点分别进行仿真计算;
分别判断各可用计算节点的仿真计算是否出错;
若仿真计算未出错,则将对应的仿真任务从所述待执行任务队列移出至已完成任务队列;
若仿真计算出错,则将对应的仿真任务的任务出错次数加一,并判断所述任务出错次数是否达到预设的第一次数阈值;若达到,则将对应的仿真任务从所述待执行任务队列移出至出错任务队列,若未达到,则将对应的仿真任务保留在所述待执行任务队列中等待下一次被提取;
若仿真计算出错,还将对应的计算节点的节点出错次数加一,并判断所述节点出错次数是否达到预设的第二次数阈值;若达到,则将对应的计算节点标记为不可用计算节点;其中,所述第二次数阈值大于或等于所述第一次数阈值。
可选的,所述将仿真计算参数初始化,包括:
将所述待执行任务队列、所述已完成任务队列和所述出错任务队列初始化,以及将所有计算节点标记为可用计算节点,并且获取用户设定的第一次数阈值和第二次数阈值。
可选的,所述分别判断各可用计算节点的仿真计算是否出错,包括:
根据预设的轮询时间超时后预设目录或文件中是否包含对应的仿真任务上传的结果文件,判断各可用计算节点的仿真计算是否出错;其中,仿真任务在仿真计算完成后生成并上传所述结果文件。
可选的,所述将对应的仿真任务保留在所述待执行任务队列中等待下一次被提取,包括:
将对应的仿真任务移至所述待执行任务队列的最前列等待下一次被提取。
可选的,所述方法还包括:
针对仿真计算出错的仿真任务,下一次被提取后,分发至之前仿真计算出错的可用计算节点之外的其他可用计算节点。
可选的,所述方法还包括:
在任一可用计算节点完成一次未出错的仿真计算时,将对应的计算节点的节点出错次数清零。
可选的,所述方法还包括:
针对仿真计算出错的仿真任务,若在其他可用计算节点上重新进行仿真计算后也出错,则将之前仿真计算出错的可用计算节点的节点出错次数减一,若在其他可用计算节点上重新进行仿真计算后未出错,则维持之前仿真计算出错的可用计算节点的节点出错次数不变。
可选的,所述用例文件为.aim格式的文件,所述任务文件为.bat格式的文件。
第二方面,本申请还提供一种故障注入用例的并行联合仿真调度装置,其包括:
分解模块,用于基于获取的用例文件的内容段和预设的分解数量,对所述用例文件进行分解,得到多个子用例文件;
生成模块,用于针对各所述子用例文件生成对应的任务文件;
初始化模块,用于将仿真计算参数初始化,并将所有任务文件对应的仿真任务添加至待执行任务队列中;
仿真计算模块,用于重复执行仿真计算流程,直至所述待执行任务队列中没有仿真任务或没有可用计算节点时,对仿真数据进行汇总和统计并生成仿真报告;
其中,所述仿真计算模块具体用于:
从所述待执行任务队列中提取与可用计算节点的数量相同的多个仿真任务,并将所述多个仿真任务以及各仿真任务相关的数据、程序和模板分发至各可用计算节点,以使各可用计算节点分别进行仿真计算;
分别判断各可用计算节点的仿真计算是否出错;
若仿真计算未出错,则将对应的仿真任务从所述待执行任务队列移出至已完成任务队列;
若仿真计算出错,则将对应的仿真任务的任务出错次数加一,并判断所述任务出错次数是否达到预设的第一次数阈值;若达到,则将对应的仿真任务从所述待执行任务队列移出至出错任务队列,若未达到,则将对应的仿真任务保留在所述待执行任务队列中等待下一次被提取;
若仿真计算出错,还将对应的计算节点的节点出错次数加一,并判断所述节点出错次数是否达到预设的第二次数阈值:若达到,则将对应的计算节点标记为不可用计算节点;其中,所述第二次数阈值大于或等于所述第一次数阈值。
第三方面,本申请还提供一种智能设备,其包括:
存储器以及与所述存储器相连接的处理器;
所述存储器,用于存储计算机程序,所述计算机程序至少用于执行上述任一项所述的故障注入用例的并行联合仿真调度方法;
所述处理器,用于调用并执行所述存储器存储的所述计算机程序
本申请的实施例提供的技术方案可以包括以下有益效果:
本申请的实施例提供的技术方案中,首先将原来的整体的用例文件分解成多个子用例文件,并生成对应的仿真任务文件,从而可以对分解后得到的仿真任务分别进行仿真计算,进而当仿真计算出错后,可以根据统计结果确定出错的内容和原因等,此外,当仿真计算出错后,可以对出错的仿真任务重新进行多次仿真计算,直至确定仿真任务确实出错,或是由于计算节点的错误导致仿真计算出错,从而能够很好地应对现有技术中的大量用例任务出错与计算节点出错的情况。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。
图1为本申请实施例示出的一种故障注入用例的并行联合仿真调度方法的流程示意图;
图2-11为本申请实施例示出的一种具体的仿真调度方法的各个步骤的示意图;
图12为本申请实施例示出的一种故障注入用例的并行联合仿真调度装置的结构示意图;
图13为本申请实施例示出的一种智能设备的结构示意图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
首先,如背景技术中提到的,由于Saber软件生成的仿真用例是一个整体文件,而该整体文件包含多段内容,那么在仿真用例出错时,难以确定具体是哪段内容出错以及导致出错的原因,从而不能取得最好的仿真效果。另外,由于故障注入的用例特殊性,有时会导致用例任务大量出错,并且由于各种原因,计算节点本身也会出现故障,但现有方法不能很好地处理这些大量用例任务出错与计算节点出错的情况(包括出错的影响及导致的问题),例如,一般情况下,连续大量测试用例出错会导致将可用计算节点也全部设置为不可用,进而导致误判,也即导致在计算节点实际未出错的情况下被设置为不可用。
因此,为了解决上述问题,本申请提供一种故障注入用例的并行联合仿真调度方法以及应用该方法的装置和智能设备。以下将通过实施例对相应方案进行详细说明。
实施例
参照图1,图1为本申请实施例示出的一种故障注入用例的并行联合仿真调度方法的流程示意图。在实际应用中,该方法可以通过计算机软件来实现,也即由PC或类似的智能设备来执行。
如图1所示,该方法包括以下步骤:
S101:基于获取的用例文件的内容段和预设的分解数量,对所述用例文件进行分解,得到多个子用例文件;
具体的,以现有的Saber软件为例,获取的用例文件是.aim格式的整体文件,该整体文件中包含多段内容,获取到整体的用例文件之后,即可基于用例文件的内容段和用户预先设定的分解数量进行分解,分解得到指定数量的子用例文件。
S102:针对各所述子用例文件生成对应的任务文件;
具体的,该步骤可以按照预设规则针对每个子用例文件生成对应的任务文件,生成的任务文件供后续的计算节点进行执行,例如,生成.bat格式的文件(批处理文件)。
S103:将仿真计算参数初始化,并将所有任务文件对应的仿真任务添加至待执行任务队列中;
其中,仿真计算参数初始化,也即将相关变量赋为默认值,把控件设为默认状态。并且,一些实施例中,将仿真计算参数初始化的具体过程包括:将待执行任务队列、已完成任务队列和出错任务队列初始化,以及将所有计算节点标记为可用计算节点,并且获取用户设定的第一次数阈值和第二次数阈值,其中,第二次数阈值大于或等于第一次数阈值。
S104:判断所述待执行任务队列中是否存在仿真任务,或,是否存在可用计算节点;若任一判断结果为否,则执行步骤S115,否则执行步骤S105,也即,不断重复执行仿真计算流程,直至待执行任务队列中没有仿真任务或没有可用计算节点;
S105:从所述待执行任务队列中提取与可用计算节点的数量相同的多个仿真任务,并将所述多个仿真任务以及各仿真任务相关的数据、程序和模板分发至各可用计算节点,以使各可用计算节点分别进行仿真计算;
其中,仿真任务相关的数据包括步骤S102生成的任务文件和其他相关数据,程序(例如Saber程序)和模板则是用于计算节点进行相应仿真计算,影响仿真计算的过程和结果。
当然,应当理解的是,本步骤是按照通常的情况,假定认为仿真任务的总数量(初始数量)大于可用计算节点的数量,并且,当进行多次仿真计算之后,若待执行任务队列中剩余的仿真任务的数量小于可用计算节点的数量,则提取剩余的全部仿真任务之后,随机或按照设定规则分发给可用计算节点。
S106:分别判断各可用计算节点的仿真计算是否出错;若仿真计算未出错,则执行步骤S107,否则进一步执行步骤S108和S112;
一些实施例中,相应的判断方法为:根据预设的轮询时间超时后预设目录或文件中是否包含对应的仿真任务上传的结果文件,判断各可用计算节点的仿真计算是否出错;其中,仿真任务在仿真计算完成后生成并上传所述结果文件。也即,轮询时间结束后,如果预设目录或文件中包含对应的仿真任务上传的结果文件,则判断为计算未出错,否则判断为计算出错。
当然,也可以采用现有技术中的其他判断方法来判断仿真计算是否出错,本申请对此不进行限制。
S107:将对应的仿真任务从所述待执行任务队列移出至已完成任务队列;
其中,移至已完成任务队列后,表示对应的任务文件的任务状态为成功,且不会再次进行仿真计算。
S108:将对应的仿真任务的任务出错次数加一;
具体的,对于每个仿真任务,其初始的任务出错次数为零,当在计算节点进行仿真计算出错后,每出错一次则对应的任务出错次数加一。
S109:判断所述任务出错次数是否达到预设的第一次数阈值;若达到,则执行步骤S110,否则执行步骤S111;
其中,第一次数阈值由用户在步骤S103中进行设定。
S110:将对应的仿真任务从所述待执行任务队列移出至出错任务队列;
其中,移至出错任务队列后,表示对应的任务文件的任务状态为出错,且不会再次进行仿真计算。
S111:将对应的仿真任务保留在所述待执行任务队列中等待下一次被提取;
并且,针对仿真计算出错的仿真任务,下一次被提取后,分发至之前仿真计算出错的可用计算节点之外的其他可用计算节点。也即,对于之前仿真计算出错的仿真任务,重新进行仿真计算时,避免分发到曾经计算出错的计算节点中再次进行计算,因为同一计算节点针对同一仿真任务的仿真计算结果一般不会变,并且,即使重新进行仿真计算也不能确定上一次仿真计算出错是由仿真任务对应的文件的错误导致的,还是由计算节点的错误导致的。
进一步的,一些实施例中,该步骤中,将对应的仿真任务保留在所述待执行任务队列中等待下一次被提取时,可以将对应的仿真任务移至所述待执行任务队列的最前列等待下一次被提取。也即,下一轮次提取并分发仿真任务时,优先提取曾经计算出错的仿真任务重新进行仿真计算。如此设置,是为了尽快确定出错是计算节点导致的还是仿真任务本身的问题,从而能够避免大量连续仿真任务出错导致计算节点也失效的问题。
S112:对应的计算节点的节点出错次数加一;
具体的,对于每个计算节点,其初始的节点出错次数为零,当进行仿真计算出错后,每出错一次则对应的节点出错次数加一。
S113:判断所述节点出错次数是否达到预设的第二次数阈值;
其中,第二次数阈值也由用户在步骤S103中进行设定。
S114:将对应的计算节点标记为不可用计算节点;
其中,被标记为不可用计算节点的计算节点,在后续的仿真任务流程中,不会再被分发仿真任务和对应的数据、程序和模板等,也即,无法再进行仿真计算。
S115:对仿真数据进行汇总和统计并生成仿真报告。
当待执行任务队列中没有仿真任务(仿真任务被移至已完成任务队列或出错任务队列),或没有可用计算节点(所有计算节点被标记为不可用计算节点,这种情况是很极端的情况,一般不会出现),即可对仿真任务数据进行汇总和统计,并根据统计数据自动生成报告,报告中包括每个仿真任务的计算结果(成功或出错)、每个仿真任务具体在哪个(或哪些)计算节点中进行的仿真计算、相应的仿真计算的时间等,以及包括从计算节点的角度来看,每个计算节点进行的各仿真任务的计算结果等。并且,该步骤的具体实现方法与现有技术中类似,因此不再进行详细说明。
此外,在上述方案的基础上,一些实施例中,所述方法还包括:在任一可用计算节点完成一次未出错的仿真计算时,将对应的计算节点的节点出错次数清零。
具体的,当计算节点的仿真计算出错后(节点出错次数大于零且小于第二次数阈值),如果后续再次对其他仿真任务进行仿真计算后未出错,则表明之前的出错不是由于计算节点的错误导致的,此时,将该计算节点的节点出错次数清零,从而可以避免由于大量仿真任务的错误累计后导致可用计算节点被标记为不可用。换言之,计算节点必须连续进行的多次(大于等于第二次数阈值)的仿真计算均出错后,才被标记为不可用。
此外,在上述方案的基础上,一些实施例中,所述方法还包括:针对仿真计算出错的仿真任务,若在其他可用计算节点上重新进行仿真计算后也出错,则将之前仿真计算出错的可用计算节点的节点出错次数减一,若在其他可用计算节点上重新进行仿真计算后未出错,则维持之前仿真计算出错的可用计算节点的节点出错次数不变。
也即,对于曾经仿真计算出错的仿真任务,如果在其他可用计算节点上重新进行仿真计算后也出错,则说明之前仿真计算出错的计算节点的计算结果是正确的,出错确实是由于仿真任务的错误导致的,因此,将之前仿真计算出错的可用计算节点的节点出错次数减一,从而避免可用计算节点被标记为不可用。而如果在其他可用计算节点上重新进行仿真计算后未出错,则说明仿真任务本身是没有错误的,之前的仿真计算出错的计算节点的节点出错次数加一是合理的。
通过上述方案,本申请首先将原来的整体的用例文件分解成多个子用例文件,并生成对应的仿真任务文件,从而可以对分解后得到的仿真任务分别进行仿真计算,进而当仿真计算出错后,可以根据统计结果确定出错的内容和原因等,此外,当仿真计算出错后,可以对出错的仿真任务重新进行多次仿真计算,直至确定仿真任务确实出错,或是由于计算节点的错误导致仿真计算出错,从而能够很好地应对现有技术中的大量用例任务出错与计算节点出错的情况。
为了使本申请的技术方案更容易理解,以下将结合图2-11通过一个具体实例进行举例说明,具体示例参照图2-11,图2-11为本申请实施例示出的一种具体的仿真调度方法的各个步骤的示意图。
1)如图2所示,首先创建工程,上传.aim文件,自动构建分组,生成任务单元,将任务单元封装成.Bat文件;并假设第一次数阈值N=3,第二次数阈值M=3;
2)如图3所示,根据任务单元和可用计算节点的设置,构建用例任务队列(任务队列中任务节点将记录下执行开发时间、分配计算节点号、任务状态、任务完成时间等)和计算节点队列(节点队列中节点将记录下每一轮分配计算节点上的任务及任务的执行状态),并进行初始化;图3中,假设封装成12个仿真任务,4个可用计算节点,也即,Task1、Task2、Task3……Task12表示12个仿真任务,Host1、Host2、Host3、Host4表示4个计算节点;
3)如图4所示,提取4个任务:Task1在Host1上执行,Task2在Host2上执行,Task3在Host3上执行,Task4在Host4上执行,并且,假设Task2在Host2上执行时超时(未能按时向FTP上传数据,也即仿真计算出错),并且,图4-图11中,灰色填充的格子表示出错的仿真任务或计算节点;
4)执行完成后,Task2出现错误,为了尽快确认Task2是否有效,将Task2放到待执行任务队列第一位供下一轮执行;而计算节点也记录下执行Task2出错,但计算节点Host2的总出错次数还没有达到M则继续保持在计算节点队列中,完成后最终状态如图5所示;
5)如图6所示,接下来继续执行任务,Task2在Host1上执行,Task5在Host2上执行,Task6在Host3上执行,Task7在Host4上执行,假设Task7在Host3执行超时;
6)执行完成后,Task2在Host1上成功执行,Task7在Host4上出现错误,放到任务队列第一位待下一轮执行;而计算节点也记录下执行Task7出错,但计算节点Host4的总出错次数还没有达到M,因此继续保持在计算节点队列中。这一轮计算完成后,各队列的状态如图7所示;
7)如图8所示,接下来继续执行任务,Task7在Host1上执行,Task8在Host2上执行,Task9在Host3上执行,Task10在Host4上执行,假设Task7在Host1上再次执行超时;
8)执行完成后,Task7现再次出现错误,而由于Task7的总出错次数还没有达到N,则重新放到任务队列第一位再待下一轮执行;而计算节点也记录下执行Task7出错,但计算节点Host1的总出错次数还没有达到M,因此继续保持在计算节点队列中。此轮计算完成后各队列的状态如图9所示;
9)如图10所示,继续执行任务,Task7再次分配,由于在Host1、Host4上都执行过了,这次按次序分配到Host2上执行;Task11在Host1上执行,Task12在Host3上执行,并假设Task7再次出错;
10)执行完成后,Task7出错,而且已经出错3次(达到了第一次数阀值N),加入到任务出错队列中;而计算节点也记录下执行Task7出错,但计算节点Host2的最近连续出错次数还没有达到M,因此继续保持在计算节点队列中。最终各队列的状态如图11所示;
11)最终任务队列为空,所有任务都执行完毕。其中正常完成11项用例任务,出错1项用例任务(Task7);节点Host1上运行4个用例任务(3个成功,1个出错);节点Host2上运行4个任务(2个成功,2个出错);节点Host3上运行4个用例任务(4个成功,0个出错);节点Host4上运行3个用例任务(2个成功,1个出错)。
此外,对应于上述实施例所述的故障注入用例的并行联合仿真调度方法,本申请实施例还提供一种故障注入用例的并行联合仿真调度装置。该装置为上述实施例所述的用于实现上述故障注入用例的并行联合仿真调度方法的计算机软件中用于执行相应步骤的功能模块。
参照图12,图12为本申请实施例示出的一种故障注入用例的并行联合仿真调度装置的结构示意图。
如图12所述,该装置包括:
分解模块121,用于基于获取的用例文件的内容段和预设的分解数量,对所述用例文件进行分解,得到多个子用例文件;
生成模块122,用于针对各所述子用例文件生成对应的任务文件;
初始化模块123,用于将仿真计算参数初始化,并将所有任务文件对应的仿真任务添加至待执行任务队列中;
仿真计算模块124,用于重复执行仿真计算流程,直至所述待执行任务队列中没有仿真任务或没有可用计算节点时,对仿真数据进行汇总和统计并生成仿真报告;
其中,所述仿真计算模块124具体用于:
从所述待执行任务队列中提取与可用计算节点的数量相同的多个仿真任务,并将所述多个仿真任务以及各仿真任务相关的数据、程序和模板分发至各可用计算节点,以使各可用计算节点分别进行仿真计算;
分别判断各可用计算节点的仿真计算是否出错;
若仿真计算未出错,则将对应的仿真任务从所述待执行任务队列移出至已完成任务队列;
若仿真计算出错,则将对应的仿真任务的任务出错次数加一,并判断所述任务出错次数是否达到预设的第一次数阈值;若达到,则将对应的仿真任务从所述待执行任务队列移出至出错任务队列,若未达到,则将对应的仿真任务保留在所述待执行任务队列中等待下一次被提取;
若仿真计算出错,还将对应的计算节点的节点出错次数加一,并判断所述节点出错次数是否达到预设的第二次数阈值;若达到,则将对应的计算节点标记为不可用计算节点;其中,所述第二次数阈值大于或等于所述第一次数阈值。
其中,上述装置中的各功能模块所执行步骤的具体实现方式可以参照前述方法实施例中的相应内容来实现,此处不再详述。
此外,对应于上述实施例所述的故障注入用例的并行联合仿真调度方法,本申请实施例还提供一种智能设备。该智能设备为上述实施例中所述的用于执行上述故障注入用例的并行联合仿真调度方法的PC或类似设备。
参照图13,图13为本申请实施例示出的一种智能设备的结构示意图。如图13所示,该设备包括:
存储器131以及与存储器131相连接的处理器132;
存储器131用于存储计算机程序,所述计算机程序至少用于执行上述的故障注入用例的并行联合仿真调度方法;
处理器132用于调用并执行存储器131存储的所述计算机程序。
其中,所述计算机程序所执行的方法的具体实现方式可以参照前述方法实施例中的相应内容来实现,此处不再详述。
可以理解的是,上述各实施例中相同或相似部分可以相互参考,在一些实施例中未详细说明的内容可以参见其他实施例中相同或相似的内容。
需要说明的是,在本申请的描述中,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。此外,在本申请的描述中,除非另有说明,“多个”的含义是指至少两个。
流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本申请的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本申请的实施例所属技术领域的技术人员所理解。
应当理解,本申请的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。
本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
此外,在本申请各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。
上述提到的存储介质可以是只读存储器,磁盘或光盘等。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本申请的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
尽管上面已经示出和描述了本申请的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本申请的限制,本领域的普通技术人员在本申请的范围内可以对上述实施例进行变化、修改、替换和变型。
Claims (10)
1.一种故障注入用例的并行联合仿真调度方法,其特征在于,包括:
基于获取的用例文件的内容段和预设的分解数量,对所述用例文件进行分解,得到多个子用例文件;
针对各所述子用例文件生成对应的任务文件;
将仿真计算参数初始化,并将所有任务文件对应的仿真任务添加至待执行任务队列中;
重复执行仿真计算流程,直至所述待执行任务队列中没有仿真任务或没有可用计算节点时,对仿真数据进行汇总和统计并生成仿真报告;
其中,所述仿真计算流程包括:
从所述待执行任务队列中提取与可用计算节点的数量相同的多个仿真任务,并将所述多个仿真任务以及各仿真任务相关的数据、程序和模板分发至各可用计算节点,以使各可用计算节点分别进行仿真计算;
分别判断各可用计算节点的仿真计算是否出错;
若仿真计算未出错,则将对应的仿真任务从所述待执行任务队列移出至已完成任务队列;
若仿真计算出错,则将对应的仿真任务的任务出错次数加一,并判断所述任务出错次数是否达到预设的第一次数阈值;若达到,则将对应的仿真任务从所述待执行任务队列移出至出错任务队列,若未达到,则将对应的仿真任务保留在所述待执行任务队列中等待下一次被提取;
若仿真计算出错,还将对应的计算节点的节点出错次数加一,并判断所述节点出错次数是否达到预设的第二次数阈值;若达到,则将对应的计算节点标记为不可用计算节点;其中,所述第二次数阈值大于或等于所述第一次数阈值。
2.根据权利要求1所述的方法,其特征在于,所述将仿真计算参数初始化,包括:
将所述待执行任务队列、所述已完成任务队列和所述出错任务队列初始化,以及将所有计算节点标记为可用计算节点,并且获取用户设定的第一次数阈值和第二次数阈值。
3.根据权利要求1所述的方法,其特征在于,所述分别判断各可用计算节点的仿真计算是否出错,包括:
根据预设的轮询时间超时后预设目录或文件中是否包含对应的仿真任务上传的结果文件,判断各可用计算节点的仿真计算是否出错;其中,仿真任务在仿真计算完成后生成并上传所述结果文件。
4.根据权利要求1所述的方法,其特征在于,所述将对应的仿真任务保留在所述待执行任务队列中等待下一次被提取,包括:
将对应的仿真任务移至所述待执行任务队列的最前列等待下一次被提取。
5.根据权利要求1所述的方法,其特征在于,还包括:
针对仿真计算出错的仿真任务,下一次被提取后,分发至之前仿真计算出错的可用计算节点之外的其他可用计算节点。
6.根据权利要求1所述的方法,其特征在于,还包括:
在任一可用计算节点完成一次未出错的仿真计算时,将对应的计算节点的节点出错次数清零。
7.根据权利要求6所述的方法,其特征在于,还包括:
针对仿真计算出错的仿真任务,若在其他可用计算节点上重新进行仿真计算后也出错,则将之前仿真计算出错的可用计算节点的节点出错次数减一,若在其他可用计算节点上重新进行仿真计算后未出错,则维持之前仿真计算出错的可用计算节点的节点出错次数不变。
8.根据权利要求1所述的方法,其特征在于,所述用例文件为.aim格式的文件,所述任务文件为.bat格式的文件。
9.一种故障注入用例的并行联合仿真调度装置,其特征在于,包括:
分解模块,用于基于获取的用例文件的内容段和预设的分解数量,对所述用例文件进行分解,得到多个子用例文件;
生成模块,用于针对各所述子用例文件生成对应的任务文件;
初始化模块,用于将仿真计算参数初始化,并将所有任务文件对应的仿真任务添加至待执行任务队列中;
仿真计算模块,用于重复执行仿真计算流程,直至所述待执行任务队列中没有仿真任务或没有可用计算节点时,对仿真数据进行汇总和统计并生成仿真报告;
其中,所述仿真计算模块具体用于:
从所述待执行任务队列中提取与可用计算节点的数量相同的多个仿真任务,并将所述多个仿真任务以及各仿真任务相关的数据、程序和模板分发至各可用计算节点,以使各可用计算节点分别进行仿真计算;
分别判断各可用计算节点的仿真计算是否出错;
若仿真计算未出错,则将对应的仿真任务从所述待执行任务队列移出至已完成任务队列;
若仿真计算出错,则将对应的仿真任务的任务出错次数加一,并判断所述任务出错次数是否达到预设的第一次数阈值;若达到,则将对应的仿真任务从所述待执行任务队列移出至出错任务队列,若未达到,则将对应的仿真任务保留在所述待执行任务队列中等待下一次被提取;
若仿真计算出错,还将对应的计算节点的节点出错次数加一,并判断所述节点出错次数是否达到预设的第二次数阈值;若达到,则将对应的计算节点标记为不可用计算节点;其中,所述第二次数阈值大于或等于所述第一次数阈值。
10.一种智能设备,其特征在于,包括:
存储器以及与所述存储器相连接的处理器;
所述存储器,用于存储计算机程序,所述计算机程序至少用于执行如权利要求1-8任一项所述的故障注入用例的并行联合仿真调度方法;
所述处理器,用于调用并执行所述存储器存储的所述计算机程序。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011236758.7A CN112328487A (zh) | 2020-11-04 | 2020-11-04 | 故障注入用例的并行联合仿真调度方法、装置和设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011236758.7A CN112328487A (zh) | 2020-11-04 | 2020-11-04 | 故障注入用例的并行联合仿真调度方法、装置和设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112328487A true CN112328487A (zh) | 2021-02-05 |
Family
ID=74316847
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011236758.7A Pending CN112328487A (zh) | 2020-11-04 | 2020-11-04 | 故障注入用例的并行联合仿真调度方法、装置和设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112328487A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114217871A (zh) * | 2021-12-14 | 2022-03-22 | 中国航发控制系统研究所 | 多计算机集群并行仿真方法及多计算机集群系统 |
-
2020
- 2020-11-04 CN CN202011236758.7A patent/CN112328487A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114217871A (zh) * | 2021-12-14 | 2022-03-22 | 中国航发控制系统研究所 | 多计算机集群并行仿真方法及多计算机集群系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11349708B2 (en) | Configuration generation for virtual network functions (VNFs) with requested service availability | |
CN108427616B (zh) | 后台程序监控方法及监控装置 | |
EP3553669A1 (en) | Failure recovery method and device, and system | |
US10698801B2 (en) | Method and system for evaluating upgrade campaigns | |
CN113220542B (zh) | 一种计算任务的预警方法、装置、计算机设备及存储介质 | |
US9392046B2 (en) | Method for web site publishing using shared hosting | |
CN111488271B (zh) | 消息中间件的调优方法、系统、电子设备及存储介质 | |
CN111258913A (zh) | 算法自动测试方法、装置、计算机系统及可读存储介质 | |
CN111104139A (zh) | 一种固件升级方法、装置、设备及存储介质 | |
WO2021232853A1 (zh) | 基站数据升级方法、基站和计算机可读介质 | |
CN112953983A (zh) | Sftp传输方法及装置 | |
CN112328487A (zh) | 故障注入用例的并行联合仿真调度方法、装置和设备 | |
CN113342500B (zh) | 任务执行方法、装置、设备及存储介质 | |
CN109582334B (zh) | 可编程逻辑器件的升级方法及装置 | |
CN114879942B (zh) | 分布式时间轮分组注册的校验方法、装置、介质和设备 | |
CN114297067A (zh) | 脚本测试方法及装置 | |
CN111679924B (zh) | 构件化软件系统可靠性仿真方法、装置及电子设备 | |
CN114996955A (zh) | 一种云原生混沌工程实验的靶场环境构建方法及装置 | |
CN113672448A (zh) | BootLoader启动流程的监控方法、装置及存储介质 | |
CN113110991A (zh) | 页面元素的定位方法及装置、存储介质及电子装置 | |
CN110716972A (zh) | 高频率调用外部接口出错的处理方法和装置 | |
CN111090575A (zh) | 测试方法 | |
CN109271188A (zh) | 一种cpld升级方法及相关装置 | |
CN117743059B (zh) | 一种处理器测试方法、装置、电子设备及可读存储介质 | |
CN110908776A (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 |