故障存儲方法和裝置、故障查找方法和裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及故障注入領(lǐng)域,特別涉及一種故障存儲方法和裝置、故障查找方法和
目-Ο
【背景技術(shù)】
[0002]故障注入技術(shù)目前已經(jīng)從單故障注入發(fā)展到了多故障注入。通常情況下,故障注入系統(tǒng)不支持注入兩個相同的故障,因此,在注入故障之前需要先遍歷系統(tǒng)當(dāng)前已注入的所有故障,以避免重復(fù)注入。在遍歷的過程中,故障查詢是非常關(guān)鍵的步驟,將直接影響每次故障注入的響應(yīng)時間和處理時間。
[0003]目前,故障注入系統(tǒng)中的故障普遍以鏈表的形式存儲,由于鏈表本身具有一個節(jié)點指向另一個節(jié)點的特性,在進(jìn)行故障查找時,只能以遍歷鏈表的形式從鏈表中的第一個節(jié)點開始一個接一個地進(jìn)行查找,直到找到需要的故障為止,這種方式查找速度慢,效率很低。
【發(fā)明內(nèi)容】
[0004]有鑒于此,本發(fā)明提供了一種故障存儲方法和裝置、故障查找方法和裝置,以提高故障注入系統(tǒng)中故障查找的速度。所述技術(shù)方案如下:
[0005]第一方面,本發(fā)明提供了一種故障存儲方法,所述方法包括:
[0006]在注入故障時,獲取待注入故障的描述符;
[0007]對所述描述符進(jìn)行哈希運算,從所述哈希運算的結(jié)果中提取特征值;
[0008]將多個所述待注入故障的特征值中的每一個特征值根據(jù)二叉搜索樹插入算法確定與所述每一個特征值對應(yīng)的紅黑樹節(jié)點;
[0009]存儲所述待注入故障,并獲取所述待注入故障的存儲地址;
[0010]將所述每一個待注入故障的特征值和存儲地址按照如下針對待注入故障Α的特征值和存儲地址的處理方式處理:
[0011]將所述待注入故障A的特征值與所述待注入故障A的存儲地址組成鍵值對,并將所述鍵值對存儲在與所述待注入故障A的特征值對應(yīng)的紅黑樹節(jié)點。
[0012]結(jié)合上述第一方面,在第一種實施方式下,所述方法還包括:
[0013]所述描述符包括:故障類別編號;或者,
[0014]所述描述符包括:故障類別編號,以及下面三種參數(shù)中的至少一種:故障發(fā)生對象、故障作用域和故障觸發(fā)條件。
[0015]結(jié)合上述第一方面或第一種實施方式,在第二種實施方式下,所述對所述描述符進(jìn)行哈希運算,從所述哈希運算的結(jié)果中提取所述待注入故障的特征值,包括:
[0016]對所述描述符進(jìn)行消息摘要算法MD5運算,在運算結(jié)果中提取連續(xù)的N個位中的值作為所述待注入故障的特征值;
[0017]所述N是根據(jù)處理器的位數(shù)確定的,是指可由所述處理器一次性處理的位的個數(shù)。
[0018]結(jié)合上述第一方面、第一方面的第一種實施方式或第一方面的第二種實施方式,在第三種實施方式下,所述對所述描述符進(jìn)行哈希運算,包括:
[0019]當(dāng)所述描述符包括至少兩個參數(shù)時,先用連接符將所述描述符中的各個參數(shù)連接起來,然后對所述連接后的描述符進(jìn)行哈希運算。
[0020]第二方面,本發(fā)明提供了一種故障查找方法,該方法包括:在查找故障時,獲取待查找故障的描述符;
[0021]對所述待查找故障的描述符進(jìn)行哈希運算,從所述哈希運算的結(jié)果中提取特征值;
[0022]以所述特征值為索引,遍歷與多個已注入故障的特征值對應(yīng)的多個紅黑樹節(jié)點,判斷所述與多個已注入故障的特征值對應(yīng)的多個紅黑樹節(jié)點中是否存在與所述特征值對應(yīng)的紅黑樹節(jié)點,所述與多個已注入故障的特征值對應(yīng)的多個紅黑樹節(jié)點是由所述多個已注入故障的特征值中每一已注入故障的特征值根據(jù)二叉搜索樹插入算法確定的,所述每一個已注入故障的特征值對應(yīng)的紅黑樹節(jié)點按照如下針對已注入故障B的特征值對應(yīng)的紅黑樹節(jié)點的處理方式處理:將所述已注入故障B的特征值與所述已注入故障B的存儲地址組成鍵值對,并將所述鍵值對存儲在與所述已注入故障B的特征值對應(yīng)的紅黑樹節(jié)點;
[0023]如果所述與多個已注入故障的特征值對應(yīng)的多個紅黑樹節(jié)點中存在與所述特征值對應(yīng)的紅黑樹節(jié)點,則確定所述故障存在,返回所述特征值對應(yīng)的故障信息的存儲地址;如果所述與多個已注入故障的特征值對應(yīng)的多個紅黑樹節(jié)點中不存在與所述特征值對應(yīng)的紅黑樹節(jié)點,則確定所述故障不存在。
[0024]結(jié)合第二方面,在第一種實施方式下,所述返回所述特征值對應(yīng)的故障信息的存儲地址之后,還包括:
[0025]從所述存儲地址對應(yīng)的存儲空間中讀取故障信息。
[0026]第三方面,本發(fā)明提供了一種故障存儲裝置,所述裝置包括:
[0027]獲取模塊,用于在注入故障時,獲取待注入故障的描述符;
[0028]提取模塊,用于對所述描述符進(jìn)行哈希運算,從所述哈希運算的結(jié)果中提取所述待注入故障的特征值;
[0029]生成模塊,用于將多個所述待注入故障的特征值中的每一個特征值根據(jù)二叉搜索樹插入算法確定與所述每一個特征值對應(yīng)的紅黑樹節(jié)點;
[0030]存儲模塊,用于存儲所述待注入故障;
[0031]所述獲取模塊還用于獲取所述待注入故障的存儲地址;
[0032]所述存儲模塊還用于將所述每一個待注入故障的特征值和存儲地址按照如下針對待注入故障A的特征值和存儲地址的處理方式處理:
[0033]將所述待注入故障A的特征值與所述待注入故障A的存儲地址組成鍵值對,并將所述鍵值對存儲在與所述待注入故障A的特征值對應(yīng)的紅黑樹節(jié)點。
[0034]結(jié)合上述第三方面,在第一種實施方式下,所述描述符包括:故障類別編號;或者,
[0035]所述描述符包括:故障類別編號,還有故障發(fā)生對象、故障作用域和故障觸發(fā)條件中的至少一種。
[0036]結(jié)合上述第三方面或第三方面的第一種實施方式,所述提取模塊具體用于對所述描述符進(jìn)行消息摘要算法MD5運算,在運算結(jié)果中提取連續(xù)的N個位中的值作為所述待注入故障的特征值;所述N是根據(jù)處理器的位數(shù)確定的,是指可由所述處理器一次性處理的位的個數(shù)。
[0037]結(jié)合上述第三方面、第三方面的第一種實施方式或第三方面的第二種實施方式,在第三種實施方式下,所述提取模塊具體用于當(dāng)所述描述符包括至少兩個參數(shù)時,先用連接符將所述描述符中的各個參數(shù)連接起來,然后對所述連接后的描述符進(jìn)行哈希運算,從所述哈希運算的結(jié)果中提取所述待注入故障的特征值。
[0038]第四方面,本發(fā)明還提供了一種故障查找裝置,該裝置包括:
[0039]獲取模塊,用于在查找故障時,獲取待查找故障的描述符;
[0040]提取模塊,用于對所述待查找故障的描述符進(jìn)行哈希運算,從所述哈希運算的結(jié)果中提取特征值;
[0041]查找模塊,用于以所述特征值為索引,遍歷與多個已注入故障的特征值對應(yīng)的多個紅黑樹節(jié)點,判斷所述與多個已注入故障的特征值對應(yīng)的多個紅黑樹節(jié)點中是否存在與所述特征值對應(yīng)的紅黑樹節(jié)點,所述與多個已注入故障的特征值對應(yīng)的多個紅黑樹節(jié)點是由所述多個已注入故障的特征值中每一已注入故障的特征值根據(jù)二叉搜索樹插入算法確定的,所述每一個已注入故障的特征值對應(yīng)的紅黑樹節(jié)點按照如下針對已注入故障B的特征值對應(yīng)的紅黑樹節(jié)點的處理方式處理:將所述已注入故障B的特征值與所述已注入故障B的存儲地址組成鍵值對,并將所述鍵值對存儲在與所述已注入故障B的特征值對應(yīng)的紅黑樹節(jié)點;
[0042]判定模塊,用于如果所述與多個已注入故障的特征值對應(yīng)的多個紅黑樹節(jié)點中存在與所述特征值對應(yīng)的紅黑樹節(jié)點,則確定所述故障存在,返回所述特征值對應(yīng)的故障信息的存儲地址;如果所述與多個已注入故障的特征值對應(yīng)的多個紅黑樹節(jié)點中不存在與所述特征值對應(yīng)的紅黑樹節(jié)點,則確定所述故障不存在。
[0043]結(jié)合第四方面,在第一種實施方式下,所述裝置還包括:
[0044]讀取模塊,用于在所述判定模塊返回所述特征值對應(yīng)的故障信息的存儲地址之后,從所述存儲地址對應(yīng)的存儲空間中讀取故障信息。
[0045]本發(fā)明提供的技術(shù)方案帶來的有益效果是:
[0046]在注入故障時,獲取待注入故障的描述符;對所述描述符進(jìn)行哈希運算,從所述哈希運算的結(jié)果中提取特征值;將多個所述待注入故障的特征值中的每一個特征值根據(jù)二叉搜索樹插入算法確定與所述每一個特征值對應(yīng)的紅黑樹節(jié)點;存儲所述待注入故障,并獲取所述待注入故障的存儲地址;將所述每一個待注入故障的特征值和存儲地址按照如下針對待注入故障A的特征值和存儲地址的處理方式處理:將所述待注入故障A的特征值與所述待注入故障A的存儲地址組成鍵值對,并將所述鍵值對存儲在與所述待注入故障A的特征值對應(yīng)的紅黑樹節(jié)點;其中,所述紅黑樹節(jié)點中的特征值作為索引用于故障查找,能夠?qū)崿F(xiàn)基于索引進(jìn)行故障注入系統(tǒng)中的故障查找,與鏈表式存儲結(jié)構(gòu)相比,更優(yōu)化更利于查找。
[0047]在查找故障時,獲取待查找故障的描述符;對所述待查找故障的描述符進(jìn)行哈希運算,從所述哈希運算的結(jié)果中提取特征值;以所述特征值為索引,遍歷與多個已注入故障的特征值對應(yīng)的多個紅黑樹節(jié)點,判斷所述與多個已注入故障的特征值對應(yīng)的多個紅黑樹節(jié)點中是否存在與所述特征值對應(yīng)的紅黑樹節(jié)點,所述與多個已注入故障的特征值對應(yīng)的多個紅黑樹節(jié)點是由所述多