Ubah kondisi jaringan seiring waktu
Kehilangan tetap 10% adalah kondisi laboratorium. Koneksi nyata memburuk, pulih, macet empat detik lalu kembali, dan bug yang Anda buru biasanya berada di perubahannya, bukan di keadaan stabil.
Skenario adalah lini waktu
Satu file JSON. Setiap langkah menyatakan pada detik ini, pengaturan ini, dan apa pun yang tidak Anda sebut mempertahankan nilainya:
{
"loop": true,
"steps": [
{"at": 0, "settings": {"latency": 20, "jitter": 15, "down": 4096}},
{"at": 20, "settings": {"loss": 8, "latency": 180}},
{"at": 45, "settings": {"block_ip": "203.0.113.0/24"}},
{"at": 65, "settings": {"block_ip": "", "loss": 0, "latency": 20}}
]
}
Waktu adalah detik sejak awal eksekusi, bukan jeda antar langkah. Dengan "loop": true lini waktu mulai lagi saat berakhir, yang Anda inginkan untuk uji rendam yang panjang: biarkan berjalan dan gunakan aplikasinya.
BeanNetworkTester.exe --scenario cafe-wifi.json --target myapp.exe
8 skenario siap pakai disertakan bersama program
Di folder scenarios di samping file eksekusi. Dibaca dari file-file itu, jadi inilah yang benar-benar Anda miliki:
| File | Langkah | Durasi | Berulang |
|---|---|---|---|
blocked-endpoint.json | 4 | 65 s | ya |
cafe-wifi.json | 5 | 85 s | ya |
congested-vpn.json | 4 | 70 s | ya |
failing-dns.json | 6 | 85 s | ya |
mobile-lte-to-3g.json | 7 | 85 s | ya |
overloaded-game-server.json | 5 | 72 s | ya |
same-loss-in-runs.json | 5 | 100 s | ya |
upload-drop-midway.json | 7 | 75 s | tidak |
Isinya teks biasa: buka satu, ubah satu angka, simpan. Namanya menyebutkan apa yang direproduksi: kafe yang ramai, koneksi seluler yang turun dari LTE ke 3G, unggahan yang mati di tengah jalan, server yang kelebihan beban, DNS yang berhenti menjawab.
Dua cara yang lebih sederhana untuk mendapat perubahan
Skenario layak ditulis bila urutannya penting. Bila tidak, dua pengaturan berubah dengan sendirinya:
- Tautan hidup dan mati: panjang siklus dan berapa bagian darinya yang mati. Siklus sepuluh detik, empat detik mati, selamanya.
- Jadwal kecepatan: serangkaian kecepatan yang dilalui batas, sehingga koneksi memburuk dan pulih tanpa file.
BeanNetworkTester.exe --flap-period 10 --flap-down 40 --target myapp.exe
Mengapa ini bekerja saat aplikasi berjalan
Setiap pengaturan yang disentuh sebuah skenario diterapkan langsung ke sesi yang sedang berjalan: aplikasi tidak perlu dimulai ulang, begitu pula alatnya. Log peristiwa mencatat setiap langkah saat terjadi, sehingga ketika sesuatu rusak Anda bisa melihat perubahan mana yang mendahuluinya. Padukan dengan seed dan seluruh urutan, termasuk kehilangan acak di dalamnya, berulang persis sama.