mirror of
https://github.com/dredx/prole.git
synced 2026-09-24 20:04:31 +00:00
- Fix kube context switching for k3s single-context kubeconfigs and k3d shorthand prefixes - Update common init/status scripts (registry, kerberos, cnpg backup, service layer, common services) - Add Gitea init script and installer ArgoCD screen - Add Supabase realtime probe patching plus regression tests - Extend installer core/UI test coverage
113 lines
3.1 KiB
Bash
113 lines
3.1 KiB
Bash
#!/usr/bin/env bash
|
|
# Regression test for etc/status.sh
|
|
# - In k3d mode, it must not auto-select prole-k3s.kubeconfig via the fallback.
|
|
# - It must call status_common_services.sh using SERVICE_NAMESPACE (not DB NAMESPACE).
|
|
|
|
set -euo pipefail
|
|
|
|
SCRIPT_DIR=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)
|
|
PROLE_HOME_REPO=$(cd "$SCRIPT_DIR/../.." && pwd)
|
|
ETC_DIR="$PROLE_HOME_REPO/etc"
|
|
SCRIPT_UNDER_TEST="$ETC_DIR/status.sh"
|
|
|
|
TMP_DIR=$(mktemp -d)
|
|
trap 'rm -rf "$TMP_DIR"' EXIT
|
|
export TMP_DIR
|
|
export PROLE_K3S_KUBECONFIG_PATH="$PROLE_HOME_REPO/prole-k3s.kubeconfig"
|
|
|
|
BIN_DIR="$TMP_DIR/bin"
|
|
mkdir -p "$BIN_DIR"
|
|
|
|
cat <<'K_EOF' >"$BIN_DIR/kubectl"
|
|
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
_log_file="${TMP_DIR}/mock_calls.log"
|
|
echo "Mocked kubectl called with $*" >>"${_log_file}"
|
|
|
|
args="$*"
|
|
|
|
if [[ "$args" == "config current-context"* ]]; then
|
|
echo "k3d-knoe-system"
|
|
exit 0
|
|
fi
|
|
|
|
if [[ "$args" == "config view --minify"* ]]; then
|
|
echo "https://127.0.0.1:6443"
|
|
exit 0
|
|
fi
|
|
|
|
if [[ "$args" == "cluster-info"* ]]; then
|
|
if [[ "${KUBECONFIG:-}" == "${PROLE_K3S_KUBECONFIG_PATH}" ]]; then
|
|
echo "fallback-probe" >>"${TMP_DIR}/k3s_kubeconfig_probe"
|
|
fi
|
|
echo "Kubernetes control plane is running"
|
|
exit 0
|
|
fi
|
|
|
|
# Basic pods output so status.sh can iterate.
|
|
if [[ "$args" == "get pods -o wide -A"* ]]; then
|
|
echo "NAMESPACE NAME READY STATUS RESTARTS AGE IP NODE"
|
|
echo "kube-system coredns 1/1 Running 0 1h 10.0.0.1 node"
|
|
exit 0
|
|
fi
|
|
|
|
# Common services checks (SERVICE_NAMESPACE should be svc-ns)
|
|
if [[ "$args" == "-n svc-ns get svc"* ]]; then
|
|
echo "NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE"
|
|
echo "openbao ClusterIP 10.0.0.2 <none> 8200/TCP 1h"
|
|
echo "garage ClusterIP 10.0.0.3 <none> 3900/TCP 1h"
|
|
echo "opentofu ClusterIP 10.0.0.4 <none> 8080/TCP 1h"
|
|
exit 0
|
|
fi
|
|
if [[ "$args" == "-n svc-ns get svc auth"* ]]; then
|
|
echo "NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE"
|
|
echo "auth ClusterIP 10.0.0.5 <none> 88/TCP 1h"
|
|
exit 0
|
|
fi
|
|
if [[ "$args" == "-n svc-ns get deploy"* || "$args" == "-n svc-ns get statefulset"* ]]; then
|
|
exit 0
|
|
fi
|
|
|
|
exit 0
|
|
K_EOF
|
|
chmod +x "$BIN_DIR/kubectl"
|
|
|
|
export PATH="$BIN_DIR:$PATH"
|
|
|
|
# Provide a reachable prole-k3s.kubeconfig file (fallback must NOT probe it in k3d mode)
|
|
touch "$PROLE_HOME_REPO/prole-k3s.kubeconfig"
|
|
|
|
CFG_DIR="$TMP_DIR/conf"
|
|
mkdir -p "$CFG_DIR"
|
|
|
|
cat <<C_EOF >"$CFG_DIR/prole.cfg"
|
|
[User]
|
|
NAMESPACE = db-ns
|
|
SERVICE_NAMESPACE = svc-ns
|
|
|
|
[Global]
|
|
DEPLOYMENT_MODE = k3d
|
|
C_EOF
|
|
|
|
set +e
|
|
STATUS_CHECK_TIMEOUT=2 bash "$SCRIPT_UNDER_TEST" -c "$CFG_DIR/prole.cfg" >"$TMP_DIR/stdout" 2>"$TMP_DIR/stderr"
|
|
RC=$?
|
|
set -e
|
|
|
|
# We don't require rc=0; we only assert the correct calls were made.
|
|
|
|
if [[ -f "$TMP_DIR/k3s_kubeconfig_probe" ]]; then
|
|
echo "FAILURE: expected status.sh not to probe prole-k3s.kubeconfig via kubectl cluster-info in k3d mode" >&2
|
|
sed -n '1,200p' "$TMP_DIR/mock_calls.log" >&2 || true
|
|
exit 1
|
|
fi
|
|
|
|
if ! grep -q -- "-n svc-ns get svc opentofu garage openbao" "$TMP_DIR/mock_calls.log"; then
|
|
echo "FAILURE: expected status_common_services.sh checks to use SERVICE_NAMESPACE (svc-ns)" >&2
|
|
sed -n '1,200p' "$TMP_DIR/mock_calls.log" >&2 || true
|
|
exit 1
|
|
fi
|
|
|
|
echo "SUCCESS"
|