競技に必要、または利用できそうなスクリプトを用意しています。それぞれの概要を説明します。
注意:
- すべて、スクリプト配置ディレクトリ内で直接実行してください。
- ファイルを削除するスクリプトが含まれます。実行環境にお気をつけください。
場所: VM 内 (/home/azureuser/entry.sh
)
※ リポジトリには含まれていません。
※ ローカルでは実行しません。
$ bash entry.sh
forkしたリポジトリのURLを入力ください: https://github.com/{your-name}/42Tokyo-tuning-2407.git
入力されたリポジトリをクローンし、init.sh
を実施します。
必要なファイルが/.da
ディレクトリからリポジトリ内にコピーされ、リストア & マイグレーション が実行されます。
場所: ルートディレクトリ/run.sh
$ bash run.sh
run.sh
では下記内容が順次に実行されます。
- リストア・コンテナ再起動・マイグレーション
- e2e テスト
- 負荷試験・採点
上記ステップは、以降の各種項目で紹介されるスクリプトで個別に実行可能です。
- ローカルで実行する場合は実行するたびにパスワードを入力する必要があります
場所: webapp/restart_container.sh
$ cd webapp
$ bash restart_container.sh
webapp/
の現在の内容でイメージおよびコンテナを作成し、サービスを立ち上げます。
- 開発環境ではフロントエンド、バックエンドはホットリロードが適用されているため、MySQLのコンテナのみ再起動を行います。そのため、Nginxのコンテナを再起動したい場合は手動でするようにお願いします。
場所: webapp/restore_and_migration.sh
$ cd webapp
$ bash restore_and_migration.sh
採点時に実施される MySQL データのリストア・コンテナ再起動・簡易 DB マイグレーションを順次実施します。
- マイグレーションの実行に時間がかかることがあります。
場所: webapp/e2e/run_e2e_test.sh
$ cd webapp/e2e/
$ bash run_e2e_test.sh
採点時に実施される API テストを制約付きで実行できます。
最新の内容でテストしたい場合は、別途リストア & マイグレーションスクリプトを実行してください。
- チューニングがされていない初期状態だと、タイムアウトで失敗する可能性があります。
- 評価スクリプトとは異なり、http://localhost/ 宛にテストを実施します。
- このスクリプトの結果は OK だが負荷試験のレスポンスが NG の場合、後者が優先されます。
場所: benchmarker/run_k6_and_score.sh
$ cd benchmarker
$ bash run_k6_and_score.sh
現在起動しているサービスに対し、採点を行います。実行には数分かかります。
最新の内容で採点したい場合は、リストア & マイグレーションスクリプトを実行してください。
- 負荷試験の実行時間は開発環境では 90s 、VM環境では 180s です。負荷試験実行後にスコア計算のため30秒前後時間がかかります。
- リストア・マイグレーションされていない状態で
run_k6_and_score.sh
を実行すると正しい採点が行われない可能性があります。 - ローカルでの採点では、お使いのネットワーク環境やPCのスペックに依存する場合があります。