Shopify/toxiproxy
:alarm_clock: :fire: A TCP proxy to simulate network and system conditions for chaos and resiliency testing
Build with Backblaze B2
SDKs, agent skills, IDE extensions, and reference pipelines from Backblaze Labs. All open source.
Loading star history...
Where it stands
Rank, growth pace and release cadence relative to everything GStars tracks.
1 release in the last 90 days, the latest 17 days ago, with 78 contributors on GitHub.
Gained 26% more stars in the last 90 days than in the 90 days before.
Use Cases & Benefits
- Simulates network and system conditions by acting as a TCP proxy to enable chaos and resiliency testing.
- Provides a dynamic, cross-platform API for deterministic and randomized network tampering without requiring root access.
- Use for testing application resilience by simulating latency, bandwidth limits, and connection failures in development and CI environments.
- Use for integration testing of distributed systems by injecting network faults like timeouts and TCP resets to validate fault tolerance.
- Use for debugging and validating error handling in client-server applications by controlling upstream and downstream network behavior programmatically.
Should you depend on it?
License terms, project hygiene and risks, from GitHub metadata and GStars' snapshots.
License
MIT
Permissive: commercial use, modification and redistribution are allowed with attribution.
Community files
- README: present
- Code of conduct: present
Watch-outs
No watch-outs from GStars' checks.
General guidance from repository metadata, not legal advice. How we score
From the README
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:
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).
The existing ones we found didn't provide the kind of dynamic API we needed for integration and unit testing. Linux tools like
ncand so on are not cross-platform and require root, which makes them problematic in test, development and CI environments.
Daily snapshots
Stars gained per day, and how forks and open issues moved, from GStars' daily snapshots
Forks
519+12
Open issues
92-12
Compared with peers in Networking
Fastest-growing repositories GStars tracks in this cohort for the week of Nov 1, by 7-day star growth
| Repository | Stars | +7d | Health | Last release |
|---|---|---|---|---|
| superdesigndev/treg | 7.2K | +656 | 45 | — |
| MHSanaei/3x-ui | 49.4K | +522 | 53 | 134 days ago |
| netbirdio/netbird | 30.7K | +399 | 65 | 7 days ago |
| tailscale/tailscale | 38.7K | +378 | 65 | 3 days ago |
| caddyserver/caddy | 78.8K | +267 | 60 | 1 day ago |
| Shopify/toxiproxy | 12.5K | — | 59 | 17 days ago |
| Category median | 38.7K | +399 | 60 | — |
Also by Shopify
Other repositories from this maintainer that GStars tracks
Discover Repositories
Search across tracked repositories by name or description