Schimbă condițiile rețelei în timp
O pierdere fixă de 10% este o condiție de laborator. Conexiunile reale se înrăutățesc, își revin, se blochează patru secunde și revin, iar eroarea pe care o urmărești de obicei locuiește în schimbare, nu în starea stabilă.
Un scenariu este o cronologie
Un singur fișier JSON. Fiecare pas spune la această secundă, aceste setări, iar ce nu menționezi își păstrează valoarea:
{
"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}}
]
}
Timpii sunt secunde de la începutul rulării, nu pauze între pași. Cu "loop": true cronologia o ia de la capăt când se termină, ceea ce vrei pentru un test lung de anduranță: lasă-o să ruleze și folosește aplicația.
BeanNetworkTester.exe --scenario cafe-wifi.json --target myapp.exe
Scenarii gata făcute în program: 8
În folderul scenarios de lângă executabil. Citite din acele fișiere, deci asta ai de fapt:
| Fișier | Pași | Durată | Se repetă |
|---|---|---|---|
blocked-endpoint.json | 4 | 65 s | da |
cafe-wifi.json | 5 | 85 s | da |
congested-vpn.json | 4 | 70 s | da |
failing-dns.json | 6 | 85 s | da |
mobile-lte-to-3g.json | 7 | 85 s | da |
overloaded-game-server.json | 5 | 72 s | da |
same-loss-in-runs.json | 5 | 100 s | da |
upload-drop-midway.json | 7 | 75 s | nu |
Sunt fișiere text obișnuite: deschide unul, schimbă o cifră, salvează. Numele spun ce reproduc: o cafenea aglomerată, o conexiune mobilă care scade de la LTE la 3G, o încărcare care moare la jumătate, un server supraîncărcat, un DNS care nu mai răspunde.
Două moduri mai simple de a obține schimbare
Merită să scrii un scenariu când secvența contează. Când nu, două setări variază singure:
- Legătură pornită și oprită: o lungime de ciclu și cât din el e pauză. Cicluri de zece secunde, patru secunde pauză, la nesfârșit.
- O programare a vitezei: o serie de viteze prin care trece limita, ca să se degradeze și să-și revină conexiunea fără un fișier.
BeanNetworkTester.exe --flap-period 10 --flap-down 40 --target myapp.exe
De ce merge cât timp aplicația rulează
Fiecare setare pe care o atinge un scenariu se aplică în direct, sesiunii deja în curs: aplicația nu trebuie repornită și nici instrumentul. Jurnalul de evenimente înregistrează fiecare pas pe măsură ce se petrece, deci când se strică ceva poți vedea ce schimbare l-a precedat. Împerechează asta cu un seed și toată secvența, inclusiv pierderea aleatorie din ea, se repetă exact.