serverspec の並列処理

hbstudy #45Tatsuhiko Miyagawa's Podcast ep14 なんかで、serverspec の並列処理が課題、ってな話をしていて、Net::SSH がイベントドリブンな処理になってるのがネックになりそうだなー、どうしようかなー、と悩んでたんですが、とりあえず試してみた方が早いだろう、ってことで parallel_tests を試してみた。

6つの VM に対して 311 examples を実行した結果で比較。

parallel_tests を使わない場合。

$ rspec spec
.......................................................................................................................................................................................................................................................................................................................

Finished in 50.28 seconds
311 examples, 0 failures

parallel_tests を使った場合。

$ parallel_rspec spec
8 processes for 42 specs, ~ 5 specs per process
.............................................................................................................................................................................................................................................
.....
Finished in 14.69 seconds
33 examples, 0 failures
...........

Finished in 15.32 seconds
37 examples, 0 failures
..............

Finished in 16.38 seconds
38 examples, 0 failures
................

Finished in 17.99 seconds
32 examples, 0 failures
.....

Finished in 17.74 seconds
38 examples, 0 failures
...........

Finished in 18.99 seconds
41 examples, 0 failures
...

Finished in 18.97 seconds
52 examples, 0 failures
.........

Finished in 21.49 seconds
40 examples, 0 failures

311 examples, 0 failures

Took 24.075618 seconds

実行時間は約50秒から約24秒と、半分ほどになった。