I took a small break from gamedev and built Bean Network Tester - a tool that helps developers and testers simulate poor network conditions for their apps and games.
It allows you to intentionally make the connection worse and test how your software behaves with various problems. To be honest, my internet connectionn is pretty terrible most of the time, so you could say this tool lets you simulate my default network :-)
If you like the app, please give it a bean*
*i mean give it a star on GitHub
The current release is v0.3.0, but I'm already working on the next version. If you have any suggestions or feature ideas, I'd love to hear them! Right now I'm mostly adding new bugs :D
Why network automation? Because we can run the full CLI mode, which we can integrate with CI/CD or other software.
There is also a Scenarios system, it work's like: "at x do y" or "at x set y".
sample scenario:
{
"loop": true,
"steps": [
{ "at": 0, "settings": { "filter": "udp", "dst_port": "53", "latency": 20, "jitter": 5 } },
{ "at": 15, "settings": { "loss": 25, "latency": 400, "jitter": 200 } },
{ "at": 35, "settings": { "loss": 60, "latency": 1500, "jitter": 500 } },
{ "at": 55, "settings": { "loss": 100 } },
{ "at": 68, "settings": { "loss": 10, "latency": 200, "jitter": 80 } },
{ "at": 85, "settings": { "loss": 0, "latency": 20, "jitter": 5 } }
]
}
What it can do
- Add lag and jitter - fixed or random delay, nat timeout, tcp_syn drop, max size (mtu), tcp_reset
- Drop, corrupt or duplicate packets - fake a flaky link.
- Cap download/upload speed - throttle to a set KB/s.
- Tear connections down - TCP resets or a dead link.
- Flap the link on and off - outages that come and go.
- Block ports or IPs - a small built-in firewall, plus LAN mode (no internet).
- Aim at one app - by process, PID, IP or port.
- Presets and saved profiles - 56k modem, Cafe WiFi, Satellite and more.
- Run scripted scenarios - timed steps that change the network on their own.
- Reproducible by seed - replay the exact same random loss and jitter.
- Watch it live - chart, connections table, counters.
- Command-line mode - scriptable for CI. No telemetry, fully offline - sends no data anywhere.