Cambiar las condiciones de red con el tiempo
Una pérdida fija del 10 % es una condición de laboratorio. Las conexiones reales empeoran, se recuperan, se detienen cuatro segundos y vuelven, y el error que persigues suele estar en el cambio, no en el estado estable.
Un escenario es una línea de tiempo
Un archivo JSON. Cada paso dice en este segundo, estos ajustes, y todo lo que no menciones conserva su valor:
{
"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}}
]
}
Los tiempos son segundos desde el inicio de la ejecución, no intervalos entre pasos. Con "loop": true la línea de tiempo vuelve a empezar al terminar, que es lo que quieres para una prueba de resistencia larga: déjala en marcha y usa la aplicación.
BeanNetworkTester.exe --scenario cafe-wifi.json --target myapp.exe
8 escenarios listos para usar vienen con el programa
En la carpeta scenarios junto al ejecutable. Leídos de esos archivos, así que esto es lo que realmente tienes:
| Archivo | Pasos | Duración | Se repite |
|---|---|---|---|
blocked-endpoint.json | 4 | 65 s | sí |
cafe-wifi.json | 5 | 85 s | sí |
congested-vpn.json | 4 | 70 s | sí |
failing-dns.json | 6 | 85 s | sí |
mobile-lte-to-3g.json | 7 | 85 s | sí |
overloaded-game-server.json | 5 | 72 s | sí |
same-loss-in-runs.json | 5 | 100 s | sí |
upload-drop-midway.json | 7 | 75 s | no |
Son texto corriente: abre uno, cambia un número, guarda. Los nombres dicen lo que reproducen: una cafetería llena, una conexión móvil que cae de LTE a 3G, una subida que muere a medias, un servidor que se sobrecarga, un DNS que deja de responder.
Dos formas más sencillas de obtener cambio
Merece la pena escribir un escenario cuando importa la secuencia. Cuando no, dos ajustes varían por su cuenta:
- Enlace que va y viene: una duración de ciclo y qué parte de él está caída. Ciclos de diez segundos, cuatro caídos, para siempre.
- Un plan de velocidad: una serie de velocidades por las que pasa el límite, de modo que la conexión empeora y se recupera sin un archivo.
BeanNetworkTester.exe --flap-period 10 --flap-down 40 --target myapp.exe
Por qué funciona mientras la aplicación está en marcha
Cada ajuste que toca un escenario se aplica en vivo a la sesión que ya está en curso: la aplicación no necesita reiniciarse, ni la herramienta tampoco. El registro de eventos anota cada paso cuando ocurre, así que cuando algo falla puedes ver a qué cambio siguió. Combínalo con una semilla y toda la secuencia, incluida la pérdida aleatoria que contiene, se repite exactamente.