85 lines
3.3 KiB
Bash
Executable File
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."
|