Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
gitpod-io
GitHub Repository: gitpod-io/gitpod
Path: blob/main/dev/preview/test/load-test.sh
2498 views
1
#!/usr/bin/env bash
2
#
3
# This script makes it possible to run load tests against VM-based preview
4
# environments.
5
#
6
# Usage:
7
# ./dev/preview/test/load-test.sh
8
# ./dev/preview/test/load-test.sh --base-branch-name test --start 1 --end 5 --interval 30
9
#
10
11
set -euo pipefail
12
13
function log {
14
echo "[$(date)] $*"
15
}
16
17
START=1
18
END=15
19
INTERVAL=30
20
BASE_BRANCH_NAME="vm-load-test"
21
BRANCH_SUFFIX="with-vm"
22
23
opts=$(getopt \
24
--longoptions "start:,end:,base-branch-name:,interval:" \
25
--name "$(basename "$0")" \
26
--options "" \
27
-- "$@"
28
)
29
30
eval set -- "$opts"
31
32
while [[ $# -gt 0 ]]; do
33
case "$1" in
34
--start) START=$2 ; shift 2 ;;
35
--end) END=$2 ; shift 2 ;;
36
--base-branch-name) BASE_BRANCH_NAME=$2 ; shift 2 ;;
37
--interval) INTERVAL=$2 ; shift 2 ;;
38
*) break ;;
39
esac
40
done
41
42
while true; do
43
read -rp "
44
Are you sure you want to run the load test with the following configuration?
45
46
START=${START}
47
END=${END}
48
INTERVAL=${INTERVAL}
49
BASE_BRANCH_NAME=${BASE_BRANCH_NAME}
50
51
y/n: " yn
52
case "$yn" in
53
[Yy]* ) break;;
54
[Nn]* ) echo "Aborting load test" ; exit 0;;
55
* ) echo "Please answer y/n";;
56
esac
57
done
58
59
FULL_BRANCH_NAME="${BASE_BRANCH_NAME}-${BRANCH_SUFFIX}"
60
log "Creating base branch ${FULL_BRANCH_NAME}"
61
git checkout -b "${FULL_BRANCH_NAME}"
62
63
for number in $(seq "${START}" "${END}"); do
64
branch="${FULL_BRANCH_NAME}-${number}"
65
66
log "Creating and pushing branch ${branch}"
67
git checkout -b "${branch}"
68
git push -u origin "${branch}"
69
70
log "Back to base branch ${FULL_BRANCH_NAME}"
71
git checkout "${FULL_BRANCH_NAME}"
72
73
log "Sleeping ${INTERVAL} seconds"
74
sleep "$INTERVAL"
75
done
76
77