README.md in toxiproxy-0.0.2 vs README.md in toxiproxy-0.1.0

- old
+ new

@@ -1,26 +1,32 @@ # toxiproxy-ruby [Toxiproxy](https://github.com/shopify/toxiproxy) is a proxy to simulate network and system conditions. The Ruby API aims to make it simple to write tests that -assure your application behaves appropriate under harsh conditions. Please see -the Toxiproxy project for more details. +ensure your application behaves appropriately under harsh conditions. Before you +can use the Ruby library, you need to read the [Usage section of the Toxiproxy +README](https://githubcom/shopify/toxiproxy#Usage). ``` gem install toxiproxy ``` Make sure the Toxiproxy server is already running. +For more information about Toxiproxy and the available toxics, see the [Toxiproxy +documentation](https://github.com/shopify/toxiproxy) + ## Usage +The Ruby client communicates with the Toxiproxy daemon via HTTP. + For example, to simulate 1000ms latency on a database server you can use the `latency` toxic with the `latency` argument (see the Toxiproxy project for a list of all toxics): ```ruby -Toxiproxy[:mysql_master].downstream(:latency, latency: 1000) do +Toxiproxy[:mysql_master].downstream(:latency, latency: 1000).apply do Shop.first # this took at least 1s end ``` You can also take an endpoint down for the duration of a block at the TCP level: @@ -42,9 +48,27 @@ If you want to simulate that your cache server is slow at incoming network (upstream), but fast at outgoing (downstream), you can apply a toxic to just the upstream: ```ruby -Toxiproxy[:cache].upstream(:latency, latency: 1000) do +Toxiproxy[:cache].upstream(:latency, latency: 1000).apply do Cache.get(:omg) # will take at least a second end ``` + +You can apply many toxics to many connections: + +```ruby +Toxiproxy[/redis/].upstream(:slow_close, delay: 100).downstream(:latency, jitter: 300).apply do + # all redises are now slow at responding and closing +end + +## Populate + +To populate Toxiproxy with the proxies from `config/toxiproxy.json`: + +```ruby +Toxiproxy.populate("./config/toxiproxy.json") +``` + +It's recommended to do this early as early in boot as possible, see the +[Toxiproxy README](https://github.com/shopify/toxiproxy#Usage)..