From dc56e2b038e246209d5c96999e63a4776efbbaf4 Mon Sep 17 00:00:00 2001 From: Neil <4138956+nwparker@users.noreply.github.com> Date: Sat, 29 Aug 2026 23:33:48 -0700 Subject: [PATCH] test(linux): add startup margin to shutdown oracle --- config/docker/headless-serve-shutdown/run-signal-case.sh | 6 ++++-- config/scripts/headless-serve-shutdown-workflow.test.mjs | 4 ++++ 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/config/docker/headless-serve-shutdown/run-signal-case.sh b/config/docker/headless-serve-shutdown/run-signal-case.sh index 1dff2a3f60d..ae6e6ef6c3c 100755 --- a/config/docker/headless-serve-shutdown/run-signal-case.sh +++ b/config/docker/headless-serve-shutdown/run-signal-case.sh @@ -6,7 +6,9 @@ app_root=${ORCA_TEST_APP_ROOT:-/artifacts/root} signal_target_kind=${ORCA_SIGNAL_TARGET:-app} entrypoint_kind=${ORCA_TEST_ENTRYPOINT:-app} int_delivery=${ORCA_INT_DELIVERY:-foreground-process-group} -startup_timeout_seconds=${ORCA_STARTUP_TIMEOUT_SECONDS:-90} +# Packaged Electron startup can approach 90s on a cold CI runner; leave room +# for the readiness line to reach the log before the observer deadline. +startup_timeout_seconds=${ORCA_STARTUP_TIMEOUT_SECONDS:-180} if ((EUID == 0)); then exec runuser --user orca --preserve-environment -- "$0" "$@" @@ -55,7 +57,7 @@ app_start_ticks=$(awk '{print $22}' "/proc/$app_pid/stat") # The inner shell expands its positional parameters. # shellcheck disable=SC1083,SC2016 -ready_line=$(timeout "$startup_timeout_seconds" bash -c ' +ready_line=$(timeout --foreground --signal=TERM --kill-after=5s "$startup_timeout_seconds" bash -c ' tail --pid="$1" -n +1 -F "$2" 2>/dev/null \ | sed -u -n 's/^[^{]*//p' \ | jq --unbuffered -Rnc '\''first(inputs | fromjson? | select(.type == "orca_server_ready" and .schemaVersion == 1))'\'' diff --git a/config/scripts/headless-serve-shutdown-workflow.test.mjs b/config/scripts/headless-serve-shutdown-workflow.test.mjs index 371ce65a909..758d8773ce2 100644 --- a/config/scripts/headless-serve-shutdown-workflow.test.mjs +++ b/config/scripts/headless-serve-shutdown-workflow.test.mjs @@ -70,6 +70,10 @@ describe('headless serve shutdown PR gate', () => { it('keeps the readiness parser line-buffered', () => { expect(signalCase).toContain("| sed -u -n 's/^[^{]*//p'") + expect(signalCase).toContain('startup_timeout_seconds=${ORCA_STARTUP_TIMEOUT_SECONDS:-180}') + expect(signalCase).toContain( + 'timeout --foreground --signal=TERM --kill-after=5s "$startup_timeout_seconds"' + ) expect(signalCase).toContain( 'A readiness event can land as the timeout tears down the tail pipeline.' )