CI içinde kötü ağı simüle edin
Pencere isteğe bağlıdır. Aynı çalıştırılabilir dosya bir komut satırı aracı olarak çalışır, belirlenen süreden sonra kendiliğinden biter ve olanı bir pipeline’ın okuyabileceği biçimde bildirir.
Bir adımın biçimi
Testin süresi boyunca bozun, sonra kendiliğinden durmasına izin verin. Unutulacak bir temizlik adımı yok:
BeanNetworkTester.exe --loss 10 --latency 200 --target myapp.exe --duration 60
Bir GitHub Actions işinde, kendi barındırdığınız bir Windows runner üzerinde:
- 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
Runner hakkında iki şey: trafiği yakalamak yönetici hakları gerektirir ve barındırılan bir runner bunları vermez; bu yüzden bu, kendi barındırdığınız bir Windows makinesine aittir.
Her sonun bir çıkış kodu var
Hiçbir şey bir traceback ile bitmez. Bir çalıştırmanın bitebileceği her yolun bir numarası vardır; böylece bir pipeline “uygulamanız başarısız oldu” ile “araç başlatılamadı” arasındaki farkı ayırt edebilir:
| Kod | Anlamı |
|---|---|
| 0 | İstendiği gibi tamamlandı. |
| 1 | Çalışırken bir şey başarısız oldu. |
| 2 | Komut satırı hatalıydı. |
| 3 | Bir ayar ya da değer geçersizdi. |
| 4 | Bir senaryo dosyası reddedildi. |
| 5 | Bir dosya okunamadı veya yazılamadı. |
| 6 | Çalıştırmayla ilgili bir doğrulama sağlanmadı. |
| 7 | Yönetici hakları yok, bu yüzden sürücü yüklenemiyor. |
| 130 | Kesildi, genellikle Ctrl+C ile. |
| 143 | Dışarıdan sonlandırıldı. |
Makinenin okuyabileceği çıktı
--format json satır başına bir JSON nesnesi yazar: çalışırken örnekler, sonunda bir özet; böylece sonraki bir adım bunun üzerinde doğrulama yapabilir:
BeanNetworkTester.exe --loss 5 --duration 30 --format json > run.ndjson
Günlük satırları standart hataya, veriler standart çıktıya gider; bu yüzden veriyi yönlendirmek ikisini asla karıştırmaz. --seed çalıştırmayı tekrarlanabilir yapar; kararsız bir testin, kimse tartışmaya başlamadan önce ihtiyaç duyduğu şey budur.
Hiçbir şeye dokunmayan bir deneme çalıştırması
İki bayrak, güvenmeden önce bağlamayı güvenli kılar: --dry-run ayarların ne yapacağını bildirir ve çıkar, --simulate ise sürücüyü yüklemeden ve ağa dokunmadan tüm motoru sentetik trafiğe karşı çalıştırır. İkisi de çalıştığı makineyi bozmaması gereken bir derlemede işe yarar.