[HN Gopher] Toxiproxy is a framework for simulating network cond...
       ___________________________________________________________________
        
       Toxiproxy is a framework for simulating network conditions
        
       Author : taf2
       Score  : 113 points
       Date   : 2021-11-02 17:16 UTC (5 hours ago)
        
 (HTM) web link (github.com)
 (TXT) w3m dump (github.com)
        
       | oguzb wrote:
       | We also use Toxiproxy at my company and it's awesome.
       | 
       | Shameless plug: I wrote a Rust port of it a while ago, for fun:
       | https://github.com/oguzbilgener/noxious
        
         | maxpert wrote:
         | Awesome! How can I contribute?
        
           | oguzb wrote:
           | Thank you for the offer! If you're looking for something
           | small, I just created issue #1. Other than that, I'm open to
           | new ideas and anything that would make it easier to use.
        
       | sammorrowdrums wrote:
       | We use it at GitHub, indeed I just updated the version we use for
       | development this morning! Great project.
        
       | richardlblair wrote:
       | I used to work at Shopify and Toxiproxy was always a fantastic
       | resource.
        
       | mrtesthah wrote:
       | If you have an Apple Developer account, you can install Network
       | Link Conditioner, with works transparently with all types of
       | traffic:
       | 
       | https://nshipster.com/network-link-conditioner/
        
       | athenot wrote:
       | Very cool! This would be fantastic for a CI pipeline.
       | 
       | For local development on the Mac, there's also dummynet. Full
       | docs at:                   man 8 dnctl
        
       | Sirupsen wrote:
       | I wrote the initial version of Toxiproxy back in 2014, but Jacob
       | Wirth took it way beyond during his internship at Shopify. It
       | came out of a need for writing integration tests for resiliency
       | work we did at Shopify back then. [1] We didn't want someone to
       | suddenly re-introduce a hard dependency on e.g. Redis on
       | Shopify's storefronts. The initial prototype was a shell script
       | that used lsof(1) and gdb(1) to close the file descriptor of the
       | various connections. But, besides being dodgy, we needed to also
       | simulate latency and make sure it worked on everyone's MacOS
       | laptop's (otherwise e.g. tc(1) would have been intriguing). I
       | wrote a little bit more of the history of Toxiproxy on Twitter.
       | [2] It's stable and has proxied everything in dev and CI at
       | Shopify for over half a decade.
       | 
       | [1]: https://shopify.engineering/building-and-testing-
       | resilient-r...
       | 
       | [2]: https://twitter.com/Sirupsen/status/1455622640727728137
        
       | QuinnyPig wrote:
       | While yours is more fully featured, I submit that
       | https://github.com/tylertreat/comcast had the better name.
        
         | agilob wrote:
         | There are quite different projects, they work completely
         | differently and have different capabilities.
        
       | anonymousDan wrote:
       | Anyone know of anything like this but at the TCP level? I would
       | love to have a way of simulating network partitions and different
       | message delays for distributed algorithms implemented in Elixir.
       | In an ideal world I'd be able to hook the elixir send/receive
       | primitives to intercept messages between processes even in a
       | single node.
        
         | redprince wrote:
         | https://www.freebsd.org/cgi/man.cgi?dummynet
         | 
         | The dummynet system facility permits the control of traffic
         | going through the various network interfaces, by applying
         | bandwidth and queue size limitations, implementing different
         | scheduling and queue management policies, and emulating delays
         | and losses. ... The dummynet facility was initially implemented
         | as a testing tool for TCP congestion control by Luigi Rizzo, as
         | described on ACM Computer Communication Review, Jan.97 issue.
        
         | buzzier wrote:
         | http://jagt.github.io/clumsy/ (windows)
        
         | StarBrilliant wrote:
         | Not sure if this software satisfies your need:
         | https://github.com/tylertreat/Comcast
        
         | kevin_nisbet wrote:
         | May or may not be what you're looking for, but you can do lots
         | of this in linux by using tc.
         | 
         | https://man7.org/linux/man-pages/man8/tc.8.html
         | 
         | Requires care to use and understand, so may not be applicable,
         | but allows introducing latency, jitter, packet loss, etc.
        
           | touisteur wrote:
           | Precisely tc and netem. To give an idea how powerful and
           | tuneable netem can be, we had a piece of network gear that
           | lost messages if they were too close in time to each other
           | (less than N microseconds). Probably some 'copy packet during
           | interrupt' stuff. We couldn't change anything in the
           | applications or the network gear. The solution was (on the
           | sender side) to 1) classify with tc the specific packet
           | sequence and 2) delay the second message in the sequence.
           | It's a large command-line, it does the job perfectly. It's
           | marvelous.
        
         | mixtur2021 wrote:
         | Isn't this already at a TCP level? HTTP is only used for
         | management of the proxy?
        
         | tfigment wrote:
         | I used to use WanEm but it was never really maintained but
         | great for my manual networking tests. Would like something
         | similar now but updated.
        
       | kinduff wrote:
       | This is one of my favorite tools out there. So simple but yet so
       | powerful.
       | 
       | You get the real deal when you pair it with other tools to
       | analyze and monitor traffic.
       | 
       | Worth the note, I sometimes use this front end in case I want to
       | quickly adjust stuff https://github.com/buckle/toxiproxy-frontend
        
       | canadaduane wrote:
       | Can this be used for simulating network conditions during mobile
       | app development / resiliency testing?
        
       | maxpert wrote:
       | I've used Toxiproxy to reproduce so many issues that I can't be
       | thankful enough to authors for this awesome tool! I also found a
       | docker based UI to adding toxics I just wish it ships out of box
       | or as another binary/brew package. While cli is awesome for
       | people who have mastered it for beginners it's one more thing to
       | learn, having a UI just solves that.
        
       ___________________________________________________________________
       (page generated 2021-11-02 23:00 UTC)