我正在使用星號測試套件,並且還正在創建自定義測試。但我想用java替換一些python腳本。是否可以用「星號java」創建兩個「星號」實例?
問題是我不知道如何使用「星號java」爲每個人創建兩個帶有自定義撥號計劃的星號實例。
我正在使用星號測試套件,並且還正在創建自定義測試。但我想用java替換一些python腳本。是否可以用「星號java」創建兩個「星號」實例?
問題是我不知道如何使用「星號java」爲每個人創建兩個帶有自定義撥號計劃的星號實例。
好吧,好消息是除了最上面的run-tests.py腳本之外,Asterisk Test Suite是語言不可知的。你會發現用python,lua甚至bash編寫的測試。 Java將是一個新的補充。我不會推薦嘗試重寫runtests.py - 你不會爲此付出很大的代價,儘管我想你可以這麼做。就「沙箱」Asterisk的一個實例而言,它不會與其他Asterisk實例發生衝突並且您可以同時運行任何數字,您需要採取許多步驟才能使其正常工作。幸運的是,如果您查看asterisk.py模塊(在lib/python/asterisk中) - 或者asttest/lib/lua中的astlib.lua,您將得到一些必須完成的工作示例發生。
至少,你需要做到以下幾點:
舉一個例子,讓我們來看一下confbridge python測試。它產生了三個Asterisk實例。第一次運行時,它會熄滅,看看/ tmp/asterisk-testsuite是否存在。讓我們說它不。所以我們製作該目錄。
/tmp/asterisk-testsuite/
然後,我們看到,該測試在測試/應用/ confbridge正在運行的生活 - 所以我們讓我們的測試目錄,因爲我們還沒有運行任。
/tmp/asterisk-testsuite/apps/confbridge
現在它變得有趣。我們之前沒有運行過,所以當我們檢查我們的測試目錄中是否存在astn目錄時,我們確定沒有。所以我們創建了三個這樣的目錄。
/tmp/asterisk-testsuite/apps/confbridge
/ast1
/ast2
/ast3
只服用AST1作爲一個例子,我們創建一個包含地點,我們的路一個的asterisk.conf:
[directories](!)
astetcdir => /tmp/asterisk-testsuite/apps/confbridge/ast1/etc/asterisk
astmoddir => /tmp/asterisk-testsuite/apps/confbridge/ast1/usr/lib/asterisk/modules
astvarlibdir => /tmp/asterisk-testsuite/apps/confbridge/ast1/var/lib/asterisk
astdbdir => /tmp/asterisk-testsuite/apps/confbridge/ast1/var/lib/asterisk
astkeydir => /tmp/asterisk-testsuite/apps/confbridge/ast1/var/lib/asterisk
astdatadir => /tmp/asterisk-testsuite/apps/confbridge/ast1/var/lib/asterisk
astagidir => /tmp/asterisk-testsuite/apps/confbridge/ast1/var/lib/asterisk/agi-bin
astspooldir => /tmp/asterisk-testsuite/apps/confbridge/ast1/var/spool/asterisk
astrundir => /tmp/asterisk-testsuite/apps/confbridge/ast1/var/run/asterisk
astlogdir => /tmp/asterisk-testsuite/apps/confbridge/ast1/var/log/asterisk
[options]
verbose = 5
debug = 5
defaultlanguage = en ; Default language
documentation_language = en_US ; Set the language you want documentation
; displayed in. Value is in the same format as
; locale names.
[compat]
pbx_realtime=1.6
res_agi=1.6
app_set=1.6
我們現在複製我們的asterisk.conf到我們的測試目錄。
/tmp/asterisk-testsuite/apps/confbridge/ast1/etc/asterisk/asterisk.conf
我們隨後將硬連接共享對象到/ var/lib中/星號/模塊子目錄中的必要安裝的模塊,並安裝的配置文件硬連接到/ etc /星號子目錄。或者,對於/ var/lib/asterisk/modules,如果您願意,我們可以讓它使用標準安裝的模塊,而不是硬鏈接。
最後,當我們產卵的Asterisk,我們使用的語法如下:
asterisk -f -g -q -m -n -C /tmp/asterisk-testsuite/apps/confbridge/ast1/etc/asterisk/asterisk.conf
補遺我上面
寫這沒有什麼錯與Java,但也有很多重的如果你決定在測試套件中使用新的語言,那麼你將不得不這樣做 - 而不僅僅是獲取Asterisk。我們在lua/python庫中寫了很多其他的東西,除了我在這裏描述的所有東西外,還可以讓你的生活更輕鬆。諸如用於CDR解析和操作的常見測試類,語音郵件操作,複雜的狀態機與SIPp的交互,測試是如何利用多個SIPp實例並與測試套件協同編排它們 - 我們一直專注於Python庫晚了。你可能想要考慮只用Python--但是,如果你真的愛Java,那麼一定要隨意使用它。
感謝您的回答。 python的問題是一些測試無故失敗。例如:sip_attended_transfer失敗,因爲即使安裝了所有依賴關係(pjsua,twisted,starpy和comment-「skip」on test-config.yaml),starpy也無法連接到管理器。 使用java的想法不是用來修改runtest.py,python只關心退出代碼來說測試是否通過或失敗,所以我能夠創建一個bash腳本,在那裏執行一個java連接管理器和讀取事件並在檢測到特定事件時返回0。 – ViROscar 2012-04-13 16:31:59
與文件結構的唯一區別是「apps」文件夾,因爲我使用的是「tests」文件夾(testsuite/tests)。 – ViROscar 2012-04-13 16:33:27
首先,如果一個測試失敗,它不是一個Python的問題。其次,如果'skip'關鍵字被添加到test-config.yaml文件中,則它是因爲測試存在已知問題,而不是測試語言。最有可能的是測試正在做一些依賴於時序的,我們還沒有解決的問題(我們知道這是特定測試的情況。第三,是的,run-tests.py腳本只關心退出代碼 - 這是爲什麼我說測試套件是語言不可知的?最後,你可以使用任何你想要的子層次結構。我們把應用程序測試放在應用程序中,SIP在頻道中等。 – 2012-04-14 02:35:02