forked from smatsuodev/42Tokyo-Tuning-2407
-
Notifications
You must be signed in to change notification settings - Fork 1
/
run.sh
executable file
·101 lines (85 loc) · 3.74 KB
/
run.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
#!/bin/bash
# ==================================
# リストア・マイグレーション・e2eテスト・負荷試験・採点の順で実施してくれるスクリプト。
# ==================================
check_job_existence() {
local IS_EXISTS=$1
local JOB_ID=$2
if [[ "$IS_EXISTS" == true ]]; then
echo -e "\n\n===================================================\n\n"
echo -e "既に負荷試験のリクエストを受け取っています"
echo -e "負荷試験が完了してから再度リクエストを行ってください"
echo -e "負荷試験のステータスは下記コマンドで確認できます"
echo -e "bash get_test_status.sh $JOB_ID"
echo -e "\n\n===================================================\n\n"
exit 0
fi
}
# 負荷試験のリクエストが残っているか確認
if [[ $HOSTNAME == app-* ]]; then
if [[ -f ./.da/.initBenchmarker ]]; then
RESPONSE=$(curl -s -G https://benchmarker.ftt2407.dabaas.net/api/check-existence --data-urlencode "teamId=$HOSTNAME")
IS_EXISTS=$(echo "$RESPONSE" | jq -r '.isExists')
JOB_ID=$(echo "$RESPONSE" | jq -r '.jobId')
check_job_existence $IS_EXISTS $JOB_ID
fi
fi
# リストア
(cd webapp && bash ./restore_and_migration.sh)
if [ $? -ne 0 ]; then
echo -e "採点フローを中断します。"
exit 1
fi
# e2eテスト
if [[ $HOSTNAME == app-* ]]; then
(cd webapp/e2e)
datetime=$(date +%s)
docker run --name e2e --rm --network webapp-network \
-v $(pwd)/tokens:/usr/src/e2e/tokens \
-e BASE_URL="https://${HOSTNAME}.ftt2407.dabaas.net" \
-it hirouniv2409.azurecr.io/e2e:production \
bash ./run_e2e_test.sh $datetime
# 署名付きタイムスタンプをBase64にエンコード
timestamp=$(openssl base64 -in ./tokens/${datetime}.bin | tr -d '\n')
else
(cd webapp/e2e && bash ./run_e2e_test.sh)
fi
if [ $? -ne 0 ]; then
echo -e "採点フローを中断します。"
exit 1
fi
# 負荷試験 & 採点開始
if [[ $HOSTNAME != app-* ]]; then
(cd benchmarker && bash ./run_k6_and_score.sh)
if [ $? -ne 0 ]; then
echo -e "採点フローを中断します。"
exit 1
fi
# CPU使用率をリセットするためコンテナを再起動
echo "バックエンドサーバのCPU使用率をリセットするためにコンテナを再起動します"
docker compose -f webapp/docker-compose.local.yml restart backend
exit 0
fi
echo "負荷試験を開始するためのリクエストを送信します。"
COMMIT_ID=$(git rev-parse HEAD)
data="{\"teamId\":\"$HOSTNAME\", \"commitId\":\"$COMMIT_ID\", \"datetime\":\"$datetime\", \"timestamp\":\"$timestamp\"}"
RESPONSE=$(curl -s -X POST https://benchmarker.ftt2407.dabaas.net/api/queuing_trigger \
-H "Content-Type: application/json" \
-d "$data")
JOB_ID=$(echo "$RESPONSE" | jq -r '.jobId' 2>/dev/null)
if [ -z "$JOB_ID" ] || [ "$JOB_ID" = "null" ]; then
echo -e "\n\n===================================================\n\n"
echo -e "負荷試験のリクエストに失敗しました。メンターに報告してください。"
echo $RESPONSE
echo -e "\n\n===================================================\n\n"
exit 1
fi
IS_EXISTS=$(echo "$RESPONSE" | jq -r '.isExists' 2>/dev/null)
check_job_existence $IS_EXISTS $JOB_ID
touch ./.da/.initBenchmarker
echo -e "\n\n===================================================\n\n"
echo -e "負荷試験のリクエストに成功しました。"
echo -e "ジョブID: $JOB_ID"
echo -e "上記のジョブIDをもとに負荷試験のステータスを確認できます"
echo -e "bash get_test_status.sh $JOB_ID"
echo -e "\n\n===================================================\n\n"