2015-08-25 40 views
1

Inside TestKitchen描述塊我正在運行一個命令,將其輸出加載到一個變量中,然後在該輸出上運行多個expect語句以驗證它的不同部分。最終目標是將此作爲CI構建的一部分來執行黑盒測試。TestKichen,Serverspec和無序命令執行

在這個例子中,我打電話給Jmeter(使用它來運行遠程代理來執行off-DUT測試),然後運行結果返回檢查每個測試(是啊是的...它有點討厭,但它工程請客):

describe "Test Transparent Proxy (JMeter)" do 
    $jmeter_run = command("/usr/local/apache-jmeter-2.13/bin/jmeter -n -t /root/jmx/mytest.jmx -r -Jremote_hosts=192.168.7.252 -Gdut_ip=#$internal_ip -X -l /dev/stdout 2>&1").stdout 

    it 'test1' do 
     expect($jmeter_run).to match /text_to_match/ 
    end 
    it 'test2' do 
     expect($jmeter_run).to match /more_text to match/ 
    end 
end 

這些測試本身運行良好,但我發現我越來越多的JMeter運行(不同的測試集)被耗盡序到他們是如何定義在測試規範中。我還有其他的模塊正在Jmeter測試中執行。這裏是我的流程:

block 1 
block 2 
block 3 (Jmeter1) 
block 4 
block 5 (Jmeter2) 

什麼我得到不過是這樣的:

block5 
block3 
block1 
block2 
block4 

我發現的文件都沒有,似乎給我任何線索,如何避免這種情況。我不想將命令執行放在應該/預期的塊內,因爲我想/需要能夠判斷單個測試是否失敗。我也想避免運行50多個單獨的Jmeter測試(即使每次運行20次測試平均,它們也都是5秒左右)。

幫助? :D

回答

1

我自己設法解決了這個問題。

很多修修補補的我結束了運行測試裏面的命令後:

it 'JMeter executed correctly' do 
    $jmeter_run1 = command("/usr/local/apache-jmeter-2.13/bin/jmeter -n -t /root/jmx/mytest.jmx -r -Jremote_hosts=192.168.7.252 -Gdut_ip=#$internal_ip -X -l /dev/stdout 2>&1").stdout 
    expect($jmeter_run1).not_to be_empty 
    end 

現在一切都很好地運行,從而像它應該是,一切都是幸福的。