Bean Network Tester

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

KodeArtinya
0Selesai sesuai permintaan.
1Ada yang gagal saat berjalan.
2Baris perintahnya salah.
3Sebuah pengaturan atau nilai tidak valid.
4Sebuah file skenario ditolak.
5Sebuah file tidak dapat dibaca atau ditulis.
6Sebuah asersi tentang eksekusi tidak terpenuhi.
7Tidak ada hak administrator, sehingga driver tidak bisa dimuat.
130Dihentikan, biasanya dengan Ctrl+C.
143Dihentikan 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.

Selanjutnya

Siap merusak jaringan Anda sendiri dengan sengaja?

Unduh untuk Windows