Skip to content

Commit 4b0565c

Browse files
authored
feat(scaletest): add service banner status for runner (#9945)
1 parent e6d2ddb commit 4b0565c

File tree

3 files changed

+58
-2
lines changed

3 files changed

+58
-2
lines changed

scaletest/templates/scaletest-runner/scripts/lib.sh

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -210,3 +210,33 @@ wait_baseline() {
210210
maybedryrun "$DRY_RUN" sleep $((s * 60))
211211
PHASE_TYPE="phase-wait" end_phase
212212
}
213+
214+
get_appearance() {
215+
session_token=$CODER_USER_TOKEN
216+
if [[ -f "${CODER_CONFIG_DIR}/session" ]]; then
217+
session_token="$(<"${CODER_CONFIG_DIR}/session")"
218+
fi
219+
curl -sSL \
220+
-H "Coder-Session-Token: ${session_token}" \
221+
"${CODER_URL}/api/v2/appearance"
222+
}
223+
set_appearance() {
224+
local json=$1 color=$2 message=$3
225+
226+
session_token=$CODER_USER_TOKEN
227+
if [[ -f "${CODER_CONFIG_DIR}/session" ]]; then
228+
session_token="$(<"${CODER_CONFIG_DIR}/session")"
229+
fi
230+
newjson="$(
231+
jq \
232+
--arg color "${color}" \
233+
--arg message "${message}" \
234+
'. | .service_banner.message |= $message | .service_banner.background_color |= $color' <<<"${json}"
235+
)"
236+
maybedryrun "${DRY_RUN}" curl -sSL \
237+
-X PUT \
238+
-H 'Content-Type: application/json' \
239+
-H "Coder-Session-Token: ${session_token}" \
240+
--data "${newjson}" \
241+
"${CODER_URL}/api/v2/appearance"
242+
}

scaletest/templates/scaletest-runner/shutdown.sh

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ set -e
88

99
cleanup() {
1010
coder tokens remove scaletest_runner >/dev/null 2>&1 || true
11+
rm -f "${CODER_CONFIG_DIR}/session"
1112
}
1213
trap cleanup EXIT
1314

@@ -16,3 +17,10 @@ annotate_grafana "workspace" "Agent stopping..."
1617
"${SCRIPTS_DIR}/cleanup.sh" shutdown
1718

1819
annotate_grafana_end "workspace" "Agent running"
20+
21+
appearance_json="$(get_appearance)"
22+
service_banner_message=$(jq -r '.service_banner.message' <<<"${appearance_json}")
23+
service_banner_message="${service_banner_message/% | */}"
24+
service_banner_color="#4CD473" # Green.
25+
26+
set_appearance "${appearance_json}" "${service_banner_color}" "${service_banner_message}"

scaletest/templates/scaletest-runner/startup.sh

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,11 @@ fi
2121
# shellcheck disable=SC2153 source=scaletest/templates/scaletest-runner/scripts/lib.sh
2222
. "${SCRIPTS_DIR}/lib.sh"
2323

24+
appearance_json="$(get_appearance)"
25+
service_banner_message=$(jq -r '.service_banner.message' <<<"${appearance_json}")
26+
service_banner_message="${service_banner_message/% | */}"
27+
service_banner_color="#D65D0F" # Orange.
28+
2429
annotate_grafana "workspace" "Agent running" # Ended in shutdown.sh.
2530

2631
{
@@ -55,34 +60,47 @@ annotate_grafana "workspace" "Agent running" # Ended in shutdown.sh.
5560
} &
5661
pprof_pid=$!
5762

63+
set_appearance "${appearance_json}" "${service_banner_color}" "${service_banner_message} | Scaletest running: [${CODER_USER}/${CODER_WORKSPACE}](${CODER_URL}/@${CODER_USER}/${CODER_WORKSPACE})!"
64+
5865
# Show failure in the UI if script exits with error.
59-
failed_status=Failed
6066
on_exit() {
6167
code=${?}
6268
trap - ERR EXIT
6369
set +e
6470

6571
kill -INT "${pprof_pid}"
6672

73+
message_color="#4CD473" # Green.
74+
message_status=COMPLETE
75+
if ((code > 0)); then
76+
message_color="#D94A5D" # Red.
77+
message_status=FAILED
78+
fi
79+
6780
case "${SCALETEST_PARAM_CLEANUP_STRATEGY}" in
6881
on_stop)
6982
# Handled by shutdown script.
7083
;;
7184
on_success)
7285
if ((code == 0)); then
86+
set_appearance "${appearance_json}" "${message_color}" "${service_banner_message} | Scaletest ${message_status}: [${CODER_USER}/${CODER_WORKSPACE}](${CODER_URL}/@${CODER_USER}/${CODER_WORKSPACE}), cleaning up..."
7387
"${SCRIPTS_DIR}/cleanup.sh" "${SCALETEST_PARAM_CLEANUP_STRATEGY}"
7488
fi
7589
;;
7690
on_error)
7791
if ((code > 0)); then
92+
set_appearance "${appearance_json}" "${message_color}" "${service_banner_message} | Scaletest ${message_status}: [${CODER_USER}/${CODER_WORKSPACE}](${CODER_URL}/@${CODER_USER}/${CODER_WORKSPACE}), cleaning up..."
7893
"${SCRIPTS_DIR}/cleanup.sh" "${SCALETEST_PARAM_CLEANUP_STRATEGY}"
7994
fi
8095
;;
8196
*)
97+
set_appearance "${appearance_json}" "${message_color}" "${service_banner_message} | Scaletest ${message_status}: [${CODER_USER}/${CODER_WORKSPACE}](${CODER_URL}/@${CODER_USER}/${CODER_WORKSPACE}), cleaning up..."
8298
"${SCRIPTS_DIR}/cleanup.sh" "${SCALETEST_PARAM_CLEANUP_STRATEGY}"
8399
;;
84100
esac
85101

102+
set_appearance "${appearance_json}" "${message_color}" "${service_banner_message} | Scaletest ${message_status}: [${CODER_USER}/${CODER_WORKSPACE}](${CODER_URL}/@${CODER_USER}/${CODER_WORKSPACE})!"
103+
86104
annotate_grafana_end "" "Start scaletest"
87105
}
88106
trap on_exit EXIT
@@ -93,7 +111,7 @@ on_err() {
93111
set +e
94112

95113
log "Scaletest failed!"
96-
GRAFANA_EXTRA_TAGS=error set_status "${failed_status} (exit=${code})"
114+
GRAFANA_EXTRA_TAGS=error set_status "Failed (exit=${code})"
97115
"${SCRIPTS_DIR}/report.sh" failed
98116
lock_status # Ensure we never rewrite the status after a failure.
99117

0 commit comments

Comments
 (0)