A configuration-driven event simulation platform for exercising distributed systems under realistic conditions—burst traffic, out-of-order delivery, retries, partial failures, and replay.
This repository packages a simulator + scenario library so engineers can validate system behavior and data correctness before production releases.
Distributed systems fail in predictable ways:
- Events arrive late or out of order
- Downstream services throttle or time out
- Retries create duplicate work
- “Small” configuration changes cause big behavioral shifts
This platform provides a repeatable testbed to reproduce those conditions deterministically using configuration files and scenario definitions.
- platform/iot-simulator/: The Java-based simulator runtime (Gradle project)
- configs/: Baseline configurations + environment profiles
- examples/: Scenario library (financial-like events, device fleets, failure testing)
- docs/: Architecture, design decisions, components, and real-world mappings
- ci/: CI tooling and quality gates
- legacy-coursework/: Archived academic artifacts (renamed and organized)
- Configuration-driven simulation (no code changes required for most scenarios)
- Event generation (burst/steady), routing, transformation, and sink behaviors
- Deterministic replay for debugging and regression validation
- Failure modeling (timeouts, drop rates, backpressure, retries, partial outages)
- Scenario packaging so teams can share and reproduce test conditions
Prereqs: Java (matching your Gradle toolchain), Gradle wrapper included.
cd platform/iot-simulator
./gradlew clean test
./gradlew runScenarios are stored in examples/ and reference configs in configs/.
Example:
cd platform/iot-simulator ./gradlew run --args="--scenario ../../examples/scenario-failure-testing/scenario.json --config ../../configs/simConfig.json"
Adjust the CLI args to match your simulator’s current entrypoint; see
docs/simulation-scenarios.md.