refactor: extract remaining docker e2e scenarios

This commit is contained in:
Peter Steinberger
2026-04-29 08:56:41 +01:00
parent f3f614fae6
commit 1c4262ef87
10 changed files with 1131 additions and 1227 deletions

View File

@@ -0,0 +1,56 @@
#!/usr/bin/env bash
#
# Shared helpers for Docker E2E scripts that keep a named container running
# while polling readiness from the host.
docker_e2e_docker_cmd() {
timeout "${DOCKER_COMMAND_TIMEOUT:-600s}" docker "$@"
}
docker_e2e_container_running() {
local container_name="$1"
[ "$(docker_e2e_docker_cmd inspect -f '{{.State.Running}}' "$container_name" 2>/dev/null || echo false)" = "true" ]
}
docker_e2e_container_exec_bash() {
local container_name="$1"
shift
docker_e2e_docker_cmd exec "$container_name" bash -lc "$*"
}
docker_e2e_wait_container_bash() {
local container_name="$1"
shift
docker_e2e_wait_container_bash_while_running "$container_name" "$container_name" "$@"
}
docker_e2e_wait_container_bash_while_running() {
local running_container_name="$1"
local exec_container_name="$2"
local attempts="$3"
local sleep_seconds="$4"
shift 4
local probe="$*"
for _ in $(seq 1 "$attempts"); do
if ! docker_e2e_container_running "$running_container_name"; then
return 1
fi
if docker_e2e_container_exec_bash "$exec_container_name" "$probe" >/dev/null 2>&1; then
return 0
fi
sleep "$sleep_seconds"
done
return 1
}
docker_e2e_tail_container_file_if_running() {
local container_name="$1"
local file_path="$2"
local lines="${3:-120}"
if docker_e2e_container_running "$container_name"; then
docker_e2e_container_exec_bash "$container_name" "tail -n $lines $file_path" || true
else
docker_e2e_docker_cmd logs "$container_name" 2>&1 | tail -n "$lines" || true
fi
}

View File

@@ -10,6 +10,7 @@ ROOT_DIR="${ROOT_DIR:-$(cd "$DOCKER_E2E_LIB_DIR/../.." && pwd)}"
source "$DOCKER_E2E_LIB_DIR/docker-e2e-logs.sh"
source "$DOCKER_E2E_LIB_DIR/docker-build.sh"
source "$DOCKER_E2E_LIB_DIR/docker-e2e-package.sh"
source "$DOCKER_E2E_LIB_DIR/docker-e2e-container.sh"
docker_e2e_resolve_image() {
local default_image="$1"
@@ -87,13 +88,13 @@ docker_e2e_test_state_shell_b64() {
local scenario="${2:-empty}"
node "$ROOT_DIR/scripts/lib/openclaw-test-state.mjs" shell \
--label "$label" \
--scenario "$scenario" \
| base64 \
| tr -d '\n'
--scenario "$scenario" |
base64 |
tr -d '\n'
}
docker_e2e_test_state_function_b64() {
node "$ROOT_DIR/scripts/lib/openclaw-test-state.mjs" shell-function \
| base64 \
| tr -d '\n'
node "$ROOT_DIR/scripts/lib/openclaw-test-state.mjs" shell-function |
base64 |
tr -d '\n'
}