Zmieniaj warunki sieci w czasie
Stałe 10 procent straty to warunek laboratoryjny. Prawdziwe łącza pogarszają się, wracają, stają na cztery sekundy i znów działają - a błąd, którego szukasz, zwykle siedzi w zmianie, nie w stanie ustalonym.
Scenariusz to linia czasu
Jeden plik JSON. Każdy krok mówi w tej sekundzie takie ustawienia, a wszystko, czego nie wymienisz, zachowuje swoją wartość:
{
"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}}
]
}
Czasy są sekundami od startu przebiegu, nie odstępami między krokami. Przy
"loop": true linia czasu zaczyna się od nowa, gdy się skończy - i tego właśnie chcesz
przy długim wygrzewaniu: zostaw to włączone i korzystaj z aplikacji.
BeanNetworkTester.exe --scenario cafe-wifi.json --target myapp.exe
Siedem jest dostarczanych z programem
W katalogu scenarios obok pliku wykonywalnego. Odczytane z tych plików, więc to
jest to, co naprawdę masz:
| Plik | Kroków | Długość | Powtarza się |
|---|---|---|---|
blocked-endpoint.json | 4 | 65 s | tak |
cafe-wifi.json | 5 | 85 s | tak |
congested-vpn.json | 4 | 70 s | tak |
failing-dns.json | 6 | 85 s | tak |
mobile-lte-to-3g.json | 7 | 85 s | tak |
overloaded-game-server.json | 5 | 72 s | tak |
upload-drop-midway.json | 7 | 75 s | nie |
To zwykły tekst - otwórz jeden, zmień liczbę, zapisz. Nazwy mówią, co odtwarzają: zatłoczoną kawiarnię, łącze mobilne spadające z LTE na 3G, wysyłanie, które umiera w połowie, przeciążony serwer, DNS, który przestaje odpowiadać.
Dwa prostsze sposoby na zmienność
Scenariusz warto pisać, gdy liczy się kolejność. Gdy nie, dwa ustawienia zmieniają się same:
- Łącze na przemian - długość cyklu i jaka jego część to przestój. Cykle dziesięciosekundowe, cztery sekundy przerwy, bez końca.
- Harmonogram prędkości - ciąg prędkości, po których chodzi limit, więc łącze pogarsza się i wraca bez żadnego pliku.
BeanNetworkTester.exe --flap-period 10 --flap-down 40 --target myapp.exe
Dlaczego to działa na żywo
Każde ustawienie, którego dotyka scenariusz, stosuje się do trwającej już sesji - aplikacji nie trzeba restartować i narzędzia też nie. Dziennik zdarzeń zapisuje każdy krok w chwili, gdy następuje, więc gdy coś pęknie, widzisz, po której zmianie. Dołóż do tego ziarno losowości i cała sekwencja, razem z losową stratą w środku, powtórzy się dokładnie.