2012年 03月 06日

Apache の mod_rewrite の挙動をテストするやつ

Test::Apache::RewriteRules がうまく動かなくて (プロキシされるほうの apache が何かで起動しない) 泣いたので、ほぼスクラッチから書いたやつをはっとく…… だいぶ前のだけど

  • プロキシされるほうのサーバは Apache ではなく HTTP::Server::Simple::PSGI にした。
  • インターフェイスが微妙に違う (シンプルにした)
  • エラーがでたときに apache の error_log を表示するようにした
  • 普通に HTTP::Response が返ってくるのでそれをテストする
    • $res->{env} にプロキシされたサーバに送られた Plack の env がほぼそのまま (glob とか Storable できないものを除いて) 入っている
    • $res->{backend} に処理したサーバが入っている (デフォルトは default)
    • $res->header('Server') =~ /Apache/ とかでプロキシがそのまま処理したことをテストできそう
    • $res->{uri} は 30x 系の場合は Location ヘッダが、そうでない場合は 'http://' . $data->{name} . $data->{env}->{REQUEST_URI}; が入る、ので $apache->request('...')->{uri} eq 'http://Backend/foobar/'; とか並べて書ける

あたりが元のやつと違う。しかしテストを走らせまくっているとセマフォのエラーになるのはなんとかならないのかな