Netzwerkbedingungen im Zeitverlauf ändern
Ein fester Verlust von 10 % ist eine Laborbedingung. Echte Verbindungen werden schlechter, erholen sich, setzen vier Sekunden aus und kommen zurück, und der Fehler, dem du nachjagst, steckt meist in der Veränderung, nicht im stabilen Zustand.
Ein Szenario ist eine Zeitleiste
Eine JSON-Datei. Jeder Schritt sagt in dieser Sekunde diese Einstellungen, und alles, was du nicht erwähnst, behält seinen Wert:
{
"loop": true,
"steps": [
{"at": 0, "settings": {"latency": 20, "jitter": 15, "down": 4096}},
{"at": 20, "settings": {"loss": 8, "latency": 180}},
{"at": 45, "settings": {"block_ip": "203.0.113.0/24"}},
{"at": 65, "settings": {"block_ip": "", "loss": 0, "latency": 20}}
]
}
Die Zeiten sind Sekunden ab Beginn des Durchlaufs, nicht Abstände zwischen den Schritten. Mit "loop": true beginnt die Zeitleiste von vorn, wenn sie endet, und das ist, was du für einen langen Dauertest willst: Lass es laufen und benutze die App.
BeanNetworkTester.exe --scenario cafe-wifi.json --target myapp.exe
8 fertige Szenarien werden mit dem Programm mitgeliefert
Im Ordner scenarios neben der ausführbaren Datei. Aus diesen Dateien gelesen, also ist das, was du tatsächlich hast:
| Datei | Schritte | Dauer | Wiederholt sich |
|---|---|---|---|
blocked-endpoint.json | 4 | 65 s | ja |
cafe-wifi.json | 5 | 85 s | ja |
congested-vpn.json | 4 | 70 s | ja |
failing-dns.json | 6 | 85 s | ja |
mobile-lte-to-3g.json | 7 | 85 s | ja |
overloaded-game-server.json | 5 | 72 s | ja |
same-loss-in-runs.json | 5 | 100 s | ja |
upload-drop-midway.json | 7 | 75 s | nein |
Sie sind gewöhnlicher Text: eines öffnen, eine Zahl ändern, speichern. Die Namen sagen, was sie nachbilden: ein überfülltes Café, eine Mobilfunkverbindung, die von LTE auf 3G fällt, einen Upload, der auf halbem Weg stirbt, einen überlasteten Server, DNS, das nicht mehr antwortet.
Zwei einfachere Wege zu Veränderung
Ein Szenario lohnt sich, wenn die Abfolge zählt. Wenn nicht, ändern sich zwei Einstellungen von selbst:
- Verbindung ein und aus: eine Zykluslänge und wie viel davon Ausfallzeit ist. Zehn-Sekunden-Zyklen, vier Sekunden aus, für immer.
- Ein Geschwindigkeitsplan: eine Reihe von Geschwindigkeiten, die das Limit durchläuft, sodass die Verbindung ohne Datei schlechter wird und sich erholt.
BeanNetworkTester.exe --flap-period 10 --flap-down 40 --target myapp.exe
Warum es funktioniert, während die App läuft
Jede Einstellung, die ein Szenario berührt, wird live auf die bereits laufende Sitzung angewendet: Die App muss nicht neu gestartet werden, das Tool auch nicht. Das Ereignisprotokoll hält jeden Schritt fest, sobald er passiert, sodass du bei einem Fehler sehen kannst, welcher Änderung er folgte. Kombiniere das mit einem Seed, und die ganze Abfolge, einschließlich des zufälligen Verlusts darin, wiederholt sich exakt.