Gyuho Lee d8a2d3a209 functional/tester: delay after injecting "kill" to trigger election %!s(int64=7) %!d(string=hai) anos
..
agent cafa3b9217 functional/agent: handle static TLS certs %!s(int64=7) %!d(string=hai) anos
cmd 85e050a120 *: rename, clean up functional tests %!s(int64=7) %!d(string=hai) anos
rpcpb 68adc6e300 functional/rpcpb: document FailureCase %!s(int64=7) %!d(string=hai) anos
runner 85e050a120 *: rename, clean up functional tests %!s(int64=7) %!d(string=hai) anos
scripts 85e050a120 *: rename, clean up functional tests %!s(int64=7) %!d(string=hai) anos
tester d8a2d3a209 functional/tester: delay after injecting "kill" to trigger election %!s(int64=7) %!d(string=hai) anos
README.md 85e050a120 *: rename, clean up functional tests %!s(int64=7) %!d(string=hai) anos
build 85e050a120 *: rename, clean up functional tests %!s(int64=7) %!d(string=hai) anos

README.md

etcd Functional Testing

functional verifies the correct behavior of etcd under various system and network malfunctions. It sets up an etcd cluster under high pressure loads and continuously injects failures into the cluster. Then it expects the etcd cluster to recover within a few seconds. This has been extremely helpful to find critical bugs.

See functional.yaml for an example configuration.

Run locally

PASSES=functional ./test

Run with Docker

pushd ../..
make build-docker-functional
popd

And run example scripts.

# run 3 agents for 3-node local etcd cluster
./scripts/docker-local-agent.sh 1
./scripts/docker-local-agent.sh 2
./scripts/docker-local-agent.sh 3

# to run only 1 tester round
./scripts/docker-local-tester.sh