#!/usr/bin/env bash # Rebuilds and runs the env-var-proof/boot40 vs boot41 experiment described in # docs/03-otel-env-vars.md, and regenerates docs/output/04-otel-env-vars-4.0-vs-4.1.txt. # Requires JDK 25 and network access (each module resolves its own Boot parent POM). set -euo pipefail cd "$(dirname "$0")/.." ROOT="$(pwd)" mkdir -p env-var-proof/stub-receiver/out javac env-var-proof/stub-receiver/StubOtlpReceiver.java -d env-var-proof/stub-receiver/out (cd env-var-proof/boot40 && mvn -q -DskipTests package) (cd env-var-proof/boot41 && mvn -q -DskipTests package) run_case() { local label="$1" jar="$2" port="$3" shift 3 local log="/tmp/otel-proof-${label}.log" rm -f "$log" java -cp env-var-proof/stub-receiver/out StubOtlpReceiver "$port" "$log" & local receiver_pid=$! sleep 1 echo "=== $label ===" env "$@" timeout 30 java -jar "$jar" | grep -E "Publishing metrics" || true kill "$receiver_pid" 2>/dev/null || true echo "--- receiver log ($label) ---" cat "$log" } run_case "boot41-env-vars" "env-var-proof/boot41/target/otel-env-proof-41-1.0.0.jar" 24318 \ OTEL_EXPORTER_OTLP_ENDPOINT="http://localhost:24318" OTEL_METRIC_EXPORT_INTERVAL=2000 run_case "boot40-env-vars" "env-var-proof/boot40/target/otel-env-proof-40-1.0.0.jar" 24319 \ OTEL_EXPORTER_OTLP_ENDPOINT="http://localhost:24319" OTEL_METRIC_EXPORT_INTERVAL=2000 run_case "boot40-management-props" "env-var-proof/boot40/target/otel-env-proof-40-1.0.0.jar" 24320 \ MANAGEMENT_OTLP_METRICS_EXPORT_URL="http://localhost:24320/v1/metrics" MANAGEMENT_OTLP_METRICS_EXPORT_STEP=2s echo "Compare the three receiver logs above against docs/output/04-otel-env-vars-4.0-vs-4.1.txt"