2
2
3
3
set -euo pipefail
4
4
5
- if [[ $# -lt 1 ]]; then
6
- echo " Usage: $0 <loadtest name>"
7
- exit 1
8
- fi
5
+ PROJECT_ROOT=" $( git rev-parse --show-toplevel) "
6
+ # shellcheck source=scripts/lib.sh
7
+ source " ${PROJECT_ROOT} /scripts/lib.sh"
9
8
10
9
# Allow toggling verbose output
11
10
[[ -n ${VERBOSE:- } ]] && set -x
12
11
13
- LOADTEST_NAME=" $1 "
14
- PROJECT_ROOT=" $( git rev-parse --show-toplevel) "
12
+ SCALETEST_NAME=" ${SCALETEST_NAME:- } "
13
+ SCALETEST_TRAFFIC_BYTES_PER_TICK=" ${SCALETEST_TRAFFIC_BYTES_PER_TICK:- 1024} "
14
+ SCALETEST_TRAFFIC_TICK_INTERVAL=" ${SCALETEST_TRAFFIC_TICK_INTERVAL:- 100ms} "
15
+
16
+ script_name=$( basename " $0 " )
17
+ args=" $( getopt -o " " -l help,name:,traffic-bytes-per-tick:,traffic-tick-interval:, -- " $@ " ) "
18
+ eval set -- " $args "
19
+ while true ; do
20
+ case " $1 " in
21
+ --help)
22
+ echo " Usage: $script_name --name <name> [--traffic-bytes-per-tick <bytes_per-tick>] [--traffic-tick-interval <ticks_per_second]"
23
+ exit 1
24
+ ;;
25
+ --name)
26
+ SCALETEST_NAME=" $2 "
27
+ shift 2
28
+ ;;
29
+ --traffic-bytes-per-tick)
30
+ SCALETEST_TRAFFIC_BYTES_PER_TICK=" $2 "
31
+ shift 2
32
+ ;;
33
+ --traffic-tick-interval)
34
+ SCALETEST_TRAFFIC_TICK_INTERVAL=" $2 "
35
+ shift 2
36
+ ;;
37
+ --)
38
+ shift
39
+ break
40
+ ;;
41
+ * )
42
+ error " Unrecognized option: $1 "
43
+ ;;
44
+ esac
45
+ done
46
+
47
+ dependencies kubectl
48
+
49
+ if [[ -z " ${SCALETEST_NAME} " ]]; then
50
+ echo " Must specify --name"
51
+ exit 1
52
+ fi
53
+
15
54
CODER_TOKEN=$( " ${PROJECT_ROOT} /scaletest/lib/coder_shim.sh" tokens create)
16
- CODER_URL=" http://coder.coder-${LOADTEST_NAME } .svc.cluster.local"
17
- export KUBECONFIG=" ${PROJECT_ROOT} /scaletest/.coderv2/${LOADTEST_NAME } -cluster.kubeconfig"
55
+ CODER_URL=" http://coder.coder-${SCALETEST_NAME } .svc.cluster.local"
56
+ export KUBECONFIG=" ${PROJECT_ROOT} /scaletest/.coderv2/${SCALETEST_NAME } -cluster.kubeconfig"
18
57
19
58
# Clean up any pre-existing pods
20
- kubectl -n " coder-${LOADTEST_NAME } " delete pod coder-scaletest-workspace-traffic --force || true
59
+ kubectl -n " coder-${SCALETEST_NAME } " delete pod coder-scaletest-workspace-traffic --force || true
21
60
22
61
cat << EOF | kubectl apply -f -
23
62
apiVersion: v1
24
63
kind: Pod
25
64
metadata:
26
65
name: coder-scaletest-workspace-traffic
27
- namespace: coder-${LOADTEST_NAME }
66
+ namespace: coder-${SCALETEST_NAME }
28
67
labels:
29
68
app.kubernetes.io/name: coder-scaletest-workspace-traffic
30
69
spec:
@@ -36,12 +75,12 @@ spec:
36
75
- key: cloud.google.com/gke-nodepool
37
76
operator: In
38
77
values:
39
- - ${LOADTEST_NAME } -misc
78
+ - ${SCALETEST_NAME } -misc
40
79
containers:
41
80
- command:
42
81
- sh
43
82
- -c
44
- - "curl -fsSL $CODER_URL /bin/coder-linux-amd64 -o /tmp/coder && chmod +x /tmp/coder && /tmp/coder --verbose --url=$CODER_URL --token=$CODER_TOKEN scaletest workspace-traffic --concurrency=0 --bytes-per-tick=4096 --tick-interval=100ms "
83
+ - "curl -fsSL $CODER_URL /bin/coder-linux-amd64 -o /tmp/coder && chmod +x /tmp/coder && /tmp/coder --verbose --url=$CODER_URL --token=$CODER_TOKEN scaletest workspace-traffic --concurrency=0 --bytes-per-tick=${SCALETEST_TRAFFIC_BYTES_PER_TICK} --tick-interval=${SCALETEST_TRAFFIC_TICK_INTERVAL} --scaletest-prometheus-wait=60s "
45
84
env:
46
85
- name: CODER_URL
47
86
value: $CODER_URL
@@ -51,21 +90,18 @@ spec:
51
90
value: "0.0.0.0:21112"
52
91
- name: CODER_SCALETEST_JOB_TIMEOUT
53
92
value: "30m"
54
- - name: CODER_SCALETEST_CONCURRENCY
55
- value: "0"
56
- - name: CODER_SCALETEST_WORKSPACE_TRAFFIC_BYTES_PER_TICK
57
- value: "2048"
58
93
ports:
59
94
- containerPort: 21112
60
95
name: prometheus-http
61
96
protocol: TCP
62
97
name: cli
63
98
image: docker.io/codercom/enterprise-minimal:ubuntu
99
+ restartPolicy: Never
64
100
---
65
101
apiVersion: monitoring.coreos.com/v1
66
102
kind: PodMonitor
67
103
metadata:
68
- namespace: coder-${LOADTEST_NAME }
104
+ namespace: coder-${SCALETEST_NAME }
69
105
name: coder-workspacetraffic-monitoring
70
106
spec:
71
107
selector:
0 commit comments