Automating Resilience Testing with Clojure and Docker
summary
Shows how to build a Clojure test suite that spins up isolated environments with Docker Compose and controls containers and network faults with IG Havoc, drives faults via property-based generators (test.check), and runs plans that inject random stop/restart/network faults while a producer feeds Kafka. The approach reproduces four of five real outages (including an off‑by‑one and race conditions) but misses some cases (OOM, multi‑topic load), is slow — often runs for hours — and requires defining explicit healthy states to make tests meaningful.
AI-written summary · about
chapters (20)
- 0:00Resilience testing challenges
- 3:21Traditional testing failures
- 5:32Docker Compose for isolation
- 6:57Introducing IG Havoc
- 7:59Building test environments
- 10:30First resilience test
- 12:56Need for infinite tests
- 13:58Property-based testing
- 15:01Defining resilience properties
- 16:03Generating test plans
- 17:26Implementing tests
- 18:54Does property testing work?
- 20:20Debugging persistent issues
- 21:23Finding race conditions
- 22:27Healthy states and improvements
- 23:11Drawbacks of automation
- 24:13Deterministic failures research
- 25:18Key takeaways
- 25:58Production vs chaos engineering
- 27:03Q&A
related talks
40mResilience Testing - Failure is an Option
41mData Driven and Containerized Testing of Multi Service Networked Systems
51mTestContainers: Integration Testing Without the Hassle
40mMeet the assertable Chaos Monkeys
25mResilience testing in modernization projects
42mUse Docker to test microservices
44mGenerative Integration Tests
32mUsing Docker in test automation
