Měňte podmínky sítě v čase
Pevná ztráta 10 % je laboratorní podmínka. Skutečná spojení se zhoršují, zotavují, na čtyři sekundy se zadrhnou a vrátí se, a chyba, kterou hledáte, obvykle žije ve změně, ne v ustáleném stavu.
Scénář je časová osa
Jeden soubor JSON. Každý krok říká v této sekundě tato nastavení a cokoli nezmíníte, zachová svou hodnotu:
{
"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}}
]
}
Časy jsou sekundy od začátku běhu, ne mezery mezi kroky. S "loop": true začne časová osa po skončení znovu, což chcete pro dlouhý soak test: nechte to běžet a používejte aplikaci.
BeanNetworkTester.exe --scenario cafe-wifi.json --target myapp.exe
Hotové scénáře v programu: 8
Ve složce scenarios vedle spustitelného souboru. Čteno z těchto souborů, takže je to to, co skutečně máte:
| Soubor | Kroky | Délka | Opakuje se |
|---|---|---|---|
blocked-endpoint.json | 4 | 65 s | ano |
cafe-wifi.json | 5 | 85 s | ano |
congested-vpn.json | 4 | 70 s | ano |
failing-dns.json | 6 | 85 s | ano |
mobile-lte-to-3g.json | 7 | 85 s | ano |
overloaded-game-server.json | 5 | 72 s | ano |
same-loss-in-runs.json | 5 | 100 s | ano |
upload-drop-midway.json | 7 | 75 s | ne |
Jsou to obyčejné textové soubory: otevřete jeden, změňte číslo, uložte. Názvy říkají, co reprodukují: přeplněnou kavárnu, mobilní spojení klesající z LTE na 3G, odesílání, které zemře v půlce, přetížený server, DNS, které přestane odpovídat.
Dva jednodušší způsoby, jak získat změnu
Scénář má smysl psát, když záleží na pořadí. Když ne, dvě nastavení se mění samy:
- Zapínání a vypínání linky: délka cyklu a kolik z něj tvoří výpadek. Desetisekundové cykly, čtyři sekundy výpadek, donekonečna.
- Plán rychlosti: řada rychlostí, kterými limit prochází, takže se spojení zhoršuje a zotavuje bez souboru.
BeanNetworkTester.exe --flap-period 10 --flap-down 40 --target myapp.exe
Proč to funguje, zatímco aplikace běží
Každé nastavení, kterého se scénář dotkne, se použije naživo na už probíhající relaci: aplikaci není třeba restartovat a nástroj také ne. Protokol událostí zaznamená každý krok, jak nastane, takže když se něco rozbije, uvidíte, po které změně. Spojte to se seedem a celá posloupnost, včetně náhodné ztráty v ní, se přesně zopakuje.