Simulasikan jaringan buruk di CI
Jendelanya opsional. File eksekusi yang sama berjalan sebagai alat baris perintah, berakhir sendiri setelah waktu yang ditetapkan, dan melaporkan apa yang terjadi dengan cara yang bisa dibaca pipeline.
Bentuk sebuah langkah
Ganggu selama pengujian, lalu biarkan berhenti sendiri. Tidak ada langkah pembersihan yang bisa terlupa:
BeanNetworkTester.exe --loss 10 --latency 200 --target myapp.exe --duration 60
Dalam job GitHub Actions, di runner Windows yang di-host sendiri:
- 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
Dua hal tentang runner: menangkap lalu lintas butuh hak administrator, dan runner hosted tidak akan memberikannya, jadi ini cocok di mesin Windows yang di-host sendiri.
Setiap akhir punya kode keluar
Tidak ada yang berakhir dengan traceback. Setiap cara sebuah eksekusi bisa selesai punya nomor, sehingga pipeline dapat membedakan “aplikasi Anda gagal” dari “alat tidak bisa dimulai”:
| Kode | Artinya |
|---|---|
| 0 | Selesai sesuai permintaan. |
| 1 | Ada yang gagal saat berjalan. |
| 2 | Baris perintahnya salah. |
| 3 | Sebuah pengaturan atau nilai tidak valid. |
| 4 | Sebuah file skenario ditolak. |
| 5 | Sebuah file tidak dapat dibaca atau ditulis. |
| 6 | Sebuah asersi tentang eksekusi tidak terpenuhi. |
| 7 | Tidak ada hak administrator, sehingga driver tidak bisa dimuat. |
| 130 | Dihentikan, biasanya dengan Ctrl+C. |
| 143 | Dihentikan dari luar. |
Keluaran yang dapat dibaca mesin
--format json menulis satu objek JSON per baris, sampel selama eksekusi dan ringkasan di akhir, sehingga langkah berikutnya dapat membuat asersi atasnya:
BeanNetworkTester.exe --loss 5 --duration 30 --format json > run.ndjson
Baris log masuk ke standard error dan data ke standard output, sehingga mengalihkan data tak pernah mencampur keduanya. --seed membuat eksekusi dapat diulang, yang dibutuhkan pengujian yang tidak stabil sebelum siapa pun bisa berdebat.
Uji coba yang tidak menyentuh apa pun
Dua opsi membuatnya aman dipasang sebelum Anda mempercayainya: --dry-run melaporkan apa yang akan dilakukan pengaturan lalu keluar, dan --simulate menjalankan seluruh mesin terhadap lalu lintas sintetis, tanpa memuat driver dan tanpa menyentuh jaringan. Keduanya berguna di build yang tidak boleh mengganggu mesin tempatnya berjalan.