Stress-test GPRS services with simulated modem turnover
Load-test gateway resilience by simulating multiple GPRS modems cycling through a constrained pool of serial ports, with injected protocol errors to validate robustness.
What it is
A standalone Java utility that emulates multiple GPRS modems competing for a limited pool of physical serial ports (a serial port, a serial port, a serial port for ANSI modems; a serial port for DLMS). Each simulated modem loads active controller configurations from the platform database, establishes a TCP connection to the GPRS client service, relays commands between the service and a physical meter over serial, and releases the port after a 5-minute session to simulate real-world modem disconnect/reconnect cycles. The tool intentionally corrupts 1-in-6 identification messages to test error handling and server resilience.
Key benefits
Realistic modem churn testing
Simulate rapid modem connection/disconnection cycles and port contention without deploying multiple physical modems. Exposes race conditions and resource leaks in production services before live deployment.
Injected protocol corruption
Systematically distort 1-in-6 modem identification messages (omit port/ID fields) to validate server error handling and recovery paths. Builds confidence in service robustness against malformed data.
Minimal infrastructure footprint
Runs on Windows with 4 serial ports and a local database connection. No cloud infrastructure, no exotic hardware — suitable for lab validation, integration testing, and pre-production stress runs.
FIFO port pooling
Fair-queued COM port borrowing ensures all simulated modems get equal access. Threads block-wait with 10-second polling intervals, preventing starvation and validating service behavior under contention.
Capabilities
- Load ANSI (Type 11) and DLMS (Type 13) controller configurations from the platform database
- Spawn per-modem worker threads with 5-minute session timeouts to simulate real-world connect/disconnect patterns
- Manage separate COM port pools (ANSI: 3 ports; DLMS: 1 port) with synchronized FIFO queuing for thread-safe borrowing
- Relay raw command/response bytes between GPRS client service and simulated meter over serial
- Inject intentional modem identification message corruption (1-in-6 rate) to stress error handling
- Dynamically configure logging from the platform database at startup; support rolling file output with size/backup rotation
- Enforce license validation on startup; fail safely if license is missing or expired
