- dms/ai/workflow: qa0x-Pakete nach internal/gates/<thema> verschoben, Paketname = Thema
- internal/migration{acl,audit,...} -> internal/migration/{acl,audit,...}
- Importpfade, Gate-Skripte und zwei relative Migrationspfade angepasst
- keine Logikaenderung; mail-Gates bewusst unveraendert (pfadabhaengig)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
86 lines
3.9 KiB
Bash
Executable File
86 lines
3.9 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# QA-02: fuehrt die Pruefungen aller Fundament-Kacheln (FDN) aus und gibt eine
|
|
# Ergebnistabelle aus. Exit 1, sobald eine Suite scheitert.
|
|
# qa02-foundation-gate.sh [ROOT] Env: TEST_TENANT_DSN, NEXARCH_DMS_APP_TENANT_DSN (Rebuild-Pruefung)
|
|
# QA02_SKIP_REBUILD=1 ueberspringt das Neuaufsetzen, QA02_SKIP_VULN=1 govulncheck, QA02_VULN_SOURCE=1 zusaetzlich Quellmodus
|
|
set -uo pipefail
|
|
root="${1:-.}"
|
|
cd "$root"
|
|
log="$(mktemp -d)"
|
|
|
|
declare -a rows
|
|
fail=0
|
|
record() { rows+=("$1|$2|$3"); [ "$3" = PASS ] || [ "$3" = SKIP ] || fail=1; }
|
|
|
|
go_suite() {
|
|
local label="$1"; shift
|
|
local f="$log/${label//\//_}.log"
|
|
if (cd dms && go test -count=1 "$@" >"$f" 2>&1); then record "$label" "go: $*" PASS; else record "$label" "go: $*" FAIL; tail -20 "$f" >&2; fi
|
|
}
|
|
sh_suite() {
|
|
local label="$1" desc="$2"; shift 2
|
|
if "$@" >"$log/x.log" 2>&1; then record "$label" "$desc" PASS; else record "$label" "$desc" FAIL; tail -20 "$log/x.log" >&2; fi
|
|
}
|
|
|
|
# govulncheck: Binaermodus (ausgelieferte Binaries), weil die Quellcode-Analyse auf dem
|
|
# 4-GB-Testhost vom OOM-Killer beendet wird; QA02_VULN_SOURCE=1 schaltet sie zu.
|
|
PATH="$PATH:$(go env GOPATH 2>/dev/null)/bin"
|
|
vuln_binaries() {
|
|
local d; d="$(mktemp -d)"
|
|
for c in app worker migrate; do
|
|
(cd dms && go build -o "$d/$c" "./cmd/$c") || { rm -rf "$d"; return 1; }
|
|
govulncheck -mode=binary "$d/$c" || { rm -rf "$d"; return 1; }
|
|
done
|
|
rm -rf "$d"
|
|
}
|
|
if [ "${QA02_SKIP_VULN:-0}" = 1 ]; then
|
|
record QA-02 "govulncheck (ausdruecklich uebersprungen)" SKIP
|
|
elif command -v govulncheck >/dev/null; then
|
|
sh_suite QA-02 "govulncheck -mode=binary (app, worker, migrate)" vuln_binaries
|
|
if [ "${QA02_VULN_SOURCE:-0}" = 1 ]; then
|
|
sh_suite QA-02 "govulncheck ./... (Quellmodus)" bash -c 'cd dms && govulncheck ./...'
|
|
fi
|
|
else
|
|
record QA-02 "govulncheck nicht gefunden (QA02_SKIP_VULN=1 zum bewussten Ueberspringen)" FAIL
|
|
fi
|
|
|
|
go_suite FDN-02 ./internal/migrate/ ./cmd/migrate/
|
|
go_suite FDN-03 ./internal/storage/
|
|
go_suite FDN-04/17 ./internal/jobqueue/ ./internal/workerruntime/
|
|
go_suite FDN-08 ./internal/logging/ ./internal/metrics/ ./internal/errortracking/
|
|
go_suite FDN-09 ./internal/crypto/
|
|
go_suite FDN-16 ./internal/testdb/ ./internal/testlock/
|
|
go_suite FDN-10/11 ./internal/downloadapi/ ./internal/jobqueue/
|
|
go_suite QA-01 ./internal/testcorpus/
|
|
go_suite QA-02 ./internal/gates/foundation/
|
|
|
|
perf_serial() {
|
|
local out; out="$(cd dms && TEST_PERF=1 go test -count=1 -p 1 -v -run 'TestSearch_ConcurrentRequestsStayUnderResponseTimeLimit|TestFilters_ResponseTimeWithFiveFilters' ./internal/searchapi/ 2>&1)"
|
|
local rc=$?
|
|
printf '%s\n' "$out"
|
|
[ "$rc" -eq 0 ] && [ "$(printf '%s\n' "$out" | grep -c -- '^--- PASS')" -eq 2 ]
|
|
}
|
|
if [ -n "${TEST_MANTICORE_ADDR:-}" ]; then
|
|
sh_suite SRC-03/08 "Such-Latenz seriell (TEST_PERF=1, -p 1, beide Tests PASS)" perf_serial
|
|
else
|
|
record SRC-03/08 "Such-Latenz seriell (TEST_MANTICORE_ADDR nicht gesetzt)" SKIP
|
|
fi
|
|
|
|
sh_suite FDN-07 "dms/scripts/check-security-test-coverage.sh (+Selbsttest)" bash -c 'bash dms/scripts/check-security-test-coverage_selftest.sh && bash dms/scripts/check-security-test-coverage.sh dms'
|
|
sh_suite FDN-12 "check-port-defaults.sh + Test" bash -c 'bash scripts/check-port-defaults_test.sh && bash scripts/check-port-defaults.sh .'
|
|
sh_suite FDN-14 "check-route-prefixes.sh + Test" bash -c 'bash scripts/check-route-prefixes_test.sh && bash scripts/check-route-prefixes.sh .'
|
|
sh_suite FDN-15 "preflight_test.sh" bash scripts/preflight_test.sh
|
|
|
|
if [ "${QA02_SKIP_REBUILD:-0}" != 1 ] && [ -n "${NEXARCH_DMS_APP_TENANT_DSN:-}" ]; then
|
|
sh_suite QA-02 "Neuaufsetzen von null" bash scripts/qa02-rebuild-from-scratch.sh dms
|
|
else
|
|
record QA-02 "Neuaufsetzen von null (uebersprungen)" SKIP
|
|
fi
|
|
|
|
sh_suite QA-02 "go vet ./..." bash -c 'cd dms && go vet ./...'
|
|
sh_suite QA-02 "gofmt -l (leer)" bash -c 'cd dms && test -z "$(gofmt -l .)"'
|
|
printf '\n%-10s %-6s %s\n' Ticket Ergebnis Suite
|
|
for r in "${rows[@]}"; do IFS='|' read -r t s res <<<"$r"; printf '%-10s %-6s %s\n' "$t" "$res" "$s"; done
|
|
rm -rf "$log"
|
|
exit "$fail"
|