Throttle is a simple node.js app that makes it easier to test how a website performs on poor network connections. For example, testing a responsive website on a poor 3G connection without actually having to have a poor 3G connection. Simply connect your Mac to ethernet, share the network connection via Airport, run Throttle, and any connected device will then be throttled to the the network speed you specified. Throttle was designed to be used in conjunction with a device lab and products like shim or Adobe Shadow where a shared connection is expected.
Throttle is a simple node.js app that allows you to simulate poor network connections (e.g. like a cellular connection) so you can test how your websites will perform. For example, testing a responsive website on a poor 3G connection without actually having to have a poor 3G connection. To use Throttle simply connect your Mac to ethernet, share that network connection via Airport, turn on Throttle, and any device connected to that WiFi access point will then be throttled to the the network speed you specify via a web-frontend. If you don’t have node.js on your computer don’t fret. It’s very easy to install so you can get Throttle up and running quickly.
It’s important to note that Throttle was designed to be used in conjunction with a device lab and products like shim or Adobe Edge Inspect where a shared connection is expected. That has definitely influenced its design and test cases.
Throttle has some very simple features:
You can see what you'll be getting if you install Throttle.
Throttle requires the following:
I highly encourage you to stay away from 32-bit-only Macs as your Throttle platform.
Installing Throttle requires modifying several different parts of your Mac.
Throttle is simply a web-based wrapper for ipfw. Unfortunately, ipfw requires
sudoto run and, therefore, will prompt for a password when the command is run. This doesn't work well for a web-based product. To make sure Throttle and ipfw can run without a password do:
i, hit a carriage return so you have a new line and then type:
[your username] ALL= NOPASSWD: /sbin/ipfw
Install node from http://nodejs.org/. They have a handy Mac OS X installer
Run the following commands from the command line:
git clone git://github.com/dmolsen/Throttle.git
npm install express
npm install jade
You should now have Throttle running on port 3000. If the
nodecommand was unrecognized try
/usr/local/bin/node app.jsfor step #5
Turn on Internet Sharing so your mobile devices can connect to your Mac as a WiFi access point:
Any device that uses that WiFi access point will now be throttled based on the options you choose when you configure network performance via Throttle's admin.
The easiest way to connect to Throttle from multiple desktops (e.g. designers and developers want to log on from personal machines) is by using xip.io. To do so:
10.0.x.xis replaced with the IP address from step #2
You should now see the Throttle admin page. As long as any designers or developers connect to the new WiFi access point they should be able to enter in the xip.io address and change the settings.
To use Adobe Edge Inspect with Throttle simply make sure all of your devices and your desktop machine are connected to the WiFi point from the Mac Throttle is running on. Note that any latency or other options (but especially latency) will affect the speed of Adobe Edge Inspect. I'll need to look into that.
Another ipfw tool for the Mac is WaterRoof. If you want to test network connection speeds you can always check-out the speedtest.net app for iOS and Android as well as, obviously, the speedtest.net website.
Throttle started as a hack to shim so thanks to that project and the team at Boston Globe for the inspiration. The presets are derived from Apple's Network Link Conditioner tool and Guy Podjarny's presentation, The Mobile Difference in Numbers. Throttle uses Twitter Bootstrap and Glyphicons for design elements.