面向分布式系统的失效恢复机制自动化测试方法及装置制造方法及图纸

技术编号:36525099 阅读:28 留言:0更新日期:2023-02-01 16:03
本发明专利技术公开了一种面向分布式系统的失效恢复机制自动化测试方法及装置,所述方法包括:将初始故障序列注入分布式系统,获取目标系统运行信息;基于所述目标系统运行信息、系统特定约束和用户特定约束,生成和变异故障序列seq

【技术实现步骤摘要】
面向分布式系统的失效恢复机制自动化测试方法及装置


[0001]本专利技术属于软件
,尤其涉及一种面向分布式系统的失效恢复机制自动化测试方法及装置。

技术介绍

[0002]在大数据和云计算时代,分布式系统(Distributed Systems)已经成为现代应用程序的主要支柱,为用户提供可靠支撑。以分布式存储系统HDFS、集群管理服务YARN、分布式计算框架MapReduce、分布式协调服务ZooKeeper等为代表的分布式系统在大型互联网公司,如阿里巴巴、百度、腾讯、谷歌等得到广泛部署应用。大规模分布式系统管理大量分布式软件组件、硬件及其配置,通常由成千上万台物理机器(即计算节点,Node)组成。系统中数量众多的计算节点需要协同工作,运行各种复杂协议,面临各种非确定性场景(如网络、故障)。
[0003]可靠性和故障容忍是现代分布式系统的首要目标。由于断电、硬件错误、软件错误等原因,分布式集群中的节点不可避免地会发生失效(Crash)故障,使节点不可访问。随着分布式集群中节点规模的扩大,节点失效也变得更为常见。当一个节点失效发生后,本文档来自技高网...

【技术保护点】

【技术特征摘要】
1.一种面向分布式系统的失效恢复机制自动化测试方法,其特征在于,所述方法包括:将初始故障序列注入分布式系统,获取目标系统运行信息;其中,所述初始故障序列中不包含任一故障;基于所述目标系统运行信息、系统特定约束和用户特定约束,生成和变异故障序列seq

,以更新故障序列队列;其中,所述系统特定约束表示所述目标系统中目标集群在同一时刻可容忍的节点宕机情况,所述用户特定约束表示所述故障序列seq

中的最大故障数目;从所述故障序列队列选择一故障序列seq;使用所述故障序列seq对所述分布式系统进行测试,获取缺陷报告或更新所述故障序列队列之后,返回至从所述故障序列队列选择一故障序列seq;基于所述缺陷报告,得到所述分布式系统的测试结果。2.如权利要求1所述的方法,其特征在于,所述基于所述目标系统运行信息、系统特定约束和用户特定约束,生成和变异故障序列seq

,以得到故障序列队列,包括:基于所述运行信息,得到I/O相关信息和代码覆盖;在所述代码覆盖包含以往被测故障序列未覆盖的代码块,或所述被测故障序列seq中最后一个故障为节点失效故障的情况下,则,基于所述I/O相关信息,生成一故障序列seq

;其中,所述I/O相关信息包括:执行的I/O操作所在的节点ID、调用栈、操作源路径、操作目标路径和时间戳,所述操作源路径和操作目标路径包括:节点ID、文件路径;在所述故障序列seq

的中的故障数目等于用户特定约束中所述最大故障数目的情况下,则不对所述故障序列队列进行更新;在所述故障序列seq

的中的故障数目小于用户特定约束中所述最大故障数目的情况下,则针对所述故障序列seq

中故障事件为节点失效或节点重启的最后一个I/O点之后的I/O点,每次操作选取一I/O点并添加节点失效故障或节点重启故障,以得到一组新的故障序列加入故障序列队列;在所述代码覆盖包含以往被测故障序列覆盖的代码块且所述故障序列seq中最后一个故障不是节点失效故障的情况下,则丢弃所述故障序列seq,且不对所述故障序列队列进行更新。3.如权利要求2所述的方法,其特征在于,所述针对所述故障序列seq

中故障事件为节点失效或节点重启的最后一个I/O点之后的I/O点,每次操作选取一I/O点并添加节点失效故障或节点重启故障,以得到一组新的故障序列加入故障序列队列,包括:找到所述故障序列seq

中故障事件为节点失效或节点重启的最后一个I/O点在序列中的位置loc,并创建所述最后一个I/O点之后I/O点的索引值i;其中,所述索引值i的初始值为loc+1;创建一个变异故障序列集合mutates;所述变异故障序列集合mutates的初始值为空;在第i个I/O点对应的故障事件为无故障事件的情况下,分别判断注入节点失效事件与节点重启事件是否满足系统特定约束,并将满足系统特定约束的故障序列加入所述变异故障序列集合mutates;在第i个I/O点对应的故障事件为节点失效事件或节点重启事件的情况下,跳过所述第
i个I/O点并处理第i+1个I/O点;在所述最后一个I/O点之后的所有I/O点处理完毕后,将所述变异故障序列集合mutates加入故障序列队列。4.如权利要求1所述的方法,其特征在于,所述从所述故障序列队列选择一故障序列seq,包括:在所述故障序列队列中选择一组可疑故障序列候选集合;对所述可疑故障序列候选集合中的每一故障序列进行优先级打分;根据打分结果,确定一故障序列。5.如权利要求4所述的方法,其特征在于,所述在所述故障序列队列中选择一组可疑故障序列候选集合,包括:生成一个可疑故障序列候选集合candidates;所述可疑故障序列候选集合candidates的初始值为空;当以一定概率应用策略一时,则基于所述故障序列队列中所有故障序列的故障ID,将全局而言具有未测试故障ID的故障序列加入所述可疑故障序列候选集合candidates;其中,所述应用策略一为优先选择全局而言具有未测试故障ID的故障序列进行测试,所述故障ID为一个故障序列中最后一个故障所对应I/O点的调用栈和故障事件类型计算得到的哈希值;在当前可疑故障序列候选集合candidates不为空的情况下,将当前可疑故障序列候选集合candidates作为可疑故障序列候选集合;在当前可疑故障序列候选集合candidates为空的情况下,且以一定概率应用策略二时,则找到故障序列队列中所有最后一个故障发生在恢复过程中I...

【专利技术属性】
技术研发人员:高钰魏峻窦文生王栋黄涛
申请(专利权)人:中国科学院软件研究所
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1