Ctrl K
ComunidadGuías…

scripts/cluster-mode-coverage.sh

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
#!/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