ひとりでやるRiak Advent Calendar 2012 day9 - 結合テスト riak_test

さて年末も押し迫ってきましたがこちらは遅々として進みませんね。遅々として進まないものに結合試験があると思います。今日はそんな結合試験をやってみる話。

This is what a real Shuttle looks like

分散システムのテストというと普通は地獄を見るものだがある程度までは自動化されていることが望ましい。Hadoopまわりの分散システムのテスト自動化はJUnitで一体どこまで頑張れるのかというのは個人的な興味だがここでは関係ないriak_testの話をしよう。

riak_testは何かというと、分散システムの初期結合テストを補助するフレームワークだ。実行する手順は大まかに言ってこんな感じ:

  1. riak_testをcloneしてくる
  2. テストディレクトリを作っておく
  3. .riak_test.configを書く
  4. 実行

最初のcloneからなんとなく解説すると、

$ git clone git://github.com/basho/riak_test
$ cd riak_test
$ make
$ wget https://raw.github.com/kuenishi/kerl/jp/kerl
$ bin/rtdev-all.sh

こんな感じだ。途中のwgetは日本からerlang.orgにアクセスすると僕らが老化してしまうくらい遅いのでミラーを見るスクリプトを先に入れておく代物だ。多分これですごく速くなる。

これでテストディレクトリまでできてしまうだろう。あとは ~/.riak_test.config を作るだけだ。

{default, [
    {rt_max_wait_time, 180000},
    {rt_retry_delay, 1000}
]}.

{rtdev, [
    {rt_deps, ["$PATH_TO_YOUR_RIAK_SOURCE/deps"]},
    {rt_retry_delay, 500},
    {rt_harness, rtdev},
    {rtdev_path, [{root, "/tmp/rt"},
                  {current, "/tmp/rt/current"},
                  {"1.2.0", "/tmp/rt/riak-1.2.0"},
                  {"1.1.4", "/tmp/rt/riak-1.1.4"},
                  {"1.0.3", "/tmp/rt/riak-1.0.3"}]}
]}.

1.2.0 とあるが最新版などいろいろ違うので、 /tmp/rtにできたディレクトリをみて適宜バージョンを入れなおしておこう。まあそれでもなんとなく動くかもしれないけどね。

ここまでできたら、

$ ./riak_test -c rtdev -t verify_build_cluster

とやってみよう。動いたかな?これで動いたら次のを試してみようと公式のREADME.mdには書いてあるがそれは動かないので注意が必要だ。正しいコマンドは

$ ./riak_test -c rtdev -d ebin

である。
珍しいOS(Solaris, *BSD)などをお持ちの方は -r でreportしてgiddyupに登録*1。というわけで僕のマシンでは今もまだ何やらシナリオが流れている。気を長く持って、布団に入って寝て待とう。

*1:僕もまだやったことない