test(server-rc): add delayed matrix start
This commit is contained in:
parent
61228a6c9b
commit
0acc0d2d03
@ -52,6 +52,7 @@ LESAVKA_SERVER_RC_RECONFIGURE_SETTLE_SECONDS=${LESAVKA_SERVER_RC_RECONFIGURE_SET
|
|||||||
LESAVKA_SERVER_RC_RECONFIGURE_VERBOSE=${LESAVKA_SERVER_RC_RECONFIGURE_VERBOSE:-0}
|
LESAVKA_SERVER_RC_RECONFIGURE_VERBOSE=${LESAVKA_SERVER_RC_RECONFIGURE_VERBOSE:-0}
|
||||||
LESAVKA_SERVER_RC_PROMPT_SUDO_EARLY=${LESAVKA_SERVER_RC_PROMPT_SUDO_EARLY:-1}
|
LESAVKA_SERVER_RC_PROMPT_SUDO_EARLY=${LESAVKA_SERVER_RC_PROMPT_SUDO_EARLY:-1}
|
||||||
LESAVKA_SERVER_RC_REMOTE_SUDO_PASSWORD=${LESAVKA_SERVER_RC_REMOTE_SUDO_PASSWORD:-}
|
LESAVKA_SERVER_RC_REMOTE_SUDO_PASSWORD=${LESAVKA_SERVER_RC_REMOTE_SUDO_PASSWORD:-}
|
||||||
|
LESAVKA_SERVER_RC_START_DELAY_SECONDS=${LESAVKA_SERVER_RC_START_DELAY_SECONDS:-0}
|
||||||
LESAVKA_SERVER_RC_WAIT_TETHYS_READY=${LESAVKA_SERVER_RC_WAIT_TETHYS_READY:-1}
|
LESAVKA_SERVER_RC_WAIT_TETHYS_READY=${LESAVKA_SERVER_RC_WAIT_TETHYS_READY:-1}
|
||||||
LESAVKA_SERVER_RC_TETHYS_READY_TIMEOUT_SECONDS=${LESAVKA_SERVER_RC_TETHYS_READY_TIMEOUT_SECONDS:-60}
|
LESAVKA_SERVER_RC_TETHYS_READY_TIMEOUT_SECONDS=${LESAVKA_SERVER_RC_TETHYS_READY_TIMEOUT_SECONDS:-60}
|
||||||
LESAVKA_SERVER_RC_TETHYS_SETTLE_SECONDS=${LESAVKA_SERVER_RC_TETHYS_SETTLE_SECONDS:-6}
|
LESAVKA_SERVER_RC_TETHYS_SETTLE_SECONDS=${LESAVKA_SERVER_RC_TETHYS_SETTLE_SECONDS:-6}
|
||||||
@ -508,6 +509,17 @@ true
|
|||||||
REMOTE_SUDO_PRIME
|
REMOTE_SUDO_PRIME
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sleep_start_delay() {
|
||||||
|
[[ "${LESAVKA_SERVER_RC_START_DELAY_SECONDS}" != "0" ]] || return 0
|
||||||
|
if [[ ! "${LESAVKA_SERVER_RC_START_DELAY_SECONDS}" =~ ^[0-9]+([.][0-9]+)?$ ]]; then
|
||||||
|
printf 'LESAVKA_SERVER_RC_START_DELAY_SECONDS must be a non-negative number, got %s\n' "${LESAVKA_SERVER_RC_START_DELAY_SECONDS}" >&2
|
||||||
|
exit 64
|
||||||
|
fi
|
||||||
|
echo "==> delaying server-to-RC matrix start for ${LESAVKA_SERVER_RC_START_DELAY_SECONDS}s"
|
||||||
|
echo " ↪ remote sudo has already been primed; sleeping before prebuild/reconfigure/capture"
|
||||||
|
sleep "${LESAVKA_SERVER_RC_START_DELAY_SECONDS}"
|
||||||
|
}
|
||||||
|
|
||||||
prebuild_probe_tools() {
|
prebuild_probe_tools() {
|
||||||
[[ "${LESAVKA_SERVER_RC_PROBE_PREBUILD}" != "0" ]] || return 0
|
[[ "${LESAVKA_SERVER_RC_PROBE_PREBUILD}" != "0" ]] || return 0
|
||||||
echo "==> prebuilding relay control/analyzer once for the mode matrix"
|
echo "==> prebuilding relay control/analyzer once for the mode matrix"
|
||||||
@ -1357,9 +1369,11 @@ echo " ↪ tune_delays=${LESAVKA_SERVER_RC_TUNE_DELAYS} confirm=${LESAVKA_SERV
|
|||||||
echo " ↪ freshness_limit_ms=${LESAVKA_SERVER_RC_FRESHNESS_MAX_AGE_MS} min_pairs=${LESAVKA_SERVER_RC_FRESHNESS_MIN_PAIRS}"
|
echo " ↪ freshness_limit_ms=${LESAVKA_SERVER_RC_FRESHNESS_MAX_AGE_MS} min_pairs=${LESAVKA_SERVER_RC_FRESHNESS_MIN_PAIRS}"
|
||||||
echo " ↪ reconfigure=${LESAVKA_SERVER_RC_RECONFIGURE} strategy=${LESAVKA_SERVER_RC_RECONFIGURE_STRATEGY} allow_gadget_reset=${LESAVKA_SERVER_RC_ALLOW_GADGET_RESET}"
|
echo " ↪ reconfigure=${LESAVKA_SERVER_RC_RECONFIGURE} strategy=${LESAVKA_SERVER_RC_RECONFIGURE_STRATEGY} allow_gadget_reset=${LESAVKA_SERVER_RC_ALLOW_GADGET_RESET}"
|
||||||
echo " ↪ tethys_ready=${LESAVKA_SERVER_RC_WAIT_TETHYS_READY} settle=${LESAVKA_SERVER_RC_TETHYS_SETTLE_SECONDS}s timeout=${LESAVKA_SERVER_RC_TETHYS_READY_TIMEOUT_SECONDS}s preroll_discard=${LESAVKA_SERVER_RC_PREROLL_DISCARD_SECONDS}s"
|
echo " ↪ tethys_ready=${LESAVKA_SERVER_RC_WAIT_TETHYS_READY} settle=${LESAVKA_SERVER_RC_TETHYS_SETTLE_SECONDS}s timeout=${LESAVKA_SERVER_RC_TETHYS_READY_TIMEOUT_SECONDS}s preroll_discard=${LESAVKA_SERVER_RC_PREROLL_DISCARD_SECONDS}s"
|
||||||
|
echo " ↪ start_delay=${LESAVKA_SERVER_RC_START_DELAY_SECONDS}s"
|
||||||
echo " ↪ artifact_dir=${MATRIX_REPORT_DIR}"
|
echo " ↪ artifact_dir=${MATRIX_REPORT_DIR}"
|
||||||
|
|
||||||
prime_remote_sudo
|
prime_remote_sudo
|
||||||
|
sleep_start_delay
|
||||||
prebuild_probe_tools
|
prebuild_probe_tools
|
||||||
|
|
||||||
IFS=',' read -r -a modes <<<"${LESAVKA_SERVER_RC_MODES}"
|
IFS=',' read -r -a modes <<<"${LESAVKA_SERVER_RC_MODES}"
|
||||||
|
|||||||
@ -363,6 +363,7 @@ fn server_rc_mode_matrix_validates_advertised_uvc_profiles() {
|
|||||||
"LESAVKA_SERVER_RC_ALLOW_GADGET_RESET=${LESAVKA_SERVER_RC_ALLOW_GADGET_RESET:-1}",
|
"LESAVKA_SERVER_RC_ALLOW_GADGET_RESET=${LESAVKA_SERVER_RC_ALLOW_GADGET_RESET:-1}",
|
||||||
"LESAVKA_SERVER_RC_RECONFIGURE_VERBOSE=${LESAVKA_SERVER_RC_RECONFIGURE_VERBOSE:-0}",
|
"LESAVKA_SERVER_RC_RECONFIGURE_VERBOSE=${LESAVKA_SERVER_RC_RECONFIGURE_VERBOSE:-0}",
|
||||||
"LESAVKA_SERVER_RC_PROMPT_SUDO_EARLY=${LESAVKA_SERVER_RC_PROMPT_SUDO_EARLY:-1}",
|
"LESAVKA_SERVER_RC_PROMPT_SUDO_EARLY=${LESAVKA_SERVER_RC_PROMPT_SUDO_EARLY:-1}",
|
||||||
|
"LESAVKA_SERVER_RC_START_DELAY_SECONDS=${LESAVKA_SERVER_RC_START_DELAY_SECONDS:-0}",
|
||||||
"LESAVKA_SERVER_RC_WAIT_TETHYS_READY=${LESAVKA_SERVER_RC_WAIT_TETHYS_READY:-1}",
|
"LESAVKA_SERVER_RC_WAIT_TETHYS_READY=${LESAVKA_SERVER_RC_WAIT_TETHYS_READY:-1}",
|
||||||
"LESAVKA_SERVER_RC_TETHYS_READY_TIMEOUT_SECONDS=${LESAVKA_SERVER_RC_TETHYS_READY_TIMEOUT_SECONDS:-60}",
|
"LESAVKA_SERVER_RC_TETHYS_READY_TIMEOUT_SECONDS=${LESAVKA_SERVER_RC_TETHYS_READY_TIMEOUT_SECONDS:-60}",
|
||||||
"LESAVKA_SERVER_RC_TETHYS_SETTLE_SECONDS=${LESAVKA_SERVER_RC_TETHYS_SETTLE_SECONDS:-6}",
|
"LESAVKA_SERVER_RC_TETHYS_SETTLE_SECONDS=${LESAVKA_SERVER_RC_TETHYS_SETTLE_SECONDS:-6}",
|
||||||
@ -376,6 +377,11 @@ fn server_rc_mode_matrix_validates_advertised_uvc_profiles() {
|
|||||||
"LESAVKA_SERVER_RC_TUNE_MIN_CHANGE_US=${LESAVKA_SERVER_RC_TUNE_MIN_CHANGE_US:-5000}",
|
"LESAVKA_SERVER_RC_TUNE_MIN_CHANGE_US=${LESAVKA_SERVER_RC_TUNE_MIN_CHANGE_US:-5000}",
|
||||||
"Theia sudo password for %s",
|
"Theia sudo password for %s",
|
||||||
"==> priming remote sudo on ${LESAVKA_SERVER_HOST}",
|
"==> priming remote sudo on ${LESAVKA_SERVER_HOST}",
|
||||||
|
"sleep_start_delay",
|
||||||
|
"==> delaying server-to-RC matrix start for ${LESAVKA_SERVER_RC_START_DELAY_SECONDS}s",
|
||||||
|
"remote sudo has already been primed; sleeping before prebuild/reconfigure/capture",
|
||||||
|
"LESAVKA_SERVER_RC_START_DELAY_SECONDS must be a non-negative number",
|
||||||
|
"start_delay=${LESAVKA_SERVER_RC_START_DELAY_SECONDS}s",
|
||||||
"==> prebuilding relay control/analyzer once for the mode matrix",
|
"==> prebuilding relay control/analyzer once for the mode matrix",
|
||||||
"LESAVKA_SERVER_RC_MODES=auto",
|
"LESAVKA_SERVER_RC_MODES=auto",
|
||||||
"discover_local_webcam_modes",
|
"discover_local_webcam_modes",
|
||||||
@ -451,6 +457,16 @@ fn server_rc_mode_matrix_validates_advertised_uvc_profiles() {
|
|||||||
"server-to-RC mode matrix script should contain {expected}"
|
"server-to-RC mode matrix script should contain {expected}"
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
let prime = SERVER_RC_MODE_MATRIX_SCRIPT
|
||||||
|
.find("prime_remote_sudo\nsleep_start_delay\nprebuild_probe_tools")
|
||||||
|
.expect("matrix should prime remote sudo before delayed start and prebuild");
|
||||||
|
let prompt = SERVER_RC_MODE_MATRIX_SCRIPT
|
||||||
|
.find("Theia sudo password for %s")
|
||||||
|
.expect("matrix should contain the immediate Theia password prompt");
|
||||||
|
assert!(
|
||||||
|
prompt < prime,
|
||||||
|
"password prompt machinery should be defined before the matrix startup sequence"
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user