Skip to content

Commit 10f0588

Browse files
committed
fix(e2e): align codex live turn timeouts
1 parent 39297fb commit 10f0588

3 files changed

Lines changed: 60 additions & 14 deletions

File tree

scripts/e2e/codex-npm-plugin-live-docker.sh

Lines changed: 18 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,16 @@ DOCKER_TARGET="${OPENCLAW_CODEX_NPM_PLUGIN_DOCKER_TARGET:-bare}"
1717
HOST_BUILD="${OPENCLAW_CODEX_NPM_PLUGIN_HOST_BUILD:-1}"
1818
PACKAGE_TGZ="${OPENCLAW_CURRENT_PACKAGE_TGZ:-}"
1919
PROFILE_FILE="${OPENCLAW_CODEX_NPM_PLUGIN_PROFILE_FILE:-${OPENCLAW_TESTBOX_PROFILE_FILE:-$HOME/.openclaw-testbox-live.profile}}"
20+
PROFILE_MOUNT=()
21+
PROFILE_STATUS="none"
22+
if [ -f "$PROFILE_FILE" ] && [ -r "$PROFILE_FILE" ]; then
23+
set -a
24+
# shellcheck disable=SC1090
25+
source "$PROFILE_FILE"
26+
set +a
27+
PROFILE_MOUNT=(-v "$PROFILE_FILE":/home/appuser/.profile:ro)
28+
PROFILE_STATUS="$PROFILE_FILE"
29+
fi
2030
CODEX_PLUGIN_SPEC="${OPENCLAW_CODEX_NPM_PLUGIN_SPEC:-}"
2131
CODEX_PLUGIN_MOUNT=()
2232
CODEX_PLUGIN_PACK_DIR=""
@@ -35,6 +45,10 @@ ASSERT_MAX_TRANSCRIPT_WALK_ENTRIES="$(
3545
ASSERT_MAX_TRANSCRIPT_SCAN_BYTES="$(
3646
docker_e2e_read_positive_int_env OPENCLAW_CODEX_NPM_PLUGIN_ASSERT_MAX_TRANSCRIPT_SCAN_BYTES 2097152
3747
)"
48+
AGENT_TURN_TIMEOUT_SECONDS="$(
49+
docker_e2e_read_positive_int_env OPENCLAW_CODEX_NPM_PLUGIN_AGENT_TIMEOUT_SECONDS 420
50+
)"
51+
COMMAND_TIMEOUT="${OPENCLAW_E2E_COMMAND_TIMEOUT:-$((AGENT_TURN_TIMEOUT_SECONDS + 60))s}"
3852
run_log=""
3953

4054
cleanup() {
@@ -115,17 +129,6 @@ prepare_codex_plugin_spec() {
115129

116130
prepare_codex_plugin_spec
117131

118-
PROFILE_MOUNT=()
119-
PROFILE_STATUS="none"
120-
if [ -f "$PROFILE_FILE" ] && [ -r "$PROFILE_FILE" ]; then
121-
set -a
122-
# shellcheck disable=SC1090
123-
source "$PROFILE_FILE"
124-
set +a
125-
PROFILE_MOUNT=(-v "$PROFILE_FILE":/home/appuser/.profile:ro)
126-
PROFILE_STATUS="$PROFILE_FILE"
127-
fi
128-
129132
docker_e2e_package_mount_args "$PACKAGE_TGZ"
130133
run_log="$(docker_e2e_run_log codex-npm-plugin-live)"
131134
OPENCLAW_TEST_STATE_SCRIPT_B64="$(docker_e2e_test_state_shell_b64 codex-npm-plugin-live empty)"
@@ -144,6 +147,8 @@ if ! docker_e2e_run_with_harness \
144147
-e "OPENCLAW_CODEX_NPM_PLUGIN_ASSERT_MAX_TRANSCRIPT_FILES=$ASSERT_MAX_TRANSCRIPT_FILES" \
145148
-e "OPENCLAW_CODEX_NPM_PLUGIN_ASSERT_MAX_TRANSCRIPT_WALK_ENTRIES=$ASSERT_MAX_TRANSCRIPT_WALK_ENTRIES" \
146149
-e "OPENCLAW_CODEX_NPM_PLUGIN_ASSERT_MAX_TRANSCRIPT_SCAN_BYTES=$ASSERT_MAX_TRANSCRIPT_SCAN_BYTES" \
150+
-e "OPENCLAW_CODEX_NPM_PLUGIN_AGENT_TIMEOUT_SECONDS=$AGENT_TURN_TIMEOUT_SECONDS" \
151+
-e "OPENCLAW_E2E_COMMAND_TIMEOUT=$COMMAND_TIMEOUT" \
147152
-e OPENAI_API_KEY \
148153
-e OPENAI_BASE_URL \
149154
-e "OPENCLAW_TEST_STATE_SCRIPT_B64=$OPENCLAW_TEST_STATE_SCRIPT_B64" \
@@ -185,6 +190,7 @@ MODEL_REF="${OPENCLAW_CODEX_NPM_PLUGIN_MODEL:?missing OPENCLAW_CODEX_NPM_PLUGIN_
185190
POST_UNINSTALL_MODEL_REF="codex/${MODEL_REF#*/}"
186191
SESSION_ID="codex-npm-plugin-live"
187192
SUCCESS_MARKER="OPENCLAW-CODEX-NPM-PLUGIN-LIVE-OK"
193+
AGENT_TURN_TIMEOUT_SECONDS="${OPENCLAW_CODEX_NPM_PLUGIN_AGENT_TIMEOUT_SECONDS:-420}"
188194
PLUGIN_INSTALL_FLAGS=(--force)
189195
if [ "${OPENCLAW_CODEX_NPM_PLUGIN_FORCE_UNSAFE_INSTALL:-0}" = "1" ]; then
190196
PLUGIN_INSTALL_FLAGS+=(--dangerously-force-unsafe-install)
@@ -271,7 +277,7 @@ run_agent_turn() {
271277
--model "$MODEL_REF" \
272278
--message "$message" \
273279
--thinking low \
274-
--timeout 420 \
280+
--timeout "$AGENT_TURN_TIMEOUT_SECONDS" \
275281
--json >"$out" 2>"$err" </dev/null; then
276282
status=0
277283
else

scripts/e2e/lib/codex-npm-plugin-live/assertions.mjs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,10 @@ const MAX_TRANSCRIPT_SCAN_BYTES = readPositiveIntEnv(
3737
"OPENCLAW_CODEX_NPM_PLUGIN_ASSERT_MAX_TRANSCRIPT_SCAN_BYTES",
3838
2 * 1024 * 1024,
3939
);
40+
const AGENT_TURN_TIMEOUT_SECONDS = readPositiveIntEnv(
41+
"OPENCLAW_CODEX_NPM_PLUGIN_AGENT_TIMEOUT_SECONDS",
42+
420,
43+
);
4044

4145
function readPositiveIntEnv(name, fallback) {
4246
const text = String(process.env[name] ?? fallback).trim();
@@ -100,7 +104,7 @@ function configure() {
100104
mode: "yolo",
101105
approvalPolicy: "never",
102106
sandbox: "danger-full-access",
103-
requestTimeoutMs: 420_000,
107+
requestTimeoutMs: AGENT_TURN_TIMEOUT_SECONDS * 1000,
104108
},
105109
},
106110
},
@@ -117,7 +121,7 @@ function configure() {
117121
},
118122
workspace: path.join(state, "workspace"),
119123
skipBootstrap: true,
120-
timeoutSeconds: 420,
124+
timeoutSeconds: AGENT_TURN_TIMEOUT_SECONDS,
121125
},
122126
};
123127
fs.mkdirSync(path.dirname(cfgPath), { recursive: true });

test/scripts/docker-build-helper.test.ts

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2616,6 +2616,12 @@ grep -Fxq preserved "$TMPDIR/caller-fd"
26162616
expect(assertions).toContain("OPENCLAW_CODEX_NPM_PLUGIN_ASSERT_MAX_TRANSCRIPT_FILES");
26172617
expect(assertions).toContain("OPENCLAW_CODEX_NPM_PLUGIN_ASSERT_MAX_TRANSCRIPT_WALK_ENTRIES");
26182618
expect(assertions).toContain("OPENCLAW_CODEX_NPM_PLUGIN_ASSERT_MAX_TRANSCRIPT_SCAN_BYTES");
2619+
expect(assertions).toContain("const AGENT_TURN_TIMEOUT_SECONDS = readPositiveIntEnv(");
2620+
expect(assertions).toContain('"OPENCLAW_CODEX_NPM_PLUGIN_AGENT_TIMEOUT_SECONDS"');
2621+
expect(assertions).toContain("requestTimeoutMs: AGENT_TURN_TIMEOUT_SECONDS * 1000");
2622+
expect(assertions).toContain("timeoutSeconds: AGENT_TURN_TIMEOUT_SECONDS");
2623+
expect(assertions).not.toContain("requestTimeoutMs: 420_000");
2624+
expect(assertions).not.toContain("timeoutSeconds: 420");
26192625
expect(assertions).toContain("readTextFileBounded");
26202626
expect(assertions).toContain("readTextFileTail");
26212627
expect(assertions).toContain(
@@ -2628,6 +2634,29 @@ grep -Fxq preserved "$TMPDIR/caller-fd"
26282634
expect(runner).not.toContain("cat /tmp/openclaw-codex-plugin-pack.log");
26292635
expect(runner).toContain("tail -n 120 /tmp/openclaw-codex-agent-after-uninstall.err");
26302636
expect(runner).not.toContain("cat /tmp/openclaw-codex-agent-after-uninstall.err");
2637+
const profileSourceIndex = runner.indexOf('source "$PROFILE_FILE"');
2638+
const agentTimeoutEnvIndex = runner.indexOf(
2639+
"docker_e2e_read_positive_int_env OPENCLAW_CODEX_NPM_PLUGIN_AGENT_TIMEOUT_SECONDS 420",
2640+
);
2641+
const dockerBuildIndex = runner.indexOf("docker_e2e_build_or_reuse");
2642+
expect(profileSourceIndex).toBeGreaterThanOrEqual(0);
2643+
expect(agentTimeoutEnvIndex).toBeGreaterThan(profileSourceIndex);
2644+
expect(dockerBuildIndex).toBeGreaterThan(agentTimeoutEnvIndex);
2645+
expect(runner).toContain(
2646+
"docker_e2e_read_positive_int_env OPENCLAW_CODEX_NPM_PLUGIN_AGENT_TIMEOUT_SECONDS 420",
2647+
);
2648+
expect(runner).toContain(
2649+
'COMMAND_TIMEOUT="${OPENCLAW_E2E_COMMAND_TIMEOUT:-$((AGENT_TURN_TIMEOUT_SECONDS + 60))s}"',
2650+
);
2651+
expect(runner).toContain(
2652+
'-e "OPENCLAW_CODEX_NPM_PLUGIN_AGENT_TIMEOUT_SECONDS=$AGENT_TURN_TIMEOUT_SECONDS"',
2653+
);
2654+
expect(runner).toContain('-e "OPENCLAW_E2E_COMMAND_TIMEOUT=$COMMAND_TIMEOUT"');
2655+
expect(runner).toContain(
2656+
'AGENT_TURN_TIMEOUT_SECONDS="${OPENCLAW_CODEX_NPM_PLUGIN_AGENT_TIMEOUT_SECONDS:-420}"',
2657+
);
2658+
expect(runner).toContain('--timeout "$AGENT_TURN_TIMEOUT_SECONDS"');
2659+
expect(runner).not.toContain("--timeout 420");
26312660
});
26322661

26332662
it.each([
@@ -2637,6 +2666,12 @@ grep -Fxq preserved "$TMPDIR/caller-fd"
26372666
"OPENCLAW_CODEX_NPM_PLUGIN_ASSERT_MAX_TEXT_FILE_BYTES",
26382667
"64kb",
26392668
],
2669+
[
2670+
"Codex npm plugin live agent timeout",
2671+
CODEX_NPM_PLUGIN_LIVE_DOCKER_E2E_PATH,
2672+
"OPENCLAW_CODEX_NPM_PLUGIN_AGENT_TIMEOUT_SECONDS",
2673+
"420s",
2674+
],
26402675
[
26412676
"npm onboard channel-agent",
26422677
NPM_ONBOARD_CHANNEL_AGENT_DOCKER_E2E_PATH,
@@ -2683,6 +2718,7 @@ grep -Fxq preserved "$TMPDIR/caller-fd"
26832718
["OPENCLAW_CODEX_NPM_PLUGIN_ASSERT_MAX_TRANSCRIPT_FILES", "64"],
26842719
["OPENCLAW_CODEX_NPM_PLUGIN_ASSERT_MAX_TRANSCRIPT_WALK_ENTRIES", "4096"],
26852720
["OPENCLAW_CODEX_NPM_PLUGIN_ASSERT_MAX_TRANSCRIPT_SCAN_BYTES", "2097152"],
2721+
["OPENCLAW_CODEX_NPM_PLUGIN_AGENT_TIMEOUT_SECONDS", "420"],
26862722
],
26872723
],
26882724
[

0 commit comments

Comments
 (0)