Desenvolvimento

Como simular internet lenta no ambiente de desenvolvimento

Recentemente trabalhando no desenvolvimento de aplicativos para iPhone me deparei com uma situação bastante comum – infelizmente – que é a velocidade de download de uma Internet 3G versus a performance da aplicação. Isso as vezes é difícil de testar no ambiente de desenvolvimento visto que estamos em uma rede Wifi e muitas vezes com uma conexão com a Internet infinitamente melhor que uma 3G, especialmente em São Paulo, que a rede é mais instável que o aceitável.

Por conta disso, fiz algumas pesquisas e encontrei uma forma legal de testar esse tipo de situação usando a Firewall do próprio MacOS X, o ipfw. O uso é bem simples, vou mostrar alguns comandos:

sudo ipfw pipe 1001 config bw 300KBits/s delay 200

Esse código cria um pipe com o identificador 1001 e configura dois parâmetros: A bandwitch (largura de banda) para 300 KBits/s, e um delay (latência) de 200 milisegundos. Esses dois parâmetros me simulam uma conexão 3G de 300 Kbps (típica da TIM) rodando em um servidor fora do Brasil, tipo o EC2 da Amazon que usamos, que dá uma latência média de 200 ms.

Depois de criar o pipe, temos que aplicá-lo em uma interface de rede com o comando:

sudo ipfw add 1 pipe 1001 src-port 3000

Esse comando cria a regra 1 e aplica o pipe 1001 quando a porta for 3000. Isso porque usamos a aplicação Rails em desenvolvimento na porta 3000 geralmente, mas você pode aplicar a um host na porta 80 se quiser.

Finamente, para excluir a regra você usa o comando abaixo:

sudo ipfw delete 1

Para saber mais sobre o ipfw, dá uma olhada na documentação oficial. Ahhh… se você usa linux, também funciona.

Vi aqui.