-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path_init_test_env
More file actions
executable file
·77 lines (69 loc) · 3.41 KB
/
_init_test_env
File metadata and controls
executable file
·77 lines (69 loc) · 3.41 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
#!/usr/bin/env bash
set -euo pipefail
# Resolve script directory robustly for bash and zsh
SCRIPT_SOURCE="${BASH_SOURCE:-$0}"
SCRIPT_DIR="$(cd "$(dirname "$SCRIPT_SOURCE")" && pwd)"
COMPOSE_FILE="$SCRIPT_DIR/docker/testing/docker-compose.yml"
# Detect whether the script is sourced (bash/zsh) to decide env export behavior
SOURCED=0
if [ -n "${ZSH_VERSION-}" ]; then
case ${ZSH_EVAL_CONTEXT:-} in *:file) SOURCED=1;; esac
elif [ -n "${BASH_VERSION-}" ]; then
[[ "${BASH_SOURCE[0]}" != "$0" ]] && SOURCED=1 || true
fi
if ! command -v docker >/dev/null 2>&1; then
>&2 echo "Docker is required to run integration dependencies. Install Docker and retry."
# 'return' only works when sourced; fall back to exit when executed
if [ "$SOURCED" -eq 1 ]; then return 1; else exit 1; fi
fi
echo "Starting Redis/Postgres test services (docker compose)..."
STEM_TEST_REDIS_TLS_PORT="${STEM_TEST_REDIS_TLS_PORT:-56380}"
STEM_TEST_REDIS_MTLS_PORT="${STEM_TEST_REDIS_MTLS_PORT:-56381}"
export STEM_TEST_REDIS_TLS_PORT STEM_TEST_REDIS_MTLS_PORT
docker compose -f "$COMPOSE_FILE" up -d postgres postgres_tls redis redis_tls redis_mtls
REDIS_URL="redis://127.0.0.1:56379"
POSTGRES_URL="postgresql://postgres:postgres@127.0.0.1:65432/stem_test"
CA_CERT_PATH="$SCRIPT_DIR/docker/testing/certs/postgres-root.crt"
REDIS_TLS_CA_CERT_PATH="$SCRIPT_DIR/../stem/example/microservice/certs/ca.crt"
REDIS_MTLS_CLIENT_CERT_PATH="$SCRIPT_DIR/../stem/example/microservice/certs/client.crt"
REDIS_MTLS_CLIENT_KEY_PATH="$SCRIPT_DIR/../stem/example/microservice/certs/client.key"
POSTGRES_TLS_URL="postgresql://postgres:postgres@localhost:65433/stem_test_tls?sslmode=verify-ca&sslrootcert=${CA_CERT_PATH}"
REDIS_TLS_MAPPING="$(docker compose -f "$COMPOSE_FILE" port redis_tls 6379)"
REDIS_TLS_PORT="${REDIS_TLS_MAPPING##*:}"
REDIS_MTLS_MAPPING="$(docker compose -f "$COMPOSE_FILE" port redis_mtls 6379)"
REDIS_MTLS_PORT="${REDIS_MTLS_MAPPING##*:}"
STEM_TEST_REDIS_TLS_PORT="$REDIS_TLS_PORT"
STEM_TEST_REDIS_MTLS_PORT="$REDIS_MTLS_PORT"
export STEM_TEST_REDIS_TLS_PORT STEM_TEST_REDIS_MTLS_PORT
REDIS_TLS_URL="rediss://localhost:${REDIS_TLS_PORT}/0"
REDIS_MTLS_URL="rediss://localhost:${REDIS_MTLS_PORT}/0"
if [ "$SOURCED" -eq 1 ]; then
export STEM_TEST_REDIS_URL="$REDIS_URL"
export STEM_TEST_POSTGRES_URL="$POSTGRES_URL"
export STEM_TEST_POSTGRES_TLS_URL="$POSTGRES_TLS_URL"
export STEM_TEST_POSTGRES_TLS_CA_CERT="$CA_CERT_PATH"
export STEM_TEST_REDIS_TLS_URL="$REDIS_TLS_URL"
export STEM_TEST_REDIS_TLS_CA_CERT="$REDIS_TLS_CA_CERT_PATH"
export STEM_TEST_REDIS_MTLS_URL="$REDIS_MTLS_URL"
export STEM_TEST_REDIS_MTLS_CA_CERT="$REDIS_TLS_CA_CERT_PATH"
export STEM_TEST_REDIS_MTLS_CLIENT_CERT="$REDIS_MTLS_CLIENT_CERT_PATH"
export STEM_TEST_REDIS_MTLS_CLIENT_KEY="$REDIS_MTLS_CLIENT_KEY_PATH"
echo "Exported STEM_TEST_* variables into current shell."
else
cat <<EOF
Docker services are running.
To export the test environment variables into your shell, run:
source ./_init_test_env
Variables:
STEM_TEST_REDIS_URL=$REDIS_URL
STEM_TEST_POSTGRES_URL=$POSTGRES_URL
STEM_TEST_POSTGRES_TLS_URL=$POSTGRES_TLS_URL
STEM_TEST_POSTGRES_TLS_CA_CERT=$CA_CERT_PATH
STEM_TEST_REDIS_TLS_URL=$REDIS_TLS_URL
STEM_TEST_REDIS_TLS_CA_CERT=$REDIS_TLS_CA_CERT_PATH
STEM_TEST_REDIS_MTLS_URL=$REDIS_MTLS_URL
STEM_TEST_REDIS_MTLS_CA_CERT=$REDIS_TLS_CA_CERT_PATH
STEM_TEST_REDIS_MTLS_CLIENT_CERT=$REDIS_MTLS_CLIENT_CERT_PATH
STEM_TEST_REDIS_MTLS_CLIENT_KEY=$REDIS_MTLS_CLIENT_KEY_PATH
EOF
fi