Testare de haos pentru rețea în Windows
Testarea de haos înseamnă să strici ceva intenționat, în timp ce te uiți, ca să afli ce face software-ul tău în privința asta. La nivelul rețelei, exact asta este acest instrument: un mod de a injecta un defect într-o aplicație și de a vedea dacă rezistă.
Defectele pe care le poți injecta
| Defect | Ce modelează |
|---|---|
| Pierdere, corupere, duplicare | O cale degradată. Pachetele dispar, ajung deteriorate sau ajung de două ori. |
| Latență, jitter, salturi | O cale lentă sau instabilă, inclusiv blocajul de câteva secunde care strică timeout-urile. |
| Resetări de conexiuni | Un firewall sau un load balancer care omoară conexiunile în mijlocul transferului. |
| Întreruperi de legătură | Calea care dispare și revine, într-un ciclu. |
| Adresă sau port blocat | O dependență inaccesibilă, în timp ce restul merge. |
| Internet dispărut, LAN viu | Forma unui captive portal: local merge, lumea nu. |
Ce separă haosul de zgomot: repetabilitatea
O defecțiune aleatorie care nu poate fi reluată produce o poveste, nu un raport de eroare. Fiecare decizie aleatorie de aici vine dintr-un seed, deci aceeași comandă reproduce aceeași rulare: aceleași pachete pierdute, același jitter, în aceeași ordine:
BeanNetworkTester.exe --loss 15 --rst-prob 5 --seed 42 --target myapp.exe --duration 120
Asta e diferența dintre „a picat o dată marțea trecută” și un test care eșuează și pe care îl poate rula altcineva.
Într-un pipeline
Linia de comandă raportează prin coduri de ieșire, deci un build poate deosebi „aplicația a eșuat” de „instrumentul nu a putut porni”, iar sesiunea se încheie singură, deci nu există niciun pas de curățare de uitat:
BeanNetworkTester.exe --loss 10 --rst-prob 5 --target myapp.exe --duration 90 --format json > chaos.ndjson
O secvență de defecte în loc de unul singur este un fișier de scenariu, iar și acestea sunt repetabile. Vezi scenarii în timp și teste de rețea în CI pentru codurile de ieșire și pentru runner-ul necesar.
Unde se oprește raza de acțiune
Două limite, ambele deliberate. Degradarea ajunge la un proces, PID, adresă sau port când o îndrepți, deci calculatorul pe care lucrezi continuă să meargă. Și este o singură mașină: aceasta este injectare de defecte pentru un client și conexiunea lui, nu pentru un cluster. Dacă cauți haos între servicii și noduri, este un alt fel de instrument, iar acesta este piesa care strică rețeaua sub o singură aplicație Windows.
Totul este reversibil pe loc. STOP restaurează rețeaua, o limită de timp face la fel, iar un watchdog din instrument oprește captura dacă instrumentul însuși moare: un defect pe care l-ai injectat nu trebuie să supraviețuiască rulării care l-a injectat.