我进行了一次冒烟测试,我在对他们的服务器进行了测试。目前它以串行形式运行,每台服务器大约需要60秒。我可以并行运行这些并且我已经使用Thread.new
来完成它,这很好,因为它运行得更快但是我忘记了测试是否实际通过了。
我试图通过Process.spawn
来管理我的流程来改善这一点。
pids = []
uris.each do |uri|
command = get_http_tests_command("Smoke")
update_http_tests_config( uri )
pid = Process.spawn( system( command ) )
pids.push pid
Process.detach pid
end
# make sure all pids return a passing status code
# results = Process.waitall
我想开始我的所有测试,但之后确保所有测试都返回传递状态代码。
我尝试使用Process.waitall
,但我认为这是错误的并且用于分叉,而不是产生。
在完成所有过程后,如果所有过程都失败,我希望返回true状态。
答案 0 :(得分:2)
尝试:
statuses = pids.map { |pid| Process.wait(pid, 0); $? }
等待每个流程ID完成,并检查每个流程$?
中设置的结果状态