mirror of
https://github.com/openclaw/openclaw.git
synced 2026-06-06 05:51:15 +08:00
fix(e2e): heartbeat resource-sampled docker lanes
This commit is contained in:
@@ -64,12 +64,13 @@ DOCKER_COMMAND_TIMEOUT="$DOCKER_RUN_TIMEOUT" docker_e2e_docker_run_cmd run --nam
|
||||
>"$RUN_LOG" 2>&1 &
|
||||
docker_pid="$!"
|
||||
|
||||
while kill -0 "$docker_pid" 2>/dev/null; do
|
||||
if docker_e2e_docker_cmd inspect "$CONTAINER_NAME" >/dev/null 2>&1; then
|
||||
docker_e2e_docker_cmd stats --no-stream --format '{{json .}}' "$CONTAINER_NAME" >>"$STATS_LOG" 2>/dev/null || true
|
||||
fi
|
||||
sleep 2
|
||||
done
|
||||
docker_e2e_sample_stats_until_exit \
|
||||
"$CONTAINER_NAME" \
|
||||
"$docker_pid" \
|
||||
"$STATS_LOG" \
|
||||
"$RUN_LOG" \
|
||||
"Kitchen-sink plugin Docker E2E" \
|
||||
"${OPENCLAW_DOCKER_E2E_STATS_HEARTBEAT_SECONDS:-30}"
|
||||
|
||||
set +e
|
||||
wait "$docker_pid"
|
||||
|
||||
@@ -47,12 +47,13 @@ DOCKER_COMMAND_TIMEOUT="$DOCKER_RUN_TIMEOUT" docker_e2e_docker_run_cmd run --nam
|
||||
node scripts/e2e/kitchen-sink-rpc-walk.mjs >"$RUN_LOG" 2>&1 &
|
||||
docker_pid="$!"
|
||||
|
||||
while kill -0 "$docker_pid" 2>/dev/null; do
|
||||
if docker_e2e_docker_cmd inspect "$CONTAINER_NAME" >/dev/null 2>&1; then
|
||||
docker_e2e_docker_cmd stats --no-stream --format '{{json .}}' "$CONTAINER_NAME" >>"$STATS_LOG" 2>/dev/null || true
|
||||
fi
|
||||
sleep 2
|
||||
done
|
||||
docker_e2e_sample_stats_until_exit \
|
||||
"$CONTAINER_NAME" \
|
||||
"$docker_pid" \
|
||||
"$STATS_LOG" \
|
||||
"$RUN_LOG" \
|
||||
"Kitchen-sink RPC Docker E2E" \
|
||||
"${OPENCLAW_DOCKER_E2E_STATS_HEARTBEAT_SECONDS:-30}"
|
||||
|
||||
set +e
|
||||
wait "$docker_pid"
|
||||
|
||||
@@ -30,12 +30,13 @@ DOCKER_COMMAND_TIMEOUT="$DOCKER_RUN_TIMEOUT" docker_e2e_docker_run_cmd run --nam
|
||||
"$IMAGE_NAME" bash scripts/e2e/lib/onboard/scenario.sh >"$RUN_LOG" 2>&1 &
|
||||
docker_pid="$!"
|
||||
|
||||
while kill -0 "$docker_pid" 2>/dev/null; do
|
||||
if docker_e2e_docker_cmd inspect "$CONTAINER_NAME" >/dev/null 2>&1; then
|
||||
docker_e2e_docker_cmd stats --no-stream --format '{{json .}}' "$CONTAINER_NAME" >>"$STATS_LOG" 2>/dev/null || true
|
||||
fi
|
||||
sleep 2
|
||||
done
|
||||
docker_e2e_sample_stats_until_exit \
|
||||
"$CONTAINER_NAME" \
|
||||
"$docker_pid" \
|
||||
"$STATS_LOG" \
|
||||
"$RUN_LOG" \
|
||||
"Onboarding Docker E2E" \
|
||||
"${OPENCLAW_DOCKER_E2E_STATS_HEARTBEAT_SECONDS:-30}"
|
||||
|
||||
set +e
|
||||
wait "$docker_pid"
|
||||
|
||||
@@ -117,3 +117,37 @@ docker_e2e_test_state_function_b64() {
|
||||
base64 |
|
||||
tr -d '\n'
|
||||
}
|
||||
|
||||
docker_e2e_sample_stats_until_exit() {
|
||||
local container_name="${1:?missing container name}"
|
||||
local docker_pid="${2:?missing docker pid}"
|
||||
local stats_log="${3:?missing stats log}"
|
||||
local run_log="${4:?missing run log}"
|
||||
local label="${5:-Docker E2E}"
|
||||
local heartbeat_seconds="${6:-30}"
|
||||
local started_at="$SECONDS"
|
||||
local last_heartbeat="$SECONDS"
|
||||
|
||||
if ! [[ "$heartbeat_seconds" =~ ^[0-9]+$ ]] || [ "$heartbeat_seconds" -lt 1 ]; then
|
||||
heartbeat_seconds="30"
|
||||
fi
|
||||
|
||||
while kill -0 "$docker_pid" 2>/dev/null; do
|
||||
if docker_e2e_docker_cmd inspect "$container_name" >/dev/null 2>&1; then
|
||||
docker_e2e_docker_cmd stats --no-stream --format '{{json .}}' "$container_name" >>"$stats_log" 2>/dev/null || true
|
||||
fi
|
||||
|
||||
if ((SECONDS - last_heartbeat >= heartbeat_seconds)); then
|
||||
local elapsed_seconds=$((SECONDS - started_at))
|
||||
local log_bytes="0"
|
||||
if [ -f "$run_log" ]; then
|
||||
log_bytes="$(wc -c <"$run_log" 2>/dev/null || echo 0)"
|
||||
log_bytes="${log_bytes//[[:space:]]/}"
|
||||
fi
|
||||
echo "$label still running (${elapsed_seconds}s elapsed, ${log_bytes} log bytes captured)..."
|
||||
last_heartbeat="$SECONDS"
|
||||
fi
|
||||
|
||||
sleep 2
|
||||
done
|
||||
}
|
||||
|
||||
@@ -1359,7 +1359,9 @@ test -f "$TMPDIR/docker-cmd-seen"
|
||||
);
|
||||
expect(runner).toContain('-e "OPENCLAW_E2E_COMMAND_TIMEOUT=$COMMAND_TIMEOUT"');
|
||||
expect(runner).toContain('--name "$CONTAINER_NAME"');
|
||||
expect(runner).toContain("docker_e2e_docker_cmd stats --no-stream");
|
||||
expect(runner).toContain("docker_e2e_sample_stats_until_exit \\");
|
||||
expect(runner).toContain('"$STATS_LOG" \\');
|
||||
expect(runner).toContain('"$RUN_LOG" \\');
|
||||
expect(runner).toContain("assert-resource-ceiling.mjs");
|
||||
expect(runner).not.toContain("docker_e2e_run_with_harness -t");
|
||||
});
|
||||
@@ -1379,8 +1381,9 @@ test -f "$TMPDIR/docker-cmd-seen"
|
||||
'DOCKER_COMMAND_TIMEOUT="$DOCKER_RUN_TIMEOUT" docker_e2e_docker_run_cmd run --name "$CONTAINER_NAME"',
|
||||
);
|
||||
expect(runner, path).toContain('DOCKER_RUN_TIMEOUT="${OPENCLAW_');
|
||||
expect(runner, path).toContain('docker_e2e_docker_cmd inspect "$CONTAINER_NAME"');
|
||||
expect(runner, path).toContain("docker_e2e_docker_cmd stats --no-stream");
|
||||
expect(runner, path).toContain("docker_e2e_sample_stats_until_exit \\");
|
||||
expect(runner, path).toContain('"$STATS_LOG" \\');
|
||||
expect(runner, path).toContain('"$RUN_LOG" \\');
|
||||
expect(runner, path).not.toMatch(/(^|\n)docker run --name "\$CONTAINER_NAME"/u);
|
||||
expect(runner, path).not.toMatch(/(^|\n)docker (?:inspect|stats) /u);
|
||||
expect(runner, path).toMatch(/cleanup\(\) \{[\s\S]*rm -f "\$RUN_LOG" "\$STATS_LOG"/u);
|
||||
|
||||
Reference in New Issue
Block a user