Simulează o rețea proastă în CI
Fereastra e opțională. Același executabil rulează ca instrument în linia de comandă, se oprește singur după un timp stabilit și raportează ce s-a întâmplat într-un fel pe care un pipeline îl poate citi.
Forma unui pas
Degradează pe durata testului, apoi lasă-l să se oprească singur. Niciun pas de curățare de uitat:
BeanNetworkTester.exe --loss 10 --latency 200 --target myapp.exe --duration 60
Într-un job GitHub Actions, pe un runner Windows găzduit de tine (self-hosted):
- name: Test the app on a poor connection
shell: pwsh
run: |
Start-Process -FilePath BeanNetworkTester.exe `
-ArgumentList '--loss 10 --latency 200 --target myapp.exe --duration 90'
npm test
Două lucruri despre runner: captura traficului cere drepturi de administrator, iar un runner găzduit nu ți le dă, deci asta aparține unei mașini Windows self-hosted.
Fiecare final are un cod de ieșire
Nimic nu se termină cu un traceback. Fiecare mod în care se poate încheia o rulare are un număr, deci un pipeline poate deosebi „aplicația ta a eșuat” de „instrumentul nu a putut porni”:
| Cod | Semnificație |
|---|---|
| 0 | Terminat conform cererii. |
| 1 | Ceva a eșuat în timpul rulării. |
| 2 | Linia de comandă era greșită. |
| 3 | O setare sau o valoare era invalidă. |
| 4 | Un fișier de scenariu a fost respins. |
| 5 | Un fișier nu a putut fi citit sau scris. |
| 6 | O afirmație despre rulare nu s-a confirmat. |
| 7 | Fără drepturi de administrator, deci driverul nu poate fi încărcat. |
| 130 | Întrerupt, de obicei cu Ctrl+C. |
| 143 | Oprit din exterior. |
Ieșire citibilă de mașini
--format json scrie un obiect JSON pe linie, adică eșantioane cât timp rulează și un rezumat la final, ca un pas ulterior să poată verifica pe baza lui:
BeanNetworkTester.exe --loss 5 --duration 30 --format json > run.ndjson
Liniile de jurnal merg la eroarea standard, iar datele la ieșirea standard, deci redirecționarea datelor nu le amestecă niciodată. --seed face rularea repetabilă, ceea ce are nevoie un test instabil (flaky) înainte să poată discuta cineva despre el.
Rulare de probă care nu atinge nimic
Două flaguri fac sigură conectarea înainte să ai încredere: --dry-run raportează ce ar face setările și iese, iar --simulate rulează tot motorul pe trafic sintetic, fără să încarce driverul și fără să atingă rețeaua. Ambele sunt utile într-un build care nu are voie să degradeze mașina pe care rulează.