RSpecでは --profile オプションをつけることで
$ rspec --profile
Top 10 slowest examples (17.92 seconds, 65.4% of total time):
AndroidMarket use stub content behaves like android_market_base_examples #get_overall_top_selling_new_paid_apps
1.96 seconds ./spec/android_market_spec.rb:121
AndroidMarket use stub content behaves like android_market_base_examples #get_top_selling_paid_apps_in_category
1.94 seconds ./spec/android_market_spec.rb:92
(略)
のようなスローテストのトップ10(ワースト10)を出すことができるのですが、これをJenkinsでグラフ化できたら便利かなぁと思ってスクリプトを書いてみました。
gist
使い方
1. JenkinsにPlot Plugin を入れる
2. Jenkinsでrspecを動かす時に標準出力をログファイルに出力し、それを前述の plot-rspec-slowest-examples.rb に読ませる。
通常だったら
rspec
ってやるところを
rspec --profile 5 > rspec-console.log ruby plot-rspec-slowest-examples.rb rspec-console.log > plot-rspec-slowest-examples.csv
のようにします。profileの後の数字は出力する上位件数です。(デフォルトだと上位10件)
出力されたcsv
total,top 1,top 2,top 3,top 4,top 5, 8,1.67,1.59,1.59,1.58,1.58,
3. 上記で出力したcsvをplot pluginで読み込ませる
*1:既出かどうかは知らん