scripts/cluster-mode-coverage.sh
Rama main · réplica de lectura del repositorio original.
#!/usr/bin/env bash
set -euo pipefail
mode=${1:?prepare or collect is required}
context=${2:?the test cluster context is required}
suite=${3:-cluster-mode-auth}
if [[ ! "$suite" =~ ^cluster-mode-[a-z]+$ ]]; then
echo "invalid cluster-mode coverage suite: $suite" >&2
exit 1
fi
kube=(kubectl --context "$context" --namespace spinoza)
stop_server() {
local deployed
deployed=$("${kube[@]}" get deployment spinoza --ignore-not-found -o name)
if [ -n "$deployed" ]; then
"${kube[@]}" scale deployment/spinoza --replicas=0
"${kube[@]}" wait --for=delete pod -l app.kubernetes.io/instance=spinoza --timeout=120s
fi
}
case "$mode" in
prepare)
stop_server
"${kube[@]}" apply -f test/clustermode/counter-volume.yaml
"${kube[@]}" wait --for=condition=Ready pod/coverage-collector --timeout=120s
"${kube[@]}" exec coverage-collector -- find /coverage -type f -delete
;;
collect)
output=".tmp/system-coverage/$suite"
mkdir -p "$output/counters"
find "$output/counters" -type f -delete
rm -f "$output/summary.json" "$output/coverage.out"
"${kube[@]}" logs deployment/spinoza --all-containers --tail=-1 > "$output/server.log"
stop_server
"${kube[@]}" cp coverage-collector:/coverage/. "$output/counters"
go tool covdata textfmt -i="$output/counters" -o="$output/coverage.out"
node scripts/system-coverage.mjs "$output/coverage.out" "$suite" "$output/summary.json"
;;
*)
echo "unsupported cluster-mode coverage action: $mode" >&2
exit 1
;;
esac