57 lines
1.3 KiB
Bash
57 lines
1.3 KiB
Bash
#!/bin/bash
|
|
|
|
# TechIRCd Shutdown Test Script
|
|
echo "=== TechIRCd Shutdown Test ==="
|
|
echo
|
|
|
|
# Start the server in background
|
|
echo "Starting TechIRCd..."
|
|
./techircd start &
|
|
SERVER_PID=$!
|
|
|
|
echo "Server started with PID: $SERVER_PID"
|
|
echo "Waiting 5 seconds for server to initialize..."
|
|
sleep 5
|
|
|
|
# Test connection
|
|
echo "Testing initial connection..."
|
|
timeout 5s bash -c '
|
|
exec 3<>/dev/tcp/localhost/6667
|
|
echo "NICK TestUser" >&3
|
|
echo "USER testuser 0 * :Test User" >&3
|
|
sleep 2
|
|
echo "PING :test" >&3
|
|
read -t 3 response <&3
|
|
echo "Response: $response"
|
|
exec 3<&-
|
|
exec 3>&-
|
|
' && echo "✅ Connection test passed" || echo "❌ Connection test failed"
|
|
|
|
echo
|
|
echo "Testing graceful shutdown (SIGTERM)..."
|
|
echo "Sending SIGTERM to server..."
|
|
|
|
# Send SIGTERM and monitor for graceful shutdown
|
|
kill -TERM $SERVER_PID
|
|
|
|
# Wait up to 15 seconds for graceful shutdown
|
|
TIMEOUT=15
|
|
for i in $(seq 1 $TIMEOUT); do
|
|
if ! kill -0 $SERVER_PID 2>/dev/null; then
|
|
echo "✅ Server shut down gracefully after $i seconds"
|
|
echo
|
|
echo "=== Shutdown Test Complete ==="
|
|
exit 0
|
|
fi
|
|
sleep 1
|
|
echo -n "."
|
|
done
|
|
|
|
echo
|
|
echo "⚠️ Server did not shut down gracefully within $TIMEOUT seconds"
|
|
echo "Forcing shutdown..."
|
|
kill -9 $SERVER_PID 2>/dev/null
|
|
|
|
echo
|
|
echo "=== Shutdown Test Complete ==="
|