#!/bin/bash
# Simple routing verification test
echo "=== Routing Verification Test ==="
echo ""
# Kill any existing proxy
pkill -f rproxy 2>/dev/null
sleep 1
# Start proxy
echo "Starting proxy..."
DEBUG=1 ./rproxy > routing_verify.log 2>&1 &
PROXY_PID=$!
sleep 2
if ! ps -p $PROXY_PID > /dev/null; then
echo "ERROR: Proxy failed to start"
cat routing_verify.log
exit 1
fi
echo "Proxy started (PID: $PROXY_PID)"
echo ""
# Test internal routes
echo "Testing internal route handling:"
# Test dashboard 5 times
echo -n " Dashboard: "
for i in {1..5}; do
response=$(curl -s -o /dev/null -w "%{http_code}" http://localhost:8888/dashboard 2>/dev/null)
if [ "$response" = "200" ]; then
echo -n "✓"
else
echo -n "✗($response)"
fi
done
echo ""
# Test API stats 5 times
echo -n " API Stats: "
for i in {1..5}; do
response=$(curl -s -o /dev/null -w "%{http_code}" http://localhost:8888/api/stats 2>/dev/null)
if [ "$response" = "200" ]; then
echo -n "✓"
else
echo -n "✗($response)"
fi
done
echo ""
echo ""
# Check routing decisions in log
echo "Analyzing routing decisions:"
dashboard_internal=$(grep "ROUTING-INTERNAL.*DASHBOARD" routing_verify.log 2>/dev/null | wc -l)
api_internal=$(grep "ROUTING-INTERNAL.*API STATS" routing_verify.log 2>/dev/null | wc -l)
dashboard_forward=$(grep "ROUTING-FORWARD.*dashboard" routing_verify.log 2>/dev/null | wc -l)
api_forward=$(grep "ROUTING-FORWARD.*api/stats" routing_verify.log 2>/dev/null | wc -l)
echo " ✓ Dashboard handled internally: $dashboard_internal times"
echo " ✓ API stats handled internally: $api_internal times"
if [ "$dashboard_forward" -gt 0 ]; then
echo " ✗ Dashboard incorrectly forwarded: $dashboard_forward times"
fi
if [ "$api_forward" -gt 0 ]; then
echo " ✗ API stats incorrectly forwarded: $api_forward times"
fi
echo ""
# Cleanup
kill $PROXY_PID 2>/dev/null
wait $PROXY_PID 2>/dev/null
# Verdict
if [ "$dashboard_forward" -eq 0 ] && [ "$api_forward" -eq 0 ] && [ "$dashboard_internal" -gt 0 ] && [ "$api_internal" -gt 0 ]; then
echo "✅ SUCCESS: All internal routes are properly handled!"
echo " /dashboard and /api/stats are ALWAYS served internally, never forwarded."
exit 0
else
echo "❌ FAILURE: Routing issues detected"
exit 1
fi