Toxiproxy is a framework for simulating network conditions
github.com
github.com
[1]: https://shopify.engineering/building-and-testing-resilient-r...
[2]: https://twitter.com/Sirupsen/status/1455622640727728137
https://github.com/dastergon/awesome-chaos-engineering#notab... does list toxiproxy.
Any general pointers for handling network connectivity issues (from any OSI layer) in client and server apps?
Many apps lack 'pending in outbox' functionality that we expect from e.g. email clients.
- [ ] Who could develop a set of reference toxiproxy 'test case mutators' (?) for simulating typical #DisasterRelief connectivity issues?
(In Python, Pytest + Hypothesis + Toxiproxy-python would be useful.)
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.
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.
Shameless plug: I wrote a Rust port of it a while ago, for fun: https://github.com/oguzbilgener/noxious
For local development on the Mac, there's also dummynet. Full docs at:
man 8 dnctlThe other fact that caught my interest was the concept of "gamedays". It really about introducing "problems" in the production system randomly and keeping the support staff that manage application incidents on it toes. (More about in this talk: https://www.youtube.com/watch?v=TTfWpHuCJXk)
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