Network chaos testing on Windows
Chaos testing means breaking something on purpose, while you are watching, to find out what your software does about it. At the network layer that is exactly what this tool is: a way to inject a fault into one application and see whether it survives.
The faults you can inject
| Fault | What it models |
|---|---|
| Loss, corruption, duplication | A degraded path. Packets vanish, arrive damaged, or arrive twice. |
| Latency, jitter, spikes | A slow or unstable path, including the multi-second stall that breaks timeouts. |
| Connection resets | A firewall or a load balancer killing connections mid-transfer. |
| Link outages | The path disappearing and coming back, on a cycle. |
| Blocked address or port | One dependency unreachable while everything else works. |
| Internet gone, LAN alive | The captive-portal shape: local works, the world does not. |
What separates chaos from noise: repeatability
A random failure that cannot be replayed produces a story, not a bug report. Every random decision here comes from a seed, so the same command reproduces the same run - the same packets lost, the same jitter, in the same order:
BeanNetworkTester.exe --loss 15 --rst-prob 5 --seed 42 --target myapp.exe --duration 120
That is the difference between "it fell over once last Tuesday" and a failing test somebody else can run.
In a pipeline
The command line reports through exit codes, so a build can tell "the application failed" from "the tool could not start", and the session ends by itself - there is no cleanup step to forget:
BeanNetworkTester.exe --loss 10 --rst-prob 5 --target myapp.exe --duration 90 --format json > chaos.ndjson
A sequence of faults instead of one is a scenario file, and those are also repeatable. See timed scenarios and network tests in CI for the exit codes and the runner it needs.
Where the blast radius stops
Two limits, and both are deliberate. The impairment reaches one process, PID, address or port when you aim it, so the machine you are working on keeps working. And it is one machine: this is fault injection for a client and its connection, not for a cluster. If you are looking for chaos across services and nodes, that is a different kind of tool, and this one is the piece that breaks the network under a single Windows application.
Everything is reversible on the spot. STOP restores the network, a time limit does the same, and a watchdog inside the tool shuts the capture down if the tool itself dies - a fault you injected must never outlive the run that injected it.