Ağ koşullarını zamanla değiştirin
Sabit %10 kayıp bir laboratuvar koşuludur. Gerçek bağlantılar kötüleşir, toparlanır, dört saniye takılır ve geri gelir; peşinde olduğunuz hata da genellikle kararlı durumda değil, değişimde yaşar.
Senaryo bir zaman çizelgesidir
Tek bir JSON dosyası. Her adım şu saniyede şu ayarlar der ve bahsetmediğiniz her şey değerini korur:
{
"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}}
]
}
Süreler, adımlar arasındaki boşluklar değil, çalıştırmanın başından itibaren saniyedir. "loop": true ile zaman çizelgesi bittiğinde baştan başlar; uzun bir dayanıklılık testi için istediğiniz budur: çalışır bırakın ve uygulamayı kullanın.
BeanNetworkTester.exe --scenario cafe-wifi.json --target myapp.exe
8 hazır senaryo programla birlikte gelir
Çalıştırılabilir dosyanın yanındaki scenarios klasöründe. Bu dosyalardan okunur, yani gerçekten elinizde olan budur:
| Dosya | Adım | Süre | Tekrarlanır |
|---|---|---|---|
blocked-endpoint.json | 4 | 65 s | evet |
cafe-wifi.json | 5 | 85 s | evet |
congested-vpn.json | 4 | 70 s | evet |
failing-dns.json | 6 | 85 s | evet |
mobile-lte-to-3g.json | 7 | 85 s | evet |
overloaded-game-server.json | 5 | 72 s | evet |
same-loss-in-runs.json | 5 | 100 s | evet |
upload-drop-midway.json | 7 | 75 s | hayır |
Bunlar sıradan metindir: birini açın, bir sayıyı değiştirin, kaydedin. Adları neyi yeniden ürettiklerini söyler: kalabalık bir kafe, LTE’den 3G’ye düşen bir mobil bağlantı, yarı yolda ölen bir yükleme, aşırı yüklenen bir sunucu, yanıt vermeyi bırakan DNS.
Değişim elde etmenin iki daha basit yolu
Sıra önemli olduğunda bir senaryo yazmaya değer. Önemli olmadığında iki ayar kendiliğinden değişir:
- Bağlantı açılıp kapanır: bir döngü uzunluğu ve bunun ne kadarının kesinti olduğu. On saniyelik döngüler, dört saniye kesinti, sonsuza dek.
- Bir hız çizelgesi: sınırın üzerinden geçtiği bir dizi hız; böylece bağlantı dosyasız kötüleşir ve toparlanır.
BeanNetworkTester.exe --flap-period 10 --flap-down 40 --target myapp.exe
Uygulama çalışırken neden işe yarar
Bir senaryonun dokunduğu her ayar, zaten süren oturuma canlı uygulanır: uygulamanın yeniden başlatılması gerekmez, aracın da. Olay günlüğü her adımı gerçekleştiği anda kaydeder; böylece bir şey bozulduğunda hangi değişikliğin ardından olduğunu görebilirsiniz. Bunu bir seed ile birleştirin, içindeki rastgele kayıp dahil tüm dizi birebir tekrarlanır.