Corte conexões de propósito
Lento é um tipo de ruim. Sumir é outro, e é o que encontra o caminho de código que ninguém escreveu: a reconexão, a nova tentativa, a mensagem que diz ao usuário o que aconteceu.
Essa também é a forma de testar um aplicativo offline sem desconectar nada: o modo LAN mantém a rede local funcionando e tira a internet, e bloquear um endereço deixa um único serviço inacessível enquanto o resto da conexão vai bem.
Cinco jeitos diferentes de sumir
| Configuração | O que o aplicativo vê |
|---|---|
| Redefinir conexões | As conexões morrem no meio da transferência, do jeito que um firewall ou um balanceador de carga as derruba. Você define com que frequência, em porcentagem. |
| Link liga e desliga | A rede some por um tempo e depois volta, de novo e de novo. Você define a duração do ciclo e quanto dele fica fora do ar. |
| Bloquear uma porta | Tudo que vai para essa porta some. Nada mais é tocado. |
| Bloquear um endereço | Um servidor fica inacessível enquanto o resto da internet funciona. |
| Modo LAN | A rede local continua funcionando, a internet não. Exatamente a forma de um portal cativo ou de um uplink morto. |
Pela linha de comando
Derrubar mais ou menos uma conexão em dez, em um aplicativo:
BeanNetworkTester.exe --rst-prob 10 --target myapp.exe --duration 60
Ciclos de dez segundos, quatro deles fora do ar: um link que não para de ir e vir:
BeanNetworkTester.exe --flap-period 10 --flap-down 40 --target myapp.exe
Um servidor inacessível, todo o resto bem:
BeanNetworkTester.exe --block-ip 203.0.113.10
O bloqueio só atinge o que nomeia
Ao contrário de perda ou atraso, bloquear uma porta ou um endereço afeta só o tráfego correspondente. Isso o torna o mais seguro entre esses para rodar sem um processo de destino, e é por isso que “faça essa dependência sumir” é um comando de uma linha.
A armadilha do download morto
Também existe um tamanho máximo de pacote. Reduza um pouco e as transferências grandes ficam lentas. Reduza para um valor como 576 e os downloads param por completo, para sempre, sem nenhum erro, porque isso já não é um tamanho de pacote menor: é o clássico buraco negro em que a rede descarta o que é grande demais e nunca avisa.
É um modo de falha real que vale a pena reproduzir de propósito, e é genuinamente confuso encontrá-lo por acaso. Se um download morre em silêncio logo depois de você mudar essa configuração, é por isso.
Voltando ao normal
STOP restaura tudo. Fechar o programa também, e o limite de tempo também, se você definiu um. Se a própria ferramenta morresse no meio da sessão, um watchdog dentro dela interrompe a captura em vez de deixar a sua rede em um estado quebrado.