tests: тестовые ресурсы с префиксом test-/t-, ns fission-test-*, guard в cleanup

This commit is contained in:
“Naeel”
2026-05-03 17:59:12 +04:00
parent 47759b5231
commit cf475d0d2d
10 changed files with 102 additions and 73 deletions
+30 -10
View File
@@ -16,13 +16,32 @@ kube_exec() {
fi
}
# Зеркало логики Go NamespaceForSub:
# sub начинается с "test-" → "fission-test-" + sha256[:8*2]
# иначе → "fission-" + sha256[:8*2]
namespace_for_sub() {
printf '%s' "$1" | sha256sum | awk '{print "fission-" substr($1, 1, 16)}'
local sub="$1"
local hash
hash=$(printf '%s' "$sub" | sha256sum | awk '{print substr($1, 1, 16)}')
if [[ "$sub" == test-* ]]; then
echo "fission-test-${hash}"
else
echo "fission-${hash}"
fi
}
# ⛔ АБСОЛЮТНЫЙ GUARD: удалять ТОЛЬКО namespace-ы вида fission-test-*
# Всё остальное — немедленный выход с ошибкой
delete_ns() {
local ns="$1"
[ -n "$ns" ] || return 0
# ЖЁСТКАЯ ЗАЩИТА: только fission-test-* разрешено удалять
if [[ "$ns" != fission-test-* ]]; then
echo "⛔ ОТКАЗ: '$ns' не является тестовым namespace (должно начинаться с 'fission-test-')" >&2
return 1
fi
if [ "${KUBECTL_DIRECT:-0}" = "1" ]; then
kubectl delete namespace "$ns" --wait=false >/dev/null 2>&1 || true
else
@@ -31,15 +50,16 @@ delete_ns() {
echo "cleanup namespace: ${ns}"
}
delete_all_console_managed() {
# --all-test: удалить все namespace-ы с лейблом fission-console/env=test
# (только fission-test-* по определению)
delete_all_test() {
local ns_list
if [ "${KUBECTL_DIRECT:-0}" = "1" ]; then
ns_list=$(kubectl get ns -l managed-by=fission-console -o jsonpath='{range .items[*]}{.metadata.name}{"\n"}{end}' 2>/dev/null || true)
ns_list=$(kubectl get ns -l 'fission-console/env=test' --no-headers \
-o custom-columns=":metadata.name" 2>/dev/null || true)
else
ns_list=$(ssh "${SSH_ARGS[@]}" '
set -e
kubectl get ns -l managed-by=fission-console -o jsonpath="{range .items[*]}{.metadata.name}{"\n"}{end}" 2>/dev/null || true
' )
ns_list=$(ssh "${SSH_ARGS[@]}" \
'kubectl get ns -l "fission-console/env=test" --no-headers -o custom-columns=":metadata.name" 2>/dev/null || true')
fi
printf '%s\n' "$ns_list" | while IFS= read -r ns; do
[ -n "$ns" ] || continue
@@ -48,12 +68,12 @@ kubectl get ns -l managed-by=fission-console -o jsonpath="{range .items[*]}{.met
}
if [ "$#" -eq 0 ]; then
echo "usage: $0 SUB [SUB ...] | --all-console-managed" >&2
echo "usage: $0 SUB [SUB ...] | --all-test" >&2
exit 1
fi
if [ "$1" = "--all-console-managed" ]; then
delete_all_console_managed
if [ "$1" = "--all-test" ]; then
delete_all_test
exit 0
fi