レビュー手順書 - katataku/webserv GitHub Wiki

前準備

siegeのインストール

brew install siege
  • 後半の負荷テストに用いる。(今はインストールだけ)
  • インストールに時間が掛かるのでインストールをしながら、別のターミナルで作業を継続する。

コンパイル

make
  • もう一度makeを実行して、relinkしないことを確認する。

サーバー起動

./webserv
  • サーバは常駐プログラムなので、起動しっぱなしにしておく。以降の確認は別ターミナルで実施する。
  • 第二引数でconfigファイルを指定できるが、今回は未指定でOK.(デフォルトのconfigファイルが利用される。)

Mandatory確認項目

webservとは別のターミナルで、リクエストを送り、確認作業を行う。

1つ目のポートに対して単純なGETが成功することの確認

curl -v localhost:8042/ 
  • 200 OKが帰ってくることを確認する。

異なるポートに対しても単純なGETが成功することの確認

curl -v localhost:8043/ 
  • 200 OKが帰ってくることを確認する。

1つ目のポートの別ホストに対してGETが成功することの確認

curl -v --resolve second:8042:127.0.0.1 http://second:8042/
  • 200 OKが帰ってくることを確認する。

エラーページが表示できることの確認

curl -v localhost:8042/not_found
  • 404 NotFoundが帰ってくることを確認する。

POSTメソッドの動作確認

curl -v localhost:8042/files/success -X POST --data "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
  • 201 OKが帰ってくることを確認する。
  • Content-Length: 64と表示されることを確認する。
  • 作成したファイルにアクセスできることを確認する。curl -v localhost:8042/files/success

bodyの長さ制限の確認。

curl -v localhost:8042/files/success -X POST --data "baaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
  • 413 Payload Too Largeが帰ってくることを確認する。

別のディレクトリへのアクセスができることの確認

curl -v localhost:8042/html2/
  • 200 OKが帰ってくることを確認する。
  • レスポンスされた内容は、html2となっていることを確認する。

許可されていないメソッドの仕様に関する確認。

curl -v localhost:8042/new -X POST
  • 405 Method Not Allowedが帰ってくることを確認する。

DELETEメソッドの動作確認。

curl -v localhost:8042/files/success -X DELETE
  • 200 OKが帰ってくることを確認する。
  • ファイルが削除されていることを確認する。

ストレステスト

siege -b http://localhost:8042/
  • 別のターミナルで、top -b -d 1 |grep webservを実行して、メモリ使用量が「どんどん増えていない」ことを確認する。
  • lsof -Pni4 | grep webserv
  • watch -n 0.2 ls -l /proc/$(ps -a | grep webserv | awk '{ print $1 }')/fd

Bonus確認項目

コンパイル

make bonus
  • もう一度make bonusを実行して、relinkしないことを確認する。
  • ボーナス用の実行ファイルができていること。(同じソースコードで、別の実行ファイルを生成しているだけ。)

1種類目のCGI(python)が実行できることの確認

curl -v localhost:8042/cgi-bin/cgi-req-dumper.py
  • 200 OKが帰ってくることを確認する。

2種類目のCGI(shell script)が実行できることの確認

curl -v localhost:8042/cgi-bin/cgi-req-dumper.sh
  • 200 OKが帰ってくることを確認する。