Chaos testing di rete su Windows
Il chaos testing significa rompere qualcosa di proposito, mentre guardi, per scoprire cosa fa il tuo software. A livello di rete è esattamente questo strumento: un modo per iniettare un guasto in un’applicazione e vedere se sopravvive.
I guasti che puoi iniettare
| Guasto | Cosa modella |
|---|---|
| Perdita, corruzione, duplicazione | Un percorso degradato. I pacchetti spariscono, arrivano danneggiati o arrivano due volte. |
| Latenza, jitter, picchi | Un percorso lento o instabile, compreso il blocco di diversi secondi che manda in crisi i timeout. |
| Reset delle connessioni | Un firewall o un bilanciatore di carico che uccide le connessioni a metà trasferimento. |
| Interruzioni del collegamento | Il percorso che scompare e ritorna, a cicli. |
| Indirizzo o porta bloccati | Una dipendenza irraggiungibile mentre tutto il resto funziona. |
| Internet assente, LAN viva | La forma del captive portal: il locale funziona, il mondo no. |
Cosa distingue il caos dal rumore: la ripetibilità
Un guasto casuale che non si può rigiocare produce un racconto, non una segnalazione di bug. Ogni decisione casuale qui nasce da un seed, quindi lo stesso comando riproduce la stessa esecuzione: gli stessi pacchetti persi, lo stesso jitter, nello stesso ordine:
BeanNetworkTester.exe --loss 15 --rst-prob 5 --seed 42 --target myapp.exe --duration 120
È la differenza tra «è caduto una volta martedì scorso» e un test che fallisce e che qualcun altro può eseguire.
In una pipeline
La riga di comando riporta con codici di uscita, quindi una build può distinguere «l’applicazione è fallita» da «lo strumento non è riuscito ad avviarsi», e la sessione termina da sola: non c’è nessun passaggio di pulizia da dimenticare:
BeanNetworkTester.exe --loss 10 --rst-prob 5 --target myapp.exe --duration 90 --format json > chaos.ndjson
Una sequenza di guasti invece di uno solo è un file di scenario, e anche questi sono ripetibili. Vedi scenari nel tempo e test di rete in CI per i codici di uscita e il runner che serve.
Dove si ferma il raggio d’azione
Due limiti, entrambi voluti. Il degrado raggiunge un processo, PID, indirizzo o porta quando lo punti, quindi la macchina su cui lavori continua a funzionare. Ed è una sola macchina: questa è iniezione di guasti per un client e la sua connessione, non per un cluster. Se cerchi caos tra servizi e nodi, è un altro tipo di strumento, e questo è il pezzo che rompe la rete sotto una singola applicazione Windows.
Tutto è reversibile all’istante. STOP ripristina la rete, un limite di tempo fa lo stesso, e un watchdog nello strumento chiude la cattura se lo strumento stesso muore: un guasto che hai iniettato non deve mai sopravvivere all’esecuzione che lo ha iniettato.