feat(scaletest): add service banner status for runner (#9945)

This commit is contained in:
Mathias Fredriksson 2023-10-02 14:37:38 +03:00 committed by GitHub
parent e6d2ddb54b
commit 4b0565c895
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 58 additions and 2 deletions

View File

@ -210,3 +210,33 @@ wait_baseline() {
maybedryrun "$DRY_RUN" sleep $((s * 60))
PHASE_TYPE="phase-wait" end_phase
}
get_appearance() {
session_token=$CODER_USER_TOKEN
if [[ -f "${CODER_CONFIG_DIR}/session" ]]; then
session_token="$(<"${CODER_CONFIG_DIR}/session")"
fi
curl -sSL \
-H "Coder-Session-Token: ${session_token}" \
"${CODER_URL}/api/v2/appearance"
}
set_appearance() {
local json=$1 color=$2 message=$3
session_token=$CODER_USER_TOKEN
if [[ -f "${CODER_CONFIG_DIR}/session" ]]; then
session_token="$(<"${CODER_CONFIG_DIR}/session")"
fi
newjson="$(
jq \
--arg color "${color}" \
--arg message "${message}" \
'. | .service_banner.message |= $message | .service_banner.background_color |= $color' <<<"${json}"
)"
maybedryrun "${DRY_RUN}" curl -sSL \
-X PUT \
-H 'Content-Type: application/json' \
-H "Coder-Session-Token: ${session_token}" \
--data "${newjson}" \
"${CODER_URL}/api/v2/appearance"
}

View File

@ -8,6 +8,7 @@ set -e
cleanup() {
coder tokens remove scaletest_runner >/dev/null 2>&1 || true
rm -f "${CODER_CONFIG_DIR}/session"
}
trap cleanup EXIT
@ -16,3 +17,10 @@ annotate_grafana "workspace" "Agent stopping..."
"${SCRIPTS_DIR}/cleanup.sh" shutdown
annotate_grafana_end "workspace" "Agent running"
appearance_json="$(get_appearance)"
service_banner_message=$(jq -r '.service_banner.message' <<<"${appearance_json}")
service_banner_message="${service_banner_message/% | */}"
service_banner_color="#4CD473" # Green.
set_appearance "${appearance_json}" "${service_banner_color}" "${service_banner_message}"

View File

@ -21,6 +21,11 @@ fi
# shellcheck disable=SC2153 source=scaletest/templates/scaletest-runner/scripts/lib.sh
. "${SCRIPTS_DIR}/lib.sh"
appearance_json="$(get_appearance)"
service_banner_message=$(jq -r '.service_banner.message' <<<"${appearance_json}")
service_banner_message="${service_banner_message/% | */}"
service_banner_color="#D65D0F" # Orange.
annotate_grafana "workspace" "Agent running" # Ended in shutdown.sh.
{
@ -55,8 +60,9 @@ annotate_grafana "workspace" "Agent running" # Ended in shutdown.sh.
} &
pprof_pid=$!
set_appearance "${appearance_json}" "${service_banner_color}" "${service_banner_message} | Scaletest running: [${CODER_USER}/${CODER_WORKSPACE}](${CODER_URL}/@${CODER_USER}/${CODER_WORKSPACE})!"
# Show failure in the UI if script exits with error.
failed_status=Failed
on_exit() {
code=${?}
trap - ERR EXIT
@ -64,25 +70,37 @@ on_exit() {
kill -INT "${pprof_pid}"
message_color="#4CD473" # Green.
message_status=COMPLETE
if ((code > 0)); then
message_color="#D94A5D" # Red.
message_status=FAILED
fi
case "${SCALETEST_PARAM_CLEANUP_STRATEGY}" in
on_stop)
# Handled by shutdown script.
;;
on_success)
if ((code == 0)); then
set_appearance "${appearance_json}" "${message_color}" "${service_banner_message} | Scaletest ${message_status}: [${CODER_USER}/${CODER_WORKSPACE}](${CODER_URL}/@${CODER_USER}/${CODER_WORKSPACE}), cleaning up..."
"${SCRIPTS_DIR}/cleanup.sh" "${SCALETEST_PARAM_CLEANUP_STRATEGY}"
fi
;;
on_error)
if ((code > 0)); then
set_appearance "${appearance_json}" "${message_color}" "${service_banner_message} | Scaletest ${message_status}: [${CODER_USER}/${CODER_WORKSPACE}](${CODER_URL}/@${CODER_USER}/${CODER_WORKSPACE}), cleaning up..."
"${SCRIPTS_DIR}/cleanup.sh" "${SCALETEST_PARAM_CLEANUP_STRATEGY}"
fi
;;
*)
set_appearance "${appearance_json}" "${message_color}" "${service_banner_message} | Scaletest ${message_status}: [${CODER_USER}/${CODER_WORKSPACE}](${CODER_URL}/@${CODER_USER}/${CODER_WORKSPACE}), cleaning up..."
"${SCRIPTS_DIR}/cleanup.sh" "${SCALETEST_PARAM_CLEANUP_STRATEGY}"
;;
esac
set_appearance "${appearance_json}" "${message_color}" "${service_banner_message} | Scaletest ${message_status}: [${CODER_USER}/${CODER_WORKSPACE}](${CODER_URL}/@${CODER_USER}/${CODER_WORKSPACE})!"
annotate_grafana_end "" "Start scaletest"
}
trap on_exit EXIT
@ -93,7 +111,7 @@ on_err() {
set +e
log "Scaletest failed!"
GRAFANA_EXTRA_TAGS=error set_status "${failed_status} (exit=${code})"
GRAFANA_EXTRA_TAGS=error set_status "Failed (exit=${code})"
"${SCRIPTS_DIR}/report.sh" failed
lock_status # Ensure we never rewrite the status after a failure.