GithubHelp home page GithubHelp logo

shopify / toxiproxy Goto Github PK

View Code? Open in Web Editor NEW
10.3K 556.0 438.0 3.35 MB

:alarm_clock: :fire: A TCP proxy to simulate network and system conditions for chaos and resiliency testing

Home Page: https://github.com/shopify/toxiproxy

License: MIT License

Go 93.48% Makefile 0.93% Dockerfile 0.09% Shell 5.50%
resiliency tcp-proxy go proxy chaos testing omg is down

toxiproxy's Introduction

Toxiproxy

GitHub release Build Status

Toxiproxy is a framework for simulating network conditions. It's made specifically to work in testing, CI and development environments, supporting deterministic tampering with connections, but with support for randomized chaos and customization. Toxiproxy is the tool you need to prove with tests that your application doesn't have single points of failure. We've been successfully using it in all development and test environments at Shopify since October, 2014. See our blog post on resiliency for more information.

Toxiproxy usage consists of two parts. A TCP proxy written in Go (what this repository contains) and a client communicating with the proxy over HTTP. You configure your application to make all test connections go through Toxiproxy and can then manipulate their health via HTTP. See Usage below on how to set up your project.

For example, to add 1000ms of latency to the response of MySQL from the Ruby client:

Toxiproxy[:mysql_master].downstream(:latency, latency: 1000).apply do
  Shop.first # this takes at least 1s
end

To take down all Redis instances:

Toxiproxy[/redis/].down do
  Shop.first # this will throw an exception
end

While the examples in this README are currently in Ruby, there's nothing stopping you from creating a client in any other language (see Clients).

Table of Contents

Why yet another chaotic TCP proxy?

The existing ones we found didn't provide the kind of dynamic API we needed for integration and unit testing. Linux tools like nc and so on are not cross-platform and require root, which makes them problematic in test, development and CI environments.

Clients

Example

Let's walk through an example with a Rails application. Note that Toxiproxy is in no way tied to Ruby, it's just been our first use case. You can see the full example at sirupsen/toxiproxy-rails-example. To get started right away, jump down to Usage.

For our popular blog, for some reason we're storing the tags for our posts in Redis and the posts themselves in MySQL. We might have a Post class that includes some methods to manipulate tags in a Redis set:

class Post < ActiveRecord::Base
  # Return an Array of all the tags.
  def tags
    TagRedis.smembers(tag_key)
  end

  # Add a tag to the post.
  def add_tag(tag)
    TagRedis.sadd(tag_key, tag)
  end

  # Remove a tag from the post.
  def remove_tag(tag)
    TagRedis.srem(tag_key, tag)
  end

  # Return the key in Redis for the set of tags for the post.
  def tag_key
    "post:tags:#{self.id}"
  end
end

We've decided that erroring while writing to the tag data store (adding/removing) is OK. However, if the tag data store is down, we should be able to see the post with no tags. We could simply rescue the Redis::CannotConnectError around the SMEMBERS Redis call in the tags method. Let's use Toxiproxy to test that.

Since we've already installed Toxiproxy and it's running on our machine, we can skip to step 2. This is where we need to make sure Toxiproxy has a mapping for Redis tags. To config/boot.rb (before any connection is made) we add:

require 'toxiproxy'

Toxiproxy.populate([
  {
    name: "toxiproxy_test_redis_tags",
    listen: "127.0.0.1:22222",
    upstream: "127.0.0.1:6379"
  }
])

Then in config/environments/test.rb we set the TagRedis to be a Redis client that connects to Redis through Toxiproxy by adding this line:

TagRedis = Redis.new(port: 22222)

All calls in the test environment now go through Toxiproxy. That means we can add a unit test where we simulate a failure:

test "should return empty array when tag redis is down when listing tags" do
  @post.add_tag "mammals"

  # Take down all Redises in Toxiproxy
  Toxiproxy[/redis/].down do
    assert_equal [], @post.tags
  end
end

The test fails with Redis::CannotConnectError. Perfect! Toxiproxy took down the Redis successfully for the duration of the closure. Let's fix the tags method to be resilient:

def tags
  TagRedis.smembers(tag_key)
rescue Redis::CannotConnectError
  []
end

The tests pass! We now have a unit test that proves fetching the tags when Redis is down returns an empty array, instead of throwing an exception. For full coverage you should also write an integration test that wraps fetching the entire blog post page when Redis is down.

Full example application is at sirupsen/toxiproxy-rails-example.

Usage

Configuring a project to use Toxiproxy consists of three steps:

  1. Installing Toxiproxy
  2. Populating Toxiproxy
  3. Using Toxiproxy

1. Installing Toxiproxy

Linux

See Releases for the latest binaries and system packages for your architecture.

Ubuntu

$ wget -O toxiproxy-2.1.4.deb https://github.com/Shopify/toxiproxy/releases/download/v2.1.4/toxiproxy_2.1.4_amd64.deb
$ sudo dpkg -i toxiproxy-2.1.4.deb
$ sudo service toxiproxy start

OS X

With Homebrew:

$ brew tap shopify/shopify
$ brew install toxiproxy

Or with MacPorts:

$ port install toxiproxy

Windows

Toxiproxy for Windows is available for download at https://github.com/Shopify/toxiproxy/releases/download/v2.1.4/toxiproxy-server-windows-amd64.exe

Docker

Toxiproxy is available on Github container registry. Old versions <= 2.1.4 are available on on Docker Hub.

$ docker pull ghcr.io/shopify/toxiproxy
$ docker run --rm -it ghcr.io/shopify/toxiproxy

If using Toxiproxy from the host rather than other containers, enable host networking with --net=host.

$ docker run --rm --entrypoint="/toxiproxy-cli" -it ghcr.io/shopify/toxiproxy list

Source

If you have Go installed, you can build Toxiproxy from source using the make file:

$ make build
$ ./toxiproxy-server

Upgrading from Toxiproxy 1.x

In Toxiproxy 2.0 several changes were made to the API that make it incompatible with version 1.x. In order to use version 2.x of the Toxiproxy server, you will need to make sure your client library supports the same version. You can check which version of Toxiproxy you are running by looking at the /version endpoint.

See the documentation for your client library for specific library changes. Detailed changes for the Toxiproxy server can been found in CHANGELOG.md.

2. Populating Toxiproxy

When your application boots, it needs to make sure that Toxiproxy knows which endpoints to proxy where. The main parameters are: name, address for Toxiproxy to listen on and the address of the upstream.

Some client libraries have helpers for this task, which is essentially just making sure each proxy in a list is created. Example from the Ruby client:

# Make sure `shopify_test_redis_master` and `shopify_test_mysql_master` are
# present in Toxiproxy
Toxiproxy.populate([
  {
    name: "shopify_test_redis_master",
    listen: "127.0.0.1:22220",
    upstream: "127.0.0.1:6379"
  },
  {
    name: "shopify_test_mysql_master",
    listen: "127.0.0.1:24220",
    upstream: "127.0.0.1:3306"
  }
])

This code needs to run as early in boot as possible, before any code establishes a connection through Toxiproxy. Please check your client library for documentation on the population helpers.

Alternatively use the CLI to create proxies, e.g.:

toxiproxy-cli create -l localhost:26379 -u localhost:6379 shopify_test_redis_master

We recommend a naming such as the above: <app>_<env>_<data store>_<shard>. This makes sure there are no clashes between applications using the same Toxiproxy.

For large application we recommend storing the Toxiproxy configurations in a separate configuration file. We use config/toxiproxy.json. This file can be passed to the server using the -config option, or loaded by the application to use with the populate function.

An example config/toxiproxy.json:

[
  {
    "name": "web_dev_frontend_1",
    "listen": "[::]:18080",
    "upstream": "webapp.domain:8080",
    "enabled": true
  },
  {
    "name": "web_dev_mysql_1",
    "listen": "[::]:13306",
    "upstream": "database.domain:3306",
    "enabled": true
  }
]

Use ports outside the ephemeral port range to avoid random port conflicts. It's 32,768 to 61,000 on Linux by default, see /proc/sys/net/ipv4/ip_local_port_range.

3. Using Toxiproxy

To use Toxiproxy, you now need to configure your application to connect through Toxiproxy. Continuing with our example from step two, we can configure our Redis client to connect through Toxiproxy:

# old straight to redis
redis = Redis.new(port: 6380)

# new through toxiproxy
redis = Redis.new(port: 22220)

Now you can tamper with it through the Toxiproxy API. In Ruby:

redis = Redis.new(port: 22220)

Toxiproxy[:shopify_test_redis_master].downstream(:latency, latency: 1000).apply do
  redis.get("test") # will take 1s
end

Or via the CLI:

toxiproxy-cli toxic add -t latency -a latency=1000 shopify_test_redis_master

Please consult your respective client library on usage.

4. Logging

There are the following log levels: panic, fatal, error, warn or warning, info, debug and trace. The level could be updated via environment variable LOG_LEVEL.

Toxics

Toxics manipulate the pipe between the client and upstream. They can be added and removed from proxies using the HTTP api. Each toxic has its own parameters to change how it affects the proxy links.

For documentation on implementing custom toxics, see CREATING_TOXICS.md

latency

Add a delay to all data going through the proxy. The delay is equal to latency +/- jitter.

Attributes:

  • latency: time in milliseconds
  • jitter: time in milliseconds

down

Bringing a service down is not technically a toxic in the implementation of Toxiproxy. This is done by POSTing to /proxies/{proxy} and setting the enabled field to false.

bandwidth

Limit a connection to a maximum number of kilobytes per second.

Attributes:

  • rate: rate in KB/s

slow_close

Delay the TCP socket from closing until delay has elapsed.

Attributes:

  • delay: time in milliseconds

timeout

Stops all data from getting through, and closes the connection after timeout. If timeout is 0, the connection won't close, and data will be delayed until the toxic is removed.

Attributes:

  • timeout: time in milliseconds

reset_peer

Simulate TCP RESET (Connection reset by peer) on the connections by closing the stub Input immediately or after a timeout.

Attributes:

  • timeout: time in milliseconds

slicer

Slices TCP data up into small bits, optionally adding a delay between each sliced "packet".

Attributes:

  • average_size: size in bytes of an average packet
  • size_variation: variation in bytes of an average packet (should be smaller than average_size)
  • delay: time in microseconds to delay each packet by

limit_data

Closes connection when transmitted data exceeded limit.

  • bytes: number of bytes it should transmit before connection is closed

HTTP API

All communication with the Toxiproxy daemon from the client happens through the HTTP interface, which is described here.

Toxiproxy listens for HTTP on port 8474.

Proxy fields:

  • name: proxy name (string)
  • listen: listen address (string)
  • upstream: proxy upstream address (string)
  • enabled: true/false (defaults to true on creation)

To change a proxy's name, it must be deleted and recreated.

Changing the listen or upstream fields will restart the proxy and drop any active connections.

If listen is specified with a port of 0, toxiproxy will pick an ephemeral port. The listen field in the response will be updated with the actual port.

If you change enabled to false, it will take down the proxy. You can switch it back to true to reenable it.

Toxic fields:

  • name: toxic name (string, defaults to <type>_<stream>)
  • type: toxic type (string)
  • stream: link direction to affect (defaults to downstream)
  • toxicity: probability of the toxic being applied to a link (defaults to 1.0, 100%)
  • attributes: a map of toxic-specific attributes

See Toxics for toxic-specific attributes.

The stream direction must be either upstream or downstream. upstream applies the toxic on the client -> server connection, while downstream applies the toxic on the server -> client connection. This can be used to modify requests and responses separately.

Endpoints

All endpoints are JSON.

  • GET /proxies - List existing proxies and their toxics
  • POST /proxies - Create a new proxy
  • POST /populate - Create or replace a list of proxies
  • GET /proxies/{proxy} - Show the proxy with all its active toxics
  • POST /proxies/{proxy} - Update a proxy's fields
  • DELETE /proxies/{proxy} - Delete an existing proxy
  • GET /proxies/{proxy}/toxics - List active toxics
  • POST /proxies/{proxy}/toxics - Create a new toxic
  • GET /proxies/{proxy}/toxics/{toxic} - Get an active toxic's fields
  • POST /proxies/{proxy}/toxics/{toxic} - Update an active toxic
  • DELETE /proxies/{proxy}/toxics/{toxic} - Remove an active toxic
  • POST /reset - Enable all proxies and remove all active toxics
  • GET /version - Returns the server version number
  • GET /metrics - Returns Prometheus-compatible metrics

Populating Proxies

Proxies can be added and configured in bulk using the /populate endpoint. This is done by passing a json array of proxies to toxiproxy. If a proxy with the same name already exists, it will be compared to the new proxy and replaced if the upstream and listen address don't match.

A /populate call can be included for example at application start to ensure all required proxies exist. It is safe to make this call several times, since proxies will be untouched as long as their fields are consistent with the new data.

CLI Example

$ toxiproxy-cli create -l localhost:26379 -u localhost:6379 redis
Created new proxy redis
$ toxiproxy-cli list
Listen          Upstream        Name  Enabled Toxics
======================================================================
127.0.0.1:26379 localhost:6379  redis true    None

Hint: inspect toxics with `toxiproxy-client inspect <proxyName>`
$ redis-cli -p 26379
127.0.0.1:26379> SET omg pandas
OK
127.0.0.1:26379> GET omg
"pandas"
$ toxiproxy-cli toxic add -t latency -a latency=1000 redis
Added downstream latency toxic 'latency_downstream' on proxy 'redis'
$ redis-cli -p 26379
127.0.0.1:26379> GET omg
"pandas"
(1.00s)
127.0.0.1:26379> DEL omg
(integer) 1
(1.00s)
$ toxiproxy-cli toxic remove -n latency_downstream redis
Removed toxic 'latency_downstream' on proxy 'redis'
$ redis-cli -p 26379
127.0.0.1:26379> GET omg
(nil)
$ toxiproxy-cli delete redis
Deleted proxy redis
$ redis-cli -p 26379
Could not connect to Redis at 127.0.0.1:26379: Connection refused

Metrics

Toxiproxy exposes Prometheus-compatible metrics via its HTTP API at /metrics. See METRICS.md for full descriptions

Frequently Asked Questions

How fast is Toxiproxy? The speed of Toxiproxy depends largely on your hardware, but you can expect a latency of < 100µs when no toxics are enabled. When running with GOMAXPROCS=4 on a Macbook Pro we achieved ~1000MB/s throughput, and as high as 2400MB/s on a higher end desktop. Basically, you can expect Toxiproxy to move data around at least as fast the app you're testing.

Can Toxiproxy do randomized testing? Many of the available toxics can be configured to have randomness, such as jitter in the latency toxic. There is also a global toxicity parameter that specifies the percentage of connections a toxic will affect. This is most useful for things like the timeout toxic, which would allow X% of connections to timeout.

I am not seeing my Toxiproxy actions reflected for MySQL. MySQL will prefer the local Unix domain socket for some clients, no matter which port you pass it if the host is set to localhost. Configure your MySQL server to not create a socket, and use 127.0.0.1 as the host. Remember to remove the old socket after you restart the server.

Toxiproxy causes intermittent connection failures. Use ports outside the ephemeral port range to avoid random port conflicts. It's 32,768 to 61,000 on Linux by default, see /proc/sys/net/ipv4/ip_local_port_range.

Should I run a Toxiproxy for each application? No, we recommend using the same Toxiproxy for all applications. To distinguish between services we recommend naming your proxies with the scheme: <app>_<env>_<data store>_<shard>. For example, shopify_test_redis_master or shopify_development_mysql_1.

Development

  • make. Build a toxiproxy development binary for the current platform.
  • make all. Build Toxiproxy binaries and packages for all platforms. Requires to have Go compiled with cross compilation enabled on Linux and Darwin (amd64) as well as goreleaser in your $PATH to build binaries the Linux package.
  • make test. Run the Toxiproxy tests.

Release

See RELEASE.md

toxiproxy's People

Contributors

abecevello avatar amake avatar areveny avatar chaosbox avatar claycarpenter avatar connor4312 avatar cristaloleg avatar crunch09 avatar dependabot[bot] avatar dianadevasia avatar dnwe avatar epk avatar fw42 avatar ihsw avatar jackmc avatar jcambass avatar jduff avatar jpittis avatar matez avatar mdevilliers avatar miry avatar neufeldtech avatar nothinux avatar nytins avatar pedro-stanaka avatar shivnagarajan avatar sirupsen avatar strech avatar xthexder avatar zllak avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

toxiproxy's Issues

Go API

We should have a Go API for toxiproxy. It wouldn't be hard to test, as it's essentially what's already in api_test.go, it just needs to be in a sub package that can be imported independently of the Toxiproxy daeamon.

Better Go api

The current Go API is pretty low-level, something with closures or a context object would be great.

DNS

A lot of software assumes fast DNS lookups. Let's challenge assumptions!

@xthexder

toxiproxy-cli hangs in docker connecting to local toxproxy (related to internet?)

hello!
new toxiproxy user here, trying out my first toxic steps.
I run it in docker, using the latest image that was just pushed today.
just 1 proxy and 1 backend, very light load.

i noticed that toxiproxy-cli, which worked fine first to add a proxy and a toxic, on subsequest commands started hanging. i ctrl-c'd the commands after they hung for minutes (the last 3 commands).

interesting to mention: around the same time my internet connection also became slow and started timing out. while everything is local in a dockerstack entirely on my laptop, maybe my internet has something to do with it? has anyone experienced something like this before?

root@toxiproxy:/app/src/github.com/Shopify/toxiproxy# toxiproxy-cli inspect cassandra
Name: cassandra Listen: [::]:9042       Upstream: cassandra:9042
======================================================================
Upstream toxics:
Proxy has no Upstream toxics enabled.

Downstream toxics:
latency_downstream: type=latency stream=downstream toxicity=1.00 attributes=[ jitter=500 latency=1000 ]

Hint: add a toxic with `toxiproxy-cli toxic add`
root@toxiproxy:/app/src/github.com/Shopify/toxiproxy# toxiproxy-cli toxic delete cassandra -n latency_downstream:
Failed to remove toxic: RemoveToxic: HTTP 404: toxic not found
root@toxiproxy:/app/src/github.com/Shopify/toxiproxy# toxiproxy-cli toxic delete cassandra -n latency_downstream 
^C
root@toxiproxy:/app/src/github.com/Shopify/toxiproxy# toxiproxy-cli toxic delete cassandra -n latency_downstream
^C
root@toxiproxy:/app/src/github.com/Shopify/toxiproxy# toxiproxy-cli list                                         
^C

Change to IP proxy instead of TCP proxy

It'd make sense for the proxy to be at layer 3, instead of layer 4. Means we can re-order packets, etc., and rely on the TCP implementation to provide the stream. It'd also make us able to support UDP, SCTP, etc.

@xthexder

Protocol aware toxics

We could build protocol aware toxics, e.g.

  • HTTP. Send extremely large headers, slow headers, slow body but fast headers, 5xx, infinite redirects..
  • Redis. Slow writes and fast reads, out of memory conditions (reads but no writes), ..

404s for toxics and reset

I set up Toxiproxy(1.2.1 from the .deb) with 3 servers. When i go to http://localhost:8474/proxies or do Toxiproxy.all I get results back, but when I try to examine the toxics for any of the servers, it 404s. Same with Toxiproxy.reset. Surely there's something simple I'm missing.

Individual proxies work as well. Toxiproxy[:my_service] works fine. It's Toxiproxy[:my_service].toxics that 404s

docker image no longer updating?

Hello,
toxiproxy looks like a neat project. looking forward to play with it.
on https://hub.docker.com/r/shopify/toxiproxy/tags/ i see that the last image push was 6 months ago, whereas https://github.com/Shopify/toxiproxy/blob/master/Dockerfile was updated less than 2 months ago
also the current latest image has nothing in /go/bin, and no toxiproxy-cli binary anywhere:

root@toxiproxy:/go# find / -name toxiproxy-cli
root@toxiproxy:/go# ls -alh bin/
total 8.0K
drwxrwxrwx 2 root root 4.0K Oct 24  2015 .
drwxrwxrwx 4 root root 4.0K Oct 24  2015 ..
root@toxiproxy:/go# 

looking forward to have new images that have the toxiproxy-cli binary included. thanks

Issues with re-routing https traffic

Hi,

I'm trying to setup a proxy for the https port 443.
I've made the change such that the service in my VM runs on 488, and have used toxy-proxy cli to create a proxy which runs on 443, and forwards it to 488.

./toxiproxy-cli-linux-amd64 create Navaneethan --listen localhost:443 --upstream localhost:488

The problem however is, I see a bunch of "source Terminated" messages on the toxy-proxy-server.
Something like this.

My question is, does toxy proxy support https traffic routing ? What am I missing. Is there any specific configuration change on the apache webserver that lets me route the https traffic ?

Any help is appreciated.

INFO[0016] Started proxy name=Navaneethan proxy=16.125.74.114:443 upstream=ci-0050569a4a60.vse.rdlabs.hpecorp.net:488
INFO[0018] Accepted client client=16.78.175.17:39824 name=Navaneethan proxy=16.125.74.114:443 upstream=ci-0050569a4a60.vse.rdlabs.hpecorp.net:488
WARN[0018] Source terminated bytes=517 err=read tcp 16.125.74.114:443->16.78.175.17:39824: use of closed network connection name=Navaneethan
INFO[0018] Accepted client client=16.78.175.17:39825 name=Navaneethan proxy=16.125.74.114:443 upstream=ci-0050569a4a60.vse.rdlabs.hpecorp.net:488
WARN[0018] Source terminated bytes=178 err=read tcp 16.125.74.114:443->16.78.175.17:39825: use of closed network connection name=Navaneethan
INFO[0020] Accepted client client=16.78.175.17:39826 name=Navaneethan proxy=16.125.74.114:443 upstream=ci-0050569a4a60.vse.rdlabs.hpecorp.net:488
INFO[0020] Accepted client client=16.78.175.17:39827 name=Navaneethan proxy=16.125.74.114:443 upstream=ci-0050569a4a60.vse.rdlabs.hpecorp.net:488
INFO[0020] Accepted client client=16.78.175.17:39828 name=Navaneethan proxy=16.125.74.114:443 upstream=ci-0050569a4a60.vse.rdlabs.hpecorp.net:488
WARN[0020] Source terminated bytes=517 err=read tcp 16.125.74.114:443->16.78.175.17:39827: use of closed network connection name=Navaneethan
WARN[0020] Source terminated bytes=517 err=read tcp 16.125.74.114:443->16.78.175.17:39826: use of closed network connection name=Navaneethan
INFO[0020] Accepted client client=16.78.175.17:39829 name=Navaneethan proxy=16.125.74.114:443 upstream=ci-0050569a4a60.vse.rdlabs.hpecorp.net:488
INFO[0020] Accepted client client=16.78.175.17:39830 name=Navaneethan proxy=16.125.74.114:443 upstream=ci-0050569a4a60.vse.rdlabs.hpecorp.net:488
INFO[0020] Accepted client client=16.78.175.17:39831 name=Navaneethan proxy=16.125.74.114:443 upstream=ci-0050569a4a60.vse.rdlabs.hpecorp.net:488

the deb package does not install any init.d file

The README mentions

wget -O toxiproxy-1.2.1.deb https://github.com/Shopify/toxiproxy/releases/download/v1.2.1/toxiproxy_1.2.1_amd64.deb
$ sudo dpkg -i toxiproxy-1.2.1.deb
$ sudo service toxiproxy start

for ubuntu, however when installing it on a ubuntu 14.04 , I can't do the service start

cli: Allow host to be specified

At Shopify we use a VM to run services that a project depends on, including toxiproxy. Unfortunately, toxiprox-cli is hard coded to use localhost. That means that toxiproxy-cli can't be used from outside of the VM

I think there should be a global option to specify the host. E.g. toxiproxy-cli --host=example.com list

better CLI error handling

#112 updates our CLI library to a newer version with better error handling. We should figure out how this error handling works and change toxiAction to support the new error handling if it's a cleaner solution.

toxiAction should be updated to look something like this.

type toxiAction func(*cli.Context, *toxiproxy.Client) error

return func(c *cli.Context) error {
    return f(c, t)
}

And then all the action error handling should be ported to the new API.

No docker image?

It seems so that no docker image is available ❗ ❓

tuxinaut::sm191 { ~/workspace } -> $ sudo docker pull shopify/toxiproxy
Pulling repository shopify/toxiproxy
FATA[0002] Tag latest not found in repository shopify/toxiproxy 
tuxinaut::sm191 { ~/workspace } -> $

Hang when calling reset

SIGQUIT: quit
PC=0x44a891

goroutine 0 [idle]:
runtime.futex(0x8b7c78, 0x0, 0x0, 0x0, 0x0, 0x8b73c0, 0x1, 0x41944f, 0x41966e, 0x8b7c78, ...)
    /usr/local/Cellar/go/1.4/libexec/src/runtime/sys_linux_amd64.s:277 +0x21
runtime.futexsleep(0x8b7c78, 0x200000000, 0xffffffffffffffff)
    /usr/local/Cellar/go/1.4/libexec/src/runtime/os_linux.c:49 +0x47
runtime.notesleep(0x8b7c78)
    /usr/local/Cellar/go/1.4/libexec/src/runtime/lock_futex.go:145 +0xae
stopm()
    /usr/local/Cellar/go/1.4/libexec/src/runtime/proc.c:1178 +0x119
exitsyscall0(0xc2080a77a0)
    /usr/local/Cellar/go/1.4/libexec/src/runtime/proc.c:2020 +0xd8
runtime.mcall(0x43dec4)
    /usr/local/Cellar/go/1.4/libexec/src/runtime/asm_amd64.s:186 +0x5a

goroutine 1 [IO wait, 1 minutes]:
net.(*pollDesc).Wait(0xc2080847d0, 0x72, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_poll_runtime.go:84 +0x47
net.(*pollDesc).WaitRead(0xc2080847d0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_poll_runtime.go:89 +0x43
net.(*netFD).accept(0xc208084770, 0x0, 0x7f0070851b70, 0xc208373760)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_unix.go:419 +0x40b
net.(*TCPListener).AcceptTCP(0xc2080420d8, 0x4cc1fe, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/tcpsock_posix.go:234 +0x4e
net/http.tcpKeepAliveListener.Accept(0xc2080420d8, 0x0, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/http/server.go:1976 +0x4c
net/http.(*Server).Serve(0xc20800ca80, 0x7f00708531c0, 0xc2080420d8, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/http/server.go:1728 +0x92
net/http.(*Server).ListenAndServe(0xc20800ca80, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/http/server.go:1718 +0x154
net/http.ListenAndServe(0xc2080886b0, 0xc, 0x0, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/http/server.go:1808 +0xba
main.(*server).Listen(0xc208042020, 0x7fff489ebf4e, 0x7, 0x7fff489ebf43, 0x4)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/api.go:46 +0xfc0
main.main()
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxiproxy.go:25 +0x10a

goroutine 692 [chan receive, 1 minutes]:
main.(*TimeoutToxic).Pipe(0xc208089c80, 0xc208364e00)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_timeout.go:36 +0x15a
created by main.(*ToxicLink).SetToxic
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:81 +0xc6

goroutine 967 [select]:
main.(*NoopToxic).Pipe(0x8bf8d0, 0xc208699a60)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_noop.go:18 +0x19b
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:60 +0x223

goroutine 966 [select]:
main.(*NoopToxic).Pipe(0x8bf8d0, 0xc208699a40)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_noop.go:18 +0x19b
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:60 +0x223

goroutine 942 [select]:
main.(*NoopToxic).Pipe(0x8bf8d0, 0xc208698ce0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_noop.go:18 +0x19b
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:60 +0x223

goroutine 943 [chan receive]:
main.(*ChanReader).Read(0xc208698d00, 0xc2084c6000, 0x8000, 0x8000, 0xa, 0x0, 0x0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/io_chan.go:58 +0x45f
io.Copy(0x7f0070853a18, 0xc20846a410, 0x7f00708539a0, 0xc208698d00, 0x325, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:362 +0x1f6
net.genericReadFrom(0x7f0070853258, 0xc208042a70, 0x7f00708539a0, 0xc208698d00, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/net.go:404 +0xb5
net.(*TCPConn).ReadFrom(0xc208042a70, 0x7f00708539a0, 0xc208698d00, 0x7f00708539f0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/tcpsock_posix.go:72 +0xe0
io.Copy(0x7f0070853258, 0xc208042a70, 0x7f00708539a0, 0xc208698d00, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:358 +0x13d
main.func·002()
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:63 +0xb8
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:75 +0x2e0

goroutine 806 [select]:
main.(*NoopToxic).Pipe(0x8bf8d0, 0xc20848d0e0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_noop.go:18 +0x19b
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:60 +0x223

goroutine 805 [select]:
main.(*NoopToxic).Pipe(0x8bf8d0, 0xc20848d0c0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_noop.go:18 +0x19b
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:60 +0x223

goroutine 16 [IO wait, 1 minutes]:
net.(*pollDesc).Wait(0xc208010e60, 0x72, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_poll_runtime.go:84 +0x47
net.(*pollDesc).WaitRead(0xc208010e60, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_poll_runtime.go:89 +0x43
net.(*netFD).accept(0xc208010e00, 0x0, 0x7f0070851b70, 0xc2085e0160)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_unix.go:419 +0x40b
net.(*TCPListener).AcceptTCP(0xc208042220, 0x7f00708538f8, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/tcpsock_posix.go:234 +0x4e
net.(*TCPListener).Accept(0xc208042220, 0x0, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/tcpsock_posix.go:244 +0x4c
main.(*Proxy).server(0xc20805a7e0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/proxy.go:137 +0x630
created by main.start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/proxy.go:198 +0x78

goroutine 17 [chan receive, 7 minutes]:
main.func·003()
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/proxy.go:117 +0x7c
created by main.(*Proxy).server
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/proxy.go:134 +0x608

goroutine 935 [select]:
main.(*NoopToxic).Pipe(0x8bf8d0, 0xc208698ba0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_noop.go:18 +0x19b
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:60 +0x223

goroutine 934 [IO wait]:
net.(*pollDesc).Wait(0xc2080845a0, 0x72, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_poll_runtime.go:84 +0x47
net.(*pollDesc).WaitRead(0xc2080845a0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_poll_runtime.go:89 +0x43
net.(*netFD).Read(0xc208084540, 0xc2084ae000, 0x8000, 0x8000, 0x0, 0x7f0070851b70, 0xc2083737e8)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_unix.go:242 +0x40f
net.(*conn).Read(0xc208042a70, 0xc2084ae000, 0x8000, 0x8000, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/net.go:121 +0xdc
io.Copy(0x7f0070853928, 0xc208042a80, 0x7f0070853280, 0xc208042a70, 0x26e6, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:362 +0x1f6
main.func·001()
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:48 +0x7e
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:58 +0x13e

goroutine 22 [IO wait, 1 minutes]:
net.(*pollDesc).Wait(0xc208011330, 0x72, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_poll_runtime.go:84 +0x47
net.(*pollDesc).WaitRead(0xc208011330, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_poll_runtime.go:89 +0x43
net.(*netFD).accept(0xc2080112d0, 0x0, 0x7f0070851b70, 0xc2081331e8)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_unix.go:419 +0x40b
net.(*TCPListener).AcceptTCP(0xc2080422c0, 0x7f00708538f8, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/tcpsock_posix.go:234 +0x4e
net.(*TCPListener).Accept(0xc2080422c0, 0x0, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/tcpsock_posix.go:244 +0x4c
main.(*Proxy).server(0xc20805ab40)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/proxy.go:137 +0x630
created by main.start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/proxy.go:198 +0x78

goroutine 23 [chan receive, 7 minutes]:
main.func·003()
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/proxy.go:117 +0x7c
created by main.(*Proxy).server
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/proxy.go:134 +0x608

goroutine 25 [IO wait]:
net.(*pollDesc).Wait(0xc208011560, 0x72, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_poll_runtime.go:84 +0x47
net.(*pollDesc).WaitRead(0xc208011560, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_poll_runtime.go:89 +0x43
net.(*netFD).accept(0xc208011500, 0x0, 0x7f0070851b70, 0xc2082379d0)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_unix.go:419 +0x40b
net.(*TCPListener).AcceptTCP(0xc208042310, 0x7f00708538f8, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/tcpsock_posix.go:234 +0x4e
net.(*TCPListener).Accept(0xc208042310, 0x0, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/tcpsock_posix.go:244 +0x4c
main.(*Proxy).server(0xc20805acf0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/proxy.go:137 +0x630
created by main.start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/proxy.go:198 +0x78

goroutine 26 [chan receive, 7 minutes]:
main.func·003()
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/proxy.go:117 +0x7c
created by main.(*Proxy).server
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/proxy.go:134 +0x608

goroutine 28 [IO wait]:
net.(*pollDesc).Wait(0xc208011870, 0x72, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_poll_runtime.go:84 +0x47
net.(*pollDesc).WaitRead(0xc208011870, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_poll_runtime.go:89 +0x43
net.(*netFD).accept(0xc208011810, 0x0, 0x7f0070851b70, 0xc208237ce8)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_unix.go:419 +0x40b
net.(*TCPListener).AcceptTCP(0xc208042360, 0x7f00708538f8, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/tcpsock_posix.go:234 +0x4e
net.(*TCPListener).Accept(0xc208042360, 0x0, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/tcpsock_posix.go:244 +0x4c
main.(*Proxy).server(0xc20805aea0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/proxy.go:137 +0x630
created by main.start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/proxy.go:198 +0x78

goroutine 29 [chan receive, 7 minutes]:
main.func·003()
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/proxy.go:117 +0x7c
created by main.(*Proxy).server
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/proxy.go:134 +0x608

goroutine 31 [IO wait]:
net.(*pollDesc).Wait(0xc208011aa0, 0x72, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_poll_runtime.go:84 +0x47
net.(*pollDesc).WaitRead(0xc208011aa0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_poll_runtime.go:89 +0x43
net.(*netFD).accept(0xc208011a40, 0x0, 0x7f0070851b70, 0xc208372850)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_unix.go:419 +0x40b
net.(*TCPListener).AcceptTCP(0xc2080423b0, 0x7f00708538f8, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/tcpsock_posix.go:234 +0x4e
net.(*TCPListener).Accept(0xc2080423b0, 0x0, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/tcpsock_posix.go:244 +0x4c
main.(*Proxy).server(0xc20805b050)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/proxy.go:137 +0x630
created by main.start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/proxy.go:198 +0x78

goroutine 32 [chan receive, 7 minutes]:
main.func·003()
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/proxy.go:117 +0x7c
created by main.(*Proxy).server
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/proxy.go:134 +0x608

goroutine 34 [IO wait]:
net.(*pollDesc).Wait(0xc208011cd0, 0x72, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_poll_runtime.go:84 +0x47
net.(*pollDesc).WaitRead(0xc208011cd0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_poll_runtime.go:89 +0x43
net.(*netFD).accept(0xc208011c70, 0x0, 0x7f0070851b70, 0xc208372c98)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_unix.go:419 +0x40b
net.(*TCPListener).AcceptTCP(0xc208042400, 0x7f00708538f8, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/tcpsock_posix.go:234 +0x4e
net.(*TCPListener).Accept(0xc208042400, 0x0, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/tcpsock_posix.go:244 +0x4c
main.(*Proxy).server(0xc20805b200)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/proxy.go:137 +0x630
created by main.start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/proxy.go:198 +0x78

goroutine 35 [chan receive, 7 minutes]:
main.func·003()
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/proxy.go:117 +0x7c
created by main.(*Proxy).server
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/proxy.go:134 +0x608

goroutine 672 [chan send, 1 minutes]:
main.(*LatencyToxic).Pipe(0xc20801e760, 0xc2083b2da0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_latency.go:51 +0x233
created by main.(*ToxicLink).SetToxic
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:81 +0xc6

goroutine 666 [chan receive, 1 minutes]:
main.(*TimeoutToxic).Pipe(0xc208032910, 0xc2086983a0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_timeout.go:36 +0x15a
created by main.(*ToxicLink).SetToxic
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:81 +0xc6

goroutine 658 [chan send, 1 minutes]:
main.(*LatencyToxic).Pipe(0xc2080ac100, 0xc208698380)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_latency.go:51 +0x233
created by main.(*ToxicLink).SetToxic
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:81 +0xc6

goroutine 461 [chan send, 1 minutes]:
main.(*ChanWriter).Write(0xc208042908, 0xc2086f8000, 0x12, 0x8000, 0x12, 0x0, 0x0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/io_chan.go:17 +0x11c
io.Copy(0x7f0070853928, 0xc208042908, 0x7f0070853280, 0xc2080428f0, 0x51c4, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:364 +0x278
main.func·001()
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:48 +0x7e
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:58 +0x13e

goroutine 460 [chan receive, 1 minutes]:
main.(*ChanReader).Read(0xc2086989c0, 0xc2086f0000, 0x8000, 0x8000, 0x9d, 0x0, 0x0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/io_chan.go:58 +0x45f
io.Copy(0x7f0070853a18, 0xc208657da0, 0x7f00708539a0, 0xc2086989c0, 0x693c, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:362 +0x1f6
net.genericReadFrom(0x7f0070853258, 0xc2080428f0, 0x7f00708539a0, 0xc2086989c0, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/net.go:404 +0xb5
net.(*TCPConn).ReadFrom(0xc2080428f0, 0x7f00708539a0, 0xc2086989c0, 0x7f00708539f0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/tcpsock_posix.go:72 +0xe0
io.Copy(0x7f0070853258, 0xc2080428f0, 0x7f00708539a0, 0xc2086989c0, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:358 +0x13d
main.func·002()
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:63 +0xb8
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:75 +0x2e0

goroutine 652 [chan send, 1 minutes]:
main.(*SlowCloseToxic).Pipe(0xc208032900, 0xc208698a60)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_slow_close.go:40 +0x26e
created by main.(*ToxicLink).SetToxic
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:81 +0xc6

goroutine 643 [chan receive, 1 minutes]:
main.(*TimeoutToxic).Pipe(0xc2080328f0, 0xc2084540e0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_timeout.go:36 +0x15a
created by main.(*ToxicLink).SetToxic
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:81 +0xc6

goroutine 1044 [IO wait]:
net.(*pollDesc).Wait(0xc208011db0, 0x72, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_poll_runtime.go:84 +0x47
net.(*pollDesc).WaitRead(0xc208011db0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_poll_runtime.go:89 +0x43
net.(*netFD).Read(0xc208011d50, 0xc208882000, 0x8000, 0x8000, 0x0, 0x7f0070851b70, 0xc2086568c0)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_unix.go:242 +0x40f
net.(*conn).Read(0xc208042c90, 0xc208882000, 0x8000, 0x8000, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/net.go:121 +0xdc
io.Copy(0x7f0070853928, 0xc208042ca0, 0x7f0070853280, 0xc208042c90, 0xa5f6, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:362 +0x1f6
main.func·001()
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:48 +0x7e
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:58 +0x13e

goroutine 1080 [select]:
main.(*NoopToxic).Pipe(0x8bf8d0, 0xc20836f500)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_noop.go:18 +0x19b
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:60 +0x223

goroutine 713 [chan receive, 1 minutes]:
main.(*TimeoutToxic).Pipe(0xc208033160, 0xc208365080)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_timeout.go:36 +0x15a
created by main.(*ToxicLink).SetToxic
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:81 +0xc6

goroutine 925 [select]:
main.(*NoopToxic).Pipe(0x8bf8d0, 0xc2086982e0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_noop.go:18 +0x19b
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:60 +0x223

goroutine 325 [chan receive, 1 minutes]:
main.(*ChanReader).Read(0xc208364e20, 0xc208508000, 0x8000, 0x8000, 0xa, 0x0, 0x0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/io_chan.go:58 +0x45f
io.Copy(0x7f0070853a18, 0xc2083b5ff0, 0x7f00708539a0, 0xc208364e20, 0xe6, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:362 +0x1f6
net.genericReadFrom(0x7f0070853258, 0xc208042648, 0x7f00708539a0, 0xc208364e20, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/net.go:404 +0xb5
net.(*TCPConn).ReadFrom(0xc208042648, 0x7f00708539a0, 0xc208364e20, 0x7f00708539f0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/tcpsock_posix.go:72 +0xe0
io.Copy(0x7f0070853258, 0xc208042648, 0x7f00708539a0, 0xc208364e20, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:358 +0x13d
main.func·002()
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:63 +0xb8
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:75 +0x2e0

goroutine 1121 [select]:
main.(*NoopToxic).Pipe(0x8bf8d0, 0xc20848d5e0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_noop.go:18 +0x19b
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:60 +0x223

goroutine 1108 [chan receive]:
main.(*ChanReader).Read(0xc20848cf80, 0xc208990000, 0x8000, 0x8000, 0x172, 0x0, 0x0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/io_chan.go:58 +0x45f
io.Copy(0x7f0070853a18, 0xc208372550, 0x7f00708539a0, 0xc20848cf80, 0xacab, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:362 +0x1f6
net.genericReadFrom(0x7f0070853258, 0xc208042db8, 0x7f00708539a0, 0xc20848cf80, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/net.go:404 +0xb5
net.(*TCPConn).ReadFrom(0xc208042db8, 0x7f00708539a0, 0xc20848cf80, 0x7f00708539f0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/tcpsock_posix.go:72 +0xe0
io.Copy(0x7f0070853258, 0xc208042db8, 0x7f00708539a0, 0xc20848cf80, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:358 +0x13d
main.func·002()
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:63 +0xb8
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:75 +0x2e0

goroutine 737 [chan receive, 1 minutes]:
main.(*TimeoutToxic).Pipe(0xc2080331c0, 0xc208365180)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_timeout.go:36 +0x15a
created by main.(*ToxicLink).SetToxic
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:81 +0xc6

goroutine 331 [IO wait, 1 minutes]:
net.(*pollDesc).Wait(0xc208085c60, 0x72, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_poll_runtime.go:84 +0x47
net.(*pollDesc).WaitRead(0xc208085c60, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_poll_runtime.go:89 +0x43
net.(*netFD).Read(0xc208085c00, 0xc208528000, 0x8000, 0x8000, 0x0, 0x7f0070851b70, 0xc208656c90)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_unix.go:242 +0x40f
net.(*conn).Read(0xc208042680, 0xc208528000, 0x8000, 0x8000, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/net.go:121 +0xdc
io.Copy(0x7f0070853928, 0xc208042698, 0x7f0070853280, 0xc208042680, 0x761, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:362 +0x1f6
main.func·001()
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:48 +0x7e
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:58 +0x13e

goroutine 330 [chan receive, 1 minutes]:
main.(*ChanReader).Read(0xc2083650a0, 0xc208520000, 0x8000, 0x8000, 0xfb, 0x0, 0x0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/io_chan.go:58 +0x45f
io.Copy(0x7f0070853a18, 0xc2080c83c0, 0x7f00708539a0, 0xc2083650a0, 0x5226, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:362 +0x1f6
net.genericReadFrom(0x7f0070853258, 0xc208042680, 0x7f00708539a0, 0xc2083650a0, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/net.go:404 +0xb5
net.(*TCPConn).ReadFrom(0xc208042680, 0x7f00708539a0, 0xc2083650a0, 0x7f00708539f0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/tcpsock_posix.go:72 +0xe0
io.Copy(0x7f0070853258, 0xc208042680, 0x7f00708539a0, 0xc2083650a0, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:358 +0x13d
main.func·002()
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:63 +0xb8
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:75 +0x2e0

goroutine 729 [chan send, 1 minutes]:
main.(*LatencyToxic).Pipe(0xc2080ac3c0, 0xc20801f0c0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_latency.go:51 +0x233
created by main.(*ToxicLink).SetToxic
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:81 +0xc6

goroutine 721 [select, 1 minutes]:
main.(*SlowCloseToxic).Pipe(0xc208033190, 0xc208365140)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_slow_close.go:26 +0x28c
created by main.(*ToxicLink).SetToxic
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:81 +0xc6

goroutine 965 [select]:
main.(*NoopToxic).Pipe(0x8bf8d0, 0xc208699a20)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_noop.go:18 +0x19b
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:60 +0x223

goroutine 961 [select]:
main.(*NoopToxic).Pipe(0x8bf8d0, 0xc208699720)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_noop.go:18 +0x19b
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:60 +0x223

goroutine 335 [chan receive, 1 minutes]:
main.(*ChanReader).Read(0xc2083651a0, 0xc208530000, 0x8000, 0x8000, 0xa, 0x0, 0x0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/io_chan.go:58 +0x45f
io.Copy(0x7f0070853a18, 0xc2080c8400, 0x7f00708539a0, 0xc2083651a0, 0x761, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:362 +0x1f6
net.genericReadFrom(0x7f0070853258, 0xc208042678, 0x7f00708539a0, 0xc2083651a0, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/net.go:404 +0xb5
net.(*TCPConn).ReadFrom(0xc208042678, 0x7f00708539a0, 0xc2083651a0, 0x7f00708539f0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/tcpsock_posix.go:72 +0xe0
io.Copy(0x7f0070853258, 0xc208042678, 0x7f00708539a0, 0xc2083651a0, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:358 +0x13d
main.func·002()
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:63 +0xb8
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:75 +0x2e0

goroutine 744 [select]:
main.(*NoopToxic).Pipe(0x8bf8d0, 0xc208234d60)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_noop.go:18 +0x19b
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:60 +0x223

goroutine 739 [chan receive, 1 minutes]:
main.(*TimeoutToxic).Pipe(0xc2080331c0, 0xc20801f1c0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_timeout.go:36 +0x15a
created by main.(*ToxicLink).SetToxic
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:81 +0xc6

goroutine 521 [chan receive, 1 minutes]:
main.(*TimeoutToxic).Pipe(0xc2080c8120, 0xc208365500)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_timeout.go:36 +0x15a
created by main.(*ToxicLink).SetToxic
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:81 +0xc6

goroutine 341 [IO wait, 1 minutes]:
net.(*pollDesc).Wait(0xc208085e20, 0x72, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_poll_runtime.go:84 +0x47
net.(*pollDesc).WaitRead(0xc208085e20, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_poll_runtime.go:89 +0x43
net.(*netFD).Read(0xc208085dc0, 0xc208548000, 0x8000, 0x8000, 0x0, 0x7f0070851b70, 0xc208656c40)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_unix.go:242 +0x40f
net.(*conn).Read(0xc2080426b0, 0xc208548000, 0x8000, 0x8000, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/net.go:121 +0xdc
io.Copy(0x7f0070853928, 0xc2080426c8, 0x7f0070853280, 0xc2080426b0, 0x70e, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:362 +0x1f6
main.func·001()
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:48 +0x7e
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:58 +0x13e

goroutine 340 [chan receive, 1 minutes]:
main.(*ChanReader).Read(0xc208365420, 0xc208540000, 0x8000, 0x8000, 0xfb, 0x0, 0x0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/io_chan.go:58 +0x45f
io.Copy(0x7f0070853a18, 0xc2080c88e0, 0x7f00708539a0, 0xc208365420, 0x5108, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:362 +0x1f6
net.genericReadFrom(0x7f0070853258, 0xc2080426b0, 0x7f00708539a0, 0xc208365420, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/net.go:404 +0xb5
net.(*TCPConn).ReadFrom(0xc2080426b0, 0x7f00708539a0, 0xc208365420, 0x7f00708539f0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/tcpsock_posix.go:72 +0xe0
io.Copy(0x7f0070853258, 0xc2080426b0, 0x7f00708539a0, 0xc208365420, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:358 +0x13d
main.func·002()
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:63 +0xb8
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:75 +0x2e0

goroutine 513 [select, 1 minutes]:
main.(*LatencyToxic).Pipe(0xc2080ac940, 0xc2083654e0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_latency.go:40 +0x2e3
created by main.(*ToxicLink).SetToxic
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:81 +0xc6

goroutine 499 [chan receive, 1 minutes]:
main.(*TimeoutToxic).Pipe(0xc2080c8100, 0xc2080ad4c0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_timeout.go:36 +0x15a
created by main.(*ToxicLink).SetToxic
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:81 +0xc6

goroutine 937 [select]:
main.(*NoopToxic).Pipe(0x8bf8d0, 0xc208698be0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_noop.go:18 +0x19b
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:60 +0x223

goroutine 360 [chan receive, 1 minutes]:
main.(*ChanReader).Read(0xc208365b60, 0xc208580000, 0x8000, 0x8000, 0xc, 0x0, 0x0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/io_chan.go:58 +0x45f
io.Copy(0x7f0070853a18, 0xc2080c9bc0, 0x7f00708539a0, 0xc208365b60, 0x478, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:362 +0x1f6
net.genericReadFrom(0x7f0070853258, 0xc208042710, 0x7f00708539a0, 0xc208365b60, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/net.go:404 +0xb5
net.(*TCPConn).ReadFrom(0xc208042710, 0x7f00708539a0, 0xc208365b60, 0x7f00708539f0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/tcpsock_posix.go:72 +0xe0
io.Copy(0x7f0070853258, 0xc208042710, 0x7f00708539a0, 0xc208365b60, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:358 +0x13d
main.func·002()
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:63 +0xb8
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:75 +0x2e0

goroutine 345 [chan receive, 1 minutes]:
main.(*ChanReader).Read(0xc208365520, 0xc208550000, 0x8000, 0x8000, 0xa, 0x0, 0x0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/io_chan.go:58 +0x45f
io.Copy(0x7f0070853a18, 0xc2080c8900, 0x7f00708539a0, 0xc208365520, 0x70e, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:362 +0x1f6
net.genericReadFrom(0x7f0070853258, 0xc2080426a8, 0x7f00708539a0, 0xc208365520, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/net.go:404 +0xb5
net.(*TCPConn).ReadFrom(0xc2080426a8, 0x7f00708539a0, 0xc208365520, 0x7f00708539f0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/tcpsock_posix.go:72 +0xe0
io.Copy(0x7f0070853258, 0xc2080426a8, 0x7f00708539a0, 0xc208365520, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:358 +0x13d
main.func·002()
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:63 +0xb8
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:75 +0x2e0

goroutine 933 [chan receive]:
main.(*ChanReader).Read(0xc208698540, 0xc2082b4000, 0x8000, 0x8000, 0x14, 0x0, 0x0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/io_chan.go:58 +0x45f
io.Copy(0x7f0070853a18, 0xc20845bfb0, 0x7f00708539a0, 0xc208698540, 0x1cc1, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:362 +0x1f6
net.genericReadFrom(0x7f0070853258, 0xc208042a40, 0x7f00708539a0, 0xc208698540, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/net.go:404 +0xb5
net.(*TCPConn).ReadFrom(0xc208042a40, 0x7f00708539a0, 0xc208698540, 0x7f00708539f0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/tcpsock_posix.go:72 +0xe0
io.Copy(0x7f0070853258, 0xc208042a40, 0x7f00708539a0, 0xc208698540, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:358 +0x13d
main.func·002()
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:63 +0xb8
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:75 +0x2e0

goroutine 931 [select]:
main.(*NoopToxic).Pipe(0x8bf8d0, 0xc2086984c0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_noop.go:18 +0x19b
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:60 +0x223

goroutine 612 [chan send, 1 minutes]:
main.(*LatencyToxic).Pipe(0xc20801fb60, 0xc208364860)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_latency.go:51 +0x233
created by main.(*ToxicLink).SetToxic
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:81 +0xc6

goroutine 365 [chan receive, 1 minutes]:
main.(*ChanReader).Read(0xc208365c60, 0xc208590000, 0x8000, 0x8000, 0x14, 0x0, 0x0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/io_chan.go:58 +0x45f
io.Copy(0x7f0070853a18, 0xc2080c9be0, 0x7f00708539a0, 0xc208365c60, 0x6ff, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:362 +0x1f6
net.genericReadFrom(0x7f0070853258, 0xc208042708, 0x7f00708539a0, 0xc208365c60, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/net.go:404 +0xb5
net.(*TCPConn).ReadFrom(0xc208042708, 0x7f00708539a0, 0xc208365c60, 0x7f00708539f0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/tcpsock_posix.go:72 +0xe0
io.Copy(0x7f0070853258, 0xc208042708, 0x7f00708539a0, 0xc208365c60, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:358 +0x13d
main.func·002()
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:63 +0xb8
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:75 +0x2e0

goroutine 1002 [select]:
main.(*NoopToxic).Pipe(0x8bf8d0, 0xc2083b2ae0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_noop.go:18 +0x19b
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:60 +0x223

goroutine 602 [chan receive, 1 minutes]:
main.(*TimeoutToxic).Pipe(0xc2080893f0, 0xc208365b40)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_timeout.go:36 +0x15a
created by main.(*ToxicLink).SetToxic
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:81 +0xc6

goroutine 938 [chan receive]:
main.(*ChanReader).Read(0xc208698c00, 0xc2084b6000, 0x8000, 0x8000, 0x6ba, 0x0, 0x0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/io_chan.go:58 +0x45f
io.Copy(0x7f0070853a18, 0xc20846a3f0, 0x7f00708539a0, 0xc208698c00, 0x26e6, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:362 +0x1f6
net.genericReadFrom(0x7f0070853258, 0xc208042a78, 0x7f00708539a0, 0xc208698c00, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/net.go:404 +0xb5
net.(*TCPConn).ReadFrom(0xc208042a78, 0x7f00708539a0, 0xc208698c00, 0x7f00708539f0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/tcpsock_posix.go:72 +0xe0
io.Copy(0x7f0070853258, 0xc208042a78, 0x7f00708539a0, 0xc208698c00, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:358 +0x13d
main.func·002()
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:63 +0xb8
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:75 +0x2e0

goroutine 998 [chan receive]:
main.(*ChanReader).Read(0xc2083b2a00, 0xc2087ae000, 0x8000, 0x8000, 0x6ba, 0x0, 0x0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/io_chan.go:58 +0x45f
io.Copy(0x7f0070853a18, 0xc208656d50, 0x7f00708539a0, 0xc2083b2a00, 0x161b, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:362 +0x1f6
net.genericReadFrom(0x7f0070853258, 0xc208042b98, 0x7f00708539a0, 0xc2083b2a00, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/net.go:404 +0xb5
net.(*TCPConn).ReadFrom(0xc208042b98, 0x7f00708539a0, 0xc2083b2a00, 0x7f00708539f0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/tcpsock_posix.go:72 +0xe0
io.Copy(0x7f0070853258, 0xc208042b98, 0x7f00708539a0, 0xc2083b2a00, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:358 +0x13d
main.func·002()
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:63 +0xb8
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:75 +0x2e0

goroutine 674 [chan receive, 1 minutes]:
main.(*TimeoutToxic).Pipe(0xc208088340, 0xc2083b2dc0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_timeout.go:36 +0x15a
created by main.(*ToxicLink).SetToxic
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:81 +0xc6

goroutine 1100 [select]:
main.(*NoopToxic).Pipe(0x8bf8d0, 0xc20848ca80)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_noop.go:18 +0x19b
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:60 +0x223

goroutine 678 [chan send, 1 minutes]:
main.(*LatencyToxic).Pipe(0xc20801e780, 0xc2083b30a0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_latency.go:51 +0x233
created by main.(*ToxicLink).SetToxic
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:81 +0xc6

goroutine 270 [chan receive, 1 minutes]:
main.(*ChanReader).Read(0xc2083b2de0, 0xc20843c000, 0x8000, 0x8000, 0xc, 0x0, 0x0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/io_chan.go:58 +0x45f
io.Copy(0x7f0070853a18, 0xc20845b490, 0x7f00708539a0, 0xc2083b2de0, 0x568c, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:362 +0x1f6
net.genericReadFrom(0x7f0070853258, 0xc208042560, 0x7f00708539a0, 0xc2083b2de0, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/net.go:404 +0xb5
net.(*TCPConn).ReadFrom(0xc208042560, 0x7f00708539a0, 0xc2083b2de0, 0x7f00708539f0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/tcpsock_posix.go:72 +0xe0
io.Copy(0x7f0070853258, 0xc208042560, 0x7f00708539a0, 0xc2083b2de0, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:358 +0x13d
main.func·002()
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:63 +0xb8
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:75 +0x2e0

goroutine 1102 [select]:
main.(*NoopToxic).Pipe(0x8bf8d0, 0xc20848cac0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_noop.go:18 +0x19b
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:60 +0x223

goroutine 680 [chan receive, 1 minutes]:
main.(*TimeoutToxic).Pipe(0xc208088370, 0xc2083b30c0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_timeout.go:36 +0x15a
created by main.(*ToxicLink).SetToxic
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:81 +0xc6

goroutine 954 [IO wait]:
net.(*pollDesc).Wait(0xc208084bc0, 0x72, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_poll_runtime.go:84 +0x47
net.(*pollDesc).WaitRead(0xc208084bc0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_poll_runtime.go:89 +0x43
net.(*netFD).Read(0xc208084b60, 0xc208578000, 0x8000, 0x8000, 0x0, 0x7f0070851b70, 0xc2086567a0)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_unix.go:242 +0x40f
net.(*conn).Read(0xc208042ad0, 0xc208578000, 0x8000, 0x8000, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/net.go:121 +0xdc
io.Copy(0x7f0070853928, 0xc208042ae0, 0x7f0070853280, 0xc208042ad0, 0x1abf, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:362 +0x1f6
main.func·001()
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:48 +0x7e
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:58 +0x13e

goroutine 956 [select]:
main.(*NoopToxic).Pipe(0x8bf8d0, 0xc208699620)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_noop.go:18 +0x19b
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:60 +0x223

goroutine 275 [chan receive, 1 minutes]:
main.(*ChanReader).Read(0xc2083b30e0, 0xc20844c000, 0x8000, 0x8000, 0x14, 0x0, 0x0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/io_chan.go:58 +0x45f
io.Copy(0x7f0070853a18, 0xc20845b4b0, 0x7f00708539a0, 0xc2083b30e0, 0xa69e, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:362 +0x1f6
net.genericReadFrom(0x7f0070853258, 0xc208042558, 0x7f00708539a0, 0xc2083b30e0, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/net.go:404 +0xb5
net.(*TCPConn).ReadFrom(0xc208042558, 0x7f00708539a0, 0xc2083b30e0, 0x7f00708539f0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/tcpsock_posix.go:72 +0xe0
io.Copy(0x7f0070853258, 0xc208042558, 0x7f00708539a0, 0xc2083b30e0, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:358 +0x13d
main.func·002()
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:63 +0xb8
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:75 +0x2e0

goroutine 958 [chan receive]:
main.(*ChanReader).Read(0xc208699660, 0xc2083ec000, 0x8000, 0x8000, 0xc, 0x0, 0x0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/io_chan.go:58 +0x45f
io.Copy(0x7f0070853a18, 0xc20846b4c0, 0x7f00708539a0, 0xc208699660, 0x1abf, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:362 +0x1f6
net.genericReadFrom(0x7f0070853258, 0xc208042ad8, 0x7f00708539a0, 0xc208699660, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/net.go:404 +0xb5
net.(*TCPConn).ReadFrom(0xc208042ad8, 0x7f00708539a0, 0xc208699660, 0x7f00708539f0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/tcpsock_posix.go:72 +0xe0
io.Copy(0x7f0070853258, 0xc208042ad8, 0x7f00708539a0, 0xc208699660, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:358 +0x13d
main.func·002()
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:63 +0xb8
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:75 +0x2e0

goroutine 596 [chan receive, 1 minutes]:
main.(*TimeoutToxic).Pipe(0xc208088bb0, 0xc2080ada80)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_timeout.go:36 +0x15a
created by main.(*ToxicLink).SetToxic
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:81 +0xc6

goroutine 1097 [select]:
main.(*NoopToxic).Pipe(0x8bf8d0, 0xc20848c9c0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_noop.go:18 +0x19b
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:60 +0x223

goroutine 600 [chan send, 1 minutes]:
main.(*LatencyToxic).Pipe(0xc20801f8a0, 0xc208365b20)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_latency.go:51 +0x233
created by main.(*ToxicLink).SetToxic
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:81 +0xc6

goroutine 395 [chan receive, 1 minutes]:
main.(*ChanReader).Read(0xc2080adaa0, 0xc2085fc000, 0x8000, 0x8000, 0x14, 0x0, 0x0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/io_chan.go:58 +0x45f
io.Copy(0x7f0070853a18, 0xc2080898f0, 0x7f00708539a0, 0xc2080adaa0, 0x6ff, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:362 +0x1f6
net.genericReadFrom(0x7f0070853258, 0xc208042798, 0x7f00708539a0, 0xc2080adaa0, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/net.go:404 +0xb5
net.(*TCPConn).ReadFrom(0xc208042798, 0x7f00708539a0, 0xc2080adaa0, 0x7f00708539f0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/tcpsock_posix.go:72 +0xe0
io.Copy(0x7f0070853258, 0xc208042798, 0x7f00708539a0, 0xc2080adaa0, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:358 +0x13d
main.func·002()
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:63 +0xb8
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:75 +0x2e0

goroutine 1098 [chan receive]:
main.(*ChanReader).Read(0xc20848c9e0, 0xc20896e000, 0x8000, 0x8000, 0x1a8, 0x0, 0x0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/io_chan.go:58 +0x45f
io.Copy(0x7f0070853a18, 0xc208372220, 0x7f00708539a0, 0xc20848c9e0, 0xc34e, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:362 +0x1f6
net.genericReadFrom(0x7f0070853258, 0xc208042d88, 0x7f00708539a0, 0xc20848c9e0, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/net.go:404 +0xb5
net.(*TCPConn).ReadFrom(0xc208042d88, 0x7f00708539a0, 0xc20848c9e0, 0x7f00708539f0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/tcpsock_posix.go:72 +0xe0
io.Copy(0x7f0070853258, 0xc208042d88, 0x7f00708539a0, 0xc20848c9e0, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:358 +0x13d
main.func·002()
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:63 +0xb8
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:75 +0x2e0

goroutine 590 [chan receive, 1 minutes]:
main.(*TimeoutToxic).Pipe(0xc208088b90, 0xc2080ad980)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_timeout.go:36 +0x15a
created by main.(*ToxicLink).SetToxic
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:81 +0xc6

goroutine 957 [select]:
main.(*NoopToxic).Pipe(0x8bf8d0, 0xc208699640)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_noop.go:18 +0x19b
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:60 +0x223

goroutine 594 [chan send, 1 minutes]:
main.(*LatencyToxic).Pipe(0xc20801f320, 0xc2080ada60)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_latency.go:51 +0x233
created by main.(*ToxicLink).SetToxic
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:81 +0xc6

goroutine 390 [chan receive, 1 minutes]:
main.(*ChanReader).Read(0xc2080ad9a0, 0xc2085ec000, 0x8000, 0x8000, 0xc, 0x0, 0x0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/io_chan.go:58 +0x45f
io.Copy(0x7f0070853a18, 0xc2080898d0, 0x7f00708539a0, 0xc2080ad9a0, 0x478, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:362 +0x1f6
net.genericReadFrom(0x7f0070853258, 0xc2080427a0, 0x7f00708539a0, 0xc2080ad9a0, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/net.go:404 +0xb5
net.(*TCPConn).ReadFrom(0xc2080427a0, 0x7f00708539a0, 0xc2080ad9a0, 0x7f00708539f0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/tcpsock_posix.go:72 +0xe0
io.Copy(0x7f0070853258, 0xc2080427a0, 0x7f00708539a0, 0xc2080ad9a0, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:358 +0x13d
main.func·002()
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:63 +0xb8
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:75 +0x2e0

goroutine 939 [IO wait]:
net.(*pollDesc).Wait(0xc208084760, 0x72, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_poll_runtime.go:84 +0x47
net.(*pollDesc).WaitRead(0xc208084760, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_poll_runtime.go:89 +0x43
net.(*netFD).Read(0xc208084700, 0xc2084be000, 0x8000, 0x8000, 0x0, 0x7f0070851b70, 0xc2083737f8)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_unix.go:242 +0x40f
net.(*conn).Read(0xc208042a78, 0xc2084be000, 0x8000, 0x8000, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/net.go:121 +0xdc
io.Copy(0x7f0070853928, 0xc208042a90, 0x7f0070853280, 0xc208042a78, 0x325, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:362 +0x1f6
main.func·001()
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:48 +0x7e
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:58 +0x13e

goroutine 608 [chan receive, 1 minutes]:
main.(*TimeoutToxic).Pipe(0xc208089410, 0xc208365c40)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_timeout.go:36 +0x15a
created by main.(*ToxicLink).SetToxic
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:81 +0xc6

goroutine 996 [select]:
main.(*NoopToxic).Pipe(0x8bf8d0, 0xc2083b29c0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_noop.go:18 +0x19b
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:60 +0x223

goroutine 465 [chan receive, 1 minutes]:
main.(*ChanReader).Read(0xc208698ac0, 0xc2080ce000, 0x8000, 0x8000, 0x7a, 0x0, 0x0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/io_chan.go:58 +0x45f
io.Copy(0x7f0070853a18, 0xc208656010, 0x7f00708539a0, 0xc208698ac0, 0x5136, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:362 +0x1f6
net.genericReadFrom(0x7f0070853258, 0xc2080428e8, 0x7f00708539a0, 0xc208698ac0, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/net.go:404 +0xb5
net.(*TCPConn).ReadFrom(0xc2080428e8, 0x7f00708539a0, 0xc208698ac0, 0x7f00708539f0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/tcpsock_posix.go:72 +0xe0
io.Copy(0x7f0070853258, 0xc2080428e8, 0x7f00708539a0, 0xc208698ac0, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:358 +0x13d
main.func·002()
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:63 +0xb8
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:75 +0x2e0

goroutine 321 [IO wait, 1 minutes]:
net.(*pollDesc).Wait(0xc208085aa0, 0x72, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_poll_runtime.go:84 +0x47
net.(*pollDesc).WaitRead(0xc208085aa0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_poll_runtime.go:89 +0x43
net.(*netFD).Read(0xc208085a40, 0xc2084fe000, 0x8000, 0x8000, 0x0, 0x7f0070851b70, 0xc208656bd0)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_unix.go:242 +0x40f
net.(*conn).Read(0xc208042650, 0xc2084fe000, 0x8000, 0x8000, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/net.go:121 +0xdc
io.Copy(0x7f0070853928, 0xc208042668, 0x7f0070853280, 0xc208042650, 0xe6, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:362 +0x1f6
main.func·001()
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:48 +0x7e
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:58 +0x13e

goroutine 320 [chan receive, 1 minutes]:
main.(*ChanReader).Read(0xc208364d20, 0xc2084f6000, 0x8000, 0x8000, 0xfb, 0x0, 0x0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/io_chan.go:58 +0x45f
io.Copy(0x7f0070853a18, 0xc2083b5fd0, 0x7f00708539a0, 0xc208364d20, 0x3c31, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:362 +0x1f6
net.genericReadFrom(0x7f0070853258, 0xc208042650, 0x7f00708539a0, 0xc208364d20, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/net.go:404 +0xb5
net.(*TCPConn).ReadFrom(0xc208042650, 0x7f00708539a0, 0xc208364d20, 0x7f00708539f0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/tcpsock_posix.go:72 +0xe0
io.Copy(0x7f0070853258, 0xc208042650, 0x7f00708539a0, 0xc208364d20, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:358 +0x13d
main.func·002()
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:63 +0xb8
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:75 +0x2e0

goroutine 690 [select, 1 minutes]:
main.(*LatencyToxic).Pipe(0xc20801fe40, 0xc208364de0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_latency.go:40 +0x2e3
created by main.(*ToxicLink).SetToxic
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:81 +0xc6

goroutine 688 [select, 1 minutes]:
main.(*SlowCloseToxic).Pipe(0xc208089c70, 0xc208364dc0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_slow_close.go:26 +0x28c
created by main.(*ToxicLink).SetToxic
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:81 +0xc6

goroutine 686 [chan receive, 1 minutes]:
main.(*TimeoutToxic).Pipe(0xc208089c60, 0xc208364d00)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_timeout.go:36 +0x15a
created by main.(*ToxicLink).SetToxic
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:81 +0xc6

goroutine 962 [select]:
main.(*NoopToxic).Pipe(0x8bf8d0, 0xc208699740)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_noop.go:18 +0x19b
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:60 +0x223

goroutine 995 [select]:
main.(*NoopToxic).Pipe(0x8bf8d0, 0xc2083b29a0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_noop.go:18 +0x19b
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:60 +0x223

goroutine 536 [chan receive, 1 minutes]:
main.(*TimeoutToxic).Pipe(0xc208088fe0, 0xc2083b3e60)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_timeout.go:36 +0x15a
created by main.(*ToxicLink).SetToxic
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:81 +0xc6

goroutine 1115 [select]:
main.(*NoopToxic).Pipe(0x8bf8d0, 0xc20848d4c0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_noop.go:18 +0x19b
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:60 +0x223

goroutine 1095 [select]:
main.(*NoopToxic).Pipe(0x8bf8d0, 0xc20848c980)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_noop.go:18 +0x19b
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:60 +0x223

goroutine 295 [chan receive, 1 minutes]:
main.(*ChanReader).Read(0xc2083b3e80, 0xc2084a6000, 0x8000, 0x8000, 0x14, 0x0, 0x0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/io_chan.go:58 +0x45f
io.Copy(0x7f0070853a18, 0xc2083b4bd0, 0x7f00708539a0, 0xc2083b3e80, 0x108b, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:362 +0x1f6
net.genericReadFrom(0x7f0070853258, 0xc2080425b8, 0x7f00708539a0, 0xc2083b3e80, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/net.go:404 +0xb5
net.(*TCPConn).ReadFrom(0xc2080425b8, 0x7f00708539a0, 0xc2083b3e80, 0x7f00708539f0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/tcpsock_posix.go:72 +0xe0
io.Copy(0x7f0070853258, 0xc2080425b8, 0x7f00708539a0, 0xc2083b3e80, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:358 +0x13d
main.func·002()
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:63 +0xb8
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:75 +0x2e0

goroutine 804 [IO wait]:
net.(*pollDesc).Wait(0xc2080101b0, 0x72, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_poll_runtime.go:84 +0x47
net.(*pollDesc).WaitRead(0xc2080101b0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_poll_runtime.go:89 +0x43
net.(*netFD).Read(0xc208010150, 0xc208170000, 0x8000, 0x8000, 0x0, 0x7f0070851b70, 0xc208656990)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_unix.go:242 +0x40f
net.(*conn).Read(0xc208042460, 0xc208170000, 0x8000, 0x8000, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/net.go:121 +0xdc
io.Copy(0x7f0070853928, 0xc208042470, 0x7f0070853280, 0xc208042460, 0xa846, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:362 +0x1f6
main.func·001()
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:48 +0x7e
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:58 +0x13e

goroutine 530 [chan receive, 1 minutes]:
main.(*TimeoutToxic).Pipe(0xc208088fc0, 0xc2083b3d60)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_timeout.go:36 +0x15a
created by main.(*ToxicLink).SetToxic
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:81 +0xc6

goroutine 999 [IO wait]:
net.(*pollDesc).Wait(0xc208085f00, 0x72, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_poll_runtime.go:84 +0x47
net.(*pollDesc).WaitRead(0xc208085f00, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_poll_runtime.go:89 +0x43
net.(*netFD).Read(0xc208085ea0, 0xc2087b6000, 0x8000, 0x8000, 0x0, 0x7f0070851b70, 0xc2083b45d8)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_unix.go:242 +0x40f
net.(*conn).Read(0xc208042b98, 0xc2087b6000, 0x8000, 0x8000, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/net.go:121 +0xdc
io.Copy(0x7f0070853928, 0xc208042bb0, 0x7f0070853280, 0xc208042b98, 0x261, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:362 +0x1f6
main.func·001()
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:48 +0x7e
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:58 +0x13e

goroutine 1001 [select]:
main.(*NoopToxic).Pipe(0x8bf8d0, 0xc2083b2ac0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_noop.go:18 +0x19b
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:60 +0x223

goroutine 290 [chan receive, 1 minutes]:
main.(*ChanReader).Read(0xc2083b3d80, 0xc208496000, 0x8000, 0x8000, 0xc, 0x0, 0x0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/io_chan.go:58 +0x45f
io.Copy(0x7f0070853a18, 0xc2083b4bb0, 0x7f00708539a0, 0xc2083b3d80, 0x1628, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:362 +0x1f6
net.genericReadFrom(0x7f0070853258, 0xc2080425c0, 0x7f00708539a0, 0xc2083b3d80, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/net.go:404 +0xb5
net.(*TCPConn).ReadFrom(0xc2080425c0, 0x7f00708539a0, 0xc2083b3d80, 0x7f00708539f0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/tcpsock_posix.go:72 +0xe0
io.Copy(0x7f0070853258, 0xc2080425c0, 0x7f00708539a0, 0xc2083b3d80, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:358 +0x13d
main.func·002()
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:63 +0xb8
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:75 +0x2e0

goroutine 375 [chan receive, 1 minutes]:
main.(*ChanReader).Read(0xc2080acd40, 0xc2085b0000, 0x8000, 0x8000, 0xa, 0x0, 0x0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/io_chan.go:58 +0x45f
io.Copy(0x7f0070853a18, 0xc208088c90, 0x7f00708539a0, 0xc2080acd40, 0x579, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:362 +0x1f6
net.genericReadFrom(0x7f0070853258, 0xc208042738, 0x7f00708539a0, 0xc2080acd40, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/net.go:404 +0xb5
net.(*TCPConn).ReadFrom(0xc208042738, 0x7f00708539a0, 0xc2080acd40, 0x7f00708539f0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/tcpsock_posix.go:72 +0xe0
io.Copy(0x7f0070853258, 0xc208042738, 0x7f00708539a0, 0xc2080acd40, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:358 +0x13d
main.func·002()
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:63 +0xb8
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:75 +0x2e0

goroutine 1083 [chan receive]:
main.(*ChanReader).Read(0xc20836f560, 0xc20890a000, 0x8000, 0x8000, 0xb0, 0x0, 0x0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/io_chan.go:58 +0x45f
io.Copy(0x7f0070853a18, 0xc208237a30, 0x7f00708539a0, 0xc20836f560, 0x10b22, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:362 +0x1f6
net.genericReadFrom(0x7f0070853258, 0xc208042d20, 0x7f00708539a0, 0xc20836f560, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/net.go:404 +0xb5
net.(*TCPConn).ReadFrom(0xc208042d20, 0x7f00708539a0, 0xc20836f560, 0x7f00708539f0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/tcpsock_posix.go:72 +0xe0
io.Copy(0x7f0070853258, 0xc208042d20, 0x7f00708539a0, 0xc20836f560, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:358 +0x13d
main.func·002()
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:63 +0xb8
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:75 +0x2e0

goroutine 955 [select]:
main.(*NoopToxic).Pipe(0x8bf8d0, 0xc208699600)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_noop.go:18 +0x19b
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:60 +0x223

goroutine 581 [chan receive, 1 minutes]:
main.(*TimeoutToxic).Pipe(0xc208033af0, 0xc2080acd20)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_timeout.go:36 +0x15a
created by main.(*ToxicLink).SetToxic
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:81 +0xc6

goroutine 371 [IO wait, 1 minutes]:
net.(*pollDesc).Wait(0xc2080116b0, 0x72, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_poll_runtime.go:84 +0x47
net.(*pollDesc).WaitRead(0xc2080116b0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_poll_runtime.go:89 +0x43
net.(*netFD).Read(0xc208011650, 0xc2085a8000, 0x8000, 0x8000, 0x0, 0x7f0070851b70, 0xc208656cc0)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_unix.go:242 +0x40f
net.(*conn).Read(0xc208042740, 0xc2085a8000, 0x8000, 0x8000, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/net.go:121 +0xdc
io.Copy(0x7f0070853928, 0xc208042758, 0x7f0070853280, 0xc208042740, 0x579, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:362 +0x1f6
main.func·001()
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:48 +0x7e
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:58 +0x13e

goroutine 370 [chan receive, 1 minutes]:
main.(*ChanReader).Read(0xc2080ac4c0, 0xc2085a0000, 0x8000, 0x8000, 0xfb, 0x0, 0x0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/io_chan.go:58 +0x45f
io.Copy(0x7f0070853a18, 0xc208088c70, 0x7f00708539a0, 0xc2080ac4c0, 0x393d, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:362 +0x1f6
net.genericReadFrom(0x7f0070853258, 0xc208042740, 0x7f00708539a0, 0xc2080ac4c0, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/net.go:404 +0xb5
net.(*TCPConn).ReadFrom(0xc208042740, 0x7f00708539a0, 0xc2080ac4c0, 0x7f00708539f0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/tcpsock_posix.go:72 +0xe0
io.Copy(0x7f0070853258, 0xc208042740, 0x7f00708539a0, 0xc2080ac4c0, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:358 +0x13d
main.func·002()
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:63 +0xb8
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:75 +0x2e0

goroutine 568 [select, 1 minutes]:
main.(*SlowCloseToxic).Pipe(0xc208033ae0, 0xc208455ea0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_slow_close.go:26 +0x28c
created by main.(*ToxicLink).SetToxic
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:81 +0xc6

goroutine 565 [select, 1 minutes]:
main.(*SlowCloseToxic).Pipe(0xc208033ae0, 0xc2080acb40)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_slow_close.go:26 +0x28c
created by main.(*ToxicLink).SetToxic
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:81 +0xc6

goroutine 557 [chan receive, 1 minutes]:
main.(*TimeoutToxic).Pipe(0xc208033ad0, 0xc208455dc0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_timeout.go:36 +0x15a
created by main.(*ToxicLink).SetToxic
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:81 +0xc6

goroutine 929 [IO wait]:
net.(*pollDesc).Wait(0xc2080844c0, 0x72, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_poll_runtime.go:84 +0x47
net.(*pollDesc).WaitRead(0xc2080844c0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_poll_runtime.go:89 +0x43
net.(*netFD).Read(0xc208084460, 0xc2082ac000, 0x8000, 0x8000, 0x0, 0x7f0070851b70, 0xc208656970)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_unix.go:242 +0x40f
net.(*conn).Read(0xc208042a48, 0xc2082ac000, 0x8000, 0x8000, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/net.go:121 +0xdc
io.Copy(0x7f0070853928, 0xc208042a60, 0x7f0070853280, 0xc208042a48, 0x1cc1, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:362 +0x1f6
main.func·001()
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:48 +0x7e
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:58 +0x13e

goroutine 425 [chan receive, 1 minutes]:
main.(*ChanReader).Read(0xc208455ac0, 0xc208670000, 0x8000, 0x8000, 0xa2, 0x0, 0x0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/io_chan.go:58 +0x45f
io.Copy(0x7f0070853a18, 0xc2086560f0, 0x7f00708539a0, 0xc208455ac0, 0x6c68, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:362 +0x1f6
net.genericReadFrom(0x7f0070853258, 0xc208042828, 0x7f00708539a0, 0xc208455ac0, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/net.go:404 +0xb5
net.(*TCPConn).ReadFrom(0xc208042828, 0x7f00708539a0, 0xc208455ac0, 0x7f00708539f0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/tcpsock_posix.go:72 +0xe0
io.Copy(0x7f0070853258, 0xc208042828, 0x7f00708539a0, 0xc208455ac0, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:358 +0x13d
main.func·002()
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:63 +0xb8
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:75 +0x2e0

goroutine 1099 [IO wait]:
net.(*pollDesc).Wait(0xc208880c30, 0x72, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_poll_runtime.go:84 +0x47
net.(*pollDesc).WaitRead(0xc208880c30, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_poll_runtime.go:89 +0x43
net.(*netFD).Read(0xc208880bd0, 0xc208976000, 0x8000, 0x8000, 0x0, 0x7f0070851b70, 0xc2086568f0)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_unix.go:242 +0x40f
net.(*conn).Read(0xc208042d88, 0xc208976000, 0x8000, 0x8000, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/net.go:121 +0xdc
io.Copy(0x7f0070853928, 0xc208042da0, 0x7f0070853280, 0xc208042d88, 0x17499, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:362 +0x1f6
main.func·001()
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:48 +0x7e
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:58 +0x13e

goroutine 583 [chan receive, 1 minutes]:
main.(*TimeoutToxic).Pipe(0xc208033af0, 0xc208455aa0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_timeout.go:36 +0x15a
created by main.(*ToxicLink).SetToxic
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:81 +0xc6

goroutine 575 [chan send, 1 minutes]:
main.(*LatencyToxic).Pipe(0xc2080ac680, 0xc208455a80)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_latency.go:51 +0x233
created by main.(*ToxicLink).SetToxic
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:81 +0xc6

goroutine 421 [IO wait, 1 minutes]:
net.(*pollDesc).Wait(0xc2085e2bc0, 0x72, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_poll_runtime.go:84 +0x47
net.(*pollDesc).WaitRead(0xc2085e2bc0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_poll_runtime.go:89 +0x43
net.(*netFD).Read(0xc2085e2b60, 0xc208668000, 0x8000, 0x8000, 0x0, 0x7f0070851b70, 0xc2082370d0)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_unix.go:242 +0x40f
net.(*conn).Read(0xc208042830, 0xc208668000, 0x8000, 0x8000, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/net.go:121 +0xdc
io.Copy(0x7f0070853928, 0xc208042848, 0x7f0070853280, 0xc208042830, 0x6d30, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:362 +0x1f6
main.func·001()
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:48 +0x7e
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:58 +0x13e

goroutine 420 [chan receive, 1 minutes]:
main.(*ChanReader).Read(0xc2084559c0, 0xc208660000, 0x8000, 0x8000, 0xc3, 0x0, 0x0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/io_chan.go:58 +0x45f
io.Copy(0x7f0070853a18, 0xc2086560d0, 0x7f00708539a0, 0xc2084559c0, 0x8361, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:362 +0x1f6
net.genericReadFrom(0x7f0070853258, 0xc208042830, 0x7f00708539a0, 0xc2084559c0, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/net.go:404 +0xb5
net.(*TCPConn).ReadFrom(0xc208042830, 0x7f00708539a0, 0xc2084559c0, 0x7f00708539f0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/tcpsock_posix.go:72 +0xe0
io.Copy(0x7f0070853258, 0xc208042830, 0x7f00708539a0, 0xc2084559c0, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:358 +0x13d
main.func·002()
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:63 +0xb8
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:75 +0x2e0

goroutine 566 [select, 1 minutes]:
main.(*SlowCloseToxic).Pipe(0xc208033ae0, 0xc2084556e0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_slow_close.go:26 +0x28c
created by main.(*ToxicLink).SetToxic
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:81 +0xc6

goroutine 559 [chan receive, 1 minutes]:
main.(*TimeoutToxic).Pipe(0xc208033ad0, 0xc208455620)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_timeout.go:36 +0x15a
created by main.(*ToxicLink).SetToxic
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:81 +0xc6

goroutine 1114 [IO wait]:
net.(*pollDesc).Wait(0xc208880e60, 0x72, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_poll_runtime.go:84 +0x47
net.(*pollDesc).WaitRead(0xc208880e60, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_poll_runtime.go:89 +0x43
net.(*netFD).Read(0xc208880e00, 0xc2089b8000, 0x8000, 0x8000, 0x0, 0x7f0070851b70, 0xc2086568e0)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_unix.go:242 +0x40f
net.(*conn).Read(0xc208042de0, 0xc2089b8000, 0x8000, 0x8000, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/net.go:121 +0xdc
io.Copy(0x7f0070853928, 0xc208042df0, 0x7f0070853280, 0xc208042de0, 0xbe6b, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:362 +0x1f6
main.func·001()
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:48 +0x7e
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:58 +0x13e

goroutine 1116 [select]:
main.(*NoopToxic).Pipe(0x8bf8d0, 0xc20848d4e0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_noop.go:18 +0x19b
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:60 +0x223

goroutine 1120 [select]:
main.(*NoopToxic).Pipe(0x8bf8d0, 0xc20848d5c0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_noop.go:18 +0x19b
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:60 +0x223

goroutine 716 [chan receive, 1 minutes]:
main.(*TimeoutToxic).Pipe(0xc208033160, 0xc2080adde0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_timeout.go:36 +0x15a
created by main.(*ToxicLink).SetToxic
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:81 +0xc6

goroutine 724 [chan send, 1 minutes]:
main.(*SlowCloseToxic).Pipe(0xc208033190, 0xc2080adea0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_slow_close.go:40 +0x26e
created by main.(*ToxicLink).SetToxic
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:81 +0xc6

goroutine 140 [chan receive, 1 minutes]:
main.(*ChanReader).Read(0xc2080acb00, 0xc20825c000, 0x8000, 0x8000, 0xc2, 0x0, 0x0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/io_chan.go:58 +0x45f
io.Copy(0x7f0070853a18, 0xc208089b70, 0x7f00708539a0, 0xc2080acb00, 0x24a2a, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:362 +0x1f6
net.genericReadFrom(0x7f0070853258, 0xc208042298, 0x7f00708539a0, 0xc2080acb00, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/net.go:404 +0xb5
net.(*TCPConn).ReadFrom(0xc208042298, 0x7f00708539a0, 0xc2080acb00, 0x7f00708539f0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/tcpsock_posix.go:72 +0xe0
io.Copy(0x7f0070853258, 0xc208042298, 0x7f00708539a0, 0xc2080acb00, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:358 +0x13d
main.func·002()
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:63 +0xb8
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:75 +0x2e0

goroutine 141 [chan send, 1 minutes]:
main.(*ChanWriter).Write(0xc2080422b0, 0xc208264000, 0x12, 0x8000, 0x12, 0x0, 0x0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/io_chan.go:17 +0x11c
io.Copy(0x7f0070853928, 0xc2080422b0, 0x7f0070853280, 0xc208042298, 0x1e86d, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:364 +0x278
main.func·001()
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:48 +0x7e
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:58 +0x13e

goroutine 732 [chan send, 1 minutes]:
main.(*LatencyToxic).Pipe(0xc2080ac3c0, 0xc2080acc40)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_latency.go:51 +0x233
created by main.(*ToxicLink).SetToxic
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:81 +0xc6

goroutine 738 [chan receive, 1 minutes]:
main.(*TimeoutToxic).Pipe(0xc2080331c0, 0xc2080acc80)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_timeout.go:36 +0x15a
created by main.(*ToxicLink).SetToxic
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:81 +0xc6

goroutine 743 [select]:
main.(*NoopToxic).Pipe(0x8bf8d0, 0xc208234d40)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_noop.go:18 +0x19b
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:60 +0x223

goroutine 145 [chan receive, 1 minutes]:
main.(*ChanReader).Read(0xc2080accc0, 0xc2081ce000, 0x8000, 0x8000, 0x12, 0x0, 0x0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/io_chan.go:58 +0x45f
io.Copy(0x7f0070853a18, 0xc208088020, 0x7f00708539a0, 0xc2080accc0, 0x1e84d, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:362 +0x1f6
net.genericReadFrom(0x7f0070853258, 0xc208042290, 0x7f00708539a0, 0xc2080accc0, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/net.go:404 +0xb5
net.(*TCPConn).ReadFrom(0xc208042290, 0x7f00708539a0, 0xc2080accc0, 0x7f00708539f0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/tcpsock_posix.go:72 +0xe0
io.Copy(0x7f0070853258, 0xc208042290, 0x7f00708539a0, 0xc2080accc0, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:358 +0x13d
main.func·002()
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:63 +0xb8
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:75 +0x2e0

goroutine 1107 [select]:
main.(*NoopToxic).Pipe(0x8bf8d0, 0xc20848cf60)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_noop.go:18 +0x19b
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:60 +0x223

goroutine 1109 [IO wait]:
net.(*pollDesc).Wait(0xc208880df0, 0x72, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_poll_runtime.go:84 +0x47
net.(*pollDesc).WaitRead(0xc208880df0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_poll_runtime.go:89 +0x43
net.(*netFD).Read(0xc208880d90, 0xc208998000, 0x8000, 0x8000, 0x0, 0x7f0070851b70, 0xc208656930)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_unix.go:242 +0x40f
net.(*conn).Read(0xc208042db8, 0xc208998000, 0x8000, 0x8000, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/net.go:121 +0xdc
io.Copy(0x7f0070853928, 0xc208042dd0, 0x7f0070853280, 0xc208042db8, 0x1a52f, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:362 +0x1f6
main.func·001()
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:48 +0x7e
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:58 +0x13e

goroutine 715 [chan receive, 1 minutes]:
main.(*TimeoutToxic).Pipe(0xc208033160, 0xc20801ec80)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_timeout.go:36 +0x15a
created by main.(*ToxicLink).SetToxic
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:81 +0xc6

goroutine 723 [chan send, 1 minutes]:
main.(*SlowCloseToxic).Pipe(0xc208033190, 0xc20801f0a0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_slow_close.go:40 +0x26e
created by main.(*ToxicLink).SetToxic
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:81 +0xc6

goroutine 150 [chan receive, 1 minutes]:
main.(*ChanReader).Read(0xc20801eca0, 0xc20827c000, 0x8000, 0x8000, 0xd2, 0x0, 0x0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/io_chan.go:58 +0x45f
io.Copy(0x7f0070853a18, 0xc2080887e0, 0x7f00708539a0, 0xc20801eca0, 0x2740a, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:362 +0x1f6
net.genericReadFrom(0x7f0070853258, 0xc2080422d8, 0x7f00708539a0, 0xc20801eca0, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/net.go:404 +0xb5
net.(*TCPConn).ReadFrom(0xc2080422d8, 0x7f00708539a0, 0xc20801eca0, 0x7f00708539f0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/tcpsock_posix.go:72 +0xe0
io.Copy(0x7f0070853258, 0xc2080422d8, 0x7f00708539a0, 0xc20801eca0, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:358 +0x13d
main.func·002()
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:63 +0xb8
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:75 +0x2e0

goroutine 151 [chan send, 1 minutes]:
main.(*ChanWriter).Write(0xc2080422f0, 0xc208284000, 0x12, 0x8000, 0x12, 0x0, 0x0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/io_chan.go:17 +0x11c
io.Copy(0x7f0070853928, 0xc2080422f0, 0x7f0070853280, 0xc2080422d8, 0x2181e, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:364 +0x278
main.func·001()
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:48 +0x7e
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:58 +0x13e

goroutine 731 [select, 1 minutes]:
main.(*LatencyToxic).Pipe(0xc2080ac3c0, 0xc208365160)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_latency.go:40 +0x2e3
created by main.(*ToxicLink).SetToxic
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:81 +0xc6

goroutine 745 [chan receive]:
main.(*ChanReader).Read(0xc208234d80, 0xc208240000, 0x8000, 0x8000, 0x44, 0x0, 0x0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/io_chan.go:58 +0x45f
io.Copy(0x7f0070853a18, 0xc208236240, 0x7f00708539a0, 0xc208234d80, 0x562, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:362 +0x1f6
net.genericReadFrom(0x7f0070853258, 0xc2080420b0, 0x7f00708539a0, 0xc208234d80, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/net.go:404 +0xb5
net.(*TCPConn).ReadFrom(0xc2080420b0, 0x7f00708539a0, 0xc208234d80, 0x7f00708539f0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/tcpsock_posix.go:72 +0xe0
io.Copy(0x7f0070853258, 0xc2080420b0, 0x7f00708539a0, 0xc208234d80, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:358 +0x13d
main.func·002()
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:63 +0xb8
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:75 +0x2e0

goroutine 742 [select]:
main.(*NoopToxic).Pipe(0x8bf8d0, 0xc208234d20)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_noop.go:18 +0x19b
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:60 +0x223

goroutine 155 [chan receive, 1 minutes]:
main.(*ChanReader).Read(0xc20801f5a0, 0xc20828c000, 0x8000, 0x8000, 0xb3, 0x0, 0x0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/io_chan.go:58 +0x45f
io.Copy(0x7f0070853a18, 0xc208088800, 0x7f00708539a0, 0xc20801f5a0, 0x21757, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:362 +0x1f6
net.genericReadFrom(0x7f0070853258, 0xc208042160, 0x7f00708539a0, 0xc20801f5a0, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/net.go:404 +0xb5
net.(*TCPConn).ReadFrom(0xc208042160, 0x7f00708539a0, 0xc20801f5a0, 0x7f00708539f0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/tcpsock_posix.go:72 +0xe0
io.Copy(0x7f0070853258, 0xc208042160, 0x7f00708539a0, 0xc20801f5a0, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:358 +0x13d
main.func·002()
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:63 +0xb8
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:75 +0x2e0

goroutine 435 [chan receive, 1 minutes]:
main.(*ChanReader).Read(0xc208455f00, 0xc208690000, 0x8000, 0x8000, 0x8c, 0x0, 0x0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/io_chan.go:58 +0x45f
io.Copy(0x7f0070853a18, 0xc208656580, 0x7f00708539a0, 0xc208455f00, 0x5db6, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:362 +0x1f6
net.genericReadFrom(0x7f0070853258, 0xc208042858, 0x7f00708539a0, 0xc208455f00, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/net.go:404 +0xb5
net.(*TCPConn).ReadFrom(0xc208042858, 0x7f00708539a0, 0xc208455f00, 0x7f00708539f0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/tcpsock_posix.go:72 +0xe0
io.Copy(0x7f0070853258, 0xc208042858, 0x7f00708539a0, 0xc208455f00, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:358 +0x13d
main.func·002()
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:63 +0xb8
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:75 +0x2e0

goroutine 588 [chan send, 1 minutes]:
main.(*LatencyToxic).Pipe(0xc20801f300, 0xc2080ad960)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_latency.go:51 +0x233
created by main.(*ToxicLink).SetToxic
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:81 +0xc6

goroutine 582 [chan receive, 1 minutes]:
main.(*TimeoutToxic).Pipe(0xc208033af0, 0xc208455720)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_timeout.go:36 +0x15a
created by main.(*ToxicLink).SetToxic
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:81 +0xc6

goroutine 574 [chan send, 1 minutes]:
main.(*LatencyToxic).Pipe(0xc2080ac680, 0xc208455700)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_latency.go:51 +0x233
created by main.(*ToxicLink).SetToxic
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:81 +0xc6

goroutine 431 [IO wait, 1 minutes]:
net.(*pollDesc).Wait(0xc2085e2d80, 0x72, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_poll_runtime.go:84 +0x47
net.(*pollDesc).WaitRead(0xc2085e2d80, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_poll_runtime.go:89 +0x43
net.(*netFD).Read(0xc2085e2d20, 0xc208688000, 0x8000, 0x8000, 0x0, 0x7f0070851b70, 0xc2082371d0)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_unix.go:242 +0x40f
net.(*conn).Read(0xc208042860, 0xc208688000, 0x8000, 0x8000, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/net.go:121 +0xdc
io.Copy(0x7f0070853928, 0xc208042878, 0x7f0070853280, 0xc208042860, 0x5e42, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:362 +0x1f6
main.func·001()
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:48 +0x7e
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:58 +0x13e

goroutine 430 [chan receive, 1 minutes]:
main.(*ChanReader).Read(0xc208455de0, 0xc208680000, 0x8000, 0x8000, 0xad, 0x0, 0x0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/io_chan.go:58 +0x45f
io.Copy(0x7f0070853a18, 0xc208656560, 0x7f00708539a0, 0xc208455de0, 0x7499, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:362 +0x1f6
net.genericReadFrom(0x7f0070853258, 0xc208042860, 0x7f00708539a0, 0xc208455de0, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/net.go:404 +0xb5
net.(*TCPConn).ReadFrom(0xc208042860, 0x7f00708539a0, 0xc208455de0, 0x7f00708539f0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/tcpsock_posix.go:72 +0xe0
io.Copy(0x7f0070853258, 0xc208042860, 0x7f00708539a0, 0xc208455de0, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:358 +0x13d
main.func·002()
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:63 +0xb8
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:75 +0x2e0

goroutine 573 [select, 1 minutes]:
main.(*LatencyToxic).Pipe(0xc2080ac680, 0xc2080acd00)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_latency.go:40 +0x2e3
created by main.(*ToxicLink).SetToxic
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:81 +0xc6

goroutine 558 [chan receive, 1 minutes]:
main.(*TimeoutToxic).Pipe(0xc208033ad0, 0xc2080ac4a0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_timeout.go:36 +0x15a
created by main.(*ToxicLink).SetToxic
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:81 +0xc6

goroutine 1094 [IO wait]:
net.(*pollDesc).Wait(0xc208880ae0, 0x72, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_poll_runtime.go:84 +0x47
net.(*pollDesc).WaitRead(0xc208880ae0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_poll_runtime.go:89 +0x43
net.(*netFD).Read(0xc208880a80, 0xc208966000, 0x8000, 0x8000, 0x0, 0x7f0070851b70, 0xc208656900)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_unix.go:242 +0x40f
net.(*conn).Read(0xc208042d80, 0xc208966000, 0x8000, 0x8000, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/net.go:121 +0xdc
io.Copy(0x7f0070853928, 0xc208042d90, 0x7f0070853280, 0xc208042d80, 0xc34e, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:362 +0x1f6
main.func·001()
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:48 +0x7e
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:58 +0x13e

goroutine 1106 [select]:
main.(*NoopToxic).Pipe(0x8bf8d0, 0xc20848cf40)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_noop.go:18 +0x19b
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:60 +0x223

goroutine 960 [select]:
main.(*NoopToxic).Pipe(0x8bf8d0, 0xc208699700)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_noop.go:18 +0x19b
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:60 +0x223

goroutine 620 [chan receive, 1 minutes]:
main.(*TimeoutToxic).Pipe(0xc208089840, 0xc208364980)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_timeout.go:36 +0x15a
created by main.(*ToxicLink).SetToxic
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:81 +0xc6

goroutine 1045 [select]:
main.(*NoopToxic).Pipe(0x8bf8d0, 0xc20836e460)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_noop.go:18 +0x19b
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:60 +0x223

goroutine 1082 [select]:
main.(*NoopToxic).Pipe(0x8bf8d0, 0xc20836f540)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_noop.go:18 +0x19b
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:60 +0x223

goroutine 315 [chan receive, 1 minutes]:
main.(*ChanReader).Read(0xc2083649a0, 0xc2084e6000, 0x8000, 0x8000, 0x14, 0x0, 0x0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/io_chan.go:58 +0x45f
io.Copy(0x7f0070853a18, 0xc2083b5530, 0x7f00708539a0, 0xc2083649a0, 0xf2b, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:362 +0x1f6
net.genericReadFrom(0x7f0070853258, 0xc208042618, 0x7f00708539a0, 0xc2083649a0, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/net.go:404 +0xb5
net.(*TCPConn).ReadFrom(0xc208042618, 0x7f00708539a0, 0xc2083649a0, 0x7f00708539f0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/tcpsock_posix.go:72 +0xe0
io.Copy(0x7f0070853258, 0xc208042618, 0x7f00708539a0, 0xc2083649a0, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:358 +0x13d
main.func·002()
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:63 +0xb8
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:75 +0x2e0

goroutine 1003 [chan receive]:
main.(*ChanReader).Read(0xc2083b2b00, 0xc2087be000, 0x8000, 0x8000, 0xa, 0x0, 0x0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/io_chan.go:58 +0x45f
io.Copy(0x7f0070853a18, 0xc208656d70, 0x7f00708539a0, 0xc2083b2b00, 0x261, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:362 +0x1f6
net.genericReadFrom(0x7f0070853258, 0xc208042b90, 0x7f00708539a0, 0xc2083b2b00, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/net.go:404 +0xb5
net.(*TCPConn).ReadFrom(0xc208042b90, 0x7f00708539a0, 0xc2083b2b00, 0x7f00708539f0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/tcpsock_posix.go:72 +0xe0
io.Copy(0x7f0070853258, 0xc208042b90, 0x7f00708539a0, 0xc2083b2b00, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:358 +0x13d
main.func·002()
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:63 +0xb8
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:75 +0x2e0

goroutine 614 [chan receive, 1 minutes]:
main.(*TimeoutToxic).Pipe(0xc208089820, 0xc208364880)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_timeout.go:36 +0x15a
created by main.(*ToxicLink).SetToxic
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:81 +0xc6

goroutine 932 [select]:
main.(*NoopToxic).Pipe(0x8bf8d0, 0xc2086984e0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_noop.go:18 +0x19b
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:60 +0x223

goroutine 924 [IO wait]:
net.(*pollDesc).Wait(0xc208084370, 0x72, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_poll_runtime.go:84 +0x47
net.(*pollDesc).WaitRead(0xc208084370, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_poll_runtime.go:89 +0x43
net.(*netFD).Read(0xc208084310, 0xc20829c000, 0x8000, 0x8000, 0x0, 0x7f0070851b70, 0xc208656960)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_unix.go:242 +0x40f
net.(*conn).Read(0xc208042a40, 0xc20829c000, 0x8000, 0x8000, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/net.go:121 +0xdc
io.Copy(0x7f0070853928, 0xc208042a50, 0x7f0070853280, 0xc208042a40, 0x222a, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:362 +0x1f6
main.func·001()
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:48 +0x7e
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:58 +0x13e

goroutine 310 [chan receive, 1 minutes]:
main.(*ChanReader).Read(0xc2083648a0, 0xc2084d6000, 0x8000, 0x8000, 0xc, 0x0, 0x0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/io_chan.go:58 +0x45f
io.Copy(0x7f0070853a18, 0xc2083b5510, 0x7f00708539a0, 0xc2083648a0, 0x139d, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:362 +0x1f6
net.genericReadFrom(0x7f0070853258, 0xc208042620, 0x7f00708539a0, 0xc2083648a0, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/net.go:404 +0xb5
net.(*TCPConn).ReadFrom(0xc208042620, 0x7f00708539a0, 0xc2083648a0, 0x7f00708539f0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/tcpsock_posix.go:72 +0xe0
io.Copy(0x7f0070853258, 0xc208042620, 0x7f00708539a0, 0xc2083648a0, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:358 +0x13d
main.func·002()
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:63 +0xb8
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:75 +0x2e0

goroutine 1075 [select]:
main.(*NoopToxic).Pipe(0x8bf8d0, 0xc20836f400)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_noop.go:18 +0x19b
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:60 +0x223

goroutine 498 [chan receive, 1 minutes]:
main.(*TimeoutToxic).Pipe(0xc2080c8100, 0xc2080ad140)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_timeout.go:36 +0x15a
created by main.(*ToxicLink).SetToxic
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:81 +0xc6

goroutine 508 [select, 1 minutes]:
main.(*SlowCloseToxic).Pipe(0xc2080c8110, 0xc2083645a0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_slow_close.go:26 +0x28c
created by main.(*ToxicLink).SetToxic
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:81 +0xc6

goroutine 180 [chan receive, 1 minutes]:
main.(*ChanReader).Read(0xc2080ad160, 0xc2082fa000, 0x8000, 0x8000, 0xad, 0x0, 0x0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/io_chan.go:58 +0x45f
io.Copy(0x7f0070853a18, 0xc2080895e0, 0x7f00708539a0, 0xc2080ad160, 0x205df, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:362 +0x1f6
net.genericReadFrom(0x7f0070853258, 0xc208042388, 0x7f00708539a0, 0xc2080ad160, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/net.go:404 +0xb5
net.(*TCPConn).ReadFrom(0xc208042388, 0x7f00708539a0, 0xc2080ad160, 0x7f00708539f0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/tcpsock_posix.go:72 +0xe0
io.Copy(0x7f0070853258, 0xc208042388, 0x7f00708539a0, 0xc2080ad160, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:358 +0x13d
main.func·002()
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:63 +0xb8
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:75 +0x2e0

goroutine 181 [IO wait, 1 minutes]:
net.(*pollDesc).Wait(0xc208011720, 0x72, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_poll_runtime.go:84 +0x47
net.(*pollDesc).WaitRead(0xc208011720, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_poll_runtime.go:89 +0x43
net.(*netFD).Read(0xc2080116c0, 0xc208302000, 0x8000, 0x8000, 0x0, 0x7f0070851b70, 0xc208236a30)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_unix.go:242 +0x40f
net.(*conn).Read(0xc208042388, 0xc208302000, 0x8000, 0x8000, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/net.go:121 +0xdc
io.Copy(0x7f0070853928, 0xc2080423a0, 0x7f0070853280, 0xc208042388, 0x1a3f2, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:362 +0x1f6
main.func·001()
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:48 +0x7e
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:58 +0x13e

goroutine 516 [chan send, 1 minutes]:
main.(*LatencyToxic).Pipe(0xc2080ac940, 0xc2083645c0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_latency.go:51 +0x233
created by main.(*ToxicLink).SetToxic
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:81 +0xc6

goroutine 524 [chan receive, 1 minutes]:
main.(*TimeoutToxic).Pipe(0xc2080c8120, 0xc2083645e0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_timeout.go:36 +0x15a
created by main.(*ToxicLink).SetToxic
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:81 +0xc6

goroutine 1105 [select]:
main.(*NoopToxic).Pipe(0x8bf8d0, 0xc20848cf20)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_noop.go:18 +0x19b
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:60 +0x223

goroutine 185 [chan receive, 1 minutes]:
main.(*ChanReader).Read(0xc2080ad260, 0xc20830a000, 0x8000, 0x8000, 0x8c, 0x0, 0x0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/io_chan.go:58 +0x45f
io.Copy(0x7f0070853a18, 0xc208089600, 0x7f00708539a0, 0xc2080ad260, 0x1a340, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:362 +0x1f6
net.genericReadFrom(0x7f0070853258, 0xc208042380, 0x7f00708539a0, 0xc2080ad260, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/net.go:404 +0xb5
net.(*TCPConn).ReadFrom(0xc208042380, 0x7f00708539a0, 0xc2080ad260, 0x7f00708539f0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/tcpsock_posix.go:72 +0xe0
io.Copy(0x7f0070853258, 0xc208042380, 0x7f00708539a0, 0xc2080ad260, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:358 +0x13d
main.func·002()
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:63 +0xb8
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:75 +0x2e0

goroutine 1047 [select]:
main.(*NoopToxic).Pipe(0x8bf8d0, 0xc20836e4a0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_noop.go:18 +0x19b
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:60 +0x223

goroutine 497 [chan receive, 1 minutes]:
main.(*TimeoutToxic).Pipe(0xc2080c8100, 0xc208365400)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_timeout.go:36 +0x15a
created by main.(*ToxicLink).SetToxic
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:81 +0xc6

goroutine 505 [select, 1 minutes]:
main.(*SlowCloseToxic).Pipe(0xc2080c8110, 0xc2083654c0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_slow_close.go:26 +0x28c
created by main.(*ToxicLink).SetToxic
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:81 +0xc6

goroutine 507 [select, 1 minutes]:
main.(*SlowCloseToxic).Pipe(0xc2080c8110, 0xc2080ad580)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_slow_close.go:26 +0x28c
created by main.(*ToxicLink).SetToxic
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:81 +0xc6

goroutine 190 [chan receive, 1 minutes]:
main.(*ChanReader).Read(0xc2080ad4e0, 0xc208324000, 0x8000, 0x8000, 0x9d, 0x0, 0x0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/io_chan.go:58 +0x45f
io.Copy(0x7f0070853a18, 0xc2080899e0, 0x7f00708539a0, 0xc2080ad4e0, 0x1d6d2, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:362 +0x1f6
net.genericReadFrom(0x7f0070853258, 0xc2080423c8, 0x7f00708539a0, 0xc2080ad4e0, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/net.go:404 +0xb5
net.(*TCPConn).ReadFrom(0xc2080423c8, 0x7f00708539a0, 0xc2080ad4e0, 0x7f00708539f0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/tcpsock_posix.go:72 +0xe0
io.Copy(0x7f0070853258, 0xc2080423c8, 0x7f00708539a0, 0xc2080ad4e0, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:358 +0x13d
main.func·002()
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:63 +0xb8
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:75 +0x2e0

goroutine 191 [IO wait, 1 minutes]:
net.(*pollDesc).Wait(0xc2080119c0, 0x72, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_poll_runtime.go:84 +0x47
net.(*pollDesc).WaitRead(0xc2080119c0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_poll_runtime.go:89 +0x43
net.(*netFD).Read(0xc208011960, 0xc20832c000, 0x8000, 0x8000, 0x0, 0x7f0070851b70, 0xc2082370c0)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_unix.go:242 +0x40f
net.(*conn).Read(0xc2080423c8, 0xc20832c000, 0x8000, 0x8000, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/net.go:121 +0xdc
io.Copy(0x7f0070853928, 0xc2080423e0, 0x7f0070853280, 0xc2080423c8, 0x16f14, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:362 +0x1f6
main.func·001()
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:48 +0x7e
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:58 +0x13e

goroutine 515 [chan send, 1 minutes]:
main.(*LatencyToxic).Pipe(0xc2080ac940, 0xc2080ad5a0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_latency.go:51 +0x233
created by main.(*ToxicLink).SetToxic
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:81 +0xc6

goroutine 523 [chan receive, 1 minutes]:
main.(*TimeoutToxic).Pipe(0xc2080c8120, 0xc2080ad5c0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_timeout.go:36 +0x15a
created by main.(*ToxicLink).SetToxic
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:81 +0xc6

goroutine 997 [select]:
main.(*NoopToxic).Pipe(0x8bf8d0, 0xc2083b29e0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_noop.go:18 +0x19b
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:60 +0x223

goroutine 195 [chan receive, 1 minutes]:
main.(*ChanReader).Read(0xc2080ad5e0, 0xc208334000, 0x8000, 0x8000, 0x7a, 0x0, 0x0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/io_chan.go:58 +0x45f
io.Copy(0x7f0070853a18, 0xc208089a00, 0x7f00708539a0, 0xc2080ad5e0, 0x16e9a, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:362 +0x1f6
net.genericReadFrom(0x7f0070853258, 0xc2080423c0, 0x7f00708539a0, 0xc2080ad5e0, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/net.go:404 +0xb5
net.(*TCPConn).ReadFrom(0xc2080423c0, 0x7f00708539a0, 0xc2080ad5e0, 0x7f00708539f0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/tcpsock_posix.go:72 +0xe0
io.Copy(0x7f0070853258, 0xc2080423c0, 0x7f00708539a0, 0xc2080ad5e0, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:358 +0x13d
main.func·002()
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:63 +0xb8
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:75 +0x2e0

goroutine 1122 [select]:
main.(*NoopToxic).Pipe(0x8bf8d0, 0xc20848d600)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_noop.go:18 +0x19b
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:60 +0x223

goroutine 714 [chan receive, 1 minutes]:
main.(*TimeoutToxic).Pipe(0xc208033160, 0xc2080acae0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_timeout.go:36 +0x15a
created by main.(*ToxicLink).SetToxic
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:81 +0xc6

goroutine 722 [chan send, 1 minutes]:
main.(*SlowCloseToxic).Pipe(0xc208033190, 0xc2080acbe0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_slow_close.go:40 +0x26e
created by main.(*ToxicLink).SetToxic
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:81 +0xc6

goroutine 200 [chan receive, 1 minutes]:
main.(*ChanReader).Read(0xc2080ade00, 0xc20834c000, 0x8000, 0x8000, 0x9d, 0x0, 0x0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/io_chan.go:58 +0x45f
io.Copy(0x7f0070853a18, 0xc2080c8880, 0x7f00708539a0, 0xc2080ade00, 0x1d93b, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:362 +0x1f6
net.genericReadFrom(0x7f0070853258, 0xc208042408, 0x7f00708539a0, 0xc2080ade00, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/net.go:404 +0xb5
net.(*TCPConn).ReadFrom(0xc208042408, 0x7f00708539a0, 0xc2080ade00, 0x7f00708539f0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/tcpsock_posix.go:72 +0xe0
io.Copy(0x7f0070853258, 0xc208042408, 0x7f00708539a0, 0xc2080ade00, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:358 +0x13d
main.func·002()
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:63 +0xb8
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:75 +0x2e0

goroutine 201 [chan send, 1 minutes]:
main.(*ChanWriter).Write(0xc208042420, 0xc208354000, 0x12, 0x8000, 0x12, 0x0, 0x0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/io_chan.go:17 +0x11c
io.Copy(0x7f0070853928, 0xc208042420, 0x7f0070853280, 0xc208042408, 0x17182, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:364 +0x278
main.func·001()
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:48 +0x7e
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:58 +0x13e

goroutine 730 [chan send, 1 minutes]:
main.(*LatencyToxic).Pipe(0xc2080ac3c0, 0xc2080adec0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_latency.go:51 +0x233
created by main.(*ToxicLink).SetToxic
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:81 +0xc6

goroutine 740 [chan receive, 1 minutes]:
main.(*TimeoutToxic).Pipe(0xc2080331c0, 0xc2080adee0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_timeout.go:36 +0x15a
created by main.(*ToxicLink).SetToxic
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:81 +0xc6

goroutine 741 [IO wait]:
net.(*pollDesc).Wait(0xc208084b50, 0x72, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_poll_runtime.go:84 +0x47
net.(*pollDesc).WaitRead(0xc208084b50, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_poll_runtime.go:89 +0x43
net.(*netFD).Read(0xc208084af0, 0xc208238000, 0x8000, 0x8000, 0x0, 0x7f0070851b70, 0xc2080c9900)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_unix.go:242 +0x40f
net.(*conn).Read(0xc2080420a0, 0xc208238000, 0x8000, 0x8000, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/net.go:121 +0xdc
io.Copy(0x7f0070853928, 0xc2080420b8, 0x7f0070853280, 0xc2080420a0, 0x562, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:362 +0x1f6
main.func·001()
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:48 +0x7e
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:58 +0x13e

goroutine 205 [chan receive, 1 minutes]:
main.(*ChanReader).Read(0xc2080adf00, 0xc20835c000, 0x8000, 0x8000, 0x7a, 0x0, 0x0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/io_chan.go:58 +0x45f
io.Copy(0x7f0070853a18, 0xc2080c88a0, 0x7f00708539a0, 0xc2080adf00, 0x17162, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:362 +0x1f6
net.genericReadFrom(0x7f0070853258, 0xc2080423f0, 0x7f00708539a0, 0xc2080adf00, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/net.go:404 +0xb5
net.(*TCPConn).ReadFrom(0xc2080423f0, 0x7f00708539a0, 0xc2080adf00, 0x7f00708539f0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/tcpsock_posix.go:72 +0xe0
io.Copy(0x7f0070853258, 0xc2080423f0, 0x7f00708539a0, 0xc2080adf00, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:358 +0x13d
main.func·002()
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:63 +0xb8
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:75 +0x2e0

goroutine 415 [chan receive, 1 minutes]:
main.(*ChanReader).Read(0xc208455740, 0xc20864c000, 0x8000, 0x8000, 0xa2, 0x0, 0x0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/io_chan.go:58 +0x45f
io.Copy(0x7f0070853a18, 0xc20846bd30, 0x7f00708539a0, 0xc208455740, 0x6c68, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:362 +0x1f6
net.genericReadFrom(0x7f0070853258, 0xc2080427f8, 0x7f00708539a0, 0xc208455740, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/net.go:404 +0xb5
net.(*TCPConn).ReadFrom(0xc2080427f8, 0x7f00708539a0, 0xc208455740, 0x7f00708539f0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/tcpsock_posix.go:72 +0xe0
io.Copy(0x7f0070853258, 0xc2080427f8, 0x7f00708539a0, 0xc208455740, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:358 +0x13d
main.func·002()
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:63 +0xb8
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:75 +0x2e0

goroutine 1079 [IO wait]:
net.(*pollDesc).Wait(0xc2088806f0, 0x72, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_poll_runtime.go:84 +0x47
net.(*pollDesc).WaitRead(0xc2088806f0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_poll_runtime.go:89 +0x43
net.(*netFD).Read(0xc208880690, 0xc208902000, 0x8000, 0x8000, 0x0, 0x7f0070851b70, 0xc208656910)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_unix.go:242 +0x40f
net.(*conn).Read(0xc208042d28, 0xc208902000, 0x8000, 0x8000, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/net.go:121 +0xdc
io.Copy(0x7f0070853928, 0xc208042d40, 0x7f0070853280, 0xc208042d28, 0x10b22, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:362 +0x1f6
main.func·001()
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:48 +0x7e
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:58 +0x13e

goroutine 584 [chan receive, 1 minutes]:
main.(*TimeoutToxic).Pipe(0xc208033af0, 0xc208455ee0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_timeout.go:36 +0x15a
created by main.(*ToxicLink).SetToxic
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:81 +0xc6

goroutine 576 [chan send, 1 minutes]:
main.(*LatencyToxic).Pipe(0xc2080ac680, 0xc208455ec0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_latency.go:51 +0x233
created by main.(*ToxicLink).SetToxic
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:81 +0xc6

goroutine 411 [IO wait, 1 minutes]:
net.(*pollDesc).Wait(0xc2085e2a00, 0x72, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_poll_runtime.go:84 +0x47
net.(*pollDesc).WaitRead(0xc2085e2a00, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_poll_runtime.go:89 +0x43
net.(*netFD).Read(0xc2085e29a0, 0xc208644000, 0x8000, 0x8000, 0x0, 0x7f0070851b70, 0xc2082370f0)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_unix.go:242 +0x40f
net.(*conn).Read(0xc208042800, 0xc208644000, 0x8000, 0x8000, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/net.go:121 +0xdc
io.Copy(0x7f0070853928, 0xc208042818, 0x7f0070853280, 0xc208042800, 0x6d30, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:362 +0x1f6
main.func·001()
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:48 +0x7e
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:58 +0x13e

goroutine 410 [chan receive, 1 minutes]:
main.(*ChanReader).Read(0xc208455640, 0xc20863c000, 0x8000, 0x8000, 0xc3, 0x0, 0x0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/io_chan.go:58 +0x45f
io.Copy(0x7f0070853a18, 0xc20846bd10, 0x7f00708539a0, 0xc208455640, 0x8361, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:362 +0x1f6
net.genericReadFrom(0x7f0070853258, 0xc208042800, 0x7f00708539a0, 0xc208455640, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/net.go:404 +0xb5
net.(*TCPConn).ReadFrom(0xc208042800, 0x7f00708539a0, 0xc208455640, 0x7f00708539f0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/tcpsock_posix.go:72 +0xe0
io.Copy(0x7f0070853258, 0xc208042800, 0x7f00708539a0, 0xc208455640, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:358 +0x13d
main.func·002()
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:63 +0xb8
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:75 +0x2e0

goroutine 567 [select, 1 minutes]:
main.(*SlowCloseToxic).Pipe(0xc208033ae0, 0xc208455a60)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_slow_close.go:26 +0x28c
created by main.(*ToxicLink).SetToxic
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:81 +0xc6

goroutine 560 [chan receive, 1 minutes]:
main.(*TimeoutToxic).Pipe(0xc208033ad0, 0xc2084559a0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_timeout.go:36 +0x15a
created by main.(*ToxicLink).SetToxic
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:81 +0xc6

goroutine 1104 [IO wait]:
net.(*pollDesc).Wait(0xc208880ca0, 0x72, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_poll_runtime.go:84 +0x47
net.(*pollDesc).WaitRead(0xc208880ca0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_poll_runtime.go:89 +0x43
net.(*netFD).Read(0xc208880c40, 0xc208988000, 0x8000, 0x8000, 0x0, 0x7f0070851b70, 0xc208656940)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_unix.go:242 +0x40f
net.(*conn).Read(0xc208042db0, 0xc208988000, 0x8000, 0x8000, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/net.go:121 +0xdc
io.Copy(0x7f0070853928, 0xc208042dc0, 0x7f0070853280, 0xc208042db0, 0xacab, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:362 +0x1f6
main.func·001()
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:48 +0x7e
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:58 +0x13e

goroutine 1096 [select]:
main.(*NoopToxic).Pipe(0x8bf8d0, 0xc20848c9a0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_noop.go:18 +0x19b
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:60 +0x223

goroutine 1077 [select]:
main.(*NoopToxic).Pipe(0x8bf8d0, 0xc20836f440)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_noop.go:18 +0x19b
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:60 +0x223

goroutine 500 [chan receive, 1 minutes]:
main.(*TimeoutToxic).Pipe(0xc2080c8100, 0xc2083644e0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_timeout.go:36 +0x15a
created by main.(*ToxicLink).SetToxic
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:81 +0xc6

goroutine 506 [select, 1 minutes]:
main.(*SlowCloseToxic).Pipe(0xc2080c8110, 0xc2080ad200)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_slow_close.go:26 +0x28c
created by main.(*ToxicLink).SetToxic
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:81 +0xc6

goroutine 220 [chan receive, 1 minutes]:
main.(*ChanReader).Read(0xc208364500, 0xc20839a000, 0x8000, 0x8000, 0x9d, 0x0, 0x0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/io_chan.go:58 +0x45f
io.Copy(0x7f0070853a18, 0xc2080c8ff0, 0x7f00708539a0, 0xc208364500, 0x1daa9, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:362 +0x1f6
net.genericReadFrom(0x7f0070853258, 0xc208042498, 0x7f00708539a0, 0xc208364500, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/net.go:404 +0xb5
net.(*TCPConn).ReadFrom(0xc208042498, 0x7f00708539a0, 0xc208364500, 0x7f00708539f0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/tcpsock_posix.go:72 +0xe0
io.Copy(0x7f0070853258, 0xc208042498, 0x7f00708539a0, 0xc208364500, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:358 +0x13d
main.func·002()
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:63 +0xb8
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:75 +0x2e0

goroutine 221 [IO wait, 1 minutes]:
net.(*pollDesc).Wait(0xc2080840d0, 0x72, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_poll_runtime.go:84 +0x47
net.(*pollDesc).WaitRead(0xc2080840d0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_poll_runtime.go:89 +0x43
net.(*netFD).Read(0xc208084070, 0xc2083a2000, 0x8000, 0x8000, 0x0, 0x7f0070851b70, 0xc208236c58)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_unix.go:242 +0x40f
net.(*conn).Read(0xc208042498, 0xc2083a2000, 0x8000, 0x8000, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/net.go:121 +0xdc
io.Copy(0x7f0070853928, 0xc2080424b0, 0x7f0070853280, 0xc208042498, 0x172e8, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:362 +0x1f6
main.func·001()
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:48 +0x7e
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:58 +0x13e

goroutine 514 [chan send, 1 minutes]:
main.(*LatencyToxic).Pipe(0xc2080ac940, 0xc2080ad220)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_latency.go:51 +0x233
created by main.(*ToxicLink).SetToxic
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:81 +0xc6

goroutine 522 [chan receive, 1 minutes]:
main.(*TimeoutToxic).Pipe(0xc2080c8120, 0xc2080ad240)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_timeout.go:36 +0x15a
created by main.(*ToxicLink).SetToxic
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:81 +0xc6

goroutine 528 [chan send, 1 minutes]:
main.(*LatencyToxic).Pipe(0xc20801f5e0, 0xc2083b3d40)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_latency.go:51 +0x233
created by main.(*ToxicLink).SetToxic
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:81 +0xc6

goroutine 225 [chan receive, 1 minutes]:
main.(*ChanReader).Read(0xc208364600, 0xc2083aa000, 0x8000, 0x8000, 0x7a, 0x0, 0x0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/io_chan.go:58 +0x45f
io.Copy(0x7f0070853a18, 0xc2080c9020, 0x7f00708539a0, 0xc208364600, 0x17248, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:362 +0x1f6
net.genericReadFrom(0x7f0070853258, 0xc208042490, 0x7f00708539a0, 0xc208364600, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/net.go:404 +0xb5
net.(*TCPConn).ReadFrom(0xc208042490, 0x7f00708539a0, 0xc208364600, 0x7f00708539f0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/tcpsock_posix.go:72 +0xe0
io.Copy(0x7f0070853258, 0xc208042490, 0x7f00708539a0, 0xc208364600, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:358 +0x13d
main.func·002()
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:63 +0xb8
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:75 +0x2e0

goroutine 405 [chan receive, 1 minutes]:
main.(*ChanReader).Read(0xc208454200, 0xc208620000, 0x8000, 0x8000, 0xa, 0x0, 0x0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/io_chan.go:58 +0x45f
io.Copy(0x7f0070853a18, 0xc208033bd0, 0x7f00708539a0, 0xc208454200, 0x51a, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:362 +0x1f6
net.genericReadFrom(0x7f0070853258, 0xc2080427c8, 0x7f00708539a0, 0xc208454200, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/net.go:404 +0xb5
net.(*TCPConn).ReadFrom(0xc2080427c8, 0x7f00708539a0, 0xc208454200, 0x7f00708539f0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/tcpsock_posix.go:72 +0xe0
io.Copy(0x7f0070853258, 0xc2080427c8, 0x7f00708539a0, 0xc208454200, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:358 +0x13d
main.func·002()
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:63 +0xb8
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:75 +0x2e0

goroutine 930 [select]:
main.(*NoopToxic).Pipe(0x8bf8d0, 0xc2086984a0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_noop.go:18 +0x19b
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:60 +0x223

goroutine 1101 [select]:
main.(*NoopToxic).Pipe(0x8bf8d0, 0xc20848caa0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_noop.go:18 +0x19b
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:60 +0x223

goroutine 665 [chan receive, 1 minutes]:
main.(*TimeoutToxic).Pipe(0xc208032910, 0xc2084541e0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_timeout.go:36 +0x15a
created by main.(*ToxicLink).SetToxic
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:81 +0xc6

goroutine 401 [IO wait, 1 minutes]:
net.(*pollDesc).Wait(0xc2085e25a0, 0x72, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_poll_runtime.go:84 +0x47
net.(*pollDesc).WaitRead(0xc2085e25a0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_poll_runtime.go:89 +0x43
net.(*netFD).Read(0xc2085e2540, 0xc208618000, 0x8000, 0x8000, 0x0, 0x7f0070851b70, 0xc208656c60)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_unix.go:242 +0x40f
net.(*conn).Read(0xc2080427d0, 0xc208618000, 0x8000, 0x8000, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/net.go:121 +0xdc
io.Copy(0x7f0070853928, 0xc2080427e8, 0x7f0070853280, 0xc2080427d0, 0x51a, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:362 +0x1f6
main.func·001()
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:48 +0x7e
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:58 +0x13e

goroutine 400 [chan receive, 1 minutes]:
main.(*ChanReader).Read(0xc208454100, 0xc208610000, 0x8000, 0x8000, 0xfb, 0x0, 0x0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/io_chan.go:58 +0x45f
io.Copy(0x7f0070853a18, 0xc208033bb0, 0x7f00708539a0, 0xc208454100, 0x3116, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:362 +0x1f6
net.genericReadFrom(0x7f0070853258, 0xc2080427d0, 0x7f00708539a0, 0xc208454100, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/net.go:404 +0xb5
net.(*TCPConn).ReadFrom(0xc2080427d0, 0x7f00708539a0, 0xc208454100, 0x7f00708539f0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/tcpsock_posix.go:72 +0xe0
io.Copy(0x7f0070853258, 0xc2080427d0, 0x7f00708539a0, 0xc208454100, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:358 +0x13d
main.func·002()
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:63 +0xb8
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:75 +0x2e0

goroutine 651 [select, 1 minutes]:
main.(*SlowCloseToxic).Pipe(0xc208032900, 0xc2086986e0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_slow_close.go:26 +0x28c
created by main.(*ToxicLink).SetToxic
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:81 +0xc6

goroutine 642 [chan receive, 1 minutes]:
main.(*TimeoutToxic).Pipe(0xc2080328f0, 0xc2086989a0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_timeout.go:36 +0x15a
created by main.(*ToxicLink).SetToxic
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:81 +0xc6

goroutine 641 [chan receive, 1 minutes]:
main.(*TimeoutToxic).Pipe(0xc2080328f0, 0xc208698620)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_timeout.go:36 +0x15a
created by main.(*ToxicLink).SetToxic
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:81 +0xc6

goroutine 964 [IO wait]:
net.(*pollDesc).Wait(0xc208084f40, 0x72, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_poll_runtime.go:84 +0x47
net.(*pollDesc).WaitRead(0xc208084f40, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_poll_runtime.go:89 +0x43
net.(*netFD).Read(0xc208084ee0, 0xc208404000, 0x8000, 0x8000, 0x0, 0x7f0070851b70, 0xc2083734f0)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_unix.go:242 +0x40f
net.(*conn).Read(0xc208042b00, 0xc208404000, 0x8000, 0x8000, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/net.go:121 +0xdc
io.Copy(0x7f0070853928, 0xc208042b10, 0x7f0070853280, 0xc208042b00, 0x1d1f, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:362 +0x1f6
main.func·001()
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:48 +0x7e
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:58 +0x13e

goroutine 445 [chan receive, 1 minutes]:
main.(*ChanReader).Read(0xc2086983c0, 0xc2086b6000, 0x8000, 0x8000, 0xb3, 0x0, 0x0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/io_chan.go:58 +0x45f
io.Copy(0x7f0070853a18, 0xc208657580, 0x7f00708539a0, 0xc2086983c0, 0x7711, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:362 +0x1f6
net.genericReadFrom(0x7f0070853258, 0xc208042888, 0x7f00708539a0, 0xc2086983c0, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/net.go:404 +0xb5
net.(*TCPConn).ReadFrom(0xc208042888, 0x7f00708539a0, 0xc2086983c0, 0x7f00708539f0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/tcpsock_posix.go:72 +0xe0
io.Copy(0x7f0070853258, 0xc208042888, 0x7f00708539a0, 0xc2086983c0, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:358 +0x13d
main.func·002()
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:63 +0xb8
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:75 +0x2e0

goroutine 668 [chan receive, 1 minutes]:
main.(*TimeoutToxic).Pipe(0xc208032910, 0xc208698aa0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_timeout.go:36 +0x15a
created by main.(*ToxicLink).SetToxic
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:81 +0xc6

goroutine 660 [chan send, 1 minutes]:
main.(*LatencyToxic).Pipe(0xc2080ac100, 0xc208698a80)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_latency.go:51 +0x233
created by main.(*ToxicLink).SetToxic
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:81 +0xc6

goroutine 441 [chan send, 1 minutes]:
main.(*ChanWriter).Write(0xc2080428a8, 0xc2086ae000, 0x12, 0x8000, 0x12, 0x0, 0x0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/io_chan.go:17 +0x11c
io.Copy(0x7f0070853928, 0xc2080428a8, 0x7f0070853280, 0xc208042890, 0x7731, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:364 +0x278
main.func·001()
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:48 +0x7e
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:58 +0x13e

goroutine 440 [chan receive, 1 minutes]:
main.(*ChanReader).Read(0xc2086982c0, 0xc2086a6000, 0x8000, 0x8000, 0xd2, 0x0, 0x0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/io_chan.go:58 +0x45f
io.Copy(0x7f0070853a18, 0xc208657550, 0x7f00708539a0, 0xc2086982c0, 0x8ca4, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:362 +0x1f6
net.genericReadFrom(0x7f0070853258, 0xc208042890, 0x7f00708539a0, 0xc2086982c0, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/net.go:404 +0xb5
net.(*TCPConn).ReadFrom(0xc208042890, 0x7f00708539a0, 0xc2086982c0, 0x7f00708539f0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/tcpsock_posix.go:72 +0xe0
io.Copy(0x7f0070853258, 0xc208042890, 0x7f00708539a0, 0xc2086982c0, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:358 +0x13d
main.func·002()
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:63 +0xb8
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:75 +0x2e0

goroutine 650 [chan send, 1 minutes]:
main.(*SlowCloseToxic).Pipe(0xc208032900, 0xc208698360)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_slow_close.go:40 +0x26e
created by main.(*ToxicLink).SetToxic
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:81 +0xc6

goroutine 649 [select, 1 minutes]:
main.(*SlowCloseToxic).Pipe(0xc208032900, 0xc2084541a0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_slow_close.go:26 +0x28c
created by main.(*ToxicLink).SetToxic
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:81 +0xc6

goroutine 963 [chan receive]:
main.(*ChanReader).Read(0xc208699760, 0xc2083fc000, 0x8000, 0x8000, 0x14, 0x0, 0x0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/io_chan.go:58 +0x45f
io.Copy(0x7f0070853a18, 0xc20846b4e0, 0x7f00708539a0, 0xc208699760, 0x1973, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:362 +0x1f6
net.genericReadFrom(0x7f0070853258, 0xc208042ad0, 0x7f00708539a0, 0xc208699760, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/net.go:404 +0xb5
net.(*TCPConn).ReadFrom(0xc208042ad0, 0x7f00708539a0, 0xc208699760, 0x7f00708539f0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/tcpsock_posix.go:72 +0xe0
io.Copy(0x7f0070853258, 0xc208042ad0, 0x7f00708539a0, 0xc208699760, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:358 +0x13d
main.func·002()
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:63 +0xb8
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:75 +0x2e0

goroutine 1081 [select]:
main.(*NoopToxic).Pipe(0x8bf8d0, 0xc20836f520)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_noop.go:18 +0x19b
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:60 +0x223

goroutine 455 [chan receive, 1 minutes]:
main.(*ChanReader).Read(0xc208698740, 0xc2086d8000, 0x8000, 0x8000, 0xa1, 0x0, 0x0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/io_chan.go:58 +0x45f
io.Copy(0x7f0070853a18, 0xc208657890, 0x7f00708539a0, 0xc208698740, 0x6b1d, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:362 +0x1f6
net.genericReadFrom(0x7f0070853258, 0xc2080428b8, 0x7f00708539a0, 0xc208698740, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/net.go:404 +0xb5
net.(*TCPConn).ReadFrom(0xc2080428b8, 0x7f00708539a0, 0xc208698740, 0x7f00708539f0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/tcpsock_posix.go:72 +0xe0
io.Copy(0x7f0070853258, 0xc2080428b8, 0x7f00708539a0, 0xc208698740, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:358 +0x13d
main.func·002()
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:63 +0xb8
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:75 +0x2e0

goroutine 1000 [select]:
main.(*NoopToxic).Pipe(0x8bf8d0, 0xc2083b2aa0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_noop.go:18 +0x19b
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:60 +0x223

goroutine 667 [chan receive, 1 minutes]:
main.(*TimeoutToxic).Pipe(0xc208032910, 0xc208698720)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_timeout.go:36 +0x15a
created by main.(*ToxicLink).SetToxic
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:81 +0xc6

goroutine 659 [chan send, 1 minutes]:
main.(*LatencyToxic).Pipe(0xc2080ac100, 0xc208698700)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_latency.go:51 +0x233
created by main.(*ToxicLink).SetToxic
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:81 +0xc6

goroutine 451 [IO wait, 1 minutes]:
net.(*pollDesc).Wait(0xc2085e3100, 0x72, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_poll_runtime.go:84 +0x47
net.(*pollDesc).WaitRead(0xc2085e3100, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_poll_runtime.go:89 +0x43
net.(*netFD).Read(0xc2085e30a0, 0xc2086d0000, 0x8000, 0x8000, 0x0, 0x7f0070851b70, 0xc208237150)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_unix.go:242 +0x40f
net.(*conn).Read(0xc2080428c0, 0xc2086d0000, 0x8000, 0x8000, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/net.go:121 +0xdc
io.Copy(0x7f0070853928, 0xc2080428d8, 0x7f0070853280, 0xc2080428c0, 0x6bbe, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:362 +0x1f6
main.func·001()
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:48 +0x7e
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:58 +0x13e

goroutine 450 [chan receive, 1 minutes]:
main.(*ChanReader).Read(0xc208698640, 0xc2086c8000, 0x8000, 0x8000, 0xc2, 0x0, 0x0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/io_chan.go:58 +0x45f
io.Copy(0x7f0070853a18, 0xc208657870, 0x7f00708539a0, 0xc208698640, 0x81f4, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:362 +0x1f6
net.genericReadFrom(0x7f0070853258, 0xc2080428c0, 0x7f00708539a0, 0xc208698640, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/net.go:404 +0xb5
net.(*TCPConn).ReadFrom(0xc2080428c0, 0x7f00708539a0, 0xc208698640, 0x7f00708539f0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/tcpsock_posix.go:72 +0xe0
io.Copy(0x7f0070853258, 0xc2080428c0, 0x7f00708539a0, 0xc208698640, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:358 +0x13d
main.func·002()
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:63 +0xb8
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:75 +0x2e0

goroutine 657 [select, 1 minutes]:
main.(*LatencyToxic).Pipe(0xc2080ac100, 0xc2084541c0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_latency.go:40 +0x2e3
created by main.(*ToxicLink).SetToxic
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:81 +0xc6

goroutine 644 [chan receive, 1 minutes]:
main.(*TimeoutToxic).Pipe(0xc2080328f0, 0xc2086982a0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_timeout.go:36 +0x15a
created by main.(*ToxicLink).SetToxic
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:81 +0xc6

goroutine 1078 [chan receive]:
main.(*ChanReader).Read(0xc20836f460, 0xc2088fa000, 0x8000, 0x8000, 0xcd, 0x0, 0x0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/io_chan.go:58 +0x45f
io.Copy(0x7f0070853a18, 0xc208237a10, 0x7f00708539a0, 0xc20836f460, 0x6018, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:362 +0x1f6
net.genericReadFrom(0x7f0070853258, 0xc208042d28, 0x7f00708539a0, 0xc20836f460, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/net.go:404 +0xb5
net.(*TCPConn).ReadFrom(0xc208042d28, 0x7f00708539a0, 0xc20836f460, 0x7f00708539f0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/tcpsock_posix.go:72 +0xe0
io.Copy(0x7f0070853258, 0xc208042d28, 0x7f00708539a0, 0xc20836f460, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:358 +0x13d
main.func·002()
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:63 +0xb8
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:75 +0x2e0

goroutine 1046 [select]:
main.(*NoopToxic).Pipe(0x8bf8d0, 0xc20836e480)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_noop.go:18 +0x19b
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:60 +0x223

goroutine 749 [select]:
main.(*NoopToxic).Pipe(0x8bf8d0, 0xc208234e60)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_noop.go:18 +0x19b
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:60 +0x223

goroutine 748 [select]:
main.(*NoopToxic).Pipe(0x8bf8d0, 0xc208234e40)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_noop.go:18 +0x19b
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:60 +0x223

goroutine 747 [select]:
main.(*NoopToxic).Pipe(0x8bf8d0, 0xc208234e20)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_noop.go:18 +0x19b
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:60 +0x223

goroutine 746 [IO wait]:
net.(*pollDesc).Wait(0xc208084d10, 0x72, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_poll_runtime.go:84 +0x47
net.(*pollDesc).WaitRead(0xc208084d10, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_poll_runtime.go:89 +0x43
net.(*netFD).Read(0xc208084cb0, 0xc208248000, 0x8000, 0x8000, 0x0, 0x7f0070851b70, 0xc2080c9980)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_unix.go:242 +0x40f
net.(*conn).Read(0xc2080420b0, 0xc208248000, 0x8000, 0x8000, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/net.go:121 +0xdc
io.Copy(0x7f0070853928, 0xc2080420d0, 0x7f0070853280, 0xc2080420b0, 0xca27, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:362 +0x1f6
main.func·001()
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:48 +0x7e
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:58 +0x13e

goroutine 1048 [chan receive]:
main.(*ChanReader).Read(0xc20836e4c0, 0xc20888a000, 0x8000, 0x8000, 0xcd, 0x0, 0x0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/io_chan.go:58 +0x45f
io.Copy(0x7f0070853a18, 0xc208236bb0, 0x7f00708539a0, 0xc20836e4c0, 0xa6c3, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:362 +0x1f6
net.genericReadFrom(0x7f0070853258, 0xc208042c98, 0x7f00708539a0, 0xc20836e4c0, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/net.go:404 +0xb5
net.(*TCPConn).ReadFrom(0xc208042c98, 0x7f00708539a0, 0xc20836e4c0, 0x7f00708539f0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/tcpsock_posix.go:72 +0xe0
io.Copy(0x7f0070853258, 0xc208042c98, 0x7f00708539a0, 0xc20836e4c0, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:358 +0x13d
main.func·002()
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:63 +0xb8
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:75 +0x2e0

goroutine 476 [semacquire]:
sync.(*WaitGroup).Wait(0xc208455800)
    /usr/local/Cellar/go/1.4/libexec/src/sync/waitgroup.go:132 +0x169
main.(*ToxicCollection).setToxic(0xc20800a140, 0x7f0070853570, 0xc20801e760, 0x1)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_collection.go:106 +0x29b
main.(*ToxicCollection).ResetToxics(0xc20800a140)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_collection.go:46 +0x121
main.(*server).ResetState(0xc208042020, 0x7f00708533a0, 0xc20833fe00, 0xc208378750)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/api.go:107 +0x120
main.*server.ResetState·fm(0x7f00708533a0, 0xc20833fe00, 0xc208378750)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/api.go:26 +0x45
net/http.HandlerFunc.ServeHTTP(0xc208032820, 0x7f00708533a0, 0xc20833fe00, 0xc208378750)
    /usr/local/Cellar/go/1.4/libexec/src/net/http/server.go:1265 +0x41
github.com/gorilla/mux.(*Router).ServeHTTP(0xc20800a0f0, 0x7f00708533a0, 0xc20833fe00, 0xc208378750)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/Godeps/_workspace/src/github.com/gorilla/mux/mux.go:98 +0x297
net/http.(*ServeMux).ServeHTTP(0xc20803c780, 0x7f00708533a0, 0xc20833fe00, 0xc208378750)
    /usr/local/Cellar/go/1.4/libexec/src/net/http/server.go:1541 +0x17d
net/http.serverHandler.ServeHTTP(0xc20800ca80, 0x7f00708533a0, 0xc20833fe00, 0xc208378750)
    /usr/local/Cellar/go/1.4/libexec/src/net/http/server.go:1703 +0x19a
net/http.(*conn).serve(0xc2083752c0)
    /usr/local/Cellar/go/1.4/libexec/src/net/http/server.go:1204 +0xb57
created by net/http.(*Server).Serve
    /usr/local/Cellar/go/1.4/libexec/src/net/http/server.go:1751 +0x35e

goroutine 1049 [IO wait]:
net.(*pollDesc).Wait(0xc2088800d0, 0x72, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_poll_runtime.go:84 +0x47
net.(*pollDesc).WaitRead(0xc2088800d0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_poll_runtime.go:89 +0x43
net.(*netFD).Read(0xc208880070, 0xc208892000, 0x8000, 0x8000, 0x0, 0x7f0070851b70, 0xc2086569b0)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_unix.go:242 +0x40f
net.(*conn).Read(0xc208042c98, 0xc208892000, 0x8000, 0x8000, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/net.go:121 +0xdc
io.Copy(0x7f0070853928, 0xc208042cb0, 0x7f0070853280, 0xc208042c98, 0xda51, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:362 +0x1f6
main.func·001()
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:48 +0x7e
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:58 +0x13e

goroutine 959 [IO wait]:
net.(*pollDesc).Wait(0xc208084ed0, 0x72, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_poll_runtime.go:84 +0x47
net.(*pollDesc).WaitRead(0xc208084ed0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_poll_runtime.go:89 +0x43
net.(*netFD).Read(0xc208084e70, 0xc2083f4000, 0x8000, 0x8000, 0x0, 0x7f0070851b70, 0xc2086567b0)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_unix.go:242 +0x40f
net.(*conn).Read(0xc208042ad8, 0xc2083f4000, 0x8000, 0x8000, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/net.go:121 +0xdc
io.Copy(0x7f0070853928, 0xc208042af0, 0x7f0070853280, 0xc208042ad8, 0x1973, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:362 +0x1f6
main.func·001()
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:48 +0x7e
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:58 +0x13e

goroutine 1076 [select]:
main.(*NoopToxic).Pipe(0x8bf8d0, 0xc20836f420)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_noop.go:18 +0x19b
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:60 +0x223

goroutine 750 [chan receive]:
main.(*ChanReader).Read(0xc208234e80, 0xc208200000, 0x8000, 0x8000, 0x4e6, 0x0, 0x0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/io_chan.go:58 +0x45f
io.Copy(0x7f0070853a18, 0xc208236260, 0x7f00708539a0, 0xc208234e80, 0xca27, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:362 +0x1f6
net.genericReadFrom(0x7f0070853258, 0xc2080420a0, 0x7f00708539a0, 0xc208234e80, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/net.go:404 +0xb5
net.(*TCPConn).ReadFrom(0xc2080420a0, 0x7f00708539a0, 0xc208234e80, 0x7f00708539f0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/tcpsock_posix.go:72 +0xe0
io.Copy(0x7f0070853258, 0xc2080420a0, 0x7f00708539a0, 0xc208234e80, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:358 +0x13d
main.func·002()
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:63 +0xb8
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:75 +0x2e0

goroutine 751 [IO wait]:
net.(*pollDesc).Wait(0xc208084e60, 0x72, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_poll_runtime.go:84 +0x47
net.(*pollDesc).WaitRead(0xc208084e60, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_poll_runtime.go:89 +0x43
net.(*netFD).Read(0xc208084e00, 0xc208210000, 0x8000, 0x8000, 0x0, 0x7f0070851b70, 0xc2080c9920)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_unix.go:242 +0x40f
net.(*conn).Read(0xc208042148, 0xc208210000, 0x8000, 0x8000, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/net.go:121 +0xdc
io.Copy(0x7f0070853928, 0xc208042168, 0x7f0070853280, 0xc208042148, 0x1332d, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:362 +0x1f6
main.func·001()
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:48 +0x7e
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:58 +0x13e

goroutine 752 [select]:
main.(*NoopToxic).Pipe(0x8bf8d0, 0xc2082353c0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_noop.go:18 +0x19b
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:60 +0x223

goroutine 753 [select]:
main.(*NoopToxic).Pipe(0x8bf8d0, 0xc2082353e0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_noop.go:18 +0x19b
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:60 +0x223

goroutine 754 [select]:
main.(*NoopToxic).Pipe(0x8bf8d0, 0xc208235400)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_noop.go:18 +0x19b
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:60 +0x223

goroutine 755 [chan receive]:
main.(*ChanReader).Read(0xc208235420, 0xc208218000, 0x8000, 0x8000, 0x5a, 0x0, 0x0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/io_chan.go:58 +0x45f
io.Copy(0x7f0070853a18, 0xc2082366e0, 0x7f00708539a0, 0xc208235420, 0x1332d, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:362 +0x1f6
net.genericReadFrom(0x7f0070853258, 0xc208042158, 0x7f00708539a0, 0xc208235420, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/net.go:404 +0xb5
net.(*TCPConn).ReadFrom(0xc208042158, 0x7f00708539a0, 0xc208235420, 0x7f00708539f0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/tcpsock_posix.go:72 +0xe0
io.Copy(0x7f0070853258, 0xc208042158, 0x7f00708539a0, 0xc208235420, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:358 +0x13d
main.func·002()
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:63 +0xb8
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:75 +0x2e0

goroutine 756 [IO wait]:
net.(*pollDesc).Wait(0xc208084fb0, 0x72, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_poll_runtime.go:84 +0x47
net.(*pollDesc).WaitRead(0xc208084fb0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_poll_runtime.go:89 +0x43
net.(*netFD).Read(0xc208084f50, 0xc2081d6000, 0x8000, 0x8000, 0x0, 0x7f0070851b70, 0xc2080c9950)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_unix.go:242 +0x40f
net.(*conn).Read(0xc208042158, 0xc2081d6000, 0x8000, 0x8000, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/net.go:121 +0xdc
io.Copy(0x7f0070853928, 0xc208042188, 0x7f0070853280, 0xc208042158, 0x196, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:362 +0x1f6
main.func·001()
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:48 +0x7e
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:58 +0x13e

goroutine 757 [select]:
main.(*NoopToxic).Pipe(0x8bf8d0, 0xc2082354c0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_noop.go:18 +0x19b
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:60 +0x223

goroutine 758 [select]:
main.(*NoopToxic).Pipe(0x8bf8d0, 0xc2082354e0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_noop.go:18 +0x19b
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:60 +0x223

goroutine 759 [select]:
main.(*NoopToxic).Pipe(0x8bf8d0, 0xc208235500)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_noop.go:18 +0x19b
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:60 +0x223

goroutine 760 [chan receive]:
main.(*ChanReader).Read(0xc208235520, 0xc2081de000, 0x8000, 0x8000, 0x2e, 0x0, 0x0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/io_chan.go:58 +0x45f
io.Copy(0x7f0070853a18, 0xc208236700, 0x7f00708539a0, 0xc208235520, 0x196, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:362 +0x1f6
net.genericReadFrom(0x7f0070853258, 0xc208042148, 0x7f00708539a0, 0xc208235520, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/net.go:404 +0xb5
net.(*TCPConn).ReadFrom(0xc208042148, 0x7f00708539a0, 0xc208235520, 0x7f00708539f0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/tcpsock_posix.go:72 +0xe0
io.Copy(0x7f0070853258, 0xc208042148, 0x7f00708539a0, 0xc208235520, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:358 +0x13d
main.func·002()
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:63 +0xb8
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:75 +0x2e0

goroutine 761 [IO wait]:
net.(*pollDesc).Wait(0xc208085020, 0x72, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_poll_runtime.go:84 +0x47
net.(*pollDesc).WaitRead(0xc208085020, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_poll_runtime.go:89 +0x43
net.(*netFD).Read(0xc208084fc0, 0xc2081e6000, 0x8000, 0x8000, 0x0, 0x7f0070851b70, 0xc2085e0880)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_unix.go:242 +0x40f
net.(*conn).Read(0xc208042198, 0xc2081e6000, 0x8000, 0x8000, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/net.go:121 +0xdc
io.Copy(0x7f0070853928, 0xc2080421a8, 0x7f0070853280, 0xc208042198, 0xffaf, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:362 +0x1f6
main.func·001()
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:48 +0x7e
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:58 +0x13e

goroutine 762 [select]:
main.(*NoopToxic).Pipe(0x8bf8d0, 0xc208235740)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_noop.go:18 +0x19b
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:60 +0x223

goroutine 763 [select]:
main.(*NoopToxic).Pipe(0x8bf8d0, 0xc208235760)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_noop.go:18 +0x19b
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:60 +0x223

goroutine 764 [select]:
main.(*NoopToxic).Pipe(0x8bf8d0, 0xc208235780)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_noop.go:18 +0x19b
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:60 +0x223

goroutine 765 [chan receive]:
main.(*ChanReader).Read(0xc2082357a0, 0xc2081ee000, 0x8000, 0x8000, 0x44ad, 0x0, 0x0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/io_chan.go:58 +0x45f
io.Copy(0x7f0070853a18, 0xc2082369f0, 0x7f00708539a0, 0xc2082357a0, 0xffaf, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:362 +0x1f6
net.genericReadFrom(0x7f0070853258, 0xc2080421a0, 0x7f00708539a0, 0xc2082357a0, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/net.go:404 +0xb5
net.(*TCPConn).ReadFrom(0xc2080421a0, 0x7f00708539a0, 0xc2082357a0, 0x7f00708539f0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/tcpsock_posix.go:72 +0xe0
io.Copy(0x7f0070853258, 0xc2080421a0, 0x7f00708539a0, 0xc2082357a0, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:358 +0x13d
main.func·002()
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:63 +0xb8
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:75 +0x2e0

goroutine 766 [IO wait]:
net.(*pollDesc).Wait(0xc208085170, 0x72, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_poll_runtime.go:84 +0x47
net.(*pollDesc).WaitRead(0xc208085170, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_poll_runtime.go:89 +0x43
net.(*netFD).Read(0xc208085110, 0xc2081ae000, 0x8000, 0x8000, 0x0, 0x7f0070851b70, 0xc20845a3a0)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_unix.go:242 +0x40f
net.(*conn).Read(0xc2080421a0, 0xc2081ae000, 0x8000, 0x8000, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/net.go:121 +0xdc
io.Copy(0x7f0070853928, 0xc2080421b8, 0x7f0070853280, 0xc2080421a0, 0xb0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:362 +0x1f6
main.func·001()
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:48 +0x7e
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:58 +0x13e

goroutine 767 [select]:
main.(*NoopToxic).Pipe(0x8bf8d0, 0xc208235840)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_noop.go:18 +0x19b
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:60 +0x223

goroutine 768 [select]:
main.(*NoopToxic).Pipe(0x8bf8d0, 0xc208235860)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_noop.go:18 +0x19b
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:60 +0x223

goroutine 769 [select]:
main.(*NoopToxic).Pipe(0x8bf8d0, 0xc208235880)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_noop.go:18 +0x19b
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:60 +0x223

goroutine 770 [chan receive]:
main.(*ChanReader).Read(0xc2082358a0, 0xc2081b6000, 0x8000, 0x8000, 0x82, 0x0, 0x0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/io_chan.go:58 +0x45f
io.Copy(0x7f0070853a18, 0xc208236a10, 0x7f00708539a0, 0xc2082358a0, 0xb0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:362 +0x1f6
net.genericReadFrom(0x7f0070853258, 0xc208042198, 0x7f00708539a0, 0xc2082358a0, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/net.go:404 +0xb5
net.(*TCPConn).ReadFrom(0xc208042198, 0x7f00708539a0, 0xc2082358a0, 0x7f00708539f0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/tcpsock_posix.go:72 +0xe0
io.Copy(0x7f0070853258, 0xc208042198, 0x7f00708539a0, 0xc2082358a0, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:358 +0x13d
main.func·002()
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:63 +0xb8
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:75 +0x2e0

goroutine 772 [IO wait]:
net.(*pollDesc).Wait(0xc2080853a0, 0x72, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_poll_runtime.go:84 +0x47
net.(*pollDesc).WaitRead(0xc2080853a0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_poll_runtime.go:89 +0x43
net.(*netFD).Read(0xc208085340, 0xc20846c000, 0x8000, 0x8000, 0x0, 0x7f0070851b70, 0xc20845a3c0)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_unix.go:242 +0x40f
net.(*conn).Read(0xc2080421e8, 0xc20846c000, 0x8000, 0x8000, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/net.go:121 +0xdc
io.Copy(0x7f0070853928, 0xc2080421f8, 0x7f0070853280, 0xc2080421e8, 0x16efa, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:362 +0x1f6
main.func·001()
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:48 +0x7e
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:58 +0x13e

goroutine 773 [select]:
main.(*NoopToxic).Pipe(0x8bf8d0, 0xc208235be0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_noop.go:18 +0x19b
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:60 +0x223

goroutine 774 [select]:
main.(*NoopToxic).Pipe(0x8bf8d0, 0xc208235c00)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_noop.go:18 +0x19b
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:60 +0x223

goroutine 775 [select]:
main.(*NoopToxic).Pipe(0x8bf8d0, 0xc208235c20)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_noop.go:18 +0x19b
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:60 +0x223

goroutine 776 [chan receive]:
main.(*ChanReader).Read(0xc208235c40, 0xc208474000, 0x8000, 0x8000, 0x6db7, 0x0, 0x0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/io_chan.go:58 +0x45f
io.Copy(0x7f0070853a18, 0xc208236f40, 0x7f00708539a0, 0xc208235c40, 0x16efa, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:362 +0x1f6
net.genericReadFrom(0x7f0070853258, 0xc2080421f0, 0x7f00708539a0, 0xc208235c40, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/net.go:404 +0xb5
net.(*TCPConn).ReadFrom(0xc2080421f0, 0x7f00708539a0, 0xc208235c40, 0x7f00708539f0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/tcpsock_posix.go:72 +0xe0
io.Copy(0x7f0070853258, 0xc2080421f0, 0x7f00708539a0, 0xc208235c40, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:358 +0x13d
main.func·002()
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:63 +0xb8
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:75 +0x2e0

goroutine 777 [IO wait]:
net.(*pollDesc).Wait(0xc2080855d0, 0x72, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_poll_runtime.go:84 +0x47
net.(*pollDesc).WaitRead(0xc2080855d0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_poll_runtime.go:89 +0x43
net.(*netFD).Read(0xc208085570, 0xc20847c000, 0x8000, 0x8000, 0x0, 0x7f0070851b70, 0xc2083b41c0)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_unix.go:242 +0x40f
net.(*conn).Read(0xc2080421f0, 0xc20847c000, 0x8000, 0x8000, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/net.go:121 +0xdc
io.Copy(0x7f0070853928, 0xc208042208, 0x7f0070853280, 0xc2080421f0, 0xfa, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:362 +0x1f6
main.func·001()
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:48 +0x7e
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:58 +0x13e

goroutine 778 [select]:
main.(*NoopToxic).Pipe(0x8bf8d0, 0xc208235ce0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_noop.go:18 +0x19b
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:60 +0x223

goroutine 779 [select]:
main.(*NoopToxic).Pipe(0x8bf8d0, 0xc208235d00)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_noop.go:18 +0x19b
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:60 +0x223

goroutine 780 [select]:
main.(*NoopToxic).Pipe(0x8bf8d0, 0xc208235d20)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_noop.go:18 +0x19b
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:60 +0x223

goroutine 781 [chan receive]:
main.(*ChanReader).Read(0xc208235d40, 0xc208484000, 0x8000, 0x8000, 0x4a, 0x0, 0x0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/io_chan.go:58 +0x45f
io.Copy(0x7f0070853a18, 0xc208236f60, 0x7f00708539a0, 0xc208235d40, 0xfa, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:362 +0x1f6
net.genericReadFrom(0x7f0070853258, 0xc2080421e8, 0x7f00708539a0, 0xc208235d40, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/net.go:404 +0xb5
net.(*TCPConn).ReadFrom(0xc2080421e8, 0x7f00708539a0, 0xc208235d40, 0x7f00708539f0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/tcpsock_posix.go:72 +0xe0
io.Copy(0x7f0070853258, 0xc2080421e8, 0x7f00708539a0, 0xc208235d40, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:358 +0x13d
main.func·002()
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:63 +0xb8
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:75 +0x2e0

goroutine 782 [IO wait]:
net.(*pollDesc).Wait(0xc2080851e0, 0x72, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_poll_runtime.go:84 +0x47
net.(*pollDesc).WaitRead(0xc2080851e0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_poll_runtime.go:89 +0x43
net.(*netFD).Read(0xc208085180, 0xc2082cc000, 0x8000, 0x8000, 0x0, 0x7f0070851b70, 0xc20845a3f0)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_unix.go:242 +0x40f
net.(*conn).Read(0xc2080421e0, 0xc2082cc000, 0x8000, 0x8000, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/net.go:121 +0xdc
io.Copy(0x7f0070853928, 0xc208042230, 0x7f0070853280, 0xc2080421e0, 0x1bd61, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:362 +0x1f6
main.func·001()
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:48 +0x7e
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:58 +0x13e

goroutine 783 [select]:
main.(*NoopToxic).Pipe(0x8bf8d0, 0xc208235e80)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_noop.go:18 +0x19b
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:60 +0x223

goroutine 784 [select]:
main.(*NoopToxic).Pipe(0x8bf8d0, 0xc208235ea0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_noop.go:18 +0x19b
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:60 +0x223

goroutine 785 [select]:
main.(*NoopToxic).Pipe(0x8bf8d0, 0xc208235ec0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_noop.go:18 +0x19b
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:60 +0x223

goroutine 786 [chan receive]:
main.(*ChanReader).Read(0xc208235ee0, 0xc2082d4000, 0x8000, 0x8000, 0x513, 0x0, 0x0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/io_chan.go:58 +0x45f
io.Copy(0x7f0070853a18, 0xc208237030, 0x7f00708539a0, 0xc208235ee0, 0x1bd61, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:362 +0x1f6
net.genericReadFrom(0x7f0070853258, 0xc208042228, 0x7f00708539a0, 0xc208235ee0, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/net.go:404 +0xb5
net.(*TCPConn).ReadFrom(0xc208042228, 0x7f00708539a0, 0xc208235ee0, 0x7f00708539f0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/tcpsock_posix.go:72 +0xe0
io.Copy(0x7f0070853258, 0xc208042228, 0x7f00708539a0, 0xc208235ee0, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:358 +0x13d
main.func·002()
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:63 +0xb8
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:75 +0x2e0

goroutine 787 [IO wait]:
net.(*pollDesc).Wait(0xc208085330, 0x72, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_poll_runtime.go:84 +0x47
net.(*pollDesc).WaitRead(0xc208085330, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_poll_runtime.go:89 +0x43
net.(*netFD).Read(0xc2080852d0, 0xc2082dc000, 0x8000, 0x8000, 0x0, 0x7f0070851b70, 0xc208373350)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_unix.go:242 +0x40f
net.(*conn).Read(0xc208042228, 0xc2082dc000, 0x8000, 0x8000, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/net.go:121 +0xdc
io.Copy(0x7f0070853928, 0xc208042240, 0x7f0070853280, 0xc208042228, 0x116, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:362 +0x1f6
main.func·001()
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:48 +0x7e
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:58 +0x13e

goroutine 788 [select]:
main.(*NoopToxic).Pipe(0x8bf8d0, 0xc208235f80)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_noop.go:18 +0x19b
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:60 +0x223

goroutine 789 [select]:
main.(*NoopToxic).Pipe(0x8bf8d0, 0xc208235fa0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_noop.go:18 +0x19b
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:60 +0x223

goroutine 790 [select]:
main.(*NoopToxic).Pipe(0x8bf8d0, 0xc208235fc0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_noop.go:18 +0x19b
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:60 +0x223

goroutine 791 [chan receive]:
main.(*ChanReader).Read(0xc208235fe0, 0xc2085b8000, 0x8000, 0x8000, 0x66, 0x0, 0x0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/io_chan.go:58 +0x45f
io.Copy(0x7f0070853a18, 0xc208237050, 0x7f00708539a0, 0xc208235fe0, 0x116, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:362 +0x1f6
net.genericReadFrom(0x7f0070853258, 0xc2080421e0, 0x7f00708539a0, 0xc208235fe0, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/net.go:404 +0xb5
net.(*TCPConn).ReadFrom(0xc2080421e0, 0x7f00708539a0, 0xc208235fe0, 0x7f00708539f0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/tcpsock_posix.go:72 +0xe0
io.Copy(0x7f0070853258, 0xc2080421e0, 0x7f00708539a0, 0xc208235fe0, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:358 +0x13d
main.func·002()
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:63 +0xb8
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:75 +0x2e0

goroutine 807 [select]:
main.(*NoopToxic).Pipe(0x8bf8d0, 0xc20848d100)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_noop.go:18 +0x19b
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:60 +0x223

goroutine 808 [chan receive]:
main.(*ChanReader).Read(0xc20848d120, 0xc208178000, 0x8000, 0x8000, 0xc, 0x0, 0x0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/io_chan.go:58 +0x45f
io.Copy(0x7f0070853a18, 0xc2085e0190, 0x7f00708539a0, 0xc20848d120, 0xa846, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:362 +0x1f6
net.genericReadFrom(0x7f0070853258, 0xc208042468, 0x7f00708539a0, 0xc20848d120, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/net.go:404 +0xb5
net.(*TCPConn).ReadFrom(0xc208042468, 0x7f00708539a0, 0xc20848d120, 0x7f00708539f0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/tcpsock_posix.go:72 +0xe0
io.Copy(0x7f0070853258, 0xc208042468, 0x7f00708539a0, 0xc20848d120, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:358 +0x13d
main.func·002()
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:63 +0xb8
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:75 +0x2e0

goroutine 809 [IO wait]:
net.(*pollDesc).Wait(0xc208010370, 0x72, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_poll_runtime.go:84 +0x47
net.(*pollDesc).WaitRead(0xc208010370, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_poll_runtime.go:89 +0x43
net.(*netFD).Read(0xc208010310, 0xc208180000, 0x8000, 0x8000, 0x0, 0x7f0070851b70, 0xc2086569a0)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_unix.go:242 +0x40f
net.(*conn).Read(0xc208042468, 0xc208180000, 0x8000, 0x8000, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/net.go:121 +0xdc
io.Copy(0x7f0070853928, 0xc208042480, 0x7f0070853280, 0xc208042468, 0xeeba, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:362 +0x1f6
main.func·001()
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:48 +0x7e
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:58 +0x13e

goroutine 810 [select]:
main.(*NoopToxic).Pipe(0x8bf8d0, 0xc20848d1c0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_noop.go:18 +0x19b
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:60 +0x223

goroutine 811 [select]:
main.(*NoopToxic).Pipe(0x8bf8d0, 0xc20848d1e0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_noop.go:18 +0x19b
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:60 +0x223

goroutine 812 [select]:
main.(*NoopToxic).Pipe(0x8bf8d0, 0xc20848d200)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_noop.go:18 +0x19b
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:60 +0x223

goroutine 813 [chan receive]:
main.(*ChanReader).Read(0xc20848d220, 0xc208188000, 0x8000, 0x8000, 0x14, 0x0, 0x0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/io_chan.go:58 +0x45f
io.Copy(0x7f0070853a18, 0xc2085e01b0, 0x7f00708539a0, 0xc20848d220, 0xeeba, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:362 +0x1f6
net.genericReadFrom(0x7f0070853258, 0xc208042460, 0x7f00708539a0, 0xc20848d220, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/net.go:404 +0xb5
net.(*TCPConn).ReadFrom(0xc208042460, 0x7f00708539a0, 0xc20848d220, 0x7f00708539f0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/tcpsock_posix.go:72 +0xe0
io.Copy(0x7f0070853258, 0xc208042460, 0x7f00708539a0, 0xc20848d220, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:358 +0x13d
main.func·002()
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:63 +0xb8
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:75 +0x2e0

goroutine 940 [select]:
main.(*NoopToxic).Pipe(0x8bf8d0, 0xc208698ca0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_noop.go:18 +0x19b
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:60 +0x223

goroutine 941 [select]:
main.(*NoopToxic).Pipe(0x8bf8d0, 0xc208698cc0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_noop.go:18 +0x19b
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:60 +0x223

goroutine 936 [select]:
main.(*NoopToxic).Pipe(0x8bf8d0, 0xc208698bc0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_noop.go:18 +0x19b
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:60 +0x223

goroutine 928 [chan receive]:
main.(*ChanReader).Read(0xc208698400, 0xc2082a4000, 0x8000, 0x8000, 0xc, 0x0, 0x0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/io_chan.go:58 +0x45f
io.Copy(0x7f0070853a18, 0xc20845bf90, 0x7f00708539a0, 0xc208698400, 0x222a, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:362 +0x1f6
net.genericReadFrom(0x7f0070853258, 0xc208042a48, 0x7f00708539a0, 0xc208698400, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/net.go:404 +0xb5
net.(*TCPConn).ReadFrom(0xc208042a48, 0x7f00708539a0, 0xc208698400, 0x7f00708539f0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/tcpsock_posix.go:72 +0xe0
io.Copy(0x7f0070853258, 0xc208042a48, 0x7f00708539a0, 0xc208698400, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:358 +0x13d
main.func·002()
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:63 +0xb8
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:75 +0x2e0

goroutine 913 [select]:
main.(*ToxicStub).Interrupt(0xc2083b2da0, 0xc2082c97a0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic.go:49 +0xf1
main.(*ToxicLink).SetToxic(0xc208506b40, 0x7f0070853570, 0xc20801e760, 0x1)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:80 +0x61
main.func·004(0xc208506b40)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_collection.go:103 +0x76
created by main.(*ToxicCollection).setToxic
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_collection.go:104 +0x26d

goroutine 911 [chan receive]:
main.func·003()
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/proxy.go:117 +0x7c
created by main.(*Proxy).server
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/proxy.go:134 +0x608

goroutine 910 [IO wait]:
net.(*pollDesc).Wait(0xc2085e3e20, 0x72, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_poll_runtime.go:84 +0x47
net.(*pollDesc).WaitRead(0xc2085e3e20, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_poll_runtime.go:89 +0x43
net.(*netFD).accept(0xc2085e3dc0, 0x0, 0x7f0070851b70, 0xc20846b480)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_unix.go:419 +0x40b
net.(*TCPListener).AcceptTCP(0xc2080429d0, 0x7f00708538f8, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/tcpsock_posix.go:234 +0x4e
net.(*TCPListener).Accept(0xc2080429d0, 0x0, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/tcpsock_posix.go:244 +0x4c
main.(*Proxy).server(0xc20805a630)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/proxy.go:137 +0x630
created by main.start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/proxy.go:198 +0x78

goroutine 909 [chan receive]:
main.func·003()
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/proxy.go:117 +0x7c
created by main.(*Proxy).server
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/proxy.go:134 +0x608

goroutine 908 [IO wait]:
net.(*pollDesc).Wait(0xc2085e3c60, 0x72, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_poll_runtime.go:84 +0x47
net.(*pollDesc).WaitRead(0xc2085e3c60, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_poll_runtime.go:89 +0x43
net.(*netFD).accept(0xc2085e3c00, 0x0, 0x7f0070851b70, 0xc208656780)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_unix.go:419 +0x40b
net.(*TCPListener).AcceptTCP(0xc208042988, 0x7f00708538f8, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/tcpsock_posix.go:234 +0x4e
net.(*TCPListener).Accept(0xc208042988, 0x0, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/tcpsock_posix.go:244 +0x4c
main.(*Proxy).server(0xc20805a990)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/proxy.go:137 +0x630
created by main.start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/proxy.go:198 +0x78

goroutine 907 [chan receive]:
main.func·003()
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/proxy.go:117 +0x7c
created by main.(*Proxy).server
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/proxy.go:134 +0x608

goroutine 906 [semacquire]:
sync.(*Mutex).Lock(0xc20800a140)
    /usr/local/Cellar/go/1.4/libexec/src/sync/mutex.go:66 +0xd3
main.(*ToxicCollection).StartLink(0xc20800a140, 0xc2083b2e20, 0x15, 0x7f0070853280, 0xc208042bc0, 0x7f00708538f8, 0xc208042bc8)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_collection.go:110 +0x33
main.(*Proxy).server(0xc20805a240)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/proxy.go:180 +0x14d4
created by main.start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/proxy.go:198 +0x78

goroutine 905 [chan receive]:
main.func·003()
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/proxy.go:117 +0x7c
created by main.(*Proxy).server
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/proxy.go:134 +0x608

goroutine 904 [IO wait]:
net.(*pollDesc).Wait(0xc2085e38e0, 0x72, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_poll_runtime.go:84 +0x47
net.(*pollDesc).WaitRead(0xc2085e38e0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_poll_runtime.go:89 +0x43
net.(*netFD).accept(0xc2085e3880, 0x0, 0x7f0070851b70, 0xc20845bf60)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_unix.go:419 +0x40b
net.(*TCPListener).AcceptTCP(0xc2080424d8, 0x7f00708538f8, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/tcpsock_posix.go:234 +0x4e
net.(*TCPListener).Accept(0xc2080424d8, 0x0, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/tcpsock_posix.go:244 +0x4c
main.(*Proxy).server(0xc20805a480)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/proxy.go:137 +0x630
created by main.start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/proxy.go:198 +0x78

goroutine 874 [IO wait]:
net.(*pollDesc).Wait(0xc2085e2060, 0x72, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_poll_runtime.go:84 +0x47
net.(*pollDesc).WaitRead(0xc2085e2060, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_poll_runtime.go:89 +0x43
net.(*netFD).Read(0xc2085e2000, 0xc208720000, 0x8000, 0x8000, 0x0, 0x7f0070851b70, 0xc2083b4868)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_unix.go:242 +0x40f
net.(*conn).Read(0xc208042918, 0xc208720000, 0x8000, 0x8000, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/net.go:121 +0xdc
io.Copy(0x7f0070853928, 0xc208042928, 0x7f0070853280, 0xc208042918, 0x6cdc, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:362 +0x1f6
main.func·001()
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:48 +0x7e
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:58 +0x13e

goroutine 875 [select]:
main.(*NoopToxic).Pipe(0x8bf8d0, 0xc2081a13c0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_noop.go:18 +0x19b
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:60 +0x223

goroutine 876 [select]:
main.(*NoopToxic).Pipe(0x8bf8d0, 0xc2081a13e0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_noop.go:18 +0x19b
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:60 +0x223

goroutine 877 [select]:
main.(*NoopToxic).Pipe(0x8bf8d0, 0xc2081a1400)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_noop.go:18 +0x19b
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:60 +0x223

goroutine 878 [chan receive]:
main.(*ChanReader).Read(0xc2081a1420, 0xc208728000, 0x8000, 0x8000, 0x6ba, 0x0, 0x0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/io_chan.go:58 +0x45f
io.Copy(0x7f0070853a18, 0xc208132a10, 0x7f00708539a0, 0xc2081a1420, 0x6cdc, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:362 +0x1f6
net.genericReadFrom(0x7f0070853258, 0xc208042920, 0x7f00708539a0, 0xc2081a1420, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/net.go:404 +0xb5
net.(*TCPConn).ReadFrom(0xc208042920, 0x7f00708539a0, 0xc2081a1420, 0x7f00708539f0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/tcpsock_posix.go:72 +0xe0
io.Copy(0x7f0070853258, 0xc208042920, 0x7f00708539a0, 0xc2081a1420, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:358 +0x13d
main.func·002()
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:63 +0xb8
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:75 +0x2e0

goroutine 879 [IO wait]:
net.(*pollDesc).Wait(0xc2085e2220, 0x72, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_poll_runtime.go:84 +0x47
net.(*pollDesc).WaitRead(0xc2085e2220, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_poll_runtime.go:89 +0x43
net.(*netFD).Read(0xc2085e21c0, 0xc208730000, 0x8000, 0x8000, 0x0, 0x7f0070851b70, 0xc2083b4a28)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_unix.go:242 +0x40f
net.(*conn).Read(0xc208042920, 0xc208730000, 0x8000, 0x8000, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/net.go:121 +0xdc
io.Copy(0x7f0070853928, 0xc208042938, 0x7f0070853280, 0xc208042920, 0xa19, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:362 +0x1f6
main.func·001()
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:48 +0x7e
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:58 +0x13e

goroutine 880 [select]:
main.(*NoopToxic).Pipe(0x8bf8d0, 0xc2081a14c0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_noop.go:18 +0x19b
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:60 +0x223

goroutine 881 [select]:
main.(*NoopToxic).Pipe(0x8bf8d0, 0xc2081a14e0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_noop.go:18 +0x19b
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:60 +0x223

goroutine 882 [select]:
main.(*NoopToxic).Pipe(0x8bf8d0, 0xc2081a1500)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_noop.go:18 +0x19b
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:60 +0x223

goroutine 883 [chan receive]:
main.(*ChanReader).Read(0xc2081a1520, 0xc208738000, 0x8000, 0x8000, 0xa, 0x0, 0x0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/io_chan.go:58 +0x45f
io.Copy(0x7f0070853a18, 0xc208132a30, 0x7f00708539a0, 0xc2081a1520, 0xa19, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:362 +0x1f6
net.genericReadFrom(0x7f0070853258, 0xc208042918, 0x7f00708539a0, 0xc2081a1520, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/net.go:404 +0xb5
net.(*TCPConn).ReadFrom(0xc208042918, 0x7f00708539a0, 0xc2081a1520, 0x7f00708539f0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/tcpsock_posix.go:72 +0xe0
io.Copy(0x7f0070853258, 0xc208042918, 0x7f00708539a0, 0xc2081a1520, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:358 +0x13d
main.func·002()
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:63 +0xb8
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:75 +0x2e0

goroutine 994 [IO wait]:
net.(*pollDesc).Wait(0xc208085b80, 0x72, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_poll_runtime.go:84 +0x47
net.(*pollDesc).WaitRead(0xc208085b80, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_poll_runtime.go:89 +0x43
net.(*netFD).Read(0xc208085b20, 0xc2087a6000, 0x8000, 0x8000, 0x0, 0x7f0070851b70, 0xc2083b4458)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_unix.go:242 +0x40f
net.(*conn).Read(0xc208042b90, 0xc2087a6000, 0x8000, 0x8000, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/net.go:121 +0xdc
io.Copy(0x7f0070853928, 0xc208042ba0, 0x7f0070853280, 0xc208042b90, 0x161b, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:362 +0x1f6
main.func·001()
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:48 +0x7e
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:58 +0x13e

goroutine 984 [IO wait]:
net.(*pollDesc).Wait(0xc208085800, 0x72, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_poll_runtime.go:84 +0x47
net.(*pollDesc).WaitRead(0xc208085800, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_poll_runtime.go:89 +0x43
net.(*netFD).Read(0xc2080857a0, 0xc208784000, 0x8000, 0x8000, 0x0, 0x7f0070851b70, 0xc208656890)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_unix.go:242 +0x40f
net.(*conn).Read(0xc208042b60, 0xc208784000, 0x8000, 0x8000, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/net.go:121 +0xdc
io.Copy(0x7f0070853928, 0xc208042b70, 0x7f0070853280, 0xc208042b60, 0x528, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:362 +0x1f6
main.func·001()
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:48 +0x7e
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:58 +0x13e

goroutine 985 [select]:
main.(*NoopToxic).Pipe(0x8bf8d0, 0xc2083b2420)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_noop.go:18 +0x19b
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:60 +0x223

goroutine 986 [select]:
main.(*NoopToxic).Pipe(0x8bf8d0, 0xc2083b2440)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_noop.go:18 +0x19b
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:60 +0x223

goroutine 987 [select]:
main.(*NoopToxic).Pipe(0x8bf8d0, 0xc2083b2460)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_noop.go:18 +0x19b
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:60 +0x223

goroutine 988 [chan receive]:
main.(*ChanReader).Read(0xc2083b2480, 0xc20878c000, 0x8000, 0x8000, 0xc, 0x0, 0x0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/io_chan.go:58 +0x45f
io.Copy(0x7f0070853a18, 0xc2086567c0, 0x7f00708539a0, 0xc2083b2480, 0x528, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:362 +0x1f6
net.genericReadFrom(0x7f0070853258, 0xc208042b68, 0x7f00708539a0, 0xc2083b2480, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/net.go:404 +0xb5
net.(*TCPConn).ReadFrom(0xc208042b68, 0x7f00708539a0, 0xc2083b2480, 0x7f00708539f0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/tcpsock_posix.go:72 +0xe0
io.Copy(0x7f0070853258, 0xc208042b68, 0x7f00708539a0, 0xc2083b2480, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:358 +0x13d
main.func·002()
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:63 +0xb8
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:75 +0x2e0

goroutine 989 [IO wait]:
net.(*pollDesc).Wait(0xc208085a30, 0x72, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_poll_runtime.go:84 +0x47
net.(*pollDesc).WaitRead(0xc208085a30, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_poll_runtime.go:89 +0x43
net.(*netFD).Read(0xc2080859d0, 0xc208794000, 0x8000, 0x8000, 0x0, 0x7f0070851b70, 0xc2086568a0)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_unix.go:242 +0x40f
net.(*conn).Read(0xc208042b68, 0xc208794000, 0x8000, 0x8000, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/net.go:121 +0xdc
io.Copy(0x7f0070853928, 0xc208042b80, 0x7f0070853280, 0xc208042b68, 0x6c7, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:362 +0x1f6
main.func·001()
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:48 +0x7e
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:58 +0x13e

goroutine 990 [select]:
main.(*NoopToxic).Pipe(0x8bf8d0, 0xc2083b25a0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_noop.go:18 +0x19b
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:60 +0x223

goroutine 991 [select]:
main.(*NoopToxic).Pipe(0x8bf8d0, 0xc2083b25e0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_noop.go:18 +0x19b
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:60 +0x223

goroutine 992 [select]:
main.(*NoopToxic).Pipe(0x8bf8d0, 0xc2083b2620)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_noop.go:18 +0x19b
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:60 +0x223

goroutine 993 [chan receive]:
main.(*ChanReader).Read(0xc2083b2660, 0xc20879c000, 0x8000, 0x8000, 0x14, 0x0, 0x0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/io_chan.go:58 +0x45f
io.Copy(0x7f0070853a18, 0xc2086567e0, 0x7f00708539a0, 0xc2083b2660, 0x6c7, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:362 +0x1f6
net.genericReadFrom(0x7f0070853258, 0xc208042b60, 0x7f00708539a0, 0xc2083b2660, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/net.go:404 +0xb5
net.(*TCPConn).ReadFrom(0xc208042b60, 0x7f00708539a0, 0xc2083b2660, 0x7f00708539f0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/tcpsock_posix.go:72 +0xe0
io.Copy(0x7f0070853258, 0xc208042b60, 0x7f00708539a0, 0xc2083b2660, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:358 +0x13d
main.func·002()
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:63 +0xb8
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:75 +0x2e0

goroutine 973 [chan receive]:
main.(*ChanReader).Read(0xc208699b80, 0xc20841c000, 0x8000, 0x8000, 0xa, 0x0, 0x0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/io_chan.go:58 +0x45f
io.Copy(0x7f0070853a18, 0xc20846b980, 0x7f00708539a0, 0xc208699b80, 0x282, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:362 +0x1f6
net.genericReadFrom(0x7f0070853258, 0xc208042b00, 0x7f00708539a0, 0xc208699b80, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/net.go:404 +0xb5
net.(*TCPConn).ReadFrom(0xc208042b00, 0x7f00708539a0, 0xc208699b80, 0x7f00708539f0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/tcpsock_posix.go:72 +0xe0
io.Copy(0x7f0070853258, 0xc208042b00, 0x7f00708539a0, 0xc208699b80, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:358 +0x13d
main.func·002()
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:63 +0xb8
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:75 +0x2e0

goroutine 972 [select]:
main.(*NoopToxic).Pipe(0x8bf8d0, 0xc208699b60)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_noop.go:18 +0x19b
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:60 +0x223

goroutine 971 [select]:
main.(*NoopToxic).Pipe(0x8bf8d0, 0xc208699b40)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_noop.go:18 +0x19b
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:60 +0x223

goroutine 970 [select]:
main.(*NoopToxic).Pipe(0x8bf8d0, 0xc208699b20)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_noop.go:18 +0x19b
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:60 +0x223

goroutine 969 [IO wait]:
net.(*pollDesc).Wait(0xc208085250, 0x72, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_poll_runtime.go:84 +0x47
net.(*pollDesc).WaitRead(0xc208085250, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_poll_runtime.go:89 +0x43
net.(*netFD).Read(0xc2080851f0, 0xc208414000, 0x8000, 0x8000, 0x0, 0x7f0070851b70, 0xc208373550)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_unix.go:242 +0x40f
net.(*conn).Read(0xc208042b08, 0xc208414000, 0x8000, 0x8000, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/net.go:121 +0xdc
io.Copy(0x7f0070853928, 0xc208042b20, 0x7f0070853280, 0xc208042b08, 0x282, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:362 +0x1f6
main.func·001()
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:48 +0x7e
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:58 +0x13e

goroutine 968 [chan receive]:
main.(*ChanReader).Read(0xc208699a80, 0xc20840c000, 0x8000, 0x8000, 0x6ba, 0x0, 0x0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/io_chan.go:58 +0x45f
io.Copy(0x7f0070853a18, 0xc20846b960, 0x7f00708539a0, 0xc208699a80, 0x1d1f, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:362 +0x1f6
net.genericReadFrom(0x7f0070853258, 0xc208042b08, 0x7f00708539a0, 0xc208699a80, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/net.go:404 +0xb5
net.(*TCPConn).ReadFrom(0xc208042b08, 0x7f00708539a0, 0xc208699a80, 0x7f00708539f0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/tcpsock_posix.go:72 +0xe0
io.Copy(0x7f0070853258, 0xc208042b08, 0x7f00708539a0, 0xc208699a80, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:358 +0x13d
main.func·002()
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:63 +0xb8
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:75 +0x2e0

goroutine 1103 [chan receive]:
main.(*ChanReader).Read(0xc20848cae0, 0xc20897e000, 0x8000, 0x8000, 0xed, 0x0, 0x0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/io_chan.go:58 +0x45f
io.Copy(0x7f0070853a18, 0xc208372240, 0x7f00708539a0, 0xc20848cae0, 0x17499, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:362 +0x1f6
net.genericReadFrom(0x7f0070853258, 0xc208042d80, 0x7f00708539a0, 0xc20848cae0, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/net.go:404 +0xb5
net.(*TCPConn).ReadFrom(0xc208042d80, 0x7f00708539a0, 0xc20848cae0, 0x7f00708539f0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/tcpsock_posix.go:72 +0xe0
io.Copy(0x7f0070853258, 0xc208042d80, 0x7f00708539a0, 0xc20848cae0, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:358 +0x13d
main.func·002()
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:63 +0xb8
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:75 +0x2e0

goroutine 926 [select]:
main.(*NoopToxic).Pipe(0x8bf8d0, 0xc208698300)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_noop.go:18 +0x19b
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:60 +0x223

goroutine 927 [select]:
main.(*NoopToxic).Pipe(0x8bf8d0, 0xc2086983e0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_noop.go:18 +0x19b
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:60 +0x223

goroutine 1050 [select]:
main.(*NoopToxic).Pipe(0x8bf8d0, 0xc20836e560)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_noop.go:18 +0x19b
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:60 +0x223

goroutine 1051 [select]:
main.(*NoopToxic).Pipe(0x8bf8d0, 0xc20836e580)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_noop.go:18 +0x19b
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:60 +0x223

goroutine 1052 [select]:
main.(*NoopToxic).Pipe(0x8bf8d0, 0xc20836e5a0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_noop.go:18 +0x19b
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:60 +0x223

goroutine 1053 [chan receive]:
main.(*ChanReader).Read(0xc20836e5c0, 0xc20889a000, 0x8000, 0x8000, 0xb0, 0x0, 0x0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/io_chan.go:58 +0x45f
io.Copy(0x7f0070853a18, 0xc208236bd0, 0x7f00708539a0, 0xc20836e5c0, 0xda51, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:362 +0x1f6
net.genericReadFrom(0x7f0070853258, 0xc208042c90, 0x7f00708539a0, 0xc20836e5c0, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/net.go:404 +0xb5
net.(*TCPConn).ReadFrom(0xc208042c90, 0x7f00708539a0, 0xc20836e5c0, 0x7f00708539f0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/tcpsock_posix.go:72 +0xe0
io.Copy(0x7f0070853258, 0xc208042c90, 0x7f00708539a0, 0xc20836e5c0, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:358 +0x13d
main.func·002()
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:63 +0xb8
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:75 +0x2e0

goroutine 1074 [IO wait]:
net.(*pollDesc).Wait(0xc2088805a0, 0x72, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_poll_runtime.go:84 +0x47
net.(*pollDesc).WaitRead(0xc2088805a0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_poll_runtime.go:89 +0x43
net.(*netFD).Read(0xc208880540, 0xc2088f2000, 0x8000, 0x8000, 0x0, 0x7f0070851b70, 0xc208656920)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_unix.go:242 +0x40f
net.(*conn).Read(0xc208042d20, 0xc2088f2000, 0x8000, 0x8000, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/net.go:121 +0xdc
io.Copy(0x7f0070853928, 0xc208042d30, 0x7f0070853280, 0xc208042d20, 0x6018, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:362 +0x1f6
main.func·001()
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:48 +0x7e
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:58 +0x13e

goroutine 1119 [IO wait]:
net.(*pollDesc).Wait(0xc208880fb0, 0x72, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_poll_runtime.go:84 +0x47
net.(*pollDesc).WaitRead(0xc208880fb0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_poll_runtime.go:89 +0x43
net.(*netFD).Read(0xc208880f50, 0xc2089c8000, 0x8000, 0x8000, 0x0, 0x7f0070851b70, 0xc2086568d0)
    /usr/local/Cellar/go/1.4/libexec/src/net/fd_unix.go:242 +0x40f
net.(*conn).Read(0xc208042de8, 0xc2089c8000, 0x8000, 0x8000, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/net.go:121 +0xdc
io.Copy(0x7f0070853928, 0xc208042e00, 0x7f0070853280, 0xc208042de8, 0x198ce, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:362 +0x1f6
main.func·001()
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:48 +0x7e
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:58 +0x13e

goroutine 1118 [chan receive]:
main.(*ChanReader).Read(0xc20848d520, 0xc2089c0000, 0x8000, 0x8000, 0x198, 0x0, 0x0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/io_chan.go:58 +0x45f
io.Copy(0x7f0070853a18, 0xc208372880, 0x7f00708539a0, 0xc20848d520, 0xbe6b, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:362 +0x1f6
net.genericReadFrom(0x7f0070853258, 0xc208042de8, 0x7f00708539a0, 0xc20848d520, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/net.go:404 +0xb5
net.(*TCPConn).ReadFrom(0xc208042de8, 0x7f00708539a0, 0xc20848d520, 0x7f00708539f0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/tcpsock_posix.go:72 +0xe0
io.Copy(0x7f0070853258, 0xc208042de8, 0x7f00708539a0, 0xc20848d520, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:358 +0x13d
main.func·002()
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:63 +0xb8
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:75 +0x2e0

goroutine 1117 [select]:
main.(*NoopToxic).Pipe(0x8bf8d0, 0xc20848d500)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_noop.go:18 +0x19b
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:60 +0x223

goroutine 1113 [chan receive]:
main.(*ChanReader).Read(0xc20848d280, 0xc2089a0000, 0x8000, 0x8000, 0xb7, 0x0, 0x0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/io_chan.go:58 +0x45f
io.Copy(0x7f0070853a18, 0xc208372570, 0x7f00708539a0, 0xc20848d280, 0x1a52f, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:362 +0x1f6
net.genericReadFrom(0x7f0070853258, 0xc208042db0, 0x7f00708539a0, 0xc20848d280, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/net.go:404 +0xb5
net.(*TCPConn).ReadFrom(0xc208042db0, 0x7f00708539a0, 0xc20848d280, 0x7f00708539f0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/tcpsock_posix.go:72 +0xe0
io.Copy(0x7f0070853258, 0xc208042db0, 0x7f00708539a0, 0xc20848d280, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:358 +0x13d
main.func·002()
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:63 +0xb8
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:75 +0x2e0

goroutine 1112 [select]:
main.(*NoopToxic).Pipe(0x8bf8d0, 0xc20848d260)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_noop.go:18 +0x19b
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:60 +0x223

goroutine 1111 [select]:
main.(*NoopToxic).Pipe(0x8bf8d0, 0xc20848d240)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_noop.go:18 +0x19b
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:60 +0x223

goroutine 1110 [select]:
main.(*NoopToxic).Pipe(0x8bf8d0, 0xc20848d160)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/toxic_noop.go:18 +0x19b
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:60 +0x223

goroutine 1123 [chan receive]:
main.(*ChanReader).Read(0xc20848d620, 0xc2089d0000, 0x8000, 0x8000, 0xdb, 0x0, 0x0)
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/io_chan.go:58 +0x45f
io.Copy(0x7f0070853a18, 0xc2083728a0, 0x7f00708539a0, 0xc20848d620, 0x198ce, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:362 +0x1f6
net.genericReadFrom(0x7f0070853258, 0xc208042de0, 0x7f00708539a0, 0xc20848d620, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/net.go:404 +0xb5
net.(*TCPConn).ReadFrom(0xc208042de0, 0x7f00708539a0, 0xc20848d620, 0x7f00708539f0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/net/tcpsock_posix.go:72 +0xe0
io.Copy(0x7f0070853258, 0xc208042de0, 0x7f00708539a0, 0xc20848d620, 0x0, 0x0, 0x0)
    /usr/local/Cellar/go/1.4/libexec/src/io/io.go:358 +0x13d
main.func·002()
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:63 +0xb8
created by main.(*ToxicLink).Start
    /Users/sirup/src/go/src/github.com/Shopify/toxiproxy/link.go:75 +0x2e0

rax     0xca
rbx     0x8b7c78
rcx     0xffffffffffffffff
rdx     0x0
rdi     0x8b7c78
rsi     0x0
rbp     0x1
rsp     0x7fff489e9c78
r8      0x0
r9      0x0
r10     0x0
r11     0x286
r12     0x0
r13     0x0
r14     0x21
r15     0x10
rip     0x44a891
rflags  0x286
cs      0x33
fs      0x0
gs      0x0

Update Brew formula

bin.install "1.0.0-darwin-amd64" => "toxiproxy"
to
bin.install "toxiproxy-darwin-amd64" => "toxiproxy"

Otherwise you get an error:
Error: No such file or directory - 1.0.0-darwin-amd64

Open Source Steps

  • Test current master with Shopify
  • Create a new Rails app on Ubuntu, go through all the steps, make sure it works
  • Use #populate in Shopify from toxiproxy-ruby
  • Use new enabled API in toxiproxy-ruby
  • Upgrade toxiproxy-ruby in Shopify
  • Create a new Rails app on OS X with the current tap, go through all the steps, make sure it works
  • When all of the above is done, tag 1.0.0
  • Prepare binaries for Linux and Darwin, build .deb package, add all to Github release
  • Update Homebrew tap Shopify/homebrew-shopify to point to new binary
  • Review README
  • Click the Open Source buttons!

@xthexder @camilo , haven't included all the stuff I've already done (readme, how to build packages, etc)

Provide -master docker images

Currently :latest docker image is a build of 2.0.0 without /populate endpoint. It will be handy to have image of current -master.

do flakey latency tests point to a larger problem?

#112 changes the maximum latency allowed in a test from n + 10ms to n + 20ms. Have these tests always been flakey? (I doubt it.)

If not, does this increase in latency affect all toxics or just the latency one. Why? (If it's just the latency toxic, then I think this issue can be closed.)

chat room?

Have you considered creating a chat room for this project or do you think it would be too low traffic to be worthwhile?
I certainly have a few questions that would get ironed out much quicker - and some ideas for the project - if there was a chat where developers and users could unite.

thanks,
Dieter

how to specify multiple attributes? incorrect handling of errors

problem 1) it's unclear how to specify multiple attributes when adding a toxic.
the example in the readme only uses one attribute
(https://github.com/Shopify/toxiproxy#cli-example)
and the cli help docs don't specify how to specify multiple attributes (see help msg below). as a user I'm guessing either specify -a key=val,key2=val2 or -a key=val -a key2=val2

cli toxic add                                                                                                                                                          
NAME:
   toxiproxy-cli toxic add - add a new toxic

USAGE:
   toxiproxy-cli toxic add [command options] <proxyName>

OPTIONS:
   --toxicName value, -n value    name of the toxic
   --type value, -t value         type of toxic
   --toxicity value, --tox value  toxicity of toxic
   --attribute value, -a value    toxic attribute in key=value format
   --upstream, -u                 add toxic to upstream
   --downstream, -d               add toxic to downstream

Proxy name is required as the first argument.

problem 2) either approach i guessed above seems to work sort of, but things aren't exactly working.

approach 1 - comma separated items - seems to be the right way, see this run in the latest docker container...

$ toxiproxy-cli create cassandra -l 0.0.0.0:9042 -u cassandra:9042
Created new proxy cassandra
$ toxiproxy-cli list
root@toxiproxy:/app/src/github.com/Shopify/toxiproxy# toxiproxy-cli list
Listen          Upstream        Name    Enabled Toxics
======================================================================
[::]:9042       cassandra:9042  cassandra       true    None

Hint: inspect toxics with `toxiproxy-cli inspect <proxyName>`
$ toxiproxy-cli toxic add -t latency -a latency=1000,jitter=500 cassandra                                                                 
Added downstream latency toxic 'latency_downstream' on proxy 'cassandra'
$ toxiproxy-cli list                                                     
Listen          Upstream        Name    Enabled Toxics
======================================================================
[::]:9042       cassandra:9042  cassandra       true    1

Hint: inspect toxics with `toxiproxy-cli inspect <proxyName>`
$ toxiproxy-cli inspect cassandra
Name: cassandra Listen: [::]:9042       Upstream: cassandra:9042
======================================================================
Upstream toxics:
Proxy has no Upstream toxics enabled.

Downstream toxics:
latency_downstream: type=latency stream=downstream toxicity=1.00 attributes=[ jitter=500 latency=1000 ]

Hint: add a toxic with `toxiproxy-cli toxic add`

... so the inspect output looks good. however, I'm having issues getting it to work. it seems to be deplaying requests some of the time but also long periods of undelayed, non-toxic proxying.

so I tried the other way but now latency is set to 0 for some reason, so maybe it's the comma separated approach after all?
edit: in testing the toxic does seem to work effectively

root@toxiproxy:/app/src/github.com/Shopify/toxiproxy# toxiproxy-cli list
Listen          Upstream        Name    Enabled Toxics
======================================================================
[::]:9042       cassandra:9042  cassandra       true    None

Hint: inspect toxics with `toxiproxy-cli inspect <proxyName>`
root@toxiproxy:/app/src/github.com/Shopify/toxiproxy# toxiproxy-cli toxic add -t latency -a latency=1000 -a jitter=500 cassandra                                                              
Added downstream latency toxic 'latency_downstream' on proxy 'cassandra'
root@toxiproxy:/app/src/github.com/Shopify/toxiproxy# toxiproxy-cli list                                                        
Listen          Upstream        Name    Enabled Toxics
======================================================================
[::]:9042       cassandra:9042  cassandra       true    1

Hint: inspect toxics with `toxiproxy-cli inspect <proxyName>`
root@toxiproxy:/app/src/github.com/Shopify/toxiproxy# toxiproxy-cli inspect cassandra
Name: cassandra Listen: [::]:9042       Upstream: cassandra:9042
======================================================================
Upstream toxics:
Proxy has no Upstream toxics enabled.

Downstream toxics:
latency_downstream: type=latency stream=downstream toxicity=1.00 attributes=[ jitter=500 latency=0 ]

Hint: add a toxic with `toxiproxy-cli toxic add`
root@toxiproxy:/app/src/github.com/Shopify/toxiproxy# 

When I try this outside of the docker container, using the latest code in git, the comma separated approach doesn't work at all and I have to switch to multiple -a args

$ ./cli toxic add -t latency -a latency=1000,jitter=500 web
Failed to add toxic: AddToxic: HTTP 400: bad request body: json: cannot unmarshal string into Go value of type int64

$ ./cli toxic add -t latency -a latency=1000 -a jitter=500 web
Added downstream latency toxic 'latency_downstream' on proxy 'web'

the first one submits json like:

{"name":"","type":"latency","stream":"downstream","toxicity":1,"attributes":{"latency":"1000,jitter=500"}}

which looks invalid. the second approach submits:

{"attributes":{"latency":1000,"jitter":500},"name":"latency_downstream","type":"latency","stream":"downstream","toxicity":1}

Slow TCP Accept and Read cannot be simulated

Currently a proxy will always accept new connections right away, so there is no way to test client connection timeouts (only connection refused when the proxy is disabled).

It is also not possible to test Write failures/timeouts since #67. All incoming data will be read in and buffered by toxiproxy right away, so TCP Writes can't fail on either the server or client.

Expose via DNS

It'd be cool if Toxiproxy could expose its local running services via DNS. Especially because this would make the development environment more like production by using DNS as well.

Separate development from master branch

Recently it seems there's been some issues and confusion over what versions are released and what documentation matches what.

Currently the master README.md is a bit of a mix between 2.0.0 documentation and upcoming 2.1.0 changes.
I think it may be beneficial to move 2.1.0 development to a dev branch, so that master is always the most recent release, and has the corresponding documentation.
This also makes staging README changes much easier for future releases.

Thoughts?
@sirupsen

macOS Sierra issue

After creating a new proxy and adding a latency toxic:

toxiproxy-cli create postgres --listen 127.0.0.1:5434 --upstream 127.0.0.1:5432
toxiproxy add postgres --type latency --toxicName latency --attributes latency=10 --downstream

Trying to establish a connection via PSQL never succeeds:

psql -d postgres://127.0.0.1:5434/postgres?sslmode=disable

However, connecting directly on port 5432 (not via toxiproxy) continues to work fine.

This is affecting a machine running macOS 10.12.1. The setup detailed above with toxiproxy works fine on OSX El Capitan 10.11.6.

Any help debugging this would be most appreciated!


Version information:

  • toxiproxy-cli version 2.0.0 (installed via Homebrew)
  • psql (PostgreSQL) 9.5.5

Dockerfile not port forwarding

Hello there! 👋

I'm currently running this within our CI system and noticed that accessing the HTTP API doesn't work unless I explicitly forward 8474 to 8474 inside the container (usually via -p 8474:8474).

I'm unsure if this is a bug or you handle this differently in your setup? My setup looks like this:

docker pull shopify/toxiproxy
docker run -it -d -p 8474:8474 shopify/toxiproxy

# create HTTP requests for proxies and toxics
# run rspec

Interested to hear your thoughts on this one but if it is a bug I'll gladly open a PR to get it fixed.

Support for cluster of toxiproxy nodes

It would be nice if we can setup a cluster of toxiproxy nodes so that can use a load balancer to balance loads between these nodes. This avoids a single point of failure.

If a toxic is configured in any of the nodes, it should propagate to all nodes in the cluster automatically.

Want to check if this feature looks interesting with everyone.

Wrong response when creating a toxic

Hi,

I'm having a problem when creating a toxic.
If I send ah HTTP POST request to the following URL:

http://localhost:8474/proxies/testingProxy/toxics

where testingProxy is an existing proxy, using the following body:

{
"Name" : "BandwidthToxicTest",
"Stream" : "upstream",
"Enabled" : true,
"Type": "bandwidth",
"Rate" : 100
}

I get the following response:
{
"attributes": {
"rate": 0
},
"name": "BandwidthToxicTest",
"type": "bandwidth",
"stream": "upstream",
"toxicity": 1
}

Why attributes.rate is zero in the response? It should be 100, isn't it?
Thank you.
Regards,
Federico

Data limit toxic suggestion

I need to simulate situation when client sends too much data and server close the connection. Would you accept PR with simple toxic which would do such thing? ... limit how much data can be transferred during single connection but let pass everything before threshold is reached.

Suggestion: Distribute as a Gem

Instead of relying on bootstrap code to update to the latest version, could we add the necessary files to make this a gem and version it using Github's releases?

Batch API / support HTTP pipelines

@BlakeMesdag mentioned that creating proxies at boot of our application actually takes a while, up to 2 seconds. We can make this better. Toxiproxy should not take more than 100ms at boot, and preferably less.

The simplest thing would probably be to support HTTP pipelines / persistent connections, so we can just send a bunch of data. We may also just be doing something stupid in the Rails gem. I'd prefer that to a new API. Another possibility is that the #populate call becomes a native thing in Toxiproxy that just sends it a JSON dictionary of all the proxies it expects (and resets all of them).

@xthexder @jpittis

Populate doesn't compare hostnames properly

When a proxy is created with a hostname such as localhost, toxiproxy will resolve the address and store the ip address 127.0.0.1.
This means that host comparisons such as in /populate will fail unless a static ip is used originally.

The address should be resolved to an IP and then compared after so that comparisons are consistent.

cli's help messages are too abstract, e.g. nothing toxic specific

out of #139 came an interesting point.
per @xthexder:

The cli is designed to be independant of what toxics are defined, so that if a new toxic is added, the cli and api will still work with older versions

interesting choice. this explains another gripe i had as a newcomer to this project: toxiproxy-cli only has help messages for highlevel operations (e.g. create and remove a toxic) but no help messages about which toxics you can add, what their attributes are, etc. It would be nice to be able to have toxiproxy-cli toxic help add list the available toxics and toxiproxy-cli toxic help add latency for example show details about how to add a latency toxic. With the current strategy of keeping the cli generic, this can't be done.
You could technically have the cli query the server for the available toxics, their attributes, which are required vs optional etc and then feed that back to the user, but I would argue that's getting a bit complicated and probably makes it quite hard to dynamically build optimized CLI experiences (see below)

If somebody upgrades their server to support new toxics or new toxic attributes, then it seems very reasonable that they also update the cli as well. given proper packaging / install script /.. this is no extra effort at all.

this way the cli can "truly" support the toxics. and not only could it display more useful help messages, it could also provide a CLI experience that's more optimized. e.g. instead of:
toxiproxy-cli toxic add [command options] <proxyName> with options like --type value, -t value and --attribute value, -a value

you could do:
toxiproxy-cli toxic add [command options] latency <proxyName> with options like --latency and --jitter

this CLI approach seems more user friendly IMHO, I would argue it's a good thing that the cli is optimized for the terminology of the toxics etc instead of trying to be more of a generic json encoder for toxic attributes. If people want that, they can use curl ;)

anyway, please consider this as the way i intend it: constructive feedback.
this project is pretty sweet and I hope to contribute as much as I can (first with some thoughts and ideas, and later hopefully with code as well)

making sure all connections are subject to a toxic / creating proxy-toxic atomically

Hello again Jacob & co,

I'm currently seeing something weird with a proxy that has a latency toxic applied to it with toxicity of 1.0,
for some reason some of the connections that go through it have no latency.

I've tried a few tactics:

  1. doing an update on the toxic. because the code looks like it may apply the latency toxic to all active connections going through a proxy, i need to study the code a bit more (pretty intense stuff btw!). this tactic doesn't seem to work: some connections are still undelayed.
  2. execute 3 commands (proxy delete, proxy add, and add toxic to proxy) in sequence from a script, trying to minimize the timeframe between them, "hopefully" faster than my application reconnecting. doesn't seem to work: some connections are still undelayed.

Is 1 supposed to work at all? 2 is obviously racey.
Note: I'm using the latest code in git master.
Is there a better way to solve or diagnose this problem? (idea: toxiproxy-cli inspect could do a dump of connections through a proxy and whether they are in noop or toxic mode)

would it make sense to add a mode to toxiproxy-cli to add a proxy and a toxic atomically? So that as soon as the proxy listens, the toxic is ready to be applied for any new incoming connections?
I maybe be able to contribute such a feature, I would just need some direction on how the code should fit together.
Or is there another/better way to enforce a toxic is applied to all connections through a proxy?

Toxiproxy 2.0 RFC

Proposed API Changes

  • Remove enabled field from all toxics
  • POST /proxies/{proxy}/{up|down}stream/toxics - Create (enable) a new toxic
  • POST /proxies/{proxy}/{up|down}stream/toxics/{toxic} - Update an existing toxic
  • DELETE /proxies/{proxy}/{up|down}stream/toxics/{toxic} - Destroy (disable) a toxic

This API matches the current proxy creation/deletion api.

Internal Structure Changes

Current 1.x architecture: https://docs.google.com/drawings/d/1pwuRINbpwyaQeYSgGt8VTEKWEUQAwYpNJIMH1owW3Sc/view

Instead of a static number of ToxicStubs (and a static mapping for each toxic), ToxicStubs will be dynamically added / removed as toxics are created/destroyed. A minimum of 1 ToxicStub will always be present, and the first toxic will always be a NoopToxic so that it can be interrupted for inserting / removing toxics.

Steps for adding a new toxic:

  1. Interrupt the last toxic in the chain
  2. Reconnect the output channels so that the new toxic is between the last toxic and the end ChanReader
  3. Resume both ToxicStubs with their toxics

Steps for removing a toxic:

  1. Interrupt the toxic before the target in order to ensure the target's input channel is empty
  2. Interrupt the target toxic
  3. Connect the previous toxic's output to the target toxic's output
  4. Resume the previous toxic / ToxicStub pair

This ends up being very similar to a doubly-linked list, except that we need to ensure no data is in-flight between the links (channels) when they're removed.

Toxic Registration

The main() function and server creation will be simplified so that it can be used as a library.
Instead of having all the toxics hard-coded inside toxiproxy, they will be registered in an init() function: toxiproxy.Register(SomeToxic) (this will have to be done with reflection or something...)

This will allow user-created toxics without having to create a full fork of toxiproxy.

Deleting a timeout toxic can lockup proxy http requests

Ran into this issue in some of my tests. Here's the curl commands you can use to recreate this issue.

curl -i -d '{"name": "redis", "upstream": "localhost:6379", "listen": "localhost:26379"}' localhost:8474/proxies
curl -i -d '{"type":"timeout", "timeout":30000, "stream": "upstream"}' localhost:8474/proxies/redis/toxics
curl -m 1 -i 127.0.0.1:26379
curl -m 1 -i -X DELETE localhost:8474/proxies/redis/toxics/timeout

The final delete request seems to lock up (final command must be executed before the 30 second timeout on the toxic), and any future requests like the following no longer returns before timing out

curl -i localhost:8474/proxies

But the version request works fine still curl -i localhost:8474/version returns 2.0.0rc1

@sirupsen @xthexder

Cant access toxiproxy server from outside host

I am not able to hit the toxiproxy server using the REST API for configuring proxies from outside of the host where it is running.

netstat -tulpn shows that it is listening to the loopback address 127.0.0.1:8474

For now as a workaround what I did was to create another proxy which listens on public ip and port 80 and forwards to localhost:8474

PUBLIC_IP:80 --> localhost:8474

Wondering if anyone else faced this issue?

Simplify by always using ProxyWithToxics

Is there any reason why the Proxy type doesn't just have Toxics always? It's perfectly fine for them to be nil. I also think proxies should be returned with toxics in all cases in the API. This simplifies things a great deal.

@xthexder thoughts?

Clarification of timeout toxic behavior

Hey, according to the description of timeout toxic it should stop all data after some specific timeout.

Let's say I have proxy myproxy created

./toxiproxy-cli create myproxy --listen localhost:42666 --upstream google.com:80

And I create new toxic of timeout type with 10s timeout

./toxiproxy-cli toxic add myproxy -n mytoxic --upstream --type timeout --attributes timeout=10000

Processing of simple http get request should take less then 10s so I assume toxiproxy shouldn't interfere in communication. But when I try it I get empty response after 10s. It works well without any toxic enabled.

date -R ; curl -vv localhost:42666 ; date -R        
Tue, 16 Aug 2016 15:58:32 +0200
* Rebuilt URL to: localhost:42666/
* Hostname was NOT found in DNS cache
*   Trying 127.0.0.1...
* Connected to localhost (127.0.0.1) port 42666 (#0)
> GET / HTTP/1.1
> User-Agent: curl/7.35.0
> Host: localhost:42666
> Accept: */*
> 
* Empty reply from server
* Connection #0 to host localhost left intact
curl: (52) Empty reply from server
Tue, 16 Aug 2016 15:58:42 +0200

Am I doing something wrong or just don't understand well how it's supposed to work?

Toxics are not set when creating a proxy for the first time.

When using the Go client as follows, toxics are not added to a proxy.
Given var p []toxiproxy.Proxy with toxics.

proxy := client.NewProxy(&p)
proxy.Create()

This does not properly add the configured toxics from p onto the proxy.

They must be added after the fact using Proxy.SetToxic.

simulate cable unplug

Is it possible to simulate a cable being unplugged? It seems timeout stops the data immediately.

I would prefer something like, stop all data (and hang for ever) after x time so I can use it with the toxicity option and have random hangs in the middle of some connections.

Simulate slow connection open

I'm trying to use Toxiproxy to test a connection that is slow to open (I am specifically trying to test our Elastic Search configuration which has both a request_timeout and a request open_timeout which is shorter https://github.com/Shopify/shopify-app-store/pull/1297).

My test fails after the full timeout, not the open timeout (4 vs 2 seconds). From a discussion with @sirupsen he pointed out that this is probably because when the Elastic Search client is routed through Toxiproxy the Toxiproxy server accepts the connection immediately and then applies the toxic. From the Elastic Search client's perspective, it passed the request open_timeout for this reason.

For discussion
@sirupsen @xthexder @jpittis

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.