#!/usr/bin/env bash set -euo pipefail require_container() { local name="$1" if ! docker inspect "$name" >/dev/null 2>&1; then echo "ERROR: required container is missing: $name" >&2 exit 1 fi } for container in ory_oathkeeper ory_vector ory_clickhouse baron_backend; do require_container "$container" done vector_state="$(docker inspect -f '{{.State.Status}}' ory_vector)" if [[ "$vector_state" != "running" ]]; then echo "ERROR: ory_vector must be running, got: $vector_state" >&2 docker logs --tail 100 ory_vector >&2 || true exit 1 fi before_lines="$(docker exec ory_oathkeeper sh -lc 'test -f /var/log/oathkeeper/access.log && wc -l < /var/log/oathkeeper/access.log || echo 0')" before_rows="$(docker exec ory_clickhouse clickhouse-client --user "${ORY_CLICKHOUSE_USER:-ory}" --password "${ORY_CLICKHOUSE_PASSWORD:-orypass}" --query "SELECT count() FROM ory.oathkeeper_access_logs")" docker run --rm --network public_net curlimages/curl:8.10.1 \ -fsS http://ory_oathkeeper:4455/health >/dev/null deadline=$((SECONDS + 20)) after_lines="$before_lines" while (( SECONDS < deadline )); do after_lines="$(docker exec ory_oathkeeper sh -lc 'test -f /var/log/oathkeeper/access.log && wc -l < /var/log/oathkeeper/access.log || echo 0')" if (( after_lines > before_lines )); then break fi sleep 1 done if (( after_lines <= before_lines )); then echo "ERROR: Oathkeeper access log did not grow after a proxied request." >&2 docker exec ory_oathkeeper sh -lc 'ls -l /var/log/oathkeeper && tail -n 50 /var/log/oathkeeper/access.log 2>/dev/null || true' >&2 exit 1 fi deadline=$((SECONDS + 30)) after_rows="$before_rows" while (( SECONDS < deadline )); do after_rows="$(docker exec ory_clickhouse clickhouse-client --user "${ORY_CLICKHOUSE_USER:-ory}" --password "${ORY_CLICKHOUSE_PASSWORD:-orypass}" --query "SELECT count() FROM ory.oathkeeper_access_logs")" if (( after_rows > before_rows )); then break fi sleep 2 done if (( after_rows <= before_rows )); then echo "ERROR: Vector did not insert the new Oathkeeper access log into ClickHouse." >&2 echo "before_rows=$before_rows after_rows=$after_rows" >&2 docker logs --tail 100 ory_vector >&2 || true exit 1 fi