次のように一般的な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リスト
- 環境設定(Eclipse上にテスト環境の作成)
- ログファイルからXXXX=INFOのものを抽出する
今回はMapperのみで良さそうですね。
続きは次の投稿で。
0 件のコメント:
コメントを投稿