摘要:在網(wǎng)絡(luò)管理系統(tǒng)中CORBA技術(shù)被廣泛應(yīng)用在北向接口模塊中,在測試這類模塊時通常會針對不同的規(guī)范開發(fā)專門的測試程序,費(fèi)時費(fèi)力,且沒有通用性。該文介紹了一個基于idl語法分析的動態(tài)測試工具,可動態(tài)測試不同規(guī)范的CORBA接口,大大提高了生產(chǎn)效率。
關(guān)鍵詞:CORBA;IDL;CUP
中圖分類號:TP393 文獻(xiàn)標(biāo)識碼:A 文章編號:1009-3044(2008)29-0293-02
Design of Dynamic Test Tool for CORBA
PAN Yi
(College of Software Engineering,Southeast University, Nanjing 210096, China)
Abstract: CORBA technology has been used wildly in Net Management System, But it’s difficult to Test. This article describes the way to test the CORBA service in dynamic way to save the time and resource of project When the rules of CORBA service are inconstant.
Key words: CORBA; IDL; CUP
1 簡介
該文介紹如何實(shí)現(xiàn)規(guī)范無關(guān)的情況下CORBA接口測試。
1.1 Corba在網(wǎng)管系統(tǒng)中的地位
在網(wǎng)管系統(tǒng)中,不同廠家,不同設(shè)備有不同網(wǎng)管系統(tǒng),開發(fā)所采用的語言與技術(shù)不可能是一樣。運(yùn)營商為了管理各種各樣的網(wǎng)管系統(tǒng),減少維護(hù)成本,必需定義一套操作接口,只要下級OMM實(shí)現(xiàn)了該接口,上級網(wǎng)管就可以用統(tǒng)一的方法去管理下級OMM。
CORBA技術(shù)就很好了滿足了這種需求,CORBA技術(shù)與操作系統(tǒng)、網(wǎng)絡(luò)協(xié)議、開發(fā)語言無關(guān)。目前國內(nèi)的主流運(yùn)營商都有用CORBA定義的網(wǎng)管操作接口,涵蓋了配置、性能、告警的一些常用操作。在一些地方也投入了商業(yè)運(yùn)營。
1.2 對測試帶來的一些問題
因?yàn)镃ORBA是為不同的網(wǎng)管系統(tǒng)為了達(dá)到互操作性設(shè)計(jì)的,運(yùn)營商為了保證下級的OMM網(wǎng)管能夠順利的接入上級網(wǎng)管系統(tǒng),不定期的對下級OMM網(wǎng)管系統(tǒng)進(jìn)行CORBA接入測試。我們的OMM產(chǎn)品為了能夠接入上級網(wǎng)管系統(tǒng),需要有一個能夠模擬上級網(wǎng)管系統(tǒng)的工具方便平常測試。
以前,網(wǎng)管北向的各個模塊各自開發(fā),各自開發(fā)自己所用的模塊的測試工具,工具開發(fā)所采用的語言也不統(tǒng)一。每個工具又要有與不同規(guī)范對應(yīng)的版本,運(yùn)營商每推出一種規(guī)范版本,就要做一套工具,造成了很大的浪費(fèi),而且開發(fā)出的工具往往達(dá)不到運(yùn)營商定義測試規(guī)范的要求,特別是在異常處理方面。測試部的測試人員也要適應(yīng)不同人寫出的不同風(fēng)格測試工具。
1.3 對此類問題的一些設(shè)想
為了解決上述問題,需要開發(fā)一個統(tǒng)一的工具,這個工具必需達(dá)到以下幾點(diǎn)要求:
1) 無關(guān)性:工具本身要與規(guī)范無關(guān),這一點(diǎn)非常重要,只有做到這一點(diǎn),才能把不同模塊不同運(yùn)營商定義的不同CORBA版本做到統(tǒng)一。
2) 可重復(fù)性:測試的時候要輸入一些參數(shù),所以要對測試過程進(jìn)行完整的記錄,發(fā)現(xiàn)問題的時候,方便開發(fā)人員定位問題。
3) 自動性:在不同的版本中,很多測試用例是可以重復(fù)利用的,這些測試人員在下一次測試的過程中,能夠自動運(yùn)行,減少測試工作量。
1.4 問題的實(shí)踐
要做到與規(guī)范無關(guān)性,工具必順要動態(tài)的解析IDL定義文件,這是整個工具最具有挑戰(zhàn)性的部分,因?yàn)镃ORBA的IDL語法特別復(fù)雜,如果從IDL文件解析成JAVA代碼很難做到,測試工具關(guān)心的主要是接口類型定義,包括操作類型和數(shù)據(jù)類型。也就是說,只要做到詞法和語法分析就基本能達(dá)到為工具后續(xù)開發(fā)的要求了。詞法分析比較容易些,只要能夠把源文件中要解成一個一個token就可以了,語法分析決定采用LR(0)方法,這種方法需要幾個語法分析表,分析表必順要有工具生成,人工生成是工作量極大,而且很容易出錯。 經(jīng)過比較,決定采用CUP,它本身的語法簡單,容易理解,而且CUP代碼有在分析表快速查找的算法。
2 解決方案
2.1 JacORB的CUP語法解析結(jié)構(gòu)
Jacorb是一個開源的,基于java的CORBA解決方案,它在語法解析方面就是使用了CUP,以及自己實(shí)現(xiàn)的詞法解析。軟件結(jié)構(gòu)如圖1。
2.2 Jacorb中語法解析的流程
Parser類為基于CUP的語法解析類,它調(diào)用詞法解析類Lexer獲得一個個的關(guān)鍵字,再根據(jù)語法解析規(guī)則生成與idl對應(yīng)的類,這些類都是IdlSymbol的子類,這些被解析出來的類存放在Spec中。這些子類擁有自己的print方法,用于將自己寫入本地磁盤的java文件。如圖2。
Jacorb的idl命令就是一個調(diào)用Parser的bat文件。它的命令格式為:
Idl -optionidlfilename
它接受一個idl文件的路徑參數(shù)。同時有很多option參數(shù)可供選擇比如-I為添加相關(guān)聯(lián)的idl的路徑;-d為選擇生成.java文件的目錄。更詳細(xì)參數(shù)列表在JacORB的指南21.1章節(jié)找到。
2.3 應(yīng)用到工具上的改變
在CUP解析出idl文件并將IdlSymbil保存進(jìn)Spec中后我們可以截獲Spec,讓他不對IdlSymbol數(shù)組中的成員調(diào)用print方法,而是生成xml等形式的文件。這樣在以后運(yùn)行測試工具進(jìn)行接口測試的時候,工具可以訪問xml文件以確定接口的對象名,方法名稱,方法參數(shù)等。如圖3。
2.4 工具的動態(tài)調(diào)用
目前解析idl文件的任務(wù)已經(jīng)完成,剩下的就是實(shí)際的CORBA服務(wù)接口調(diào)用的問題。在CORBA框架中有兩種調(diào)用框架,靜態(tài)框架和動態(tài)框架,靜態(tài)框架是在idl接口固定的前提下由CORBA自動生成底層調(diào)用框架,負(fù)責(zé)調(diào)用的傳輸。動態(tài)框架則不需要生成固定的底層框架,通過設(shè)置調(diào)用請求的對象名,方法明,方法參數(shù)的類型來完成相關(guān)調(diào)用的。很顯然本工具必須由動態(tài)框架來完成。調(diào)用過程及說明如圖4。
3 結(jié)果
通過本設(shè)計(jì)實(shí)現(xiàn)了CORBA服務(wù)的動態(tài)調(diào)用,如果idl接口有所變化只需要重新運(yùn)行解析模塊生成新的xml文件即可繼續(xù)進(jìn)行測試。
參考文獻(xiàn):
[1] The JacORB Team.Jacorb programming Guide[Z].2007.
[2] Frank F,Ananian C S,Wang Dan.CUP User's Manual[M/OL].[1999-09].www.cs.prineeton.edu/~appel/modern/java/CUP.
[3] GERWIN K.Jflex user's manual[M/OL].[2004-05].Www.Cs.Unc.Edu/~ prins/Classes/240/Readings.
[4] OMG.CORBA系統(tǒng)結(jié)構(gòu)、原理與規(guī)范[M].北京:電子工業(yè)出版社,2000.