# Mock Gateway Quick Start Guide Get started with the SPORE Mock Gateway in under 1 minute! ## TL;DR ```bash # Build and run go build -o mock-gateway cmd/mock-gateway/main.go ./mock-gateway ``` That's it! The mock gateway is now running on http://localhost:3001 ## What You Get ✅ **5 mock SPORE nodes** ready to use ✅ **All REST API endpoints** working ✅ **WebSocket support** for real-time updates ✅ **Mock firmware registry** with sample firmware ✅ **Simulated rollouts** with progress tracking ## Test It ### 1. Check Health ```bash curl http://localhost:3001/api/health | jq ``` ### 2. List Nodes ```bash curl http://localhost:3001/api/discovery/nodes | jq ``` ### 3. Get Cluster Members ```bash curl http://localhost:3001/api/cluster/members | jq ``` ### 4. List Firmware ```bash curl http://localhost:3001/api/registry/firmware | jq ``` ### 5. Connect WebSocket ```javascript const ws = new WebSocket('ws://localhost:3001/ws'); ws.onmessage = (event) => console.log(JSON.parse(event.data)); ``` ## Customize It ```bash # More nodes ./mock-gateway -mock-nodes 10 # Different port ./mock-gateway -port 8080 # Debug logging ./mock-gateway -log-level debug # Faster updates ./mock-gateway -heartbeat-rate 2 # All together ./mock-gateway -port 8080 -mock-nodes 10 -log-level debug -heartbeat-rate 2 ``` ## Use the Script ```bash # Easy run with default settings ./scripts/run-mock-gateway.sh # With custom options ./scripts/run-mock-gateway.sh -p 8080 -n 10 -l debug # See all options ./scripts/run-mock-gateway.sh --help ``` ## Connect Your Frontend Point your frontend to `http://localhost:3001` instead of the real gateway. All endpoints work the same way! ```javascript // React example const API_BASE = 'http://localhost:3001'; const WS_URL = 'ws://localhost:3001/ws'; // Fetch nodes const nodes = await fetch(`${API_BASE}/api/discovery/nodes`).then(r => r.json()); // WebSocket connection const ws = new WebSocket(WS_URL); ``` ## What's Mocked? ✅ Node discovery (5 default nodes: 192.168.1.100-104) ✅ Cluster management ✅ Firmware uploads (90% success rate, 2s delay) ✅ Rollouts (simulated progress: labels → upload → complete) ✅ Task status ✅ System status ✅ Registry operations ✅ WebSocket broadcasts ## Example Workflow ```bash # 1. Start mock gateway ./mock-gateway # 2. In another terminal, test the API curl http://localhost:3001/api/discovery/nodes | jq '.nodes[0]' # 3. Start a rollout curl -X POST http://localhost:3001/api/rollout \ -H "Content-Type: application/json" \ -d '{ "firmware": {"name": "spore-firmware", "version": "1.1.0"}, "nodes": [ {"ip": "192.168.1.100", "version": "1.0.0", "labels": {"env": "mock"}}, {"ip": "192.168.1.101", "version": "1.0.0", "labels": {"env": "mock"}} ] }' | jq # 4. Watch WebSocket for progress (in browser console) const ws = new WebSocket('ws://localhost:3001/ws'); ws.onmessage = e => console.log(JSON.parse(e.data)); ``` ## Next Steps - 📖 Read [cmd/mock-gateway/README.md](cmd/mock-gateway/README.md) for detailed documentation - 📖 Read [MOCK_GATEWAY.md](MOCK_GATEWAY.md) for implementation details - 🔧 Customize the mock data in `internal/mock/data.go` - 🚀 Use it for frontend development, testing, or demos ## Troubleshooting **Port already in use?** ```bash ./mock-gateway -port 8080 ``` **Need more/fewer nodes?** ```bash ./mock-gateway -mock-nodes 3 ``` **Want to see what's happening?** ```bash ./mock-gateway -log-level debug ``` **Build fails?** ```bash # Make sure you have Go 1.21 or later go version # Update dependencies go mod download ``` ## Questions? - See [MOCK_GATEWAY.md](MOCK_GATEWAY.md) for complete documentation - See [cmd/mock-gateway/README.md](cmd/mock-gateway/README.md) for usage details - Check the real gateway's documentation to understand the API Happy mocking! 🎭