Production-grade MQTT simulator for stress testing
Simulates NovaFlow water meter fleets with chaos injection to validate SCADA error handling at scale.
What it is
A standalone Java the platform runtime application that simulates large fleets of water meters (4G and LoRa) publishing telemetry data to MQTT brokers in the exact formats consumed by WizIIOT. It generates realistic device behaviours (normal operation, intermittent connectivity, dormancy, and permanent failure) and injects 15 types of message corruption—malformed JSON, invalid timestamps, missing fields, garbage payloads—to stress-test the platform's error handling. Designed for integration testing, load validation, and chaos engineering before production deployment.
Key benefits
De-risk deployments
Test with realistic and corrupted message streams at the exact volumes (1K to 50K devices, 10 to 5000 msg/s) you expect in production. Discover parser bugs, queue saturation, and error handling gaps before live meters reach your system.
Reduce test infrastructure cost
Eliminate the need for armies of real water meters or third-party MQTT traffic generators. Run profiles locally or in a staging environment with no external dependencies—just a Java runtime and an MQTT broker.
Tune robustness predictably
Dial up device count, message rate, corruption probability, and duration independently. Profiles bundle common scenarios (smoke, stress, chaos) and output metrics per run to identify thresholds before production.
Validate edge cases quickly
Corruption types cover real-world failures: out-of-range sensor values, future timestamps, null fields, truncated JSON, duplicate messages, and total garbage. Confirms your platform recovers gracefully rather than crashing or logging silent data loss.
Capabilities
- Simulate 100 to 50,000+ water meter devices with configurable fleet size, serial ranges, and IMEI prefixes
- Model five device behaviours: normal (100% send rate), intermittent (20% connectivity), dormant (silent then wake), dead (1–3 messages then fail), and LoRa/TTN format
- Generate authentic 4G messages (Meter ID, IMEI, datetime, flow data 1–5, battery, signal strength) and TTN/LoRa encoded payloads
- Inject 15 corruption types at configurable probability: truncated JSON, invalid timestamps, missing fields, NaN/Infinity, unquoted strings, absurd values (2³²−1), garbage wrappers, binary noise, and more
- Publish at precise rates (1–5000 messages/second) with multi-threaded MQTT connection pools and QoS 0/1/2 support
- Run predefined profiles (smoke, stress, chaos) or customize every parameter via YAML config or command-line flags
- Report live statistics: message count, corruption rate, throughput, dropped messages, and connection status per cycle
- Gracefully shut down with final stats summary; support both time-limited (duration-seconds) and message-count limits
