2009年12月16日水曜日

MapReduceをJUnitでTDDで作る(1-TODOリスト作成)

今日は、TDD(Test Driven Development)をMap/Reduceの開発に適用するにはどうするか、に焦点をあてて行きます。

次のように一般的なWebシステムのデバッグログ(hoge.log.20091214)からINFOレベルの情報のみを抜き出すロジックをMap/Reduceで組むとします。
2009-12-14 00:00:00,525 INFO hogeAccessLog @ http://hogehoge.com/index.html
2009-12-14 00:00:00,528 DEBUG hogeAccessLog @ aaa=bbb, ccc.ddd=222
2009-12-14 00:00:00,528 DEBUG hogeAccessLog @ eee=333, fff.ggg=232
2009-12-14 00:00:00,530 WARN hogeAccessLog @ http://hogehoge.com/bbb.html 404 not found!!


2009-12-14 00:00:00,525 INFO hogeAccessLog @ http://hogehoge.com/index.html

のみを抜き出す。

TDDの大まかな流れは

  • 仕様をまとめてToDoリストに記述

  • 以下を繰り返し


    • まずテストを書く

    • テストを実行する(未実装なので当然RED)

    • シンプルな実装をしてテストを通す(GREEN)

    • リファクタリング



となります。

テストから書くことで仕様を明確にし、
シンプルな実装を心がけること、テストが常に存在していることから変更に強いプログラムを書くことができるというのがメリットとされています。

ちなみにデメリットは、テストの工数が掛かることです。

では、やってみましょう。

ログの仕様:
yyyy-MM-dd hh:mm:ss,sss XXXX [PG名] @ [ログ出力内容]


要求仕様:
上記XXXX=INFOのものを抜き出して出力する。
上記より

TODOリスト

  1. 環境設定(Eclipse上にテスト環境の作成)

  2. ログファイルからXXXX=INFOのものを抽出する


今回はMapperのみで良さそうですね。

続きは次の投稿で。

0 件のコメント:

コメントを投稿