Chaos testování sítě ve Windows
Chaos testování znamená záměrně něco rozbít, zatímco se díváte, abyste zjistili, co s tím váš software udělá. Na síťové vrstvě je přesně tohle tento nástroj: způsob, jak vložit chybu do jedné aplikace a zjistit, zda ji přežije.
Chyby, které můžete vložit
| Chyba | Co modeluje |
|---|---|
| Ztráta, poškození, duplikace | Zhoršenou cestu. Pakety mizí, přicházejí poškozené nebo přicházejí dvakrát. |
| Zpoždění, jitter, skoky | Pomalou nebo nestabilní cestu, včetně zadrhnutí na několik sekund, které rozbíjí timeouty. |
| Resety spojení | Firewall nebo load balancer, který ukončuje spojení uprostřed přenosu. |
| Výpadky linky | Cesta, která mizí a vrací se v cyklu. |
| Blokovaná adresa nebo port | Jedna závislost nedostupná, zatímco všechno ostatní funguje. |
| Internet pryč, LAN žije | Tvar captive portalu: místní funguje, svět ne. |
Co odlišuje chaos od šumu: opakovatelnost
Náhodná chyba, kterou nelze přehrát, vytvoří příběh, ne hlášení chyby. Každé náhodné rozhodnutí tu vychází ze seedu, takže stejný příkaz zopakuje stejný běh: stejné ztracené pakety, stejný jitter, ve stejném pořadí:
BeanNetworkTester.exe --loss 15 --rst-prob 5 --seed 42 --target myapp.exe --duration 120
To je rozdíl mezi „minulé úterý to jednou spadlo“ a selhávajícím testem, který může spustit kdokoli jiný.
V pipeline
Příkazový řádek hlásí výsledek přes návratové kódy, takže build rozliší „aplikace selhala“ od „nástroj se nepodařilo spustit“, a relace skončí sama, takže není žádný úklidový krok, na který by se dalo zapomenout:
BeanNetworkTester.exe --loss 10 --rst-prob 5 --target myapp.exe --duration 90 --format json > chaos.ndjson
Posloupnost chyb místo jedné je soubor scénáře a ty jsou také opakovatelné. Návratové kódy a potřebný runner najdete v částech scénáře v čase a síťové testy v CI.
Kde zásah končí
Dvě hranice a obě jsou záměrné. Zhoršení zasáhne jeden proces, PID, adresu nebo port, když jej zacílíte, takže počítač, na kterém pracujete, funguje dál. A je to jeden počítač: jde o vkládání chyb pro klienta a jeho spojení, ne pro cluster. Pokud hledáte chaos napříč službami a uzly, je to jiný druh nástroje a tento je ten kus, který rozbíjí síť pod jednou aplikací pro Windows.
Všechno je vratné na místě. STOP obnoví síť, časový limit udělá totéž a hlídací proces (watchdog) v nástroji zastaví zachytávání, pokud samotný nástroj spadne: chyba, kterou jste vložili, nesmí nikdy přežít běh, který ji vložil.