Testes de caos de rede no Windows
Teste de caos significa quebrar algo de propósito, enquanto você observa, para descobrir o que o seu software faz a respeito. Na camada de rede, é exatamente isso que esta ferramenta é: uma forma de injetar uma falha em um aplicativo e ver se ele sobrevive.
As falhas que você pode injetar
| Falha | O que ela modela |
|---|---|
| Perda, corrupção, duplicação | Um caminho degradado. Pacotes somem, chegam danificados ou chegam duas vezes. |
| Latência, jitter, picos | Um caminho lento ou instável, incluindo a travada de vários segundos que quebra timeouts. |
| Redefinições de conexão | Um firewall ou um balanceador de carga derrubando conexões no meio da transferência. |
| Quedas do link | O caminho some e volta, em um ciclo. |
| Endereço ou porta bloqueada | Uma dependência inacessível enquanto todo o resto funciona. |
| Internet fora, LAN viva | A forma do portal cativo: o local funciona, o mundo não. |
O que separa caos de ruído: repetibilidade
Uma falha aleatória que não pode ser repetida produz uma história, não um relatório de bug. Toda decisão aleatória aqui vem de uma semente, então o mesmo comando reproduz a mesma execução: os mesmos pacotes perdidos, o mesmo jitter, na mesma ordem:
BeanNetworkTester.exe --loss 15 --rst-prob 5 --seed 42 --target myapp.exe --duration 120
Essa é a diferença entre “caiu uma vez na terça passada” e um teste que falha e que outra pessoa pode rodar.
Em um pipeline
A linha de comando informa por códigos de saída, então um build consegue distinguir “o aplicativo falhou” de “a ferramenta não conseguiu iniciar”, e a sessão termina sozinha: não há etapa de limpeza para esquecer:
BeanNetworkTester.exe --loss 10 --rst-prob 5 --target myapp.exe --duration 90 --format json > chaos.ndjson
Uma sequência de falhas em vez de uma só é um arquivo de cenário, e esses também são repetíveis. Veja cenários no tempo e testes de rede no CI para os códigos de saída e o runner de que ele precisa.
Onde o raio de impacto termina
Dois limites, e ambos são deliberados. A degradação alcança um processo, PID, endereço ou porta quando você mira, então a máquina em que você trabalha continua funcionando. E é uma única máquina: isto é injeção de falhas para um cliente e a sua conexão, não para um cluster. Se você procura caos entre serviços e nós, é outro tipo de ferramenta, e esta é a peça que quebra a rede sob um único aplicativo do Windows.
Tudo é reversível na hora. STOP restaura a rede, um limite de tempo faz o mesmo, e um watchdog dentro da ferramenta desliga a captura se a própria ferramenta morrer: uma falha que você injetou nunca pode sobreviver à execução que a injetou.