欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種硬件故障驗(yàn)證方法、裝置及客戶端與流程

文檔序號(hào):12363315閱讀:174來源:國(guó)知局
一種硬件故障驗(yàn)證方法、裝置及客戶端與流程

本申請(qǐng)屬于計(jì)算機(jī)信息處理領(lǐng)域,尤其涉及一種硬件故障驗(yàn)證方法、裝置及客戶端。



背景技術(shù):

隨著人們安全意識(shí)的逐漸提高,安全作業(yè)、生產(chǎn)越來越被人們重視。所述的安全作業(yè)、生成可以包括硬件、軟件系統(tǒng)的安全運(yùn)行以及在所述硬件或者軟件發(fā)生故障時(shí)正確、及時(shí)的應(yīng)對(duì)措施。

在一些軟件+硬件結(jié)合的終端業(yè)務(wù)系統(tǒng)中,可以預(yù)先在所述業(yè)務(wù)系統(tǒng)中設(shè)置一些硬件故障發(fā)生時(shí)相應(yīng)的應(yīng)對(duì)措施的行為。例如中斷電源、終止設(shè)備運(yùn)行、跳轉(zhuǎn)至指定應(yīng)用等,這些硬件故障的應(yīng)對(duì)措施行為可以預(yù)先在業(yè)務(wù)系統(tǒng)中進(jìn)行設(shè)定。但在實(shí)際的設(shè)備或者業(yè)務(wù)系統(tǒng)線上運(yùn)行時(shí),常常會(huì)發(fā)送許多故障,在這些故障中很多是由于硬件發(fā)生故障且相應(yīng)的業(yè)務(wù)系統(tǒng)沒有在發(fā)生所述硬件故障時(shí)按照預(yù)期執(zhí)行相應(yīng)的應(yīng)對(duì)措施,或者應(yīng)對(duì)措施執(zhí)行不到位甚至執(zhí)行錯(cuò)誤。造成上述現(xiàn)象的主要原因在于很多終端設(shè)備尤其是復(fù)雜、大型設(shè)備的硬件故障繁多,存在難以預(yù)測(cè)的硬件故障,而在業(yè)務(wù)系統(tǒng)設(shè)計(jì)時(shí)采集的可能發(fā)生硬件的故障信息不夠全面、硬件故障信息難以模擬等問題。

現(xiàn)有技術(shù)中,為了保障發(fā)生硬件故障時(shí)相應(yīng)業(yè)務(wù)系統(tǒng)可以采取預(yù)期的應(yīng)對(duì)措施,作業(yè)人員通常采用現(xiàn)場(chǎng)硬件故障測(cè)試的方法對(duì)業(yè)務(wù)系統(tǒng)進(jìn)行驗(yàn)證。在所述現(xiàn)場(chǎng)硬件故障測(cè)試中可以采用對(duì)實(shí)際物理設(shè)備進(jìn)行操作,例如拔掉網(wǎng)卡、電源停止供電、容器容量溢出、加熱至額定溫度等。但現(xiàn)有的采取現(xiàn)場(chǎng)硬件故障測(cè)試來驗(yàn)證相應(yīng)業(yè)務(wù)系統(tǒng)是否執(zhí)行預(yù)期的應(yīng)對(duì)措施的方法中,每次演練測(cè)試過程都會(huì)消耗大量的設(shè)備、人力和時(shí)間資源,而且所述業(yè)務(wù)系統(tǒng)的驗(yàn)證往往是需要大量驗(yàn)證測(cè)試,這無疑使現(xiàn)場(chǎng)硬件故障測(cè)試來驗(yàn)證業(yè)務(wù)系統(tǒng)執(zhí)行行為的方法的驗(yàn)證效率大大降低。



技術(shù)實(shí)現(xiàn)要素:

本申請(qǐng)目的在于提供一種硬件故障驗(yàn)證方法、裝置及客戶端,可以模擬硬件故障,實(shí)現(xiàn)在驗(yàn)證發(fā)生硬件故障時(shí)業(yè)務(wù)系統(tǒng)是否能按照預(yù)期的應(yīng)對(duì)措施執(zhí)行相應(yīng)的行為,可以節(jié)約驗(yàn)證 硬件故障的設(shè)備、人力、時(shí)間等資源,提高硬件故障的驗(yàn)證執(zhí)行效率。

本申請(qǐng)?zhí)峁┑囊环N硬件故障驗(yàn)證方法、裝置及客戶端是這樣實(shí)現(xiàn)的:

一種硬件故障驗(yàn)證方法,所述方法包括:

獲取驗(yàn)證對(duì)象的原始驗(yàn)證代碼;

在所述原始驗(yàn)證代碼的指定位置注入預(yù)設(shè)的硬件故障驗(yàn)證代碼;

觸發(fā)所述原始驗(yàn)證代碼中設(shè)置的驗(yàn)證執(zhí)行事件時(shí),執(zhí)行所述硬件故障驗(yàn)證代碼;

所述硬件故障驗(yàn)證代碼執(zhí)行完后,恢復(fù)所述驗(yàn)證對(duì)象的原始驗(yàn)證代碼。

一種硬件故障驗(yàn)證裝置,所述裝置包括:

驗(yàn)證配置模塊,用于存儲(chǔ)包括設(shè)置的硬件驗(yàn)證故障代碼和注入所述硬件驗(yàn)證故障代碼位置的配置信息;

驗(yàn)證接口模塊,用于提供硬件故障驗(yàn)證的調(diào)用接口,所述接口用于向接口的調(diào)用方發(fā)送所述配置信息;

代碼恢復(fù)模塊,用于在判斷所述調(diào)用方執(zhí)行完所述硬件故障驗(yàn)證代碼時(shí),恢復(fù)所述調(diào)用方的原始代碼。

一種硬件故障驗(yàn)證裝置,其特征在于,所述裝置包括:

驗(yàn)證配置模塊,用于存儲(chǔ)包括設(shè)置的硬件驗(yàn)證故障代碼和注入所述硬件驗(yàn)證故障代碼位置的配置信息;

故障代碼執(zhí)行模塊,用于根據(jù)所述配置信息執(zhí)行所述硬件故障驗(yàn)證代碼;

代碼恢復(fù)模塊,用于在判斷所述調(diào)用方執(zhí)行完所述硬件故障驗(yàn)證代碼時(shí),恢復(fù)所述調(diào)用方的原始代碼。

一種故障信息處理客戶端,所述客戶端被設(shè)置成,包括:

調(diào)用故障驗(yàn)證接口,獲取驗(yàn)證配置信息的處理單元;根據(jù)所述配置信息中設(shè)置的故障驗(yàn)證代碼和注入所述故障驗(yàn)證代碼的位置信息注入所述故障驗(yàn)證代碼處理單元;執(zhí)行所述故障驗(yàn)證代碼,并在執(zhí)行完所述故障驗(yàn)證代碼后消除所述注入的故障驗(yàn)證代碼的處理單元。

本申請(qǐng)?zhí)峁┑囊环N硬件故障驗(yàn)證方法、裝置及客戶端,可以通過本地或者遠(yuǎn)程的方式向業(yè)務(wù)系統(tǒng)注入預(yù)先設(shè)置的硬件故障驗(yàn)證代碼。在所述業(yè)務(wù)系統(tǒng)觸發(fā)所述驗(yàn)證執(zhí)行事件,例如執(zhí)行到故障驗(yàn)證代碼時(shí),通過對(duì)所述故障驗(yàn)證代碼的執(zhí)行情況以及輸出的結(jié)果特征數(shù)據(jù)幫助作業(yè)人員觀察業(yè)務(wù)系統(tǒng)的運(yùn)行情況是否符合預(yù)期。這樣,采用本申請(qǐng)所述的硬件故障驗(yàn)證方法來代替現(xiàn)場(chǎng)的硬件故障測(cè)試,可以大大降低驗(yàn)證成本,提高驗(yàn)證效率。本申請(qǐng)所述的硬件故障驗(yàn)證方法、裝置和客戶端在驗(yàn)證過程中可以不需要改動(dòng)正在運(yùn)行的業(yè)務(wù)系統(tǒng)的原始代碼 信息,在注入硬件故障驗(yàn)證代碼后可以進(jìn)行自動(dòng)清除,對(duì)原始代碼沒有侵入性。在采用JAVA的實(shí)現(xiàn)方式中不會(huì)影響到同時(shí)進(jìn)行的其他驗(yàn)證測(cè)試,可以有效的提高業(yè)務(wù)系統(tǒng)驗(yàn)證測(cè)試的執(zhí)行效率。

附圖說明

為了更清楚地說明本申請(qǐng)實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見地,下面描述中的附圖僅僅是本申請(qǐng)中記載的一些實(shí)施例,對(duì)于本鄰域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。

圖1是本申請(qǐng)所述一種硬件故障驗(yàn)證方法一種實(shí)施例的方法流程圖;

圖2是本申請(qǐng)所述一種硬件故障驗(yàn)證方法另一種實(shí)施例的方法流程圖;

圖3是本申請(qǐng)所述一種硬件故障驗(yàn)證方法另一種實(shí)施例的方法流程圖;

圖4是本申請(qǐng)所述一種硬件故障驗(yàn)證方法另一種實(shí)施例的方法流程圖;

圖5是本申請(qǐng)所述硬件故障驗(yàn)證裝置的一種實(shí)施例的模塊結(jié)構(gòu)示意圖;

圖6是本申請(qǐng)所述硬件故障驗(yàn)證裝置中代碼恢復(fù)模塊的一種實(shí)施例的模塊結(jié)構(gòu)示意圖;

圖7是本申請(qǐng)所述硬件故障驗(yàn)證裝置中代碼恢復(fù)模塊的另一種實(shí)施例的模塊結(jié)構(gòu)示意圖;

圖8是本申請(qǐng)所述一種硬件故障驗(yàn)證裝置另一種實(shí)施例的模塊結(jié)構(gòu)示意圖。

具體實(shí)施方式

為了使本技術(shù)鄰域的人員更好地理解本申請(qǐng)中的技術(shù)方案,下面將結(jié)合本申請(qǐng)實(shí)施例中的附圖,對(duì)本申請(qǐng)實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本申請(qǐng)一部分實(shí)施例,而不是全部的實(shí)施例?;诒旧暾?qǐng)中的實(shí)施例,本鄰域普通技術(shù)人員在沒有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都應(yīng)當(dāng)屬于本申請(qǐng)保護(hù)的范圍。

下面結(jié)合附圖對(duì)本申請(qǐng)所述的圖主體識(shí)別方法進(jìn)行詳細(xì)的說明。圖1是本申請(qǐng)所述一種硬件故障驗(yàn)證方法一種實(shí)施例的方法流程圖。雖然本申請(qǐng)?zhí)峁┝巳缦率鰧?shí)施例或流程圖所述的方法操作步驟,但基于常規(guī)或者無需創(chuàng)造性的勞動(dòng)在所述方法中可以包括更多或者更少的操作步驟。在邏輯性上不存在必要因果關(guān)系的步驟中,這些步驟的執(zhí)行順序不限于本申請(qǐng)實(shí)施例中提供的執(zhí)行順序。所述的方法的在實(shí)際中的裝置或終端產(chǎn)品執(zhí)行時(shí),可以按照實(shí)施例或者附圖所示的方法順序執(zhí)行或者并行執(zhí)行(例如并行處理器或者多線程處理的環(huán)境)。

具體的本申請(qǐng)?zhí)峁┑囊环N硬件故障驗(yàn)證方法一種實(shí)施例如圖1所示,所述方法可以包括:

S1:獲取驗(yàn)證對(duì)象的原始驗(yàn)證代碼。

本申請(qǐng)中所述的驗(yàn)證對(duì)象可以包括需要進(jìn)行硬件故障功能驗(yàn)證的類、組件、單元、模塊、裝置、客戶端、服務(wù)器、業(yè)務(wù)系統(tǒng)等。所述的原始驗(yàn)證代碼可以包括各種編程設(shè)計(jì)語言的形成的驗(yàn)證對(duì)象的代碼信息。本申請(qǐng)中并不限于具體某一種所述驗(yàn)證對(duì)象的編程設(shè)計(jì)語言,如JAVA、C#等。由于JAVA的廣泛應(yīng)用和良好的平臺(tái)無關(guān)性,本申請(qǐng)優(yōu)選的實(shí)施例中所述的原始驗(yàn)證代碼可以為JAVA字節(jié)碼。一般的,所述的JAVA字節(jié)碼(Byte-code)可以為一種包含執(zhí)行程序、由一序列OP代碼/數(shù)據(jù)對(duì)組成的二進(jìn)制文件

獲取需要進(jìn)行硬件故障驗(yàn)證的驗(yàn)證對(duì)象的原始驗(yàn)證代碼。

S2:在所述原始驗(yàn)證代碼的指定位置注入預(yù)設(shè)的硬件故障驗(yàn)證代碼。

本申請(qǐng)中在所述原始驗(yàn)證代碼中輸入硬件故障驗(yàn)證代碼的實(shí)現(xiàn)方式具體的可以通過JVM提供的instrument函數(shù)實(shí)現(xiàn)。所述的JVM是JAVA Virtual Machine(JAVA虛擬機(jī))的縮寫。JVM是一種用于計(jì)算設(shè)備的規(guī)范,是通過在實(shí)際的計(jì)算機(jī)上仿真模擬各種計(jì)算機(jī)功能來實(shí)現(xiàn)的。所述的JVM為JAVA編程設(shè)計(jì)語言的核心和基礎(chǔ),為JAV編譯器和OS平臺(tái)之間的虛擬處理器。它是一種基于下層的操作系統(tǒng)和硬件平臺(tái)并利用軟件方法來實(shí)現(xiàn)的抽象的計(jì)算機(jī),可以在上面執(zhí)行JAVA的字節(jié)碼程序。

一般的,實(shí)現(xiàn)本申請(qǐng)所述的在原始驗(yàn)證代碼中注入驗(yàn)證代碼的可以包括多種方式。本申請(qǐng)?zhí)峁┑囊环N實(shí)施方式中,可以讀取預(yù)先設(shè)置的配置文件信息,所述配置文件信息中可以預(yù)先存儲(chǔ)設(shè)置的硬件故障驗(yàn)證代碼和需要注入故障代碼的位置信息。因此,本申請(qǐng)的所述一種硬件故障驗(yàn)證方法的另一種實(shí)施例中,在所述原始驗(yàn)證代碼的指定位置注入預(yù)設(shè)的硬件故障驗(yàn)證代碼可以包括:

S201:讀取預(yù)設(shè)的配置文件,根據(jù)所述配置文件中設(shè)置的硬件故障代碼和代碼注入位置信息在所述原始驗(yàn)證代碼注入所述硬件故障驗(yàn)證代碼。

通過加載本實(shí)施例所述的配置文件實(shí)現(xiàn)故障代碼的注入,可以快速、準(zhǔn)確的完成所述硬件故障驗(yàn)證代碼注入,提高硬件故障驗(yàn)證效率。

S3:觸發(fā)所述原始驗(yàn)證代碼中設(shè)置的驗(yàn)證執(zhí)行事件時(shí),執(zhí)行所述硬件故障驗(yàn)證代碼。

所述的驗(yàn)證執(zhí)行事件可以為預(yù)先設(shè)置的觸發(fā)執(zhí)行硬件故障驗(yàn)證的事件。具體的,例如可以設(shè)置為執(zhí)行到所述原始驗(yàn)證代碼的某行指令時(shí)觸發(fā)驗(yàn)證事件,或者監(jiān)測(cè)到所述原始驗(yàn)證代碼中某個(gè)參數(shù)值符合觸發(fā)條件時(shí)觸發(fā)驗(yàn)證執(zhí)行的事件。一般的所述驗(yàn)證執(zhí)行事件可以包括不需要在原始驗(yàn)證代碼中添加新的代碼的監(jiān)聽事件,或者需要添加新的代碼實(shí)現(xiàn)驗(yàn)證執(zhí)行事件 的設(shè)置。在本實(shí)施例中,可以在所述原始驗(yàn)證代碼的指定位置插入驗(yàn)證執(zhí)行事件,具體的例如可以利用JVM的instrument機(jī)制提供的在軟件運(yùn)行期間動(dòng)態(tài)字節(jié)碼修改技術(shù)實(shí)現(xiàn)所述原始驗(yàn)證代碼驗(yàn)證執(zhí)行事件的埋點(diǎn)。當(dāng)然,所述驗(yàn)證執(zhí)行時(shí)間的具體位置可以根據(jù)硬件故障驗(yàn)證設(shè)計(jì)需求在所述原始驗(yàn)證代碼中需要設(shè)置。

當(dāng)所述原始驗(yàn)證代碼運(yùn)行到指定位置或者監(jiān)測(cè)到所述原始驗(yàn)證代碼的指定參數(shù)值達(dá)到所述驗(yàn)證執(zhí)行事件的值,或者符合設(shè)置的其他行為觸發(fā)所述驗(yàn)證執(zhí)行事件時(shí),可以在所述驗(yàn)證代碼的指定位置注入預(yù)先設(shè)置好的硬件故障驗(yàn)證代碼。

注入所述硬件故障驗(yàn)證代碼并觸發(fā)驗(yàn)證執(zhí)行事件后,可以執(zhí)行所述硬件故障驗(yàn)證代碼,根據(jù)所述硬件故障驗(yàn)證代碼的執(zhí)行情況判斷業(yè)務(wù)系統(tǒng)的運(yùn)行是否符合預(yù)期。具體的,在執(zhí)行所述硬件故障驗(yàn)證代碼的過程中,如果出現(xiàn)執(zhí)行異常,可以中斷驗(yàn)證過程,恢復(fù)驗(yàn)證前的原始驗(yàn)證代碼,同時(shí)可以輸出執(zhí)行異常的相關(guān)信息。

S4:所述硬件故障驗(yàn)證代碼執(zhí)行完后,恢復(fù)所述驗(yàn)證對(duì)象的原始驗(yàn)證代碼。

在上述注入硬件故障驗(yàn)證代碼后,所述驗(yàn)證對(duì)象的原始驗(yàn)證代碼已經(jīng)被修改。所述硬件故障驗(yàn)證代碼執(zhí)行完后,可以恢復(fù)所述驗(yàn)證對(duì)象原始的原始驗(yàn)證代碼信息。所述的恢復(fù)所述驗(yàn)證對(duì)象的原始驗(yàn)證代碼具體的可以包括多種實(shí)現(xiàn)方式。圖2是本申請(qǐng)所述一種硬件故障驗(yàn)證方法另一種實(shí)施例的方法流程圖。如圖2所示,本申請(qǐng)?zhí)峁┑囊环N實(shí)施例中,所述的恢復(fù)所述驗(yàn)證對(duì)象的原始驗(yàn)證代碼可以包括:

S401:消除所述執(zhí)行完后的指定位置的硬件故障驗(yàn)證代碼。

本實(shí)施例所述的恢復(fù)驗(yàn)證對(duì)象的原始驗(yàn)證代碼的方式通過消除插入的故障驗(yàn)證代碼實(shí)現(xiàn)。此種實(shí)施方式通常的適用于對(duì)原始驗(yàn)證代碼沒有做修改,僅在指定位置增加了故障驗(yàn)證代碼的應(yīng)用場(chǎng)景。當(dāng)然,如果在所述指定位置添加了驗(yàn)證執(zhí)行事件的代碼,在恢復(fù)所述原始驗(yàn)證代碼時(shí)可以一并刪除所述驗(yàn)證執(zhí)行事件。

而在一些應(yīng)用場(chǎng)景中,所述的驗(yàn)證對(duì)象可以處于正在運(yùn)行的狀態(tài)。本申請(qǐng)的所述硬件故障驗(yàn)證方式的另一種實(shí)施例中,在進(jìn)行硬件故障驗(yàn)證前,保存所述驗(yàn)證對(duì)象的原始驗(yàn)證代碼,在需要所述恢復(fù)所述驗(yàn)證對(duì)象的原始驗(yàn)證代碼將保存的原始驗(yàn)證代碼替換掉執(zhí)行所述硬件故障驗(yàn)證的原始驗(yàn)證代碼。因此,本申請(qǐng)所述的一種硬件故障驗(yàn)證方法在獲取所述驗(yàn)證對(duì)象的原始驗(yàn)證代碼后,還可以包括:

S402:存儲(chǔ)所述原始驗(yàn)證代碼;

相應(yīng)的,所述恢復(fù)驗(yàn)證對(duì)象的原始驗(yàn)證代碼可以包括用所述存儲(chǔ)的原始驗(yàn)證代碼替換所述驗(yàn)證對(duì)象注入所述硬件故障代碼后的原始驗(yàn)證代碼。

圖3是本申請(qǐng)所述一種硬件故障驗(yàn)證方法另一種實(shí)施例的方法流程圖。如圖3所示,在本實(shí)施例中,可以在硬件故障驗(yàn)證前保持驗(yàn)證對(duì)象的原始的代碼。硬件故障驗(yàn)證代碼執(zhí)行完畢,需要恢復(fù)原始的驗(yàn)證對(duì)象的代碼時(shí)可以將事先存儲(chǔ)的驗(yàn)證對(duì)象的代碼替換掉當(dāng)前執(zhí)行硬件故障的修改后的代碼信息。在實(shí)際作業(yè)實(shí)施中,可以通過設(shè)計(jì)編程語言提供的工具實(shí)現(xiàn)。一般的,在存儲(chǔ)、替換所述驗(yàn)證對(duì)象的代碼時(shí)采取驗(yàn)證對(duì)象整個(gè)代碼的存儲(chǔ)和替換,例如.class文件的替換。

本申請(qǐng)所述的硬件故障驗(yàn)證方法中,在執(zhí)行完所述硬件故障驗(yàn)證代碼后可以輸出執(zhí)行所述硬件故障代碼的結(jié)果特征數(shù)據(jù)。所述作業(yè)人員可以根據(jù)所述結(jié)果特征數(shù)據(jù)觀察、判斷業(yè)務(wù)系統(tǒng)是否在發(fā)生設(shè)置的硬件故障時(shí)正確執(zhí)行相應(yīng)的行為措施,可以對(duì)業(yè)務(wù)系統(tǒng)的驗(yàn)證提供數(shù)據(jù)支持。圖4是本申請(qǐng)所述一種硬件故障驗(yàn)證方法另一種實(shí)施例的方法流程圖。如圖4所示,本申請(qǐng)所述的一種硬件故障驗(yàn)證方法還可以包括:

S5:輸出執(zhí)行所述硬件故障驗(yàn)證代碼的結(jié)果特征數(shù)據(jù)。

在具體的實(shí)現(xiàn)方式中,可以在執(zhí)行所述硬件故障驗(yàn)證代碼的執(zhí)行過程中即時(shí)輸出結(jié)果特征數(shù)據(jù),也可以為所述硬件故障驗(yàn)證代碼執(zhí)行完后輸出所述結(jié)果特征數(shù)據(jù)。當(dāng)然,本申請(qǐng)不排除同時(shí)采用上述兩種實(shí)現(xiàn)所述結(jié)果特征數(shù)據(jù)輸出的方式。

本實(shí)施例所述對(duì)硬件故障的驗(yàn)證,可以在執(zhí)行所述硬件故障驗(yàn)證代碼的過程中,或者所述硬件故障驗(yàn)證代碼執(zhí)行完畢后,輸出執(zhí)行所述硬件故障驗(yàn)證代碼的結(jié)果特征數(shù)據(jù)。所述的結(jié)果特征數(shù)據(jù)一般的可以包括在所述原始驗(yàn)證代碼中執(zhí)行所述硬件故障驗(yàn)證代碼而輸出的驗(yàn)證結(jié)果相關(guān)數(shù)據(jù),通常是為了獲取到程序執(zhí)行時(shí)產(chǎn)生的行為的信息。通常的所述結(jié)果特征數(shù)據(jù)可以包括硬件故障是否被識(shí)別、執(zhí)行過程中產(chǎn)生的參數(shù)值以及設(shè)定的執(zhí)行所述硬件故障驗(yàn)證代碼產(chǎn)生的其他相關(guān)數(shù)據(jù)等。

下面本申請(qǐng)以JAVA編程設(shè)計(jì)語言對(duì)本申請(qǐng)所述的硬件故障驗(yàn)證方法具體應(yīng)用場(chǎng)景進(jìn)行進(jìn)一步說明。在所述應(yīng)用場(chǎng)景中,所述需要進(jìn)行硬件故障驗(yàn)證的原始驗(yàn)證代碼可以為JAVA字節(jié)代碼。

所述的JAVA字節(jié)碼(Byte-code)是一種包含執(zhí)行程序、由一序列OP代碼/數(shù)據(jù)對(duì)組成的二進(jìn)制文件。本申請(qǐng)可以運(yùn)用動(dòng)態(tài)字節(jié)碼修改技術(shù),以及JVM的instrument機(jī)制,提供一種在軟件運(yùn)行期間動(dòng)態(tài)的修改字節(jié)碼,注入預(yù)期的故障,檢查軟件是否按照預(yù)期運(yùn)行。具體的,所述JVM的Instrumentation可以用來實(shí)現(xiàn)讓target vm動(dòng)態(tài)加載agentlib。所述Instrumentation的實(shí)現(xiàn)在一個(gè)名為libinstrument.dylib的動(dòng)態(tài)lib庫(kù)(linux下是libinstrument.so)基于jvmti接口實(shí)現(xiàn)的,因此在對(duì)其進(jìn)行加載的時(shí)候會(huì)創(chuàng)建一個(gè)agent實(shí)例,并往jvmti環(huán)境 注冊(cè)一些回調(diào)方法,比如監(jiān)聽類文件加載的事件,vm初始化完成事件等。然后可以通過執(zhí)行Agent_OnAttach,創(chuàng)建一個(gè)Instrumentation實(shí)例,并增加transform。進(jìn)一步的可以執(zhí)行Instrumentation實(shí)例的loadClassAndCallAgentmain方法,該方法主要執(zhí)行agent的MF文件里定義的Agent-Class類的agentmain方法。當(dāng)vm初始化完畢之后,會(huì)調(diào)用loadClassAndCallPremain方法,該方法主要執(zhí)行agent的MF文件里定義的Agent-Class類的pre main方法。在類進(jìn)行加載的時(shí)候會(huì)調(diào)用Instrumentation的transform方法,這樣就可以實(shí)現(xiàn)到用修改后的字節(jié)碼替換原始的字節(jié)碼,實(shí)現(xiàn)無侵入性的硬件故障驗(yàn)證代碼注入。

相應(yīng)的,可以參照上述JVM的instrument用修改后的字節(jié)碼替換原始字節(jié)碼的方式實(shí)現(xiàn)所述原始驗(yàn)證代碼的恢復(fù),例如.class文件替換等。

本申請(qǐng)?jiān)谕ㄟ^JAVA語言的實(shí)現(xiàn)方式中,可以通過參數(shù)中的Instrumentation添加自己定義的ClassFileTransformer,來改變class文件。這里自定義的Transformer可以實(shí)現(xiàn)了Transform方法,提供了對(duì)實(shí)際要執(zhí)行的類的字節(jié)碼的修改。

本申請(qǐng)中提供的一種硬件故障驗(yàn)證方法的各個(gè)實(shí)施例,可以通過動(dòng)態(tài)字節(jié)碼修改方法及JAVA的虛擬機(jī)提供的instrument機(jī)制實(shí)現(xiàn),包括所述硬件故障驗(yàn)證代碼的注入和所述驗(yàn)證對(duì)象的原始驗(yàn)證代碼的恢復(fù)等。

基于本申請(qǐng)所述的硬件故障驗(yàn)證方法,本申請(qǐng)?zhí)峁┮环N硬件故障驗(yàn)證裝置。圖5是本申請(qǐng)所述硬件故障驗(yàn)證裝置的一種實(shí)施例的模塊結(jié)構(gòu)示意圖。如圖5所示,所述裝置可以包括:

驗(yàn)證配置模塊101,可以用于存儲(chǔ)包括設(shè)置的硬件驗(yàn)證故障代碼和注入所述硬件驗(yàn)證故障代碼位置的配置信息;

驗(yàn)證接口模塊102,可以用于提供硬件故障驗(yàn)證的調(diào)用接口,所述接口用于向接口的調(diào)用方發(fā)送所述驗(yàn)證配置信息,接收所述調(diào)用方發(fā)送的結(jié)果特征數(shù)據(jù);

代碼恢復(fù)模塊103,可以用于在判斷所述調(diào)用方執(zhí)行完所述硬件故障驗(yàn)證代碼時(shí),恢復(fù)所述調(diào)用方的原始代碼。

在本申請(qǐng)?zhí)峁┑乃鲇布收向?yàn)證裝置中,作業(yè)人員可以硬件故障的驗(yàn)證、測(cè)試需求等預(yù)先在所述驗(yàn)證配置模塊101中配置具體需要注入的硬件故障驗(yàn)證代碼的類、硬件故障驗(yàn)證代碼的執(zhí)行行為、監(jiān)控信息、故障類型、所要插入所述硬件故障驗(yàn)證代碼的位置等詳細(xì)配置信息。當(dāng)然,在所述配置信息中,還可以根據(jù)需求配置其他信息,例如設(shè)定所述調(diào)用方開始注入所述硬件故障驗(yàn)證代碼觸發(fā)信息,具體的例如在JVM實(shí)現(xiàn)本申請(qǐng)裝置中可以設(shè)置為:

“JAVA_OPTS=”-Javaagent=/path/to/faultinject.jar$JAVA_OPTS””

所述的驗(yàn)證接口模塊102可以對(duì)外向需要進(jìn)行硬件故障驗(yàn)證的調(diào)用方提供接入接口,例 如通過某種編程設(shè)計(jì)語言提供的接口函數(shù)。一般的,所述驗(yàn)證接口模塊102通過提供的接口可以向所述調(diào)用方發(fā)送所述配置信息。

本申請(qǐng)的另一種實(shí)施例中,所述的驗(yàn)證接口模塊102還可以提供接收數(shù)據(jù)信息的接口,可以用于接收所述調(diào)用方執(zhí)行所述硬件故障驗(yàn)證代碼的結(jié)果特征數(shù)據(jù)。

所述調(diào)用方可以通過所述驗(yàn)證接口模塊102提供的接口獲取到配置文件,自動(dòng)讀取所述配置文件,獲取有關(guān)所述硬件故障驗(yàn)證代碼的描述、配置、注入位置等信息。所述關(guān)于硬件故障驗(yàn)證代碼的所述驗(yàn)證接口模塊102也可以根據(jù)設(shè)計(jì)需求為所述調(diào)用方或者其他第三方提供相應(yīng)的接入接口、監(jiān)視接口等。

所述代碼恢復(fù)模塊103,在監(jiān)測(cè)到所調(diào)用方運(yùn)行完所述硬件故障驗(yàn)證代碼時(shí),可以自動(dòng)恢復(fù)所述調(diào)用方插入所述硬件故障驗(yàn)證代碼前原始代碼,實(shí)現(xiàn)所述插入的硬件故障驗(yàn)證代碼自動(dòng)消除,達(dá)到對(duì)所述調(diào)用方硬件故障驗(yàn)證的無入侵性驗(yàn)證測(cè)試。

本申請(qǐng)所述的硬件故障驗(yàn)證裝置注入硬件故障代碼后,所述的恢復(fù)所述調(diào)用方的原始代碼具體的可以包括多種實(shí)施方式。本申請(qǐng)所述的一種硬件故障驗(yàn)證裝置的一種實(shí)施方式中,所述的代碼恢復(fù)模塊103可以包括:

代碼消除模塊1031,可以用于消除在所述調(diào)用方注入的硬件故障驗(yàn)證代碼。

圖6是本申請(qǐng)所述硬件故障驗(yàn)證裝置中代碼恢復(fù)模塊的一種實(shí)施例的模塊結(jié)構(gòu)示意圖。如圖6所示,本實(shí)施例中可以設(shè)置用于消除注入的硬件故障代碼的代碼消除模塊1031,實(shí)現(xiàn)恢復(fù)所述調(diào)用方的原始代碼,以便于作業(yè)人員可以正常進(jìn)行后續(xù)的其他測(cè)試。

在本申請(qǐng)的另一種實(shí)施方式中,在恢復(fù)所述調(diào)用方的原始代碼中還可以預(yù)先存儲(chǔ)所述調(diào)用方的原始代碼,然后用存儲(chǔ)的原始代碼替換注入硬件故障代碼的修改后的調(diào)用方代碼。圖7是本申請(qǐng)所述硬件故障驗(yàn)證裝置中代碼恢復(fù)模塊的另一種實(shí)施例的模塊結(jié)構(gòu)示意圖。如圖7所示,具體的所述代碼恢復(fù)模塊103可以包括:

代碼存儲(chǔ)模塊1032,可以用于獲取并存儲(chǔ)所述調(diào)用方的原始代碼;

代碼替換模塊1033,可以用于將所述存儲(chǔ)的原始代碼替換所述注入硬件故障驗(yàn)證代碼后的調(diào)用方的原始代碼。

上述所述代碼恢復(fù)模塊中所述的消除硬件故障代碼以及調(diào)用方代碼的替換等,在具體的實(shí)施過程中可以采用例如JAVA提供的instrumention機(jī)制實(shí)現(xiàn)動(dòng)態(tài)字節(jié)碼修改。具體的可以參照本申請(qǐng)采用JAVA編程設(shè)計(jì)語言實(shí)現(xiàn)本申請(qǐng)所述的硬件故障驗(yàn)證方法具體應(yīng)用場(chǎng)景的描述,在此不做贅述。

本申請(qǐng)中各個(gè)實(shí)施例中所述的硬件故障驗(yàn)證裝置可以通過中央處理單元加載執(zhí)行存儲(chǔ)與實(shí)體存儲(chǔ)介質(zhì)中的可執(zhí)行程序的方式實(shí)現(xiàn)。所述的可執(zhí)行程序可以為JAVA編程設(shè)計(jì)語言, 也可以為其他的例如C#等編程設(shè)計(jì)語言。在本申請(qǐng)優(yōu)選的一種實(shí)施方式中,所述的硬件故障驗(yàn)證裝置可以采用JAVA編程設(shè)計(jì)語言實(shí)現(xiàn),所述裝置具體的實(shí)例可以為Jar形式的代碼包。當(dāng)然,所述裝置的實(shí)際產(chǎn)品中具體的實(shí)例也可以為組件、功能模塊、處理單元、客戶端的功能應(yīng)用,或者服務(wù)器上的業(yè)務(wù)系統(tǒng)等。本申請(qǐng)優(yōu)選的實(shí)施例中所述裝置可以為JAVA構(gòu)建Jar工具包,可以在JAVA提供的虛擬機(jī)中運(yùn)行,包括所述硬件故障代碼的注入、執(zhí)行、消除等,實(shí)現(xiàn)對(duì)需要進(jìn)行硬件故障驗(yàn)證的驗(yàn)證對(duì)象無入侵性的驗(yàn)證測(cè)試,保障安全可靠的同時(shí),可以提高硬件故障測(cè)試的效率,節(jié)省人力、時(shí)間等成本。

在上述采用JAVA編程設(shè)計(jì)語言實(shí)現(xiàn)本申請(qǐng)所述裝置時(shí),所述裝置可以在JAVA提供的虛擬機(jī)中完成硬件故障驗(yàn)證。圖8是本申請(qǐng)所述一種硬件故障驗(yàn)證裝置另一種實(shí)施例的模塊結(jié)構(gòu)示意圖。如圖8所示,所述裝置可以包括:

驗(yàn)證配置模塊201,可以用于存儲(chǔ)包括設(shè)置的硬件驗(yàn)證故障代碼和注入所述硬件驗(yàn)證故障代碼位置的配置信息;

故障代碼執(zhí)行模塊202,可以用于根據(jù)所述配置信息執(zhí)行所述硬件故障驗(yàn)證代碼;

代碼恢復(fù)模塊203,可以用于在判斷所述調(diào)用方執(zhí)行完所述硬件故障驗(yàn)證代碼時(shí),恢復(fù)所述調(diào)用方的原始代碼。

本實(shí)施例中所述的故障代碼執(zhí)行模塊202可以用于根據(jù)所述配置信息執(zhí)行所述硬件故障驗(yàn)證代碼。也可以在執(zhí)行所述硬件故障代碼的過程中,和/或執(zhí)行完所述硬件故障代碼后,輸出執(zhí)行所述硬件故障代碼的結(jié)果特征數(shù)據(jù)。

當(dāng)然,所述的故障代碼執(zhí)行模塊202可以在JAVA提供的虛擬機(jī)中執(zhí)行所述硬件故障代碼。在本申請(qǐng)所述采用JAVA實(shí)現(xiàn)的硬件故障驗(yàn)證裝置中,可以在JAVA的虛擬機(jī)中完成調(diào)用方字節(jié)碼的修改、調(diào)用方.class文件的替換等操作。本申請(qǐng)裝置可以通過JAVA的instrument機(jī)制實(shí)現(xiàn)硬件故障的自動(dòng)化測(cè)試,驗(yàn)證業(yè)務(wù)系統(tǒng)在發(fā)生硬件故障時(shí)能否執(zhí)行預(yù)期的應(yīng)對(duì)措施,提高業(yè)務(wù)系統(tǒng)的可靠性。

上述所述的硬件故障處理裝置可以設(shè)置在服務(wù)器的業(yè)務(wù)系統(tǒng)中,也可以作為專用的終端裝置(如Jar包)為需要進(jìn)行硬件故障驗(yàn)證的業(yè)務(wù)系統(tǒng)提供驗(yàn)證服務(wù)。具體的本申請(qǐng)所述裝置的實(shí)體可以根據(jù)驗(yàn)證需求采用不同的實(shí)現(xiàn)方式。

本申請(qǐng)所述的硬件故障驗(yàn)證裝置可以適用于多種客戶端的業(yè)務(wù)系統(tǒng)中,實(shí)現(xiàn)對(duì)所述客戶端業(yè)務(wù)系統(tǒng)發(fā)生硬件故障時(shí)處理行為的驗(yàn)證。因此,本申請(qǐng)可以提供一種使用/調(diào)用本申請(qǐng)所述硬件故障驗(yàn)證裝置的故障信息處理客戶端,實(shí)現(xiàn)驗(yàn)證業(yè)務(wù)系統(tǒng)處理硬件故障的行為是否符合預(yù)期。具體的,本申請(qǐng)?zhí)峁┑囊环N故障信息處理客戶端,可以被設(shè)置成,包括:

可以調(diào)用故障驗(yàn)證接口,獲取驗(yàn)證配置信息的處理單元;可以根據(jù)所述配置信息中設(shè)置的故障驗(yàn)證代碼和注入所述故障驗(yàn)證代碼的位置信息注入所述故障驗(yàn)證代碼的處理單元;可以執(zhí)行所述故障驗(yàn)證代碼,并可以在執(zhí)行完所述故障驗(yàn)證代碼后消除所述注入的故障驗(yàn)證代碼的處理單元。

需要說明的是,雖然本申請(qǐng)的中包括了采用JAVA編程設(shè)計(jì)語言實(shí)現(xiàn)本申請(qǐng)所述的硬件故障驗(yàn)證方法、裝置及客戶的實(shí)施例,但采用其他的編程設(shè)計(jì)語言或者其他的處理器可執(zhí)行的程序也可以實(shí)現(xiàn)本申請(qǐng)。在實(shí)現(xiàn)過程中不同的編程設(shè)計(jì)語言可以提供不同的函數(shù)調(diào)用、數(shù)據(jù)處理、信息交互、實(shí)現(xiàn)類等,但本申請(qǐng)并不限于某種具體的實(shí)現(xiàn)語言,基于本申請(qǐng)思想無需創(chuàng)造性勞動(dòng)的其他實(shí)施例均應(yīng)屬于本申請(qǐng)范疇。

盡管本申請(qǐng)內(nèi)容中提到JAVA編程設(shè)計(jì)語言、調(diào)用接口、加載和讀取文件信息等之類的數(shù)據(jù)處理、信息交互的描述,但是,本申請(qǐng)并不局限于必須是完全標(biāo)準(zhǔn)或者所提及的數(shù)據(jù)處理或信息交互方式的情況。本申請(qǐng)中各個(gè)實(shí)施例所涉及的上述描述僅是本申請(qǐng)中的一些實(shí)施例中的應(yīng)用,在某些標(biāo)準(zhǔn)、方法、語言、協(xié)議的基礎(chǔ)上略加修改后的處理方式也可以實(shí)行上述本申請(qǐng)各實(shí)施例的方案。當(dāng)然,在符合本申請(qǐng)上述各實(shí)施例的中所述的處理方法步驟的其他無創(chuàng)造性的變形,仍然可以實(shí)現(xiàn)相同的申請(qǐng),在此不再贅述。

雖然本申請(qǐng)?zhí)峁┝巳鐚?shí)施例或流程圖所述的方法操作步驟,但基于常規(guī)或者無創(chuàng)造性的手段可以包括更多或者更少的操作步驟。實(shí)施例中列舉的步驟順序僅僅為眾多步驟執(zhí)行順序中的一種方式,不代表唯一的執(zhí)行順序。在實(shí)際中的裝置或客戶端產(chǎn)品執(zhí)行時(shí),可以按照實(shí)施例或者附圖所示的方法順序執(zhí)行或者并行執(zhí)行(例如并行處理器或者多線程處理的環(huán)境)。

上述實(shí)施例闡明的單元或模塊,具體可以由計(jì)算機(jī)芯片或?qū)嶓w實(shí)現(xiàn),或者由具有某種功能的產(chǎn)品來實(shí)現(xiàn)。為了描述的方便,描述以上裝置時(shí)以功能分為各種模塊分別描述。當(dāng)然,在實(shí)施本申請(qǐng)時(shí)可以把各模塊的功能在同一個(gè)或多個(gè)軟件和/或硬件中實(shí)現(xiàn),也可以將實(shí)現(xiàn)同一功能的模塊由多個(gè)子模塊或子單元的組合實(shí)現(xiàn),或者將其他一個(gè)或者多個(gè)模塊或單元的功能集成在一個(gè)模塊中實(shí)現(xiàn)。

本鄰域技術(shù)人員也知道,除了以純計(jì)算機(jī)可讀程序代碼方式實(shí)現(xiàn)控制器以外,完全可以通過將方法步驟進(jìn)行邏輯編程來使得控制器以邏輯門、開關(guān)、專用集成電路、可編程邏輯控制器和嵌入微控制器等的形式來實(shí)現(xiàn)相同功能。因此這種控制器可以被認(rèn)為是一種硬件部件,而對(duì)其內(nèi)部包括的用于實(shí)現(xiàn)各種功能的裝置也可以視為硬件部件內(nèi)的結(jié)構(gòu)?;蛘呱踔?,可以將用于實(shí)現(xiàn)各種功能的裝置視為既可以是實(shí)現(xiàn)方法的軟件模塊又可以是硬件部件內(nèi)的結(jié)構(gòu)。

本申請(qǐng)可以在由計(jì)算機(jī)執(zhí)行的計(jì)算機(jī)可執(zhí)行指令的一般上下文中描述,例如程序模塊。一般地,程序模塊包括執(zhí)行特定任務(wù)或?qū)崿F(xiàn)特定抽象數(shù)據(jù)類型的例程、程序、對(duì)象、組件、數(shù)據(jù)結(jié)構(gòu)、類等等。也可以在分布式計(jì)算環(huán)境中實(shí)踐本申請(qǐng),在這些分布式計(jì)算環(huán)境中,由通過通信網(wǎng)絡(luò)而被連接的遠(yuǎn)程處理設(shè)備來執(zhí)行任務(wù)。在分布式計(jì)算環(huán)境中,程序模塊可以位于包括存儲(chǔ)設(shè)備在內(nèi)的本地和遠(yuǎn)程計(jì)算機(jī)存儲(chǔ)介質(zhì)中。

通過以上的實(shí)施方式的描述可知,本鄰域的技術(shù)人員可以清楚地了解到本申請(qǐng)可借助軟件加必需的通用硬件平臺(tái)的方式來實(shí)現(xiàn)?;谶@樣的理解,本申請(qǐng)的技術(shù)方案本質(zhì)上或者說對(duì)現(xiàn)有技術(shù)做出貢獻(xiàn)的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計(jì)算機(jī)軟件產(chǎn)品可以存儲(chǔ)在存儲(chǔ)介質(zhì)中,如ROM/RAM、磁碟、光盤等,包括若干指令用以使得一臺(tái)計(jì)算機(jī)設(shè)備(可以是個(gè)人計(jì)算機(jī),移動(dòng)終端,服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本申請(qǐng)各個(gè)實(shí)施例或者實(shí)施例的某些部分所述的方法。

本說明書中的各個(gè)實(shí)施例采用遞進(jìn)的方式描述,各個(gè)實(shí)施例之間相同或相似的部分互相參見即可,每個(gè)實(shí)施例重點(diǎn)說明的都是與其他實(shí)施例的不同之處。本申請(qǐng)可用于眾多通用或?qū)S玫挠?jì)算機(jī)系統(tǒng)環(huán)境或配置中。例如:個(gè)人計(jì)算機(jī)、服務(wù)器計(jì)算機(jī)、手持設(shè)備或便攜式設(shè)備、平板型設(shè)備、多處理器系統(tǒng)、基于微處理器的系統(tǒng)、可編程的電子設(shè)備、網(wǎng)絡(luò)PC、小型計(jì)算機(jī)、大型計(jì)算機(jī)、包括以上任何系統(tǒng)或設(shè)備的分布式計(jì)算環(huán)境等等。

雖然通過實(shí)施例描繪了本申請(qǐng),本鄰域普通技術(shù)人員知道,本申請(qǐng)有許多變形和變化而不脫離本申請(qǐng)的精神,希望所附的權(quán)利要求包括這些變形和變化而不脫離本申請(qǐng)的精神。

當(dāng)前第1頁(yè)1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
年辖:市辖区| 普定县| 土默特右旗| 句容市| 祥云县| 龙里县| 平舆县| 永昌县| 平泉县| 双城市| 深圳市| 天门市| 隆昌县| 蒙自县| 潮安县| 灵台县| 平武县| 泸溪县| 仙游县| 海原县| 长乐市| 玉树县| 微山县| 怀集县| 伊宁县| 财经| 松桃| 乐清市| 临沭县| 民和| 广东省| 和平县| 林西县| 德格县| 绩溪县| 门源| 锦屏县| 青冈县| 淮南市| 察隅县| 称多县|