diff --git a/scripts/e2e/kitchen-sink-rpc-docker.sh b/scripts/e2e/kitchen-sink-rpc-docker.sh index 0577d0b81eef..c4430b424a7a 100755 --- a/scripts/e2e/kitchen-sink-rpc-docker.sh +++ b/scripts/e2e/kitchen-sink-rpc-docker.sh @@ -7,7 +7,9 @@ source "$ROOT_DIR/scripts/lib/docker-e2e-image.sh" IMAGE_NAME="$(docker_e2e_resolve_image "openclaw-kitchen-sink-rpc-e2e" OPENCLAW_KITCHEN_SINK_RPC_E2E_IMAGE)" MAX_MEMORY_MIB="$(docker_e2e_read_nonnegative_decimal_env OPENCLAW_KITCHEN_SINK_MAX_MEMORY_MIB 2048)" MAX_CPU_PERCENT="$(docker_e2e_read_nonnegative_decimal_env OPENCLAW_KITCHEN_SINK_MAX_CPU_PERCENT 1200)" -DOCKER_RUN_TIMEOUT="${OPENCLAW_KITCHEN_SINK_RPC_DOCKER_RUN_TIMEOUT:-900s}" +# Keep the outer Docker watchdog above the walker's install, enable, inspect, +# readiness, and first-RPC retry budgets so inner failures stay diagnostic. +DOCKER_RUN_TIMEOUT="${OPENCLAW_KITCHEN_SINK_RPC_DOCKER_RUN_TIMEOUT:-1500s}" CONTAINER_NAME="openclaw-kitchen-sink-rpc-e2e-$$" RUN_LOG="$(mktemp "${TMPDIR:-/tmp}/openclaw-kitchen-sink-rpc.XXXXXX")" STATS_LOG="$(mktemp "${TMPDIR:-/tmp}/openclaw-kitchen-sink-rpc-stats.XXXXXX")" diff --git a/scripts/lib/docker-e2e-scenarios.mjs b/scripts/lib/docker-e2e-scenarios.mjs index 6cd748f5a91c..2489d3b97a9d 100644 --- a/scripts/lib/docker-e2e-scenarios.mjs +++ b/scripts/lib/docker-e2e-scenarios.mjs @@ -255,7 +255,7 @@ function kitchenSinkRpcLane() { { resources: ["npm"], stateScenario: "empty", - timeoutMs: 15 * 60 * 1000, + timeoutMs: 25 * 60 * 1000, weight: 3, }, ); @@ -521,17 +521,13 @@ export const mainLanes = [ lane("commitments-safety", "OPENCLAW_SKIP_DOCKER_BUILD=1 pnpm test:docker:commitments-safety", { stateScenario: "empty", }), - liveLane( - "npm-telegram-live", - "OPENCLAW_SKIP_DOCKER_BUILD=1 pnpm test:docker:npm-telegram-live", - { - e2eImageKind: "bare", - provider: "openai", - resources: ["live:telegram", "npm", "service"], - timeoutMs: 30 * 60 * 1000, - weight: 3, - }, - ), + liveLane("npm-telegram-live", "OPENCLAW_SKIP_DOCKER_BUILD=1 pnpm test:docker:npm-telegram-live", { + e2eImageKind: "bare", + provider: "openai", + resources: ["live:telegram", "npm", "service"], + timeoutMs: 30 * 60 * 1000, + weight: 3, + }), lane("qr", "pnpm test:docker:qr"), ]; diff --git a/test/scripts/docker-build-helper.test.ts b/test/scripts/docker-build-helper.test.ts index 9f4ccf5547d3..a7d02fbe5e79 100644 --- a/test/scripts/docker-build-helper.test.ts +++ b/test/scripts/docker-build-helper.test.ts @@ -3580,6 +3580,14 @@ output="$(cat "$sampler_log")" expect(missing).toEqual([]); }); + it("keeps the kitchen-sink RPC Docker watchdog above the internal walk budgets", () => { + const runner = readFileSync(KITCHEN_SINK_RPC_DOCKER_E2E_PATH, "utf8"); + + expect(runner).toContain( + 'DOCKER_RUN_TIMEOUT="${OPENCLAW_KITCHEN_SINK_RPC_DOCKER_RUN_TIMEOUT:-1500s}"', + ); + }); + it("bounds kitchen-sink plugin CLI commands inside the Docker sweep", () => { const runner = readFileSync(KITCHEN_SINK_PLUGIN_DOCKER_E2E_PATH, "utf8"); const sweep = readFileSync("scripts/e2e/lib/kitchen-sink-plugin/sweep.sh", "utf8"); diff --git a/test/scripts/docker-e2e-plan.test.ts b/test/scripts/docker-e2e-plan.test.ts index c671bb135ef4..481103bed1cb 100644 --- a/test/scripts/docker-e2e-plan.test.ts +++ b/test/scripts/docker-e2e-plan.test.ts @@ -397,7 +397,7 @@ describe("scripts/lib/docker-e2e-plan", () => { name: "kitchen-sink-rpc", resources: ["docker", "service", "npm"], stateScenario: "empty", - timeoutMs: 900_000, + timeoutMs: 1_500_000, weight: 3, }, {