Files
metabuilder/gameengine/examples/experiment/test_spy_workflow_integration.sh
2026-03-09 22:30:41 +00:00

103 lines
3.4 KiB
Bash
Executable File
Raw Permalink Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/bin/bash
echo "╔════════════════════════════════════════════════════════════════╗"
echo "║ SPY THREAD INTEGRATION TEST - WORKFLOW JSON RENDERER ║"
echo "╚════════════════════════════════════════════════════════════════╝"
echo ""
# Kill any existing processes
pkill -f "spy_demo|spy_client.py" 2>/dev/null || true
sleep 1
# Start spy_demo (simulates workflow execution)
echo "1⃣ Starting spy_demo (workflow simulator)..."
./spy_demo > /tmp/spy_demo.log 2>&1 &
SPY_PID=$!
sleep 2
echo " ✓ Process running with PID $SPY_PID"
echo ""
# Test spy client connection
echo "2⃣ Testing spy client connection..."
STATUS=$(python3 spy_client.py status 2>&1)
if echo "$STATUS" | grep -q "WORKFLOW EXECUTION STATUS"; then
echo " ✓ Connection successful"
else
echo " ✗ Connection failed"
kill $SPY_PID 2>/dev/null || true
exit 1
fi
echo ""
# Get initial state
echo "3⃣ Getting initial metrics..."
python3 spy_client.py get fps
python3 spy_client.py get frame_count
python3 spy_client.py get elapsed_time
echo ""
# Pause and verify frozen
echo "4⃣ Pausing execution..."
python3 spy_client.py pause
sleep 1
FRAME_AT_PAUSE=$(python3 spy_client.py get frame_count | cut -d= -f2)
sleep 1
FRAME_AFTER_1SEC=$(python3 spy_client.py get frame_count | cut -d= -f2)
echo " Frame count at pause: $FRAME_AT_PAUSE"
echo " Frame count 1 sec later: $FRAME_AFTER_1SEC"
if [ "$FRAME_AT_PAUSE" == "$FRAME_AFTER_1SEC" ]; then
echo " ✓ Pause confirmed - frame count frozen"
else
echo " ✗ Pause failed - frames still incrementing"
fi
echo ""
# Resume and verify running
echo "5⃣ Resuming execution..."
python3 spy_client.py resume
sleep 2
FRAME_AFTER_RESUME=$(python3 spy_client.py get frame_count | cut -d= -f2)
DELTA=$((FRAME_AFTER_RESUME - FRAME_AT_PAUSE))
echo " Frame count before: $FRAME_AT_PAUSE"
echo " Frame count after resume: $FRAME_AFTER_RESUME"
echo " Frames executed: $DELTA"
if [ "$DELTA" -gt 0 ]; then
echo " ✓ Resume confirmed - execution continues"
else
echo " ✗ Resume failed - no frame progress"
fi
echo ""
# Watch live metrics
echo "6⃣ Watching live metrics for 5 seconds..."
python3 spy_client.py watch fps --interval 1.0 &
WATCH_PID=$!
sleep 5
kill $WATCH_PID 2>/dev/null || true
wait $WATCH_PID 2>/dev/null || true
echo ""
# Cleanup
echo "7⃣ Cleanup..."
kill $SPY_PID 2>/dev/null || true
wait $SPY_PID 2>/dev/null || true
echo ""
echo "╔════════════════════════════════════════════════════════════════╗"
echo "║ ✅ SPY THREAD INTEGRATION TEST PASSED ║"
echo "╚════════════════════════════════════════════════════════════════╝"
echo ""
echo "Summary:"
echo " • Spy thread integration verified"
echo " • Pause/resume functionality working"
echo " • Real-time metrics accessible"
echo " • Python argparse client fully functional"
echo ""