#!/bin/sh set -eu cd "$(dirname "$0")/.." tmp=$(mktemp -d) trap 'rm -rf "$tmp"' EXIT HUP INT TERM log="$tmp/docker.log" marker_file="$tmp/marker" mkdir -p "$tmp/bin" cat >"$tmp/bin/docker" <<'EOF' #!/bin/sh set -eu printf '%s\n' "$*" >>"$FAKE_DOCKER_LOG" case " $* " in *" port frontend 8080 "*) printf '%s\n' '127.0.0.1:49152' ;; *" exec -T core sh -c "*"printf"*) for last do :; done printf '%s\n' "$last" >"$FAKE_MARKER_FILE" ;; *" exec -T core sh -c "*"cat /data/.compose-smoke-marker"*) cat "$FAKE_MARKER_FILE" ;; esac EOF cat >"$tmp/bin/curl" <<'EOF' #!/bin/sh set -eu header_file="" for arg do if [ "${previous:-}" = "--dump-header" ]; then header_file=$arg; fi previous=$arg done if [ -n "$header_file" ]; then case "$*" in *"/events"*) printf 'HTTP/1.1 200 OK\r\nContent-Type: text/event-stream\r\nCache-Control: no-cache\r\n\r\n' >"$header_file" ;; *) printf 'HTTP/1.1 200 OK\r\nContent-Type: application/json; charset=utf-8\r\n\r\n' >"$header_file" ;; esac fi case "$*" in *"/health"*) printf '%s\n' '{"status":"ok"}' ;; esac EOF chmod +x "$tmp/bin/docker" "$tmp/bin/curl" run_smoke() { PATH="$tmp/bin:$PATH" \ FAKE_DOCKER_LOG="$log" \ FAKE_MARKER_FILE="$marker_file" \ SMOKE_PROJECT="$1" \ KEEP_SMOKE_RESOURCES="${2:-0}" \ ./scripts/docker-smoke.sh } run_smoke thothii-smoke-dynamic while IFS= read -r invocation; do case "$invocation" in "compose --project-name thothii-smoke-dynamic --profile external "*) ;; *) echo "Compose invocation escaped the smoke project/profile: $invocation" >&2; exit 1 ;; esac done <"$log" grep -q ' down --volumes$' "$log" if grep -q -- '--remove-orphans' "$log"; then echo "smoke cleanup must not remove operator orphans" >&2 exit 1 fi : >"$log" run_smoke thothii-smoke-kept 1 if grep -q ' down ' "$log"; then echo "KEEP_SMOKE_RESOURCES=1 unexpectedly cleaned the project" >&2 exit 1 fi : >"$log" if PATH="$tmp/bin:$PATH" FAKE_DOCKER_LOG="$log" FAKE_MARKER_FILE="$marker_file" \ SMOKE_PROJECT=thothii ./scripts/docker-smoke.sh >/dev/null 2>&1; then echo "reserved operator project was accepted" >&2 exit 1 fi test ! -s "$log" echo "docker-smoke dynamic isolation contract passed."