# Phase 5 — User Acceptance Testing (Transport Fallbacks) > Phase 5 is NOT YET IMPLEMENTED. This is a pre-written test plan. ## Prerequisites - Phase 4 UAT fully passing - Bluetooth-capable devices - LoRa hardware (e.g. Heltec ESP32 LoRa, RAK WisBlock) - Two devices on same Wi-Fi for Wi-Fi Direct testing --- ## 1. Bluetooth Mule Transfer **Mule device (phone/laptop) near Server A:** ```bash cargo run --bin warzone-mule -- pickup --transport bluetooth ``` - [ ] Mule scans for nearby warzone-server via BLE advertisement - [ ] Connects via Bluetooth Classic (RFCOMM) - [ ] Picks up messages (same protocol as HTTP, different transport) - [ ] Transfer speed reasonable (> 100 KB/s) **Mule near Server B:** ```bash cargo run --bin warzone-mule -- deliver --transport bluetooth ``` - [ ] Delivers messages via Bluetooth - [ ] Receipts returned --- ## 2. LoRa Transport (Emergency) **Setup two LoRa nodes with warzone-mule:** ```bash cargo run --bin warzone-mule -- lora-beacon --freq 868.0 ``` - [ ] Device broadcasts presence beacon (< 50 bytes) - [ ] Nearby LoRa node detects beacon **Send short text over LoRa:** ```bash cargo run --bin warzone-mule -- lora-send "SOS need evac" --to ``` - [ ] Message fits in single LoRa packet (< 250 bytes) - [ ] Compact binary format used (not JSON) - [ ] Recipient receives and decrypts - [ ] Delivery receipt sent back over LoRa **LoRa limitations:** - [ ] Messages > 200 chars rejected with warning - [ ] Files cannot be sent over LoRa - [ ] Latency shown: "Sent via LoRa (estimated 2-5 seconds)" --- ## 3. mDNS / LAN Discovery **Two devices on same LAN, no internet:** ```bash cargo run --bin warzone-server -- --mdns ``` - [ ] Server advertises via mDNS: `_warzone._tcp.local` - [ ] Client discovers server without typing IP/URL: ```bash cargo run --bin warzone-client -- chat --discover ``` - [ ] Shows: "Found warzone server at 192.168.1.42:7700" - [ ] Chat works normally over LAN --- ## 4. Wi-Fi Direct (Nearby Mesh) **Two devices, no router needed:** ```bash cargo run --bin warzone-client -- chat --wifi-direct ``` - [ ] Devices discover each other via Wi-Fi Direct - [ ] Form ad-hoc connection - [ ] Messages synced peer-to-peer (no server) - [ ] Group sync: all messages replicated to all peers in range - [ ] Bandwidth: > 10 MB/s --- ## 5. USB / Sneakernet Export **Export messages:** ```bash cargo run --bin warzone-client -- export --since 24h --to /mnt/usb/messages.wz ``` - [ ] Messages exported as encrypted file - [ ] File is portable (copy to USB drive) - [ ] Export size shown: "Exported 142 messages (2.3 MB)" **Import on another machine:** ```bash cargo run --bin warzone-client -- import /mnt/usb/messages.wz ``` - [ ] Messages imported and decrypted - [ ] Deduplication: already-seen messages skipped - [ ] "Imported 142 messages (38 new)" --- ## 6. Transport Fallback Priority **Configure fallback chain:** ``` warzone-server --transport https,bluetooth,lora ``` - [ ] Server tries HTTPS first - [ ] If HTTPS fails → falls back to Bluetooth - [ ] If Bluetooth unavailable → falls back to LoRa - [ ] Each fallback logged with reason --- ## Summary | # | Feature | Result | |---|---------|--------| | 1 | Bluetooth mule | ☐ | | 2 | LoRa transport | ☐ | | 3 | mDNS discovery | ☐ | | 4 | Wi-Fi Direct | ☐ | | 5 | USB export/import | ☐ | | 6 | Transport fallback | ☐ | **Tester:** _______________ **Date:** _______________