Files
podman-mvp/podman-helper/test-helper.sh
T
2026-03-22 14:39:38 +01:00

85 lines
3.3 KiB
Bash
Executable File

#!/usr/bin/env bash
# test-helper.sh — Test de podman-helper direct op de host
# Gebruik: ./test-helper.sh <unit> (standaard: test-web.service)
set -euo pipefail
UNIT="${1:-test-web.service}"
SOCKET="${XDG_RUNTIME_DIR:-/run/user/$(id -u)}/podman-helper.sock"
GREEN='\033[0;32m'; RED='\033[0;31m'; NC='\033[0m'
ok() { echo -e "${GREEN}${NC} $*"; }
fail() { echo -e "${RED}${NC} $*"; }
send() {
local action="$1"
local result
result=$(echo "{\"action\": \"$action\", \"unit\": \"$UNIT\"}" | \
socat - UNIX-CONNECT:"$SOCKET" 2>/dev/null)
echo "$result"
}
echo "Socket: $SOCKET"
echo "Unit: $UNIT"
echo ""
# Check socat
command -v socat &>/dev/null || { echo "socat niet gevonden — installeer: sudo apt install socat"; exit 1; }
# Check socket
[[ -S "$SOCKET" ]] || { fail "Socket niet gevonden. Is podman-helper.service actief?"; exit 1; }
# ── Test 1: stop ──────────────────────────────────────────────────────────────
echo "Test 1: stop"
systemctl --user start "$UNIT" 2>/dev/null || true
sleep 2
RESULT=$(send "stop")
echo " Response: $RESULT"
sleep 5
STATE=$(systemctl --user is-active "$UNIT" 2>/dev/null || true)
echo " State na stop: $STATE"
[[ "$STATE" == "inactive" ]] && ok "Stop werkt" || fail "Stop mislukt (state: $STATE)"
echo ""
# ── Test 2: start ─────────────────────────────────────────────────────────────
echo "Test 2: start"
RESULT=$(send "start")
echo " Response: $RESULT"
sleep 5
STATE=$(systemctl --user is-active "$UNIT" 2>/dev/null || true)
echo " State na start: $STATE"
[[ "$STATE" == "active" ]] && ok "Start werkt" || fail "Start mislukt (state: $STATE)"
echo ""
# ── Test 3: restart ───────────────────────────────────────────────────────────
echo "Test 3: restart"
RESULT=$(send "restart")
echo " Response: $RESULT"
sleep 5
STATE=$(systemctl --user is-active "$UNIT" 2>/dev/null || true)
echo " State na restart: $STATE"
[[ "$STATE" == "active" ]] && ok "Restart werkt" || fail "Restart mislukt (state: $STATE)"
echo ""
# ── Test 4: ongeldige actie (whitelist check) ─────────────────────────────────
echo "Test 4: ongeldige actie (whitelist)"
RESULT=$(echo '{"action": "kill", "unit": "'"$UNIT"'"}' | \
socat - UNIX-CONNECT:"$SOCKET" 2>/dev/null)
echo " Response: $RESULT"
echo "$RESULT" | grep -q '"ok": false' && ok "Whitelist werkt" || fail "Whitelist werkt NIET"
echo ""
# ── Test 5: gelijktijdige aanvragen ───────────────────────────────────────────
echo "Test 5: gelijktijdig (5 status aanvragen)"
for i in {1..5}; do
echo '{"action": "restart", "unit": "'"$UNIT"'"}' | \
socat - UNIX-CONNECT:"$SOCKET" 2>/dev/null &
done
wait
sleep 5
STATE=$(systemctl --user is-active "$UNIT" 2>/dev/null || true)
echo " State na gelijktijdige aanvragen: $STATE"
[[ "$STATE" == "active" ]] && ok "Gelijktijdig werkt" || fail "Gelijktijdig mislukt (state: $STATE)"
echo ""
echo "Tests klaar."