#!/usr/bin/env sh

set -eu

result_dir="${RESULT_DIR:-results/smoke}"
mkdir -p "$result_dir"

php artisan octane:start \
    --server=roadrunner \
    --host=127.0.0.1 \
    --port=8000 \
    --workers=1 \
    --max-requests=100 \
    --log-level=error \
    >"$result_dir/server.log" 2>&1 &
server_pid=$!

stop_server() {
    kill -TERM "$server_pid" 2>/dev/null || true
    wait "$server_pid" 2>/dev/null || true
}
trap stop_server EXIT INT TERM

attempt=0
until curl --fail --silent --show-error \
    http://127.0.0.1:8000/health >"$result_dir/health.json"
do
    attempt=$((attempt + 1))
    if [ "$attempt" -ge 100 ]; then
        cat "$result_dir/server.log"
        exit 1
    fi
    sleep 0.1
done

curl --fail --silent --show-error \
    --header 'X-Tenant: tenant-a' \
    --header 'X-Locale: fi' \
    --header 'X-Request-Id: request-a' \
    --header 'X-Trace-Id: trace-a' \
    http://127.0.0.1:8000/state >"$result_dir/state-a.json"

curl --fail --silent --show-error \
    --header 'X-Tenant: tenant-b' \
    --header 'X-Locale: sv' \
    --header 'X-Request-Id: request-b' \
    --header 'X-Trace-Id: trace-b' \
    http://127.0.0.1:8000/state >"$result_dir/state-b.json"

curl --fail --silent --show-error \
    --header 'X-Request-Id: retain-a' \
    http://127.0.0.1:8000/retain >"$result_dir/retain-a.json"

curl --fail --silent --show-error \
    --header 'X-Request-Id: retain-b' \
    http://127.0.0.1:8000/retain >"$result_dir/retain-b.json"

php bin/verify-smoke.php "$result_dir"
