先日の日記に書いたメール送信の ユニットテストみたいなことを、HTTP Server に対しても 行いたくなった。
例えば、「何かのアクションを行ったついでに、それを HTTP で どこかに通知」という機能をテストしたいときなど。 最近 Web Service とかも一般的になってきたし、blog の ping 機能 とかもそんな感じなので、割と使う場面はありますね。
で、そういうことができる HTTP Server がないか探したら、 commons-httpclient の中の test ディレクトリに SimpleHttpServer というクラスがひっそりとありました。
というわけで、src/test/org/apache/commons/httpclient/server 以下を jar にまとめて、あと EchoService ってクラスも使いたかったのですが、 どういうわけか現在のリポジトリには見当たらなかったので、 昔のブランチ(3.0辺り)からとりだしてきて同じく jar にまとめて利用。
test の書き方は、 src/test/org/apache/commons/httpclient/TestPostMethod.java 辺りが参考になるでしょう。
これもメールのテストときと同様、ファイアウォールとか Norton などに 注意です。
それから、Skype を使っていると、どういうわけか Skype が 80 番ポートを LISTEN しやがってて、80 番では SimpleHttpServer を立てられないので、 Skype を止めるとか設定を変えるとか、 80 番以外のポートを使うなどしないといけません。