Bean Network Tester

Simulace špatné sítě v CI

Okno je volitelné. Tentýž spustitelný soubor běží jako nástroj příkazového řádku, po zadané době sám skončí a hlásí, co se stalo, způsobem, který pipeline přečte.

Podoba kroku

Zhoršujte po dobu testu a pak nechte nástroj skončit samotný. Žádný úklidový krok, na který by se dalo zapomenout:

BeanNetworkTester.exe --loss 10 --latency 200 --target myapp.exe --duration 60

V úloze GitHub Actions na vlastním (self-hosted) runneru s Windows:

- 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

Dvě věci o runneru: zachytávání provozu vyžaduje práva správce a hostovaný runner vám je nedá, takže tohle patří na vlastní počítač s Windows.

Každý konec má návratový kód

Nic nekončí výpisem chyby (traceback). Každý způsob, jak běh může skončit, má číslo, takže pipeline rozliší „vaše aplikace selhala“ od „nástroj se nepodařilo spustit“:

KódVýznam
0Dokončeno podle zadání.
1Za běhu se něco nezdařilo.
2Příkazový řádek byl chybný.
3Nastavení nebo hodnota byly neplatné.
4Soubor scénáře byl odmítnut.
5Soubor se nepodařilo přečíst nebo zapsat.
6Ověřované tvrzení o průběhu neplatilo.
7Chybí práva správce, proto se nedá načíst ovladač.
130Přerušeno, obvykle klávesami Ctrl+C.
143Ukončeno zvenčí.

Výstup čitelný strojem

--format json zapisuje jeden objekt JSON na řádek, tedy vzorky za běhu a souhrn na konci, takže na něj může navazující krok klást asserty:

BeanNetworkTester.exe --loss 5 --duration 30 --format json > run.ndjson

Řádky logu jdou na standardní chybový výstup a data na standardní výstup, takže přesměrování dat nikdy neprolne obojí. --seed dělá běh opakovatelným, což nestabilní (flaky) test potřebuje dřív, než o něm někdo začne diskutovat.

Zkušební běh, který se ničeho nedotkne

Dva přepínače umožňují tohle bezpečně zapojit, než mu uvěříte: --dry-run ohlásí, co by nastavení udělala, a skončí, a --simulate pustí celý engine proti syntetickému provozu, bez načtení ovladače a bez zásahu do sítě. Oba se hodí v buildu, který nesmí zhoršit počítač, na němž běží.

Dále

Jste připraveni záměrně rozbít vlastní síť?

Stáhnout pro Windows