Uma alternativa ao Clumsy para Windows
O Clumsy é a ferramenta que a maioria encontra primeiro, e é boa: gratuita, com licença MIT, interativa e construída sobre o mesmo driver WinDivert que esta usa. Se ele faz o que você precisa, use-o. Esta página trata dos casos em que não faz.
O que procurar, qualquer que seja a sua escolha
| Pergunta | Por que ela decide a ferramenta |
|---|---|
| Ele consegue mirar um único aplicativo? | Senão você degrada a máquina em que está trabalhando, inclusive a sessão remota e o navegador em que lê a documentação. |
| Ele tem linha de comando? | Um pipeline não consegue clicar em uma caixa de seleção. Sem uma, um teste de rede nunca pode fazer parte do build. |
| Uma execução é repetível? | Perda aleatória que não pode ser repetida gera relatórios de bug que ninguém mais consegue reproduzir. |
| Ele para sozinho? | Uma ferramenta que depende de você lembrar de desligá-la vai ficar ligada. |
| Dá para saber o que ele realmente fez? | Contadores e uma lista de conexões transformam “pareceu lento” em números. |
O que esta traz
- Mira por processo, PID, endereço ou porta, seguindo a árvore de processos, de modo que um navegador com trinta processos filhos continua sendo um único alvo.
- O mesmo executável é a linha de comando, com um código de saída para cada resultado e saída NDJSON, então funciona no CI.
- Execuções com semente: a mesma semente reproduz a mesma perda aleatória e o mesmo jitter.
- Perfis prontos: 3G, LTE, satélite, uma cafeteria lotada, Wi-Fi de avião, um modem discado de 56k, para você partir de algo crível em vez de chutar números.
- Sessões cronometradas e cenários com roteiro, para que a degradação mude sozinha enquanto você observa o aplicativo.
- Uma visão ao vivo: gráfico, contadores e uma tabela de conexões mostrando qual conexão foi atingida.
- Interface em inglês, polonês e chinês simplificado, e nenhuma telemetria de qualquer tipo.
Se você veio de outra ferramenta
Quatro nomes aparecem sempre que isso é discutido, e eles não são intercambiáveis.
| Você conhece | O que é | O que esperar aqui |
|---|---|---|
| tc com netem | A resposta do Linux, embutida no kernel e controlada pela linha de comando. Muitas vezes o que uma busca por emulação de WAN retorna. | Não existe tc no Windows. Este é o mais próximo em espírito: os mesmos tipos de degradação, uma linha de comando com códigos de saída e um driver em vez de uma disciplina de filas. |
| Clumsy | Uma ferramenta Windows gratuita, com licença MIT e interativa, sobre o mesmo driver WinDivert. | Use-o quando uma janela e um filtro bastarem. Venha para cá se quiser mirar por processo, execuções com semente e uma linha de comando que um pipeline possa chamar. |
| NetLimiter | Um produto Windows comercial para gerenciar a largura de banda por aplicativo, de forma permanente. | Outro trabalho. Este é um instrumento de teste: ligado por um tempo e depois desligado, e degrada muito mais que a velocidade. |
| Fiddler ou Charles | Proxies que podem inspecionar, reescrever e limitar o tráfego que passa por eles. | Também outro trabalho. Um proxy molda o que passa por ele e vê os dados. Este molda a própria conexão, inclusive UDP e tudo que nunca toca em um proxy. |
Em resumo: se você quer um emulador de rede para um aplicativo Windows, com linha de comando, este é o formato de ferramenta que procura. Se quer ler e modificar dados do aplicativo, precisa de um proxy, e se está no Linux já tem o netem.
Quando usar outra coisa
Ser honesto sai mais barato que um download decepcionante.
- Você está no Linux ou no macOS. Isto é só para Windows, e sempre será, pois é construído sobre um driver do Windows. No Linux,
tccomnetemé a resposta padrão e não precisa de software extra. - Você quer gerenciamento permanente de largura de banda para o computador inteiro, por aplicativo, como recurso de um produto e não como teste. É para isso que servem ferramentas comerciais de controle de tráfego como o NetLimiter. Este é um instrumento de teste: foi feito para ser ligado por um tempo e depois desligado.
- Você não consegue permissões de administrador. Capturar pacotes exige isso. Não há como contornar, e uma ferramenta que afirma o contrário não está capturando o seu tráfego.
- Você precisa inspecionar e reescrever dados do aplicativo em vez de degradar o link. Isso é trabalho de proxy.