TestKichen、Serverspec 和乱序命令执行

TestKichen, Serverspec and out-of-order command execution

在 TestKitchen 内部描述块我正在 运行 执行一个命令,将其输出加载到一个变量中,然后 运行 在该输出上执行多个 expect 语句以验证它的不同部分。最终目标是使用它作为 CI 构建的一部分来进行黑盒测试。

在这种情况下,我正在调用 Jmeter(使用它来 运行 远程代理来执行 off-DUT 测试)然后 运行 通过它 returns 检查的结果每次测试(是的是的......它有点讨厌但它是一种享受):

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 运行s(不同的测试集)运行 乱序到它们在测试规范中的定义方式。我还有其他正在围绕 Jmeter 测试执行的块。这是我的流程:

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

我得到的是:

block5
block3
block1
block2
block4

None 我找到的文档似乎为我提供了有关如何避免这种情况的任何线索。我不想将命令执行放在它自己的 should/expect 块中,因为我 want/need 能够判断单个测试是否失败。我还想避免 运行 50 多个单独的 Jmeter 测试(即使每个 运行 平均有 20 个测试,它们每个测试大约 5 秒)。

帮忙? :D

好吧,我自己设法解决了这个问题。

经过大量修改后,我最终 运行 测试中的命令:

  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

现在一切都按预期的顺序正常运行,一切都很开心。