#### etcd-test-proxy Proxy layer that simulates various network conditions. Test locally ```bash $ ./build $ ./bin/etcd $ make build-etcd-test-proxy -f ./hack/scripts-dev/Makefile $ ./bin/etcd-test-proxy --help $ ./bin/etcd-test-proxy --from localhost:23790 --to localhost:2379 --http-port 2378 --verbose $ ETCDCTL_API=3 ./bin/etcdctl --endpoints localhost:2379 put foo bar $ ETCDCTL_API=3 ./bin/etcdctl --endpoints localhost:23790 put foo bar ``` Proxy overhead per request is under 500μs ```bash $ go build -v -o ./bin/benchmark ./tools/benchmark $ ./bin/benchmark \ --endpoints localhost:2379 \ --conns 5 \ --clients 15 \ put \ --key-size 48 \ --val-size 50000 \ --total 10000 < tcp://localhost:2379] $ ETCDCTL_API=3 ./bin/etcdctl \ --endpoints localhost:23790 \ put foo bar # Error: context deadline exceeded $ curl -L http://localhost:2378/pause-tx -X DELETE # unpaused forwarding [tcp://localhost:23790 -> tcp://localhost:2379] ``` Drop client packets ```bash $ curl -L http://localhost:2378/blackhole-tx -X PUT # blackholed; dropping packets [tcp://localhost:23790 -> tcp://localhost:2379] $ ETCDCTL_API=3 ./bin/etcdctl --endpoints localhost:23790 put foo bar # Error: context deadline exceeded $ curl -L http://localhost:2378/blackhole-tx -X DELETE # unblackholed; restart forwarding [tcp://localhost:23790 -> tcp://localhost:2379] ``` Trigger leader election ```bash $ ./build $ make build-etcd-test-proxy -f ./hack/scripts-dev/Makefile $ rm -rf /tmp/etcd-test-proxy-data.s* $ goreman -f ./tools/etcd-test-proxy/Procfile start $ ETCDCTL_API=3 ./bin/etcdctl \ --endpoints localhost:13790,localhost:23790,localhost:33790 \ member list # isolate s1 when s1 is the current leader $ curl -L http://localhost:1381/blackhole-tx -X PUT $ curl -L http://localhost:1381/blackhole-rx -X PUT # s1 becomes follower after election timeout ```