本技術(shù)涉模擬仿真,特別是涉及一種虛擬仿真方法、裝置、計(jì)算機(jī)設(shè)備和計(jì)算機(jī)程序產(chǎn)品。
背景技術(shù):
1、在大型軟、硬件測(cè)試系統(tǒng)項(xiàng)目聯(lián)合調(diào)試過(guò)程中,硬件因價(jià)格昂貴往往資源不足。軟件調(diào)試往往被分配到較少的時(shí)間,無(wú)法充分進(jìn)行測(cè)試。另一方面,定制化開(kāi)發(fā)硬件虛擬數(shù)據(jù)往往模擬的場(chǎng)景十分單一。
2、傳統(tǒng)技術(shù)中,想要脫離硬件環(huán)境進(jìn)行調(diào)試往往只能通過(guò)在程序中進(jìn)行虛構(gòu)硬件數(shù)據(jù)的方法或者通過(guò)寫(xiě)配置文件的方法進(jìn)行。但是這種方法只能進(jìn)行某一個(gè)單一場(chǎng)景進(jìn)行調(diào)試,且需要對(duì)代碼邏輯進(jìn)行修改重寫(xiě)硬件訪問(wèn)接口,無(wú)法真實(shí)完全的還原上機(jī)測(cè)試中細(xì)節(jié)。
技術(shù)實(shí)現(xiàn)思路
1、基于此,有必要針對(duì)上述技術(shù)問(wèn)題,提供一種能夠真實(shí)完全的還原上機(jī)測(cè)試中細(xì)節(jié)的虛擬仿真方法、裝置、計(jì)算機(jī)設(shè)備和計(jì)算機(jī)程序產(chǎn)品。
2、第一方面,本技術(shù)提供一種虛擬仿真方法,所述方法包括:
3、獲取客戶端發(fā)起的接口調(diào)用請(qǐng)求以及所述接口調(diào)用請(qǐng)求的請(qǐng)求標(biāo)識(shí)信息;
4、查詢初始化鏈表得到與所述請(qǐng)求標(biāo)識(shí)信息對(duì)應(yīng)的響應(yīng)信息地址,所述初始化鏈表中的每個(gè)節(jié)點(diǎn)用于存儲(chǔ)基于持久化鏡像的仿真數(shù)據(jù)得到的第一調(diào)用信息、響應(yīng)信息地址,所述第一調(diào)用信息包括請(qǐng)求標(biāo)識(shí)信息;
5、基于所述響應(yīng)信息地址獲取到響應(yīng)信息,其中所述響應(yīng)信息是對(duì)接口的原始調(diào)用結(jié)果信息進(jìn)行持久化鏡像得到的。
6、在其中一個(gè)實(shí)施例中,所述方法還包括:
7、記錄所述接口調(diào)用請(qǐng)求的開(kāi)始時(shí)間;
8、查詢與所述請(qǐng)求標(biāo)識(shí)信息對(duì)應(yīng)的請(qǐng)求響應(yīng)時(shí)間;
9、基于所述請(qǐng)求響應(yīng)時(shí)間和所述開(kāi)始時(shí)間進(jìn)行延時(shí)操作;
10、在延時(shí)操作結(jié)束后,返回所述響應(yīng)信息。
11、在其中一個(gè)實(shí)施例中,所述基于所述請(qǐng)求響應(yīng)時(shí)間和所述開(kāi)始時(shí)間進(jìn)行延時(shí)操作,包括:
12、基于所述請(qǐng)求響應(yīng)時(shí)間和所述響應(yīng)信息的加載時(shí)間計(jì)算延時(shí)時(shí)間;
13、在所述延時(shí)時(shí)間大于預(yù)設(shè)時(shí)間長(zhǎng)度時(shí),基于所述開(kāi)始時(shí)間和所述延時(shí)時(shí)間進(jìn)行延時(shí)操作;
14、在所述延時(shí)時(shí)間小于或等于所述預(yù)設(shè)時(shí)間長(zhǎng)度時(shí),繼續(xù)執(zhí)行返回所述響應(yīng)信息的步驟。
15、在其中一個(gè)實(shí)施例中,所述查詢初始化鏈表得到與所述請(qǐng)求標(biāo)識(shí)信息對(duì)應(yīng)的響應(yīng)信息地址之前,還包括:
16、接收初始化請(qǐng)求,所述初始化請(qǐng)求攜帶有文件標(biāo)識(shí);
17、基于所述初始化請(qǐng)求在緩存中創(chuàng)建所述初始化鏈表;
18、查詢與所述文件標(biāo)識(shí)對(duì)應(yīng)的各文件;
19、基于所述各文件確定第一調(diào)用信息、各所述第一調(diào)用信息對(duì)應(yīng)的響應(yīng)信息地址以及各所述第一調(diào)用信息對(duì)應(yīng)的下一節(jié)點(diǎn)地址,并將所述第一調(diào)用信息、各所述第一調(diào)用信息分別對(duì)應(yīng)的響應(yīng)信息地址和下一節(jié)點(diǎn)地址存儲(chǔ)至所述初始化鏈表的對(duì)應(yīng)節(jié)點(diǎn)中。
20、在其中一個(gè)實(shí)施例中,所述基于所述各文件確定第一調(diào)用信息、各所述第一調(diào)用信息對(duì)應(yīng)的響應(yīng)信息地址以及各所述第一調(diào)用信息對(duì)應(yīng)的下一節(jié)點(diǎn)地址,并將所述第一調(diào)用信息、各所述第一調(diào)用信息分別對(duì)應(yīng)的響應(yīng)信息地址和下一節(jié)點(diǎn)地址存儲(chǔ)至所述初始化鏈表的對(duì)應(yīng)節(jié)點(diǎn)中,包括:
21、確定當(dāng)前文件,并讀取所述當(dāng)前文件中的當(dāng)前節(jié)點(diǎn)的第一調(diào)用信息,將所述第一調(diào)用信息存儲(chǔ)至所述初始化鏈表對(duì)應(yīng)的節(jié)點(diǎn)中;
22、基于所述第一調(diào)用信息的首地址以及所述第一調(diào)用信息的大小,確定所述當(dāng)前文件中的所述當(dāng)前節(jié)點(diǎn)的響應(yīng)信息地址,并將所述響應(yīng)信息地址存儲(chǔ)至所述初始化鏈表對(duì)應(yīng)的節(jié)點(diǎn)中;
23、在基于所述響應(yīng)信息地址確定所述當(dāng)前文件存在未讀節(jié)點(diǎn)的情況下,基于所述第一調(diào)用信息的首地址、所述第一調(diào)用信息的大小以及所述響應(yīng)信息的大小確定下一節(jié)點(diǎn)地址;
24、基于所述下一節(jié)點(diǎn)地址從所述當(dāng)前文件中獲取下一節(jié)點(diǎn)作為當(dāng)前節(jié)點(diǎn),并繼續(xù)執(zhí)行讀取所述當(dāng)前文件中的當(dāng)前節(jié)點(diǎn)的第一調(diào)用信息的步驟;
25、在基于所述響應(yīng)信息地址確定所述當(dāng)前文件不存在未讀節(jié)點(diǎn)且所述文件標(biāo)識(shí)對(duì)應(yīng)的文件未加載完成的情況下,基于所述文件標(biāo)識(shí)獲取下一文件作為當(dāng)前文件,并繼續(xù)執(zhí)行讀取所述當(dāng)前文件中的當(dāng)前節(jié)點(diǎn)的第一調(diào)用信息的步驟,直至所述文件標(biāo)識(shí)對(duì)應(yīng)的文件均加載完成。
26、在其中一個(gè)實(shí)施例中,所述方法還包括:
27、在鏡像數(shù)據(jù)采集線程接收到新的客戶端的接口調(diào)用請(qǐng)求的情況下,查詢所述客戶端的接口調(diào)用請(qǐng)求對(duì)應(yīng)的初始標(biāo)識(shí)信息是否已緩存;
28、在所述接口調(diào)用請(qǐng)求對(duì)應(yīng)的初始標(biāo)識(shí)信息已緩存的情況下,更新所述接口調(diào)用請(qǐng)求的執(zhí)行序號(hào);
29、基于所述初始標(biāo)識(shí)信息以及所述執(zhí)行序號(hào)生成請(qǐng)求標(biāo)識(shí)信息;
30、基于所述請(qǐng)求標(biāo)識(shí)信息生成第二調(diào)用信息,將所述第二調(diào)用信息與所述接口調(diào)用請(qǐng)求對(duì)應(yīng)的原始調(diào)用結(jié)果信息作為仿真數(shù)據(jù)存儲(chǔ)至緩存中。
31、在其中一個(gè)實(shí)施例中,所述緩存包括目標(biāo)鏈表,所述目標(biāo)鏈表中的每個(gè)節(jié)點(diǎn)用于存儲(chǔ)第二調(diào)用信息、原始調(diào)用結(jié)果信息以及下一個(gè)節(jié)點(diǎn)地址,所述下一個(gè)節(jié)點(diǎn)地址是基于所述第二調(diào)用信息大小以及原始調(diào)用結(jié)果信息大小得到的。
32、在其中一個(gè)實(shí)施例中,所述方法還包括:
33、在所述接口調(diào)用請(qǐng)求對(duì)應(yīng)的初始標(biāo)識(shí)信息未緩存的情況下,在所述緩存中增加所述接口調(diào)用請(qǐng)求對(duì)應(yīng)的初始標(biāo)識(shí)信息,并更新所述接口調(diào)用請(qǐng)求的執(zhí)行序號(hào)后,繼續(xù)執(zhí)行基于所述初始標(biāo)識(shí)信息以及所述執(zhí)行序號(hào)生成請(qǐng)求標(biāo)識(shí)信息的步驟。
34、在其中一個(gè)實(shí)施例中,所述將所述第二調(diào)用信息與所述接口調(diào)用請(qǐng)求對(duì)應(yīng)的原始調(diào)用結(jié)果信息關(guān)聯(lián)存儲(chǔ)至緩存中之后,還包括:
35、在所述鏡像數(shù)據(jù)采集線程接收到鏡像數(shù)據(jù)存儲(chǔ)結(jié)束指令的情況下,基于緩存的所述第二調(diào)用信息以及所述接口調(diào)用請(qǐng)求對(duì)應(yīng)的原始調(diào)用結(jié)果信息生成新的文件,并將所述新的文件存儲(chǔ)至持久化介質(zhì)中;
36、清空所述緩存,并結(jié)束所述鏡像數(shù)據(jù)采集線程。
37、在其中一個(gè)實(shí)施例中,所述將所述第二調(diào)用信息與所述接口調(diào)用請(qǐng)求對(duì)應(yīng)的原始調(diào)用結(jié)果信息作為仿真數(shù)據(jù)存儲(chǔ)至緩存中之后,還包括:
38、基于所述第二調(diào)用信息的大小以及所述原始調(diào)用結(jié)果信息的大小更新所述緩存中存儲(chǔ)的仿真數(shù)據(jù)的大??;
39、在未接收到鏡像數(shù)據(jù)存儲(chǔ)結(jié)束指令的情況下,檢測(cè)所述緩存中存儲(chǔ)的仿真數(shù)據(jù)的大小是否大于或等于閾值;
40、在所述緩存中存儲(chǔ)的仿真數(shù)據(jù)的大小大于或等于所述閾值的情況下,基于緩存的所述仿真數(shù)據(jù)生成新的文件,并將所述新的文件存儲(chǔ)至持久化介質(zhì)中;
41、清空所述緩存,并繼續(xù)通過(guò)所述鏡像數(shù)據(jù)采集線程等待下一鏡像數(shù)據(jù)存儲(chǔ)結(jié)束指令。
42、在其中一個(gè)實(shí)施例中,所述方法還包括:
43、在所述鏡像數(shù)據(jù)采集線程接收到接口調(diào)用請(qǐng)求開(kāi)始指令的情況下,記錄所述接口調(diào)用請(qǐng)求的當(dāng)前請(qǐng)求時(shí)間;
44、在所述鏡像數(shù)據(jù)采集線程接收到接口調(diào)用請(qǐng)求結(jié)束指令的情況下,獲取接口調(diào)用請(qǐng)求結(jié)束指令的接收時(shí)間,并基于所述接收時(shí)間以及所述當(dāng)前請(qǐng)求時(shí)間得到所述接口調(diào)用請(qǐng)求的請(qǐng)求響應(yīng)時(shí)間;
45、將所述請(qǐng)求響應(yīng)時(shí)間添加至所述第二調(diào)用信息中。
46、在其中一個(gè)實(shí)施例中,所述方法還包括:
47、通過(guò)配置文件或配置函數(shù)的形式確定仿真狀態(tài);
48、在所述仿真狀態(tài)為仿真模式的情況下,繼續(xù)執(zhí)行獲取客戶端發(fā)起接口調(diào)用請(qǐng)求以及所述接口調(diào)用請(qǐng)求的請(qǐng)求標(biāo)識(shí)信息的步驟;
49、在所述仿真狀態(tài)為鏡像數(shù)據(jù)采集模式的情況下,繼續(xù)執(zhí)行在鏡像數(shù)據(jù)采集線程接收到新的客戶端的接口調(diào)用請(qǐng)求的情況下,查詢所述客戶端的接口調(diào)用請(qǐng)求對(duì)應(yīng)的初始標(biāo)識(shí)信息是否已緩存的步驟。
50、第二方面,本技術(shù)還提供一種虛擬仿真裝置,所述裝置包括:
51、調(diào)用請(qǐng)求獲取模塊,用于獲取客戶端發(fā)起接口調(diào)用請(qǐng)求以及所述接口調(diào)用請(qǐng)求的請(qǐng)求標(biāo)識(shí)信息;
52、響應(yīng)信息地址獲取模塊,用于查詢初始化鏈表得到與所述請(qǐng)求標(biāo)識(shí)信息對(duì)應(yīng)的響應(yīng)信息地址,所述初始化鏈表中的每個(gè)節(jié)點(diǎn)用于存儲(chǔ)基于持久化鏡像的仿真數(shù)據(jù)得到的第一調(diào)用信息、響應(yīng)信息地址,所述第一調(diào)用信息包括請(qǐng)求標(biāo)識(shí)信息;
53、響應(yīng)信息獲取模塊,用于基于所述響應(yīng)信息地址獲取到響應(yīng)信息,其中所述響應(yīng)信息是對(duì)接口的原始調(diào)用結(jié)果信息進(jìn)行持久化鏡像得到的。
54、第三方面,本技術(shù)還提供一種計(jì)算機(jī)設(shè)備,包括存儲(chǔ)器和處理器,所述存儲(chǔ)器存儲(chǔ)有計(jì)算機(jī)程序,所述處理器執(zhí)行所述計(jì)算機(jī)程序時(shí)實(shí)現(xiàn)上述的方法的步驟。
55、第四方面,本技術(shù)還提供一種計(jì)算機(jī)程序產(chǎn)品,包括計(jì)算機(jī)程序,所述計(jì)算機(jī)程序被處理器執(zhí)行時(shí)實(shí)現(xiàn)上述的方法的步驟。
56、上述虛擬仿真方法、裝置、計(jì)算機(jī)設(shè)備和計(jì)算機(jī)程序產(chǎn)品,獲取客戶端發(fā)起接口調(diào)用請(qǐng)求以及所述接口調(diào)用請(qǐng)求的請(qǐng)求標(biāo)識(shí)信息,這樣可以查詢初始化鏈表得到與請(qǐng)求標(biāo)識(shí)信息對(duì)應(yīng)的響應(yīng)信息地址,初始化鏈表中的每個(gè)節(jié)點(diǎn)用于存儲(chǔ)基于持久化鏡像的仿真數(shù)據(jù)得到的第一調(diào)用信息、響應(yīng)信息地址,第一調(diào)用信息包括請(qǐng)求標(biāo)識(shí)信息,這樣基于該響應(yīng)地址即可以獲取到持久化鏡像的真實(shí)仿真數(shù)據(jù),從而可以真實(shí)完全的還原上機(jī)測(cè)試中接口運(yùn)行數(shù)據(jù)的細(xì)節(jié)。