Bean Network Tester

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”:

CodSemnificație
0Terminat conform cererii.
1Ceva a eșuat în timpul rulării.
2Linia de comandă era greșită.
3O setare sau o valoare era invalidă.
4Un fișier de scenariu a fost respins.
5Un fișier nu a putut fi citit sau scris.
6O afirmație despre rulare nu s-a confirmat.
7Fără drepturi de administrator, deci driverul nu poate fi încărcat.
130Întrerupt, de obicei cu Ctrl+C.
143Oprit 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ă.

Mai departe

Ești gata să-ți strici intenționat propria rețea?

Descarcă pentru Windows