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
现在一切都按预期的顺序正常运行,一切都很开心。
在 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
现在一切都按预期的顺序正常运行,一切都很开心。