diff --git a/hack/scripts-dev/Makefile b/Makefile similarity index 69% rename from hack/scripts-dev/Makefile rename to Makefile index 96af2f51a..ad11a493e 100644 --- a/hack/scripts-dev/Makefile +++ b/Makefile @@ -3,11 +3,12 @@ # Example: -# make build -f ./hack/scripts-dev/Makefile -# make clean -f ./hack/scripts-dev/Makefile -# make clean-docker -f ./hack/scripts-dev/Makefile -# make restart-docker -f ./hack/scripts-dev/Makefile -# make delete-docker-images -f ./hack/scripts-dev/Makefile +# make build +# make clean +# make docker-clean +# make docker-start +# make docker-kill +# make docker-remove .PHONY: build build: @@ -28,14 +29,17 @@ clean: rm -f ./clientv3/integration/127.0.0.1:* ./clientv3/integration/localhost:* rm -f ./clientv3/ordering/127.0.0.1:* ./clientv3/ordering/localhost:* -clean-docker: +docker-clean: docker images docker image prune --force -restart-docker: +docker-start: service docker restart -delete-docker-images: +docker-kill: + docker kill `docker ps -q` || true + +docker-remove: docker rm --force `docker ps -a -q` || true docker rmi --force `docker images -q` || true @@ -55,14 +59,18 @@ endif # Example: -# GO_VERSION=1.8.7 make build-docker-test -f ./hack/scripts-dev/Makefile -# make build-docker-test -f ./hack/scripts-dev/Makefile +# GO_VERSION=1.8.7 make build-docker-test +# GO_VERSION=1.9.5 make build-docker-test +# make build-docker-test +# # gcloud docker -- login -u _json_key -p "$(cat /etc/gcp-key-etcd-development.json)" https://gcr.io -# GO_VERSION=1.8.7 make push-docker-test -f ./hack/scripts-dev/Makefile -# make push-docker-test -f ./hack/scripts-dev/Makefile +# GO_VERSION=1.8.7 make push-docker-test +# GO_VERSION=1.9.5 make push-docker-test +# make push-docker-test +# # gsutil -m acl ch -u allUsers:R -r gs://artifacts.etcd-development.appspot.com -# GO_VERSION=1.8.7 make pull-docker-test -f ./hack/scripts-dev/Makefile -# make pull-docker-test -f ./hack/scripts-dev/Makefile +# GO_VERSION=1.9.5 make pull-docker-test +# make pull-docker-test build-docker-test: $(info GO_VERSION: $(GO_VERSION)) @@ -83,9 +91,9 @@ pull-docker-test: # Example: -# make build-docker-test -f ./hack/scripts-dev/Makefile -# make compile-with-docker-test -f ./hack/scripts-dev/Makefile -# make compile-setup-gopath-with-docker-test -f ./hack/scripts-dev/Makefile +# make build-docker-test +# make compile-with-docker-test +# make compile-setup-gopath-with-docker-test compile-with-docker-test: $(info GO_VERSION: $(GO_VERSION)) @@ -108,27 +116,27 @@ compile-setup-gopath-with-docker-test: # Example: # # Local machine: -# TEST_OPTS="PASSES='fmt'" make test -f ./hack/scripts-dev/Makefile -# TEST_OPTS="PASSES='fmt bom dep compile build unit'" make test -f ./hack/scripts-dev/Makefile -# TEST_OPTS="PASSES='build unit release integration_e2e functional'" make test -f ./hack/scripts-dev/Makefile -# TEST_OPTS="PASSES='build grpcproxy'" make test -f ./hack/scripts-dev/Makefile +# TEST_OPTS="PASSES='fmt'" make test +# TEST_OPTS="PASSES='fmt bom dep compile build unit'" make test +# TEST_OPTS="PASSES='build unit release integration_e2e functional'" make test +# TEST_OPTS="PASSES='build grpcproxy'" make test # # Example (test with docker): -# make pull-docker-test -f ./hack/scripts-dev/Makefile -# TEST_OPTS="PASSES='fmt'" make docker-test -f ./hack/scripts-dev/Makefile -# TEST_OPTS="VERBOSE=2 PASSES='unit'" make docker-test -f ./hack/scripts-dev/Makefile +# make pull-docker-test +# TEST_OPTS="PASSES='fmt'" make docker-test +# TEST_OPTS="VERBOSE=2 PASSES='unit'" make docker-test # # Travis CI (test with docker): -# TEST_OPTS="PASSES='fmt bom dep compile build unit'" make docker-test -f ./hack/scripts-dev/Makefile +# TEST_OPTS="PASSES='fmt bom dep compile build unit'" make docker-test # # Semaphore CI (test with docker): -# TEST_OPTS="PASSES='build unit release integration_e2e functional'" make docker-test -f ./hack/scripts-dev/Makefile -# HOST_TMP_DIR=/tmp TEST_OPTS="PASSES='build unit release integration_e2e functional'" make docker-test -f ./hack/scripts-dev/Makefile -# TEST_OPTS="GOARCH=386 PASSES='build unit integration_e2e'" make docker-test -f ./hack/scripts-dev/Makefile +# TEST_OPTS="PASSES='build unit release integration_e2e functional'" make docker-test +# HOST_TMP_DIR=/tmp TEST_OPTS="PASSES='build unit release integration_e2e functional'" make docker-test +# TEST_OPTS="GOARCH=386 PASSES='build unit integration_e2e'" make docker-test # # grpc-proxy tests (test with docker): -# TEST_OPTS="PASSES='build grpcproxy'" make docker-test -f ./hack/scripts-dev/Makefile -# HOST_TMP_DIR=/tmp TEST_OPTS="PASSES='build grpcproxy'" make docker-test -f ./hack/scripts-dev/Makefile +# TEST_OPTS="PASSES='build grpcproxy'" make docker-test +# HOST_TMP_DIR=/tmp TEST_OPTS="PASSES='build grpcproxy'" make docker-test .PHONY: test test: @@ -169,9 +177,9 @@ docker-test-coverage: # Example: -# make compile-with-docker-test -f ./hack/scripts-dev/Makefile -# ETCD_VERSION=v3-test make build-docker-release-master -f ./hack/scripts-dev/Makefile -# ETCD_VERSION=v3-test make push-docker-release-master -f ./hack/scripts-dev/Makefile +# make compile-with-docker-test +# ETCD_VERSION=v3-test make build-docker-release-master +# ETCD_VERSION=v3-test make push-docker-release-master # gsutil -m acl ch -u allUsers:R -r gs://artifacts.etcd-development.appspot.com build-docker-release-master: @@ -195,24 +203,27 @@ push-docker-release-master: # Example: -# make build-docker-test -f ./hack/scripts-dev/Makefile -# make compile-with-docker-test -f ./hack/scripts-dev/Makefile -# make build-docker-static-ip-test -f ./hack/scripts-dev/Makefile +# make build-docker-test +# make compile-with-docker-test +# make build-docker-static-ip-test +# # gcloud docker -- login -u _json_key -p "$(cat /etc/gcp-key-etcd-development.json)" https://gcr.io -# make push-docker-static-ip-test -f ./hack/scripts-dev/Makefile +# make push-docker-static-ip-test +# # gsutil -m acl ch -u allUsers:R -r gs://artifacts.etcd-development.appspot.com -# make pull-docker-static-ip-test -f ./hack/scripts-dev/Makefile -# make docker-static-ip-test-certs-run -f ./hack/scripts-dev/Makefile -# make docker-static-ip-test-certs-metrics-proxy-run -f ./hack/scripts-dev/Makefile +# make pull-docker-static-ip-test +# +# make docker-static-ip-test-certs-run +# make docker-static-ip-test-certs-metrics-proxy-run build-docker-static-ip-test: $(info GO_VERSION: $(GO_VERSION)) - @sed -i.bak 's|REPLACE_ME_GO_VERSION|$(GO_VERSION)|g' ./hack/scripts-dev/docker-static-ip/Dockerfile + @sed -i.bak 's|REPLACE_ME_GO_VERSION|$(GO_VERSION)|g' ./scripts/docker-static-ip/Dockerfile docker build \ --tag gcr.io/etcd-development/etcd-static-ip-test:go$(GO_VERSION) \ - --file ./hack/scripts-dev/docker-static-ip/Dockerfile \ - ./hack/scripts-dev/docker-static-ip - @mv ./hack/scripts-dev/docker-static-ip/Dockerfile.bak ./hack/scripts-dev/docker-static-ip/Dockerfile + --file ./scripts/docker-static-ip/Dockerfile \ + ./scripts/docker-static-ip + @mv ./scripts/docker-static-ip/Dockerfile.bak ./scripts/docker-static-ip/Dockerfile push-docker-static-ip-test: $(info GO_VERSION: $(GO_VERSION)) @@ -231,7 +242,7 @@ docker-static-ip-test-certs-run: --tty \ $(TMP_DIR_MOUNT_FLAG) \ --mount type=bind,source=`pwd`/bin,destination=/etcd \ - --mount type=bind,source=`pwd`/hack/scripts-dev/docker-static-ip/certs,destination=/certs \ + --mount type=bind,source=`pwd`/scripts/docker-static-ip/certs,destination=/certs \ gcr.io/etcd-development/etcd-static-ip-test:go$(GO_VERSION) \ /bin/bash -c "cd /etcd && /certs/run.sh && rm -rf m*.etcd" @@ -244,35 +255,38 @@ docker-static-ip-test-certs-metrics-proxy-run: --tty \ $(TMP_DIR_MOUNT_FLAG) \ --mount type=bind,source=`pwd`/bin,destination=/etcd \ - --mount type=bind,source=`pwd`/hack/scripts-dev/docker-static-ip/certs-metrics-proxy,destination=/certs-metrics-proxy \ + --mount type=bind,source=`pwd`/scripts/docker-static-ip/certs-metrics-proxy,destination=/certs-metrics-proxy \ gcr.io/etcd-development/etcd-static-ip-test:go$(GO_VERSION) \ /bin/bash -c "cd /etcd && /certs-metrics-proxy/run.sh && rm -rf m*.etcd" # Example: -# make build-docker-test -f ./hack/scripts-dev/Makefile -# make compile-with-docker-test -f ./hack/scripts-dev/Makefile -# make build-docker-dns-test -f ./hack/scripts-dev/Makefile +# make build-docker-test +# make compile-with-docker-test +# make build-docker-dns-test +# # gcloud docker -- login -u _json_key -p "$(cat /etc/gcp-key-etcd-development.json)" https://gcr.io -# make push-docker-dns-test -f ./hack/scripts-dev/Makefile +# make push-docker-dns-test +# # gsutil -m acl ch -u allUsers:R -r gs://artifacts.etcd-development.appspot.com -# make pull-docker-dns-test -f ./hack/scripts-dev/Makefile -# make docker-dns-test-insecure-run -f ./hack/scripts-dev/Makefile -# make docker-dns-test-certs-run -f ./hack/scripts-dev/Makefile -# make docker-dns-test-certs-gateway-run -f ./hack/scripts-dev/Makefile -# make docker-dns-test-certs-wildcard-run -f ./hack/scripts-dev/Makefile -# make docker-dns-test-certs-common-name-auth-run -f ./hack/scripts-dev/Makefile -# make docker-dns-test-certs-common-name-multi-run -f ./hack/scripts-dev/Makefile +# make pull-docker-dns-test +# +# make docker-dns-test-insecure-run +# make docker-dns-test-certs-run +# make docker-dns-test-certs-gateway-run +# make docker-dns-test-certs-wildcard-run +# make docker-dns-test-certs-common-name-auth-run +# make docker-dns-test-certs-common-name-multi-run build-docker-dns-test: $(info GO_VERSION: $(GO_VERSION)) - @sed -i.bak 's|REPLACE_ME_GO_VERSION|$(GO_VERSION)|g' ./hack/scripts-dev/docker-dns/Dockerfile + @sed -i.bak 's|REPLACE_ME_GO_VERSION|$(GO_VERSION)|g' ./scripts/docker-dns/Dockerfile docker build \ --tag gcr.io/etcd-development/etcd-dns-test:go$(GO_VERSION) \ - --file ./hack/scripts-dev/docker-dns/Dockerfile \ - ./hack/scripts-dev/docker-dns - @mv ./hack/scripts-dev/docker-dns/Dockerfile.bak ./hack/scripts-dev/docker-dns/Dockerfile + --file ./scripts/docker-dns/Dockerfile \ + ./scripts/docker-dns + @mv ./scripts/docker-dns/Dockerfile.bak ./scripts/docker-dns/Dockerfile docker run \ --rm \ @@ -298,7 +312,7 @@ docker-dns-test-insecure-run: --dns 127.0.0.1 \ $(TMP_DIR_MOUNT_FLAG) \ --mount type=bind,source=`pwd`/bin,destination=/etcd \ - --mount type=bind,source=`pwd`/hack/scripts-dev/docker-dns/insecure,destination=/insecure \ + --mount type=bind,source=`pwd`/scripts/docker-dns/insecure,destination=/insecure \ gcr.io/etcd-development/etcd-dns-test:go$(GO_VERSION) \ /bin/bash -c "cd /etcd && /insecure/run.sh && rm -rf m*.etcd" @@ -312,7 +326,7 @@ docker-dns-test-certs-run: --dns 127.0.0.1 \ $(TMP_DIR_MOUNT_FLAG) \ --mount type=bind,source=`pwd`/bin,destination=/etcd \ - --mount type=bind,source=`pwd`/hack/scripts-dev/docker-dns/certs,destination=/certs \ + --mount type=bind,source=`pwd`/scripts/docker-dns/certs,destination=/certs \ gcr.io/etcd-development/etcd-dns-test:go$(GO_VERSION) \ /bin/bash -c "cd /etcd && /certs/run.sh && rm -rf m*.etcd" @@ -326,7 +340,7 @@ docker-dns-test-certs-gateway-run: --dns 127.0.0.1 \ $(TMP_DIR_MOUNT_FLAG) \ --mount type=bind,source=`pwd`/bin,destination=/etcd \ - --mount type=bind,source=`pwd`/hack/scripts-dev/docker-dns/certs-gateway,destination=/certs-gateway \ + --mount type=bind,source=`pwd`/scripts/docker-dns/certs-gateway,destination=/certs-gateway \ gcr.io/etcd-development/etcd-dns-test:go$(GO_VERSION) \ /bin/bash -c "cd /etcd && /certs-gateway/run.sh && rm -rf m*.etcd" @@ -340,7 +354,7 @@ docker-dns-test-certs-wildcard-run: --dns 127.0.0.1 \ $(TMP_DIR_MOUNT_FLAG) \ --mount type=bind,source=`pwd`/bin,destination=/etcd \ - --mount type=bind,source=`pwd`/hack/scripts-dev/docker-dns/certs-wildcard,destination=/certs-wildcard \ + --mount type=bind,source=`pwd`/scripts/docker-dns/certs-wildcard,destination=/certs-wildcard \ gcr.io/etcd-development/etcd-dns-test:go$(GO_VERSION) \ /bin/bash -c "cd /etcd && /certs-wildcard/run.sh && rm -rf m*.etcd" @@ -354,7 +368,7 @@ docker-dns-test-certs-common-name-auth-run: --dns 127.0.0.1 \ $(TMP_DIR_MOUNT_FLAG) \ --mount type=bind,source=`pwd`/bin,destination=/etcd \ - --mount type=bind,source=`pwd`/hack/scripts-dev/docker-dns/certs-common-name-auth,destination=/certs-common-name-auth \ + --mount type=bind,source=`pwd`/scripts/docker-dns/certs-common-name-auth,destination=/certs-common-name-auth \ gcr.io/etcd-development/etcd-dns-test:go$(GO_VERSION) \ /bin/bash -c "cd /etcd && /certs-common-name-auth/run.sh && rm -rf m*.etcd" @@ -368,32 +382,32 @@ docker-dns-test-certs-common-name-multi-run: --dns 127.0.0.1 \ $(TMP_DIR_MOUNT_FLAG) \ --mount type=bind,source=`pwd`/bin,destination=/etcd \ - --mount type=bind,source=`pwd`/hack/scripts-dev/docker-dns/certs-common-name-multi,destination=/certs-common-name-multi \ + --mount type=bind,source=`pwd`/scripts/docker-dns/certs-common-name-multi,destination=/certs-common-name-multi \ gcr.io/etcd-development/etcd-dns-test:go$(GO_VERSION) \ /bin/bash -c "cd /etcd && /certs-common-name-multi/run.sh && rm -rf m*.etcd" # Example: -# make build-docker-test -f ./hack/scripts-dev/Makefile -# make compile-with-docker-test -f ./hack/scripts-dev/Makefile -# make build-docker-dns-srv-test -f ./hack/scripts-dev/Makefile +# make build-docker-test +# make compile-with-docker-test +# make build-docker-dns-srv-test # gcloud docker -- login -u _json_key -p "$(cat /etc/gcp-key-etcd-development.json)" https://gcr.io -# make push-docker-dns-srv-test -f ./hack/scripts-dev/Makefile +# make push-docker-dns-srv-test # gsutil -m acl ch -u allUsers:R -r gs://artifacts.etcd-development.appspot.com -# make pull-docker-dns-srv-test -f ./hack/scripts-dev/Makefile -# make docker-dns-srv-test-certs-run -f ./hack/scripts-dev/Makefile -# make docker-dns-srv-test-certs-gateway-run -f ./hack/scripts-dev/Makefile -# make docker-dns-srv-test-certs-wildcard-run -f ./hack/scripts-dev/Makefile +# make pull-docker-dns-srv-test +# make docker-dns-srv-test-certs-run +# make docker-dns-srv-test-certs-gateway-run +# make docker-dns-srv-test-certs-wildcard-run build-docker-dns-srv-test: $(info GO_VERSION: $(GO_VERSION)) - @sed -i.bak 's|REPLACE_ME_GO_VERSION|$(GO_VERSION)|g' ./hack/scripts-dev/docker-dns-srv/Dockerfile + @sed -i.bak 's|REPLACE_ME_GO_VERSION|$(GO_VERSION)|g' ./scripts/docker-dns-srv/Dockerfile docker build \ --tag gcr.io/etcd-development/etcd-dns-srv-test:go$(GO_VERSION) \ - --file ./hack/scripts-dev/docker-dns-srv/Dockerfile \ - ./hack/scripts-dev/docker-dns-srv - @mv ./hack/scripts-dev/docker-dns-srv/Dockerfile.bak ./hack/scripts-dev/docker-dns-srv/Dockerfile + --file ./scripts/docker-dns-srv/Dockerfile \ + ./scripts/docker-dns-srv + @mv ./scripts/docker-dns-srv/Dockerfile.bak ./scripts/docker-dns-srv/Dockerfile docker run \ --rm \ @@ -419,7 +433,7 @@ docker-dns-srv-test-certs-run: --dns 127.0.0.1 \ $(TMP_DIR_MOUNT_FLAG) \ --mount type=bind,source=`pwd`/bin,destination=/etcd \ - --mount type=bind,source=`pwd`/hack/scripts-dev/docker-dns-srv/certs,destination=/certs \ + --mount type=bind,source=`pwd`/scripts/docker-dns-srv/certs,destination=/certs \ gcr.io/etcd-development/etcd-dns-srv-test:go$(GO_VERSION) \ /bin/bash -c "cd /etcd && /certs/run.sh && rm -rf m*.etcd" @@ -433,7 +447,7 @@ docker-dns-srv-test-certs-gateway-run: --dns 127.0.0.1 \ $(TMP_DIR_MOUNT_FLAG) \ --mount type=bind,source=`pwd`/bin,destination=/etcd \ - --mount type=bind,source=`pwd`/hack/scripts-dev/docker-dns-srv/certs-gateway,destination=/certs-gateway \ + --mount type=bind,source=`pwd`/scripts/docker-dns-srv/certs-gateway,destination=/certs-gateway \ gcr.io/etcd-development/etcd-dns-srv-test:go$(GO_VERSION) \ /bin/bash -c "cd /etcd && /certs-gateway/run.sh && rm -rf m*.etcd" @@ -447,14 +461,14 @@ docker-dns-srv-test-certs-wildcard-run: --dns 127.0.0.1 \ $(TMP_DIR_MOUNT_FLAG) \ --mount type=bind,source=`pwd`/bin,destination=/etcd \ - --mount type=bind,source=`pwd`/hack/scripts-dev/docker-dns-srv/certs-wildcard,destination=/certs-wildcard \ + --mount type=bind,source=`pwd`/scripts/docker-dns-srv/certs-wildcard,destination=/certs-wildcard \ gcr.io/etcd-development/etcd-dns-srv-test:go$(GO_VERSION) \ /bin/bash -c "cd /etcd && /certs-wildcard/run.sh && rm -rf m*.etcd" # Example: -# make build-etcd-test-proxy -f ./hack/scripts-dev/Makefile +# make build-etcd-test-proxy build-etcd-test-proxy: go build -v -o ./bin/etcd-test-proxy ./tools/etcd-test-proxy @@ -462,9 +476,9 @@ build-etcd-test-proxy: # Example: -# make build-docker-functional-tester -f ./hack/scripts-dev/Makefile -# make push-docker-functional-tester -f ./hack/scripts-dev/Makefile -# make pull-docker-functional-tester -f ./hack/scripts-dev/Makefile +# make build-docker-functional-tester +# make push-docker-functional-tester +# make pull-docker-functional-tester build-docker-functional-tester: $(info GO_VERSION: $(GO_VERSION)) diff --git a/hack/scripts-dev/README b/scripts/README similarity index 100% rename from hack/scripts-dev/README rename to scripts/README diff --git a/hack/scripts-dev/docker-dns-srv/Dockerfile b/scripts/docker-dns-srv/Dockerfile similarity index 100% rename from hack/scripts-dev/docker-dns-srv/Dockerfile rename to scripts/docker-dns-srv/Dockerfile diff --git a/hack/scripts-dev/docker-dns-srv/certs-gateway/Procfile b/scripts/docker-dns-srv/certs-gateway/Procfile similarity index 100% rename from hack/scripts-dev/docker-dns-srv/certs-gateway/Procfile rename to scripts/docker-dns-srv/certs-gateway/Procfile diff --git a/hack/scripts-dev/docker-dns-srv/certs-gateway/ca-csr.json b/scripts/docker-dns-srv/certs-gateway/ca-csr.json similarity index 100% rename from hack/scripts-dev/docker-dns-srv/certs-gateway/ca-csr.json rename to scripts/docker-dns-srv/certs-gateway/ca-csr.json diff --git a/hack/scripts-dev/docker-dns-srv/certs-gateway/ca.crt b/scripts/docker-dns-srv/certs-gateway/ca.crt similarity index 100% rename from hack/scripts-dev/docker-dns-srv/certs-gateway/ca.crt rename to scripts/docker-dns-srv/certs-gateway/ca.crt diff --git a/hack/scripts-dev/docker-dns-srv/certs-gateway/gencert.json b/scripts/docker-dns-srv/certs-gateway/gencert.json similarity index 100% rename from hack/scripts-dev/docker-dns-srv/certs-gateway/gencert.json rename to scripts/docker-dns-srv/certs-gateway/gencert.json diff --git a/hack/scripts-dev/docker-dns-srv/certs-gateway/gencerts.sh b/scripts/docker-dns-srv/certs-gateway/gencerts.sh similarity index 100% rename from hack/scripts-dev/docker-dns-srv/certs-gateway/gencerts.sh rename to scripts/docker-dns-srv/certs-gateway/gencerts.sh diff --git a/hack/scripts-dev/docker-dns-srv/certs-gateway/run.sh b/scripts/docker-dns-srv/certs-gateway/run.sh similarity index 100% rename from hack/scripts-dev/docker-dns-srv/certs-gateway/run.sh rename to scripts/docker-dns-srv/certs-gateway/run.sh diff --git a/hack/scripts-dev/docker-dns-srv/certs-gateway/server-ca-csr.json b/scripts/docker-dns-srv/certs-gateway/server-ca-csr.json similarity index 100% rename from hack/scripts-dev/docker-dns-srv/certs-gateway/server-ca-csr.json rename to scripts/docker-dns-srv/certs-gateway/server-ca-csr.json diff --git a/hack/scripts-dev/docker-dns-srv/certs-gateway/server.crt b/scripts/docker-dns-srv/certs-gateway/server.crt similarity index 100% rename from hack/scripts-dev/docker-dns-srv/certs-gateway/server.crt rename to scripts/docker-dns-srv/certs-gateway/server.crt diff --git a/hack/scripts-dev/docker-dns-srv/certs-gateway/server.key.insecure b/scripts/docker-dns-srv/certs-gateway/server.key.insecure similarity index 100% rename from hack/scripts-dev/docker-dns-srv/certs-gateway/server.key.insecure rename to scripts/docker-dns-srv/certs-gateway/server.key.insecure diff --git a/hack/scripts-dev/docker-dns-srv/certs-wildcard/Procfile b/scripts/docker-dns-srv/certs-wildcard/Procfile similarity index 100% rename from hack/scripts-dev/docker-dns-srv/certs-wildcard/Procfile rename to scripts/docker-dns-srv/certs-wildcard/Procfile diff --git a/hack/scripts-dev/docker-dns-srv/certs-wildcard/ca-csr.json b/scripts/docker-dns-srv/certs-wildcard/ca-csr.json similarity index 100% rename from hack/scripts-dev/docker-dns-srv/certs-wildcard/ca-csr.json rename to scripts/docker-dns-srv/certs-wildcard/ca-csr.json diff --git a/hack/scripts-dev/docker-dns-srv/certs-wildcard/ca.crt b/scripts/docker-dns-srv/certs-wildcard/ca.crt similarity index 100% rename from hack/scripts-dev/docker-dns-srv/certs-wildcard/ca.crt rename to scripts/docker-dns-srv/certs-wildcard/ca.crt diff --git a/hack/scripts-dev/docker-dns-srv/certs-wildcard/gencert.json b/scripts/docker-dns-srv/certs-wildcard/gencert.json similarity index 100% rename from hack/scripts-dev/docker-dns-srv/certs-wildcard/gencert.json rename to scripts/docker-dns-srv/certs-wildcard/gencert.json diff --git a/hack/scripts-dev/docker-dns-srv/certs-wildcard/gencerts.sh b/scripts/docker-dns-srv/certs-wildcard/gencerts.sh similarity index 100% rename from hack/scripts-dev/docker-dns-srv/certs-wildcard/gencerts.sh rename to scripts/docker-dns-srv/certs-wildcard/gencerts.sh diff --git a/hack/scripts-dev/docker-dns-srv/certs-wildcard/run.sh b/scripts/docker-dns-srv/certs-wildcard/run.sh similarity index 100% rename from hack/scripts-dev/docker-dns-srv/certs-wildcard/run.sh rename to scripts/docker-dns-srv/certs-wildcard/run.sh diff --git a/hack/scripts-dev/docker-dns-srv/certs-wildcard/server-ca-csr.json b/scripts/docker-dns-srv/certs-wildcard/server-ca-csr.json similarity index 100% rename from hack/scripts-dev/docker-dns-srv/certs-wildcard/server-ca-csr.json rename to scripts/docker-dns-srv/certs-wildcard/server-ca-csr.json diff --git a/hack/scripts-dev/docker-dns-srv/certs-wildcard/server.crt b/scripts/docker-dns-srv/certs-wildcard/server.crt similarity index 100% rename from hack/scripts-dev/docker-dns-srv/certs-wildcard/server.crt rename to scripts/docker-dns-srv/certs-wildcard/server.crt diff --git a/hack/scripts-dev/docker-dns-srv/certs-wildcard/server.key.insecure b/scripts/docker-dns-srv/certs-wildcard/server.key.insecure similarity index 100% rename from hack/scripts-dev/docker-dns-srv/certs-wildcard/server.key.insecure rename to scripts/docker-dns-srv/certs-wildcard/server.key.insecure diff --git a/hack/scripts-dev/docker-dns-srv/certs/Procfile b/scripts/docker-dns-srv/certs/Procfile similarity index 100% rename from hack/scripts-dev/docker-dns-srv/certs/Procfile rename to scripts/docker-dns-srv/certs/Procfile diff --git a/hack/scripts-dev/docker-dns-srv/certs/ca-csr.json b/scripts/docker-dns-srv/certs/ca-csr.json similarity index 100% rename from hack/scripts-dev/docker-dns-srv/certs/ca-csr.json rename to scripts/docker-dns-srv/certs/ca-csr.json diff --git a/hack/scripts-dev/docker-dns-srv/certs/ca.crt b/scripts/docker-dns-srv/certs/ca.crt similarity index 100% rename from hack/scripts-dev/docker-dns-srv/certs/ca.crt rename to scripts/docker-dns-srv/certs/ca.crt diff --git a/hack/scripts-dev/docker-dns-srv/certs/gencert.json b/scripts/docker-dns-srv/certs/gencert.json similarity index 100% rename from hack/scripts-dev/docker-dns-srv/certs/gencert.json rename to scripts/docker-dns-srv/certs/gencert.json diff --git a/hack/scripts-dev/docker-dns-srv/certs/gencerts.sh b/scripts/docker-dns-srv/certs/gencerts.sh similarity index 100% rename from hack/scripts-dev/docker-dns-srv/certs/gencerts.sh rename to scripts/docker-dns-srv/certs/gencerts.sh diff --git a/hack/scripts-dev/docker-dns-srv/certs/run.sh b/scripts/docker-dns-srv/certs/run.sh similarity index 100% rename from hack/scripts-dev/docker-dns-srv/certs/run.sh rename to scripts/docker-dns-srv/certs/run.sh diff --git a/hack/scripts-dev/docker-dns-srv/certs/server-ca-csr.json b/scripts/docker-dns-srv/certs/server-ca-csr.json similarity index 100% rename from hack/scripts-dev/docker-dns-srv/certs/server-ca-csr.json rename to scripts/docker-dns-srv/certs/server-ca-csr.json diff --git a/hack/scripts-dev/docker-dns-srv/certs/server.crt b/scripts/docker-dns-srv/certs/server.crt similarity index 100% rename from hack/scripts-dev/docker-dns-srv/certs/server.crt rename to scripts/docker-dns-srv/certs/server.crt diff --git a/hack/scripts-dev/docker-dns-srv/certs/server.key.insecure b/scripts/docker-dns-srv/certs/server.key.insecure similarity index 100% rename from hack/scripts-dev/docker-dns-srv/certs/server.key.insecure rename to scripts/docker-dns-srv/certs/server.key.insecure diff --git a/hack/scripts-dev/docker-dns-srv/etcd.zone b/scripts/docker-dns-srv/etcd.zone similarity index 100% rename from hack/scripts-dev/docker-dns-srv/etcd.zone rename to scripts/docker-dns-srv/etcd.zone diff --git a/hack/scripts-dev/docker-dns-srv/named.conf b/scripts/docker-dns-srv/named.conf similarity index 100% rename from hack/scripts-dev/docker-dns-srv/named.conf rename to scripts/docker-dns-srv/named.conf diff --git a/hack/scripts-dev/docker-dns-srv/rdns.zone b/scripts/docker-dns-srv/rdns.zone similarity index 100% rename from hack/scripts-dev/docker-dns-srv/rdns.zone rename to scripts/docker-dns-srv/rdns.zone diff --git a/hack/scripts-dev/docker-dns-srv/resolv.conf b/scripts/docker-dns-srv/resolv.conf similarity index 100% rename from hack/scripts-dev/docker-dns-srv/resolv.conf rename to scripts/docker-dns-srv/resolv.conf diff --git a/hack/scripts-dev/docker-dns/Dockerfile b/scripts/docker-dns/Dockerfile similarity index 100% rename from hack/scripts-dev/docker-dns/Dockerfile rename to scripts/docker-dns/Dockerfile diff --git a/hack/scripts-dev/docker-dns/certs-common-name-auth/Procfile b/scripts/docker-dns/certs-common-name-auth/Procfile similarity index 100% rename from hack/scripts-dev/docker-dns/certs-common-name-auth/Procfile rename to scripts/docker-dns/certs-common-name-auth/Procfile diff --git a/hack/scripts-dev/docker-dns/certs-common-name-auth/ca-csr.json b/scripts/docker-dns/certs-common-name-auth/ca-csr.json similarity index 100% rename from hack/scripts-dev/docker-dns/certs-common-name-auth/ca-csr.json rename to scripts/docker-dns/certs-common-name-auth/ca-csr.json diff --git a/hack/scripts-dev/docker-dns/certs-common-name-auth/ca.crt b/scripts/docker-dns/certs-common-name-auth/ca.crt similarity index 100% rename from hack/scripts-dev/docker-dns/certs-common-name-auth/ca.crt rename to scripts/docker-dns/certs-common-name-auth/ca.crt diff --git a/hack/scripts-dev/docker-dns/certs-common-name-auth/gencert.json b/scripts/docker-dns/certs-common-name-auth/gencert.json similarity index 100% rename from hack/scripts-dev/docker-dns/certs-common-name-auth/gencert.json rename to scripts/docker-dns/certs-common-name-auth/gencert.json diff --git a/hack/scripts-dev/docker-dns/certs-common-name-auth/gencerts.sh b/scripts/docker-dns/certs-common-name-auth/gencerts.sh similarity index 100% rename from hack/scripts-dev/docker-dns/certs-common-name-auth/gencerts.sh rename to scripts/docker-dns/certs-common-name-auth/gencerts.sh diff --git a/hack/scripts-dev/docker-dns/certs-common-name-auth/run.sh b/scripts/docker-dns/certs-common-name-auth/run.sh similarity index 100% rename from hack/scripts-dev/docker-dns/certs-common-name-auth/run.sh rename to scripts/docker-dns/certs-common-name-auth/run.sh diff --git a/hack/scripts-dev/docker-dns/certs-common-name-auth/server-ca-csr.json b/scripts/docker-dns/certs-common-name-auth/server-ca-csr.json similarity index 100% rename from hack/scripts-dev/docker-dns/certs-common-name-auth/server-ca-csr.json rename to scripts/docker-dns/certs-common-name-auth/server-ca-csr.json diff --git a/hack/scripts-dev/docker-dns/certs-common-name-auth/server.crt b/scripts/docker-dns/certs-common-name-auth/server.crt similarity index 100% rename from hack/scripts-dev/docker-dns/certs-common-name-auth/server.crt rename to scripts/docker-dns/certs-common-name-auth/server.crt diff --git a/hack/scripts-dev/docker-dns/certs-common-name-auth/server.key.insecure b/scripts/docker-dns/certs-common-name-auth/server.key.insecure similarity index 100% rename from hack/scripts-dev/docker-dns/certs-common-name-auth/server.key.insecure rename to scripts/docker-dns/certs-common-name-auth/server.key.insecure diff --git a/hack/scripts-dev/docker-dns/certs-common-name-multi/Procfile b/scripts/docker-dns/certs-common-name-multi/Procfile similarity index 100% rename from hack/scripts-dev/docker-dns/certs-common-name-multi/Procfile rename to scripts/docker-dns/certs-common-name-multi/Procfile diff --git a/hack/scripts-dev/docker-dns/certs-common-name-multi/ca-csr.json b/scripts/docker-dns/certs-common-name-multi/ca-csr.json similarity index 100% rename from hack/scripts-dev/docker-dns/certs-common-name-multi/ca-csr.json rename to scripts/docker-dns/certs-common-name-multi/ca-csr.json diff --git a/hack/scripts-dev/docker-dns/certs-common-name-multi/ca.crt b/scripts/docker-dns/certs-common-name-multi/ca.crt similarity index 100% rename from hack/scripts-dev/docker-dns/certs-common-name-multi/ca.crt rename to scripts/docker-dns/certs-common-name-multi/ca.crt diff --git a/hack/scripts-dev/docker-dns/certs-common-name-multi/gencert.json b/scripts/docker-dns/certs-common-name-multi/gencert.json similarity index 100% rename from hack/scripts-dev/docker-dns/certs-common-name-multi/gencert.json rename to scripts/docker-dns/certs-common-name-multi/gencert.json diff --git a/hack/scripts-dev/docker-dns/certs-common-name-multi/gencerts.sh b/scripts/docker-dns/certs-common-name-multi/gencerts.sh similarity index 100% rename from hack/scripts-dev/docker-dns/certs-common-name-multi/gencerts.sh rename to scripts/docker-dns/certs-common-name-multi/gencerts.sh diff --git a/hack/scripts-dev/docker-dns/certs-common-name-multi/run.sh b/scripts/docker-dns/certs-common-name-multi/run.sh similarity index 100% rename from hack/scripts-dev/docker-dns/certs-common-name-multi/run.sh rename to scripts/docker-dns/certs-common-name-multi/run.sh diff --git a/hack/scripts-dev/docker-dns/certs-common-name-multi/server-1.crt b/scripts/docker-dns/certs-common-name-multi/server-1.crt similarity index 100% rename from hack/scripts-dev/docker-dns/certs-common-name-multi/server-1.crt rename to scripts/docker-dns/certs-common-name-multi/server-1.crt diff --git a/hack/scripts-dev/docker-dns/certs-common-name-multi/server-1.key.insecure b/scripts/docker-dns/certs-common-name-multi/server-1.key.insecure similarity index 100% rename from hack/scripts-dev/docker-dns/certs-common-name-multi/server-1.key.insecure rename to scripts/docker-dns/certs-common-name-multi/server-1.key.insecure diff --git a/hack/scripts-dev/docker-dns/certs-common-name-multi/server-2.crt b/scripts/docker-dns/certs-common-name-multi/server-2.crt similarity index 100% rename from hack/scripts-dev/docker-dns/certs-common-name-multi/server-2.crt rename to scripts/docker-dns/certs-common-name-multi/server-2.crt diff --git a/hack/scripts-dev/docker-dns/certs-common-name-multi/server-2.key.insecure b/scripts/docker-dns/certs-common-name-multi/server-2.key.insecure similarity index 100% rename from hack/scripts-dev/docker-dns/certs-common-name-multi/server-2.key.insecure rename to scripts/docker-dns/certs-common-name-multi/server-2.key.insecure diff --git a/hack/scripts-dev/docker-dns/certs-common-name-multi/server-3.crt b/scripts/docker-dns/certs-common-name-multi/server-3.crt similarity index 100% rename from hack/scripts-dev/docker-dns/certs-common-name-multi/server-3.crt rename to scripts/docker-dns/certs-common-name-multi/server-3.crt diff --git a/hack/scripts-dev/docker-dns/certs-common-name-multi/server-3.key.insecure b/scripts/docker-dns/certs-common-name-multi/server-3.key.insecure similarity index 100% rename from hack/scripts-dev/docker-dns/certs-common-name-multi/server-3.key.insecure rename to scripts/docker-dns/certs-common-name-multi/server-3.key.insecure diff --git a/hack/scripts-dev/docker-dns/certs-common-name-multi/server-ca-csr-1.json b/scripts/docker-dns/certs-common-name-multi/server-ca-csr-1.json similarity index 100% rename from hack/scripts-dev/docker-dns/certs-common-name-multi/server-ca-csr-1.json rename to scripts/docker-dns/certs-common-name-multi/server-ca-csr-1.json diff --git a/hack/scripts-dev/docker-dns/certs-common-name-multi/server-ca-csr-2.json b/scripts/docker-dns/certs-common-name-multi/server-ca-csr-2.json similarity index 100% rename from hack/scripts-dev/docker-dns/certs-common-name-multi/server-ca-csr-2.json rename to scripts/docker-dns/certs-common-name-multi/server-ca-csr-2.json diff --git a/hack/scripts-dev/docker-dns/certs-common-name-multi/server-ca-csr-3.json b/scripts/docker-dns/certs-common-name-multi/server-ca-csr-3.json similarity index 100% rename from hack/scripts-dev/docker-dns/certs-common-name-multi/server-ca-csr-3.json rename to scripts/docker-dns/certs-common-name-multi/server-ca-csr-3.json diff --git a/hack/scripts-dev/docker-dns/certs-gateway/Procfile b/scripts/docker-dns/certs-gateway/Procfile similarity index 100% rename from hack/scripts-dev/docker-dns/certs-gateway/Procfile rename to scripts/docker-dns/certs-gateway/Procfile diff --git a/hack/scripts-dev/docker-dns/certs-gateway/ca-csr.json b/scripts/docker-dns/certs-gateway/ca-csr.json similarity index 100% rename from hack/scripts-dev/docker-dns/certs-gateway/ca-csr.json rename to scripts/docker-dns/certs-gateway/ca-csr.json diff --git a/hack/scripts-dev/docker-dns/certs-gateway/ca.crt b/scripts/docker-dns/certs-gateway/ca.crt similarity index 100% rename from hack/scripts-dev/docker-dns/certs-gateway/ca.crt rename to scripts/docker-dns/certs-gateway/ca.crt diff --git a/hack/scripts-dev/docker-dns/certs-gateway/gencert.json b/scripts/docker-dns/certs-gateway/gencert.json similarity index 100% rename from hack/scripts-dev/docker-dns/certs-gateway/gencert.json rename to scripts/docker-dns/certs-gateway/gencert.json diff --git a/hack/scripts-dev/docker-dns/certs-gateway/gencerts.sh b/scripts/docker-dns/certs-gateway/gencerts.sh similarity index 100% rename from hack/scripts-dev/docker-dns/certs-gateway/gencerts.sh rename to scripts/docker-dns/certs-gateway/gencerts.sh diff --git a/hack/scripts-dev/docker-dns/certs-gateway/run.sh b/scripts/docker-dns/certs-gateway/run.sh similarity index 100% rename from hack/scripts-dev/docker-dns/certs-gateway/run.sh rename to scripts/docker-dns/certs-gateway/run.sh diff --git a/hack/scripts-dev/docker-dns/certs-gateway/server-ca-csr.json b/scripts/docker-dns/certs-gateway/server-ca-csr.json similarity index 100% rename from hack/scripts-dev/docker-dns/certs-gateway/server-ca-csr.json rename to scripts/docker-dns/certs-gateway/server-ca-csr.json diff --git a/hack/scripts-dev/docker-dns/certs-gateway/server.crt b/scripts/docker-dns/certs-gateway/server.crt similarity index 100% rename from hack/scripts-dev/docker-dns/certs-gateway/server.crt rename to scripts/docker-dns/certs-gateway/server.crt diff --git a/hack/scripts-dev/docker-dns/certs-gateway/server.key.insecure b/scripts/docker-dns/certs-gateway/server.key.insecure similarity index 100% rename from hack/scripts-dev/docker-dns/certs-gateway/server.key.insecure rename to scripts/docker-dns/certs-gateway/server.key.insecure diff --git a/hack/scripts-dev/docker-dns/certs-wildcard/Procfile b/scripts/docker-dns/certs-wildcard/Procfile similarity index 100% rename from hack/scripts-dev/docker-dns/certs-wildcard/Procfile rename to scripts/docker-dns/certs-wildcard/Procfile diff --git a/hack/scripts-dev/docker-dns/certs-wildcard/ca-csr.json b/scripts/docker-dns/certs-wildcard/ca-csr.json similarity index 100% rename from hack/scripts-dev/docker-dns/certs-wildcard/ca-csr.json rename to scripts/docker-dns/certs-wildcard/ca-csr.json diff --git a/hack/scripts-dev/docker-dns/certs-wildcard/ca.crt b/scripts/docker-dns/certs-wildcard/ca.crt similarity index 100% rename from hack/scripts-dev/docker-dns/certs-wildcard/ca.crt rename to scripts/docker-dns/certs-wildcard/ca.crt diff --git a/hack/scripts-dev/docker-dns/certs-wildcard/gencert.json b/scripts/docker-dns/certs-wildcard/gencert.json similarity index 100% rename from hack/scripts-dev/docker-dns/certs-wildcard/gencert.json rename to scripts/docker-dns/certs-wildcard/gencert.json diff --git a/hack/scripts-dev/docker-dns/certs-wildcard/gencerts.sh b/scripts/docker-dns/certs-wildcard/gencerts.sh similarity index 100% rename from hack/scripts-dev/docker-dns/certs-wildcard/gencerts.sh rename to scripts/docker-dns/certs-wildcard/gencerts.sh diff --git a/hack/scripts-dev/docker-dns/certs-wildcard/run.sh b/scripts/docker-dns/certs-wildcard/run.sh similarity index 100% rename from hack/scripts-dev/docker-dns/certs-wildcard/run.sh rename to scripts/docker-dns/certs-wildcard/run.sh diff --git a/hack/scripts-dev/docker-dns/certs-wildcard/server-ca-csr.json b/scripts/docker-dns/certs-wildcard/server-ca-csr.json similarity index 100% rename from hack/scripts-dev/docker-dns/certs-wildcard/server-ca-csr.json rename to scripts/docker-dns/certs-wildcard/server-ca-csr.json diff --git a/hack/scripts-dev/docker-dns/certs-wildcard/server.crt b/scripts/docker-dns/certs-wildcard/server.crt similarity index 100% rename from hack/scripts-dev/docker-dns/certs-wildcard/server.crt rename to scripts/docker-dns/certs-wildcard/server.crt diff --git a/hack/scripts-dev/docker-dns/certs-wildcard/server.key.insecure b/scripts/docker-dns/certs-wildcard/server.key.insecure similarity index 100% rename from hack/scripts-dev/docker-dns/certs-wildcard/server.key.insecure rename to scripts/docker-dns/certs-wildcard/server.key.insecure diff --git a/hack/scripts-dev/docker-dns/certs/Procfile b/scripts/docker-dns/certs/Procfile similarity index 100% rename from hack/scripts-dev/docker-dns/certs/Procfile rename to scripts/docker-dns/certs/Procfile diff --git a/hack/scripts-dev/docker-dns/certs/ca-csr.json b/scripts/docker-dns/certs/ca-csr.json similarity index 100% rename from hack/scripts-dev/docker-dns/certs/ca-csr.json rename to scripts/docker-dns/certs/ca-csr.json diff --git a/hack/scripts-dev/docker-dns/certs/ca.crt b/scripts/docker-dns/certs/ca.crt similarity index 100% rename from hack/scripts-dev/docker-dns/certs/ca.crt rename to scripts/docker-dns/certs/ca.crt diff --git a/hack/scripts-dev/docker-dns/certs/gencert.json b/scripts/docker-dns/certs/gencert.json similarity index 100% rename from hack/scripts-dev/docker-dns/certs/gencert.json rename to scripts/docker-dns/certs/gencert.json diff --git a/hack/scripts-dev/docker-dns/certs/gencerts.sh b/scripts/docker-dns/certs/gencerts.sh similarity index 100% rename from hack/scripts-dev/docker-dns/certs/gencerts.sh rename to scripts/docker-dns/certs/gencerts.sh diff --git a/hack/scripts-dev/docker-dns/certs/run.sh b/scripts/docker-dns/certs/run.sh similarity index 100% rename from hack/scripts-dev/docker-dns/certs/run.sh rename to scripts/docker-dns/certs/run.sh diff --git a/hack/scripts-dev/docker-dns/certs/server-ca-csr.json b/scripts/docker-dns/certs/server-ca-csr.json similarity index 100% rename from hack/scripts-dev/docker-dns/certs/server-ca-csr.json rename to scripts/docker-dns/certs/server-ca-csr.json diff --git a/hack/scripts-dev/docker-dns/certs/server.crt b/scripts/docker-dns/certs/server.crt similarity index 100% rename from hack/scripts-dev/docker-dns/certs/server.crt rename to scripts/docker-dns/certs/server.crt diff --git a/hack/scripts-dev/docker-dns/certs/server.key.insecure b/scripts/docker-dns/certs/server.key.insecure similarity index 100% rename from hack/scripts-dev/docker-dns/certs/server.key.insecure rename to scripts/docker-dns/certs/server.key.insecure diff --git a/hack/scripts-dev/docker-dns/etcd.zone b/scripts/docker-dns/etcd.zone similarity index 100% rename from hack/scripts-dev/docker-dns/etcd.zone rename to scripts/docker-dns/etcd.zone diff --git a/hack/scripts-dev/docker-dns/insecure/Procfile b/scripts/docker-dns/insecure/Procfile similarity index 100% rename from hack/scripts-dev/docker-dns/insecure/Procfile rename to scripts/docker-dns/insecure/Procfile diff --git a/hack/scripts-dev/docker-dns/insecure/run.sh b/scripts/docker-dns/insecure/run.sh similarity index 100% rename from hack/scripts-dev/docker-dns/insecure/run.sh rename to scripts/docker-dns/insecure/run.sh diff --git a/hack/scripts-dev/docker-dns/named.conf b/scripts/docker-dns/named.conf similarity index 100% rename from hack/scripts-dev/docker-dns/named.conf rename to scripts/docker-dns/named.conf diff --git a/hack/scripts-dev/docker-dns/rdns.zone b/scripts/docker-dns/rdns.zone similarity index 100% rename from hack/scripts-dev/docker-dns/rdns.zone rename to scripts/docker-dns/rdns.zone diff --git a/hack/scripts-dev/docker-dns/resolv.conf b/scripts/docker-dns/resolv.conf similarity index 100% rename from hack/scripts-dev/docker-dns/resolv.conf rename to scripts/docker-dns/resolv.conf diff --git a/hack/scripts-dev/docker-static-ip/Dockerfile b/scripts/docker-static-ip/Dockerfile similarity index 100% rename from hack/scripts-dev/docker-static-ip/Dockerfile rename to scripts/docker-static-ip/Dockerfile diff --git a/hack/scripts-dev/docker-static-ip/certs-metrics-proxy/Procfile b/scripts/docker-static-ip/certs-metrics-proxy/Procfile similarity index 100% rename from hack/scripts-dev/docker-static-ip/certs-metrics-proxy/Procfile rename to scripts/docker-static-ip/certs-metrics-proxy/Procfile diff --git a/hack/scripts-dev/docker-static-ip/certs-metrics-proxy/ca-csr.json b/scripts/docker-static-ip/certs-metrics-proxy/ca-csr.json similarity index 100% rename from hack/scripts-dev/docker-static-ip/certs-metrics-proxy/ca-csr.json rename to scripts/docker-static-ip/certs-metrics-proxy/ca-csr.json diff --git a/hack/scripts-dev/docker-static-ip/certs-metrics-proxy/ca.crt b/scripts/docker-static-ip/certs-metrics-proxy/ca.crt similarity index 100% rename from hack/scripts-dev/docker-static-ip/certs-metrics-proxy/ca.crt rename to scripts/docker-static-ip/certs-metrics-proxy/ca.crt diff --git a/hack/scripts-dev/docker-static-ip/certs-metrics-proxy/gencert.json b/scripts/docker-static-ip/certs-metrics-proxy/gencert.json similarity index 100% rename from hack/scripts-dev/docker-static-ip/certs-metrics-proxy/gencert.json rename to scripts/docker-static-ip/certs-metrics-proxy/gencert.json diff --git a/hack/scripts-dev/docker-static-ip/certs-metrics-proxy/gencerts.sh b/scripts/docker-static-ip/certs-metrics-proxy/gencerts.sh similarity index 100% rename from hack/scripts-dev/docker-static-ip/certs-metrics-proxy/gencerts.sh rename to scripts/docker-static-ip/certs-metrics-proxy/gencerts.sh diff --git a/hack/scripts-dev/docker-static-ip/certs-metrics-proxy/run.sh b/scripts/docker-static-ip/certs-metrics-proxy/run.sh similarity index 100% rename from hack/scripts-dev/docker-static-ip/certs-metrics-proxy/run.sh rename to scripts/docker-static-ip/certs-metrics-proxy/run.sh diff --git a/hack/scripts-dev/docker-static-ip/certs-metrics-proxy/server-ca-csr.json b/scripts/docker-static-ip/certs-metrics-proxy/server-ca-csr.json similarity index 100% rename from hack/scripts-dev/docker-static-ip/certs-metrics-proxy/server-ca-csr.json rename to scripts/docker-static-ip/certs-metrics-proxy/server-ca-csr.json diff --git a/hack/scripts-dev/docker-static-ip/certs-metrics-proxy/server.crt b/scripts/docker-static-ip/certs-metrics-proxy/server.crt similarity index 100% rename from hack/scripts-dev/docker-static-ip/certs-metrics-proxy/server.crt rename to scripts/docker-static-ip/certs-metrics-proxy/server.crt diff --git a/hack/scripts-dev/docker-static-ip/certs-metrics-proxy/server.key.insecure b/scripts/docker-static-ip/certs-metrics-proxy/server.key.insecure similarity index 100% rename from hack/scripts-dev/docker-static-ip/certs-metrics-proxy/server.key.insecure rename to scripts/docker-static-ip/certs-metrics-proxy/server.key.insecure diff --git a/hack/scripts-dev/docker-static-ip/certs/Procfile b/scripts/docker-static-ip/certs/Procfile similarity index 100% rename from hack/scripts-dev/docker-static-ip/certs/Procfile rename to scripts/docker-static-ip/certs/Procfile diff --git a/hack/scripts-dev/docker-static-ip/certs/ca-csr.json b/scripts/docker-static-ip/certs/ca-csr.json similarity index 100% rename from hack/scripts-dev/docker-static-ip/certs/ca-csr.json rename to scripts/docker-static-ip/certs/ca-csr.json diff --git a/hack/scripts-dev/docker-static-ip/certs/ca.crt b/scripts/docker-static-ip/certs/ca.crt similarity index 100% rename from hack/scripts-dev/docker-static-ip/certs/ca.crt rename to scripts/docker-static-ip/certs/ca.crt diff --git a/hack/scripts-dev/docker-static-ip/certs/gencert.json b/scripts/docker-static-ip/certs/gencert.json similarity index 100% rename from hack/scripts-dev/docker-static-ip/certs/gencert.json rename to scripts/docker-static-ip/certs/gencert.json diff --git a/hack/scripts-dev/docker-static-ip/certs/gencerts.sh b/scripts/docker-static-ip/certs/gencerts.sh similarity index 100% rename from hack/scripts-dev/docker-static-ip/certs/gencerts.sh rename to scripts/docker-static-ip/certs/gencerts.sh diff --git a/hack/scripts-dev/docker-static-ip/certs/run.sh b/scripts/docker-static-ip/certs/run.sh similarity index 100% rename from hack/scripts-dev/docker-static-ip/certs/run.sh rename to scripts/docker-static-ip/certs/run.sh diff --git a/hack/scripts-dev/docker-static-ip/certs/server-ca-csr.json b/scripts/docker-static-ip/certs/server-ca-csr.json similarity index 100% rename from hack/scripts-dev/docker-static-ip/certs/server-ca-csr.json rename to scripts/docker-static-ip/certs/server-ca-csr.json diff --git a/hack/scripts-dev/docker-static-ip/certs/server.crt b/scripts/docker-static-ip/certs/server.crt similarity index 100% rename from hack/scripts-dev/docker-static-ip/certs/server.crt rename to scripts/docker-static-ip/certs/server.crt diff --git a/hack/scripts-dev/docker-static-ip/certs/server.key.insecure b/scripts/docker-static-ip/certs/server.key.insecure similarity index 100% rename from hack/scripts-dev/docker-static-ip/certs/server.key.insecure rename to scripts/docker-static-ip/certs/server.key.insecure diff --git a/test b/test index 6c6297ce9..db2ce994a 100755 --- a/test +++ b/test @@ -352,7 +352,7 @@ function release_pass { function shellcheck_pass { if which shellcheck >/dev/null; then - shellcheckResult=$(shellcheck -fgcc build test scripts/* 2>&1 || true) + shellcheckResult=$(shellcheck -fgcc build test scripts/*.sh 2>&1 || true) if [ -n "${shellcheckResult}" ]; then echo -e "shellcheck checking failed:\\n${shellcheckResult}" exit 255 diff --git a/tools/etcd-test-proxy/README.md b/tools/etcd-test-proxy/README.md index edeac4d11..bbb2763c4 100644 --- a/tools/etcd-test-proxy/README.md +++ b/tools/etcd-test-proxy/README.md @@ -8,7 +8,7 @@ Test locally $ ./build $ ./bin/etcd -$ make build-etcd-test-proxy -f ./hack/scripts-dev/Makefile +$ make build-etcd-test-proxy $ ./bin/etcd-test-proxy --help $ ./bin/etcd-test-proxy --from localhost:23790 --to localhost:2379 --http-port 2378 --verbose @@ -168,7 +168,7 @@ Trigger leader election ```bash $ ./build -$ make build-etcd-test-proxy -f ./hack/scripts-dev/Makefile +$ make build-etcd-test-proxy $ rm -rf /tmp/etcd-test-proxy-data.s* $ goreman -f ./tools/etcd-test-proxy/Procfile start diff --git a/tools/etcd-test-proxy/main.go b/tools/etcd-test-proxy/main.go index d27f81263..7b08af119 100644 --- a/tools/etcd-test-proxy/main.go +++ b/tools/etcd-test-proxy/main.go @@ -56,7 +56,7 @@ $ ./build $ ./bin/etcd # build etcd-test-proxy -$ make build-etcd-test-proxy -f ./hack/scripts-dev/Makefile +$ make build-etcd-test-proxy # to test etcd with proxy layer $ ./bin/etcd-test-proxy --help diff --git a/tools/functional-tester/README.md b/tools/functional-tester/README.md index be285cbe5..ca1e3ae97 100644 --- a/tools/functional-tester/README.md +++ b/tools/functional-tester/README.md @@ -28,10 +28,7 @@ To run locally, first build tester image: ```bash pushd ../.. - -make build-docker-functional-tester \ - -f ./hack/scripts-dev/Makefile - +make build-docker-functional-tester popd ``` diff --git a/tools/functional-tester/rpcpb/rpc.pb.go b/tools/functional-tester/rpcpb/rpc.pb.go index 837312ca2..11e9924e4 100644 --- a/tools/functional-tester/rpcpb/rpc.pb.go +++ b/tools/functional-tester/rpcpb/rpc.pb.go @@ -99,7 +99,7 @@ const ( FailureCase_KILL_QUORUM FailureCase = 4 FailureCase_KILL_ALL FailureCase = 5 FailureCase_BLACKHOLE_PEER_PORT_TX_RX_ONE_FOLLOWER FailureCase = 6 - FailureCase_BLACKHOLE_PEER_PORT_TX_RX_LEADER_ONE FailureCase = 7 + FailureCase_BLACKHOLE_PEER_PORT_TX_RX_LEADER FailureCase = 7 FailureCase_BLACKHOLE_PEER_PORT_TX_RX_ALL FailureCase = 8 FailureCase_DELAY_PEER_PORT_TX_RX_ONE_FOLLOWER FailureCase = 9 FailureCase_DELAY_PEER_PORT_TX_RX_LEADER FailureCase = 10 @@ -117,7 +117,7 @@ var FailureCase_name = map[int32]string{ 4: "KILL_QUORUM", 5: "KILL_ALL", 6: "BLACKHOLE_PEER_PORT_TX_RX_ONE_FOLLOWER", - 7: "BLACKHOLE_PEER_PORT_TX_RX_LEADER_ONE", + 7: "BLACKHOLE_PEER_PORT_TX_RX_LEADER", 8: "BLACKHOLE_PEER_PORT_TX_RX_ALL", 9: "DELAY_PEER_PORT_TX_RX_ONE_FOLLOWER", 10: "DELAY_PEER_PORT_TX_RX_LEADER", @@ -134,7 +134,7 @@ var FailureCase_value = map[string]int32{ "KILL_QUORUM": 4, "KILL_ALL": 5, "BLACKHOLE_PEER_PORT_TX_RX_ONE_FOLLOWER": 6, - "BLACKHOLE_PEER_PORT_TX_RX_LEADER_ONE": 7, + "BLACKHOLE_PEER_PORT_TX_RX_LEADER": 7, "BLACKHOLE_PEER_PORT_TX_RX_ALL": 8, "DELAY_PEER_PORT_TX_RX_ONE_FOLLOWER": 9, "DELAY_PEER_PORT_TX_RX_LEADER": 10, @@ -2779,119 +2779,119 @@ var ( func init() { proto.RegisterFile("rpcpb/rpc.proto", fileDescriptorRpc) } var fileDescriptorRpc = []byte{ - // 1817 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x84, 0x57, 0xd1, 0x72, 0xdb, 0x4a, - 0x19, 0x8e, 0x93, 0xd8, 0x89, 0x37, 0x71, 0xa2, 0x6e, 0x92, 0x46, 0x4d, 0xdb, 0x28, 0x47, 0x70, - 0x3a, 0x21, 0x33, 0x4a, 0xa1, 0x67, 0x86, 0x19, 0xce, 0x1c, 0xa6, 0xd8, 0x8e, 0x7a, 0x12, 0xa2, - 0xda, 0xee, 0xda, 0x69, 0xcb, 0x95, 0x91, 0xa5, 0xb5, 0x2d, 0x22, 0x4b, 0xea, 0x6a, 0x9d, 0x63, - 0x9f, 0x0b, 0x6e, 0x19, 0xde, 0x80, 0x1b, 0xde, 0x00, 0xde, 0xa3, 0x40, 0x2f, 0x78, 0x02, 0x03, - 0xe5, 0x0d, 0x7c, 0xc3, 0x2d, 0xb3, 0xbb, 0xb2, 0xbd, 0xb2, 0x1d, 0xb8, 0xf3, 0xfe, 0xff, 0xf7, - 0x7d, 0x5a, 0xfd, 0xfa, 0xff, 0x6f, 0xd7, 0x60, 0x97, 0x44, 0x4e, 0xd4, 0x7a, 0x4e, 0x22, 0xe7, - 0x3c, 0x22, 0x21, 0x0d, 0x61, 0x96, 0x07, 0x8e, 0x8c, 0x8e, 0x47, 0xbb, 0xfd, 0xd6, 0xb9, 0x13, - 0xf6, 0x9e, 0x77, 0xc2, 0x4e, 0xf8, 0x9c, 0x67, 0x5b, 0xfd, 0x36, 0x5f, 0xf1, 0x05, 0xff, 0x25, - 0x58, 0xfa, 0xa7, 0x0d, 0xb0, 0x6e, 0x52, 0xc7, 0x85, 0x3f, 0x00, 0xeb, 0x15, 0xbb, 0x87, 0xd5, - 0xcc, 0x49, 0xe6, 0x34, 0x5f, 0xda, 0x1d, 0x8f, 0xb4, 0xad, 0xa1, 0xdd, 0xf3, 0xbf, 0xd6, 0x03, - 0xbb, 0x87, 0x75, 0xc4, 0x93, 0xd0, 0x00, 0x1b, 0x17, 0x36, 0xb5, 0x2f, 0x3c, 0xa2, 0xae, 0x72, - 0xdc, 0xde, 0x78, 0xa4, 0xed, 0x0a, 0x9c, 0x6b, 0x53, 0xdb, 0x70, 0x3d, 0xa2, 0xa3, 0x09, 0x06, - 0x9e, 0x81, 0xdc, 0xbb, 0xa2, 0xc5, 0xd0, 0x6b, 0x1c, 0x0d, 0xc7, 0x23, 0x6d, 0x47, 0xa0, 0xbf, - 0xb3, 0x7d, 0x01, 0x4e, 0x10, 0xf0, 0x0a, 0x28, 0x96, 0x17, 0x53, 0x1c, 0x94, 0x7d, 0x0f, 0x07, - 0xf4, 0x06, 0x59, 0xb1, 0xba, 0x7e, 0xb2, 0x76, 0x9a, 0x2f, 0x3d, 0x1d, 0x8f, 0xb4, 0x47, 0x82, - 0xe5, 0x73, 0x84, 0xe1, 0x70, 0x88, 0xd1, 0x27, 0x7e, 0xac, 0xa3, 0x05, 0x1a, 0x44, 0x60, 0xaf, - 0xe8, 0xde, 0x61, 0x42, 0xbd, 0x18, 0x4b, 0x6a, 0x59, 0xae, 0x76, 0x32, 0x1e, 0x69, 0x4f, 0x84, - 0x9a, 0x3d, 0x01, 0xa5, 0x05, 0x97, 0x91, 0x61, 0x19, 0xec, 0x88, 0xe7, 0xd4, 0x30, 0x26, 0x5c, - 0x2e, 0xc7, 0xe5, 0x1e, 0x8f, 0x47, 0xda, 0x61, 0x6a, 0x73, 0x11, 0xc6, 0x24, 0x51, 0x9a, 0xa3, - 0xc0, 0x16, 0x50, 0xaf, 0x02, 0x8f, 0x7a, 0xb6, 0x3f, 0x7d, 0xc4, 0x54, 0x6e, 0x83, 0xcb, 0x3d, - 0x1b, 0x8f, 0x34, 0x5d, 0xc8, 0x79, 0x02, 0x69, 0xcc, 0x76, 0x29, 0x29, 0xdf, 0xab, 0x03, 0x4b, - 0x60, 0x27, 0xc9, 0x95, 0xfd, 0x7e, 0x4c, 0x31, 0x51, 0x37, 0x79, 0xed, 0x8f, 0xc6, 0x23, 0xed, - 0x61, 0x5a, 0xd9, 0x11, 0x00, 0x1d, 0xcd, 0x31, 0x58, 0x01, 0xd3, 0x91, 0x3a, 0xb5, 0x29, 0x56, - 0xf3, 0x5c, 0x48, 0x2a, 0xe0, 0x9c, 0x90, 0x11, 0x33, 0x98, 0x8e, 0x96, 0x91, 0x17, 0x35, 0x1b, - 0xe1, 0x2d, 0x0e, 0x54, 0xf0, 0xff, 0x34, 0x29, 0x83, 0x2d, 0x68, 0x72, 0x32, 0x7c, 0x09, 0x0a, - 0xf5, 0xc0, 0x8e, 0xe2, 0x6e, 0x48, 0xcb, 0x61, 0x3f, 0xa0, 0xea, 0xd6, 0x49, 0xe6, 0x74, 0xad, - 0xf4, 0x68, 0x3c, 0xd2, 0x0e, 0x84, 0x5a, 0x9c, 0xa4, 0x0d, 0x87, 0xe5, 0x75, 0x94, 0xc6, 0x43, - 0x0b, 0x3c, 0x78, 0xd3, 0x0f, 0xa9, 0x5d, 0xb2, 0x9d, 0x5b, 0x1c, 0xb8, 0xa5, 0x21, 0xc5, 0xb1, - 0xba, 0xcd, 0x45, 0x8e, 0xc7, 0x23, 0xed, 0x48, 0x88, 0x7c, 0x60, 0x10, 0xa3, 0x25, 0x30, 0x46, - 0x8b, 0x81, 0x74, 0xb4, 0x48, 0x64, 0xd3, 0x51, 0x23, 0xf8, 0x6d, 0x48, 0xb1, 0x5a, 0x38, 0xc9, - 0x9c, 0x6e, 0xca, 0xd3, 0x11, 0x11, 0x6c, 0xdc, 0x85, 0xac, 0x3a, 0x13, 0x8c, 0x5c, 0x91, 0x90, - 0x90, 0x7e, 0x44, 0xcb, 0x5d, 0xec, 0xdc, 0xaa, 0x3b, 0x9c, 0xba, 0xac, 0x22, 0x02, 0x65, 0x38, - 0x0c, 0x26, 0x55, 0x44, 0x22, 0xeb, 0xbf, 0xcf, 0x82, 0xdc, 0x6b, 0xdc, 0x6b, 0x61, 0x02, 0x7f, - 0x0e, 0xb6, 0xd9, 0x60, 0x9b, 0x03, 0xec, 0xd4, 0x6c, 0xda, 0x4d, 0x06, 0x5b, 0xaa, 0x0d, 0xa6, - 0x8e, 0x6b, 0xe0, 0x01, 0x76, 0x8c, 0xc8, 0xa6, 0x5d, 0x1d, 0xa5, 0xe0, 0xf0, 0x2b, 0x90, 0x2f, - 0x76, 0x70, 0x40, 0x8b, 0xae, 0x4b, 0x78, 0x5d, 0xf3, 0xa5, 0x83, 0xf1, 0x48, 0x7b, 0x90, 0x8c, - 0x0e, 0x4b, 0x19, 0xb6, 0xeb, 0x12, 0x1d, 0xcd, 0x70, 0xac, 0x9e, 0xaf, 0x6c, 0xcf, 0x8f, 0x42, - 0x2f, 0xa0, 0x97, 0x8d, 0x46, 0x8d, 0x93, 0xb7, 0x39, 0x59, 0xaa, 0x67, 0x7b, 0x02, 0x31, 0xba, - 0x94, 0x46, 0x89, 0xca, 0x22, 0x91, 0xd5, 0xb3, 0x64, 0xc7, 0x98, 0xf9, 0x07, 0x9e, 0x77, 0x9b, - 0x96, 0x1d, 0xe3, 0xc4, 0x6d, 0x12, 0x0c, 0xfc, 0x1a, 0x6c, 0xb1, 0x37, 0xb0, 0xc2, 0x0e, 0x7f, - 0xdf, 0x36, 0xa7, 0xa8, 0xe3, 0x91, 0xb6, 0x2f, 0xbd, 0xaf, 0x1f, 0x76, 0x92, 0xd7, 0x95, 0xc1, - 0xb0, 0x08, 0x0a, 0x6c, 0x29, 0x06, 0xbe, 0x61, 0xd5, 0xd5, 0xbf, 0x64, 0xf8, 0x67, 0x90, 0xa6, - 0x86, 0xd3, 0x13, 0xa3, 0xa0, 0x6c, 0x06, 0xd3, 0x0c, 0xf8, 0x2d, 0xd8, 0x9d, 0x05, 0x6a, 0x24, - 0x1c, 0x0c, 0xd5, 0xbf, 0x0a, 0x91, 0x27, 0xe3, 0x91, 0xa6, 0x2e, 0x8a, 0x44, 0x0c, 0xa3, 0xa3, - 0x79, 0xd6, 0x64, 0x2f, 0x6c, 0xa2, 0x85, 0xcc, 0xdf, 0x96, 0xef, 0x85, 0xdb, 0x41, 0x22, 0x92, - 0x66, 0xc0, 0x1a, 0x80, 0x33, 0x55, 0x33, 0x70, 0x79, 0x5d, 0xd5, 0x4f, 0xa2, 0x05, 0xb4, 0xf1, - 0x48, 0x7b, 0xbc, 0xb8, 0x1d, 0x9c, 0xc0, 0x74, 0xb4, 0x84, 0x0b, 0x7f, 0x22, 0x8e, 0x09, 0xf5, - 0xcf, 0xcc, 0xf7, 0xb7, 0x5e, 0x6c, 0x9d, 0xf3, 0xd3, 0xe6, 0x9c, 0xc5, 0xe4, 0xc3, 0x82, 0x09, - 0xea, 0x88, 0x43, 0xf5, 0xff, 0x00, 0x90, 0x6b, 0x60, 0x6e, 0x28, 0x2f, 0x41, 0x41, 0xfc, 0xaa, - 0x60, 0xfa, 0x5d, 0x48, 0x6e, 0x17, 0x9b, 0x91, 0xf2, 0xb4, 0x11, 0x88, 0xbc, 0x8e, 0xd2, 0x78, - 0xf8, 0x53, 0x00, 0x44, 0x80, 0x77, 0x94, 0x38, 0x7b, 0x1e, 0x8e, 0x47, 0x1a, 0x4c, 0xb1, 0x45, - 0x27, 0x49, 0x48, 0x66, 0xdb, 0x17, 0xd8, 0xb7, 0x87, 0x96, 0x4d, 0x71, 0xe0, 0x0c, 0x5f, 0xc7, - 0xbc, 0x95, 0x0b, 0xb2, 0x6d, 0xbb, 0x2c, 0x6f, 0xf8, 0x02, 0x60, 0xf4, 0x98, 0x6d, 0xa7, 0x29, - 0xf0, 0x97, 0x40, 0x49, 0x47, 0xd0, 0x1d, 0x6f, 0xea, 0x82, 0xdc, 0xd4, 0xf3, 0x32, 0x06, 0xb9, - 0xd3, 0xd1, 0x02, 0x8f, 0xbd, 0x08, 0x0a, 0xfb, 0x81, 0x6b, 0x79, 0x3d, 0x8f, 0xaa, 0x07, 0x27, - 0x99, 0xd3, 0xac, 0xfc, 0x22, 0x84, 0xe5, 0x0c, 0x9f, 0x25, 0x75, 0x24, 0x21, 0xe1, 0x2f, 0x40, - 0xc1, 0x1c, 0x78, 0xb4, 0x1a, 0xb0, 0x31, 0xe9, 0x13, 0xac, 0x3e, 0x5c, 0xe8, 0x89, 0x81, 0x47, - 0x8d, 0x30, 0x30, 0xda, 0x02, 0xc0, 0x7a, 0x42, 0x26, 0xc0, 0x4b, 0xa0, 0x94, 0xc3, 0x20, 0xe6, - 0x27, 0x92, 0x33, 0x14, 0x5e, 0x73, 0x38, 0xdf, 0x9f, 0xce, 0x0c, 0x31, 0xf1, 0x99, 0x05, 0x16, - 0xfc, 0x19, 0xd8, 0x32, 0x03, 0xbb, 0xe5, 0xe3, 0x5a, 0x44, 0xc2, 0xb6, 0xaa, 0x72, 0x91, 0xc3, - 0xf1, 0x48, 0xdb, 0x4b, 0x76, 0xc2, 0x93, 0x46, 0xc4, 0xb2, 0x6c, 0xce, 0x66, 0x58, 0xf8, 0x0d, - 0xd8, 0x4e, 0xf6, 0x53, 0xb6, 0x63, 0x1c, 0xab, 0x1a, 0x3f, 0xf5, 0xa4, 0x21, 0x4d, 0x76, 0x6f, - 0x38, 0x2c, 0xad, 0xa3, 0x14, 0x9a, 0x9d, 0x6d, 0xc9, 0xba, 0xde, 0xed, 0xb7, 0xdb, 0x3e, 0x56, - 0x4f, 0xe6, 0xab, 0x30, 0xe1, 0xc7, 0x02, 0xa0, 0xa3, 0x39, 0x06, 0xbc, 0x96, 0x2c, 0xaa, 0x1c, - 0xf6, 0x7a, 0x76, 0xe0, 0xc6, 0xea, 0x17, 0xf3, 0x17, 0x8d, 0x99, 0x45, 0x39, 0x09, 0x46, 0x76, - 0xa8, 0x09, 0x8f, 0xb5, 0x17, 0xea, 0x07, 0x01, 0x26, 0x53, 0x97, 0xfd, 0x11, 0x6f, 0x4d, 0xa9, - 0xbd, 0x08, 0xcf, 0xcb, 0x3e, 0x3b, 0x47, 0x61, 0x37, 0x1f, 0x73, 0x40, 0x31, 0x09, 0x6c, 0x7f, - 0x2a, 0x73, 0xc6, 0x65, 0xa4, 0x0d, 0xe1, 0x04, 0x21, 0x0b, 0x2d, 0xd0, 0xd8, 0x97, 0xa9, 0x53, - 0x82, 0xe3, 0xb8, 0x31, 0x8c, 0x70, 0xac, 0x62, 0xfe, 0x5a, 0xd2, 0x97, 0x89, 0x79, 0xd2, 0xa0, - 0x2c, 0xab, 0x23, 0x19, 0xcb, 0x1a, 0x4c, 0x2c, 0xaf, 0xf1, 0xb0, 0xee, 0x7d, 0x8f, 0xb9, 0x7f, - 0x66, 0xe5, 0xd2, 0x26, 0xe4, 0x5b, 0x3c, 0x34, 0x62, 0xef, 0x7b, 0xd6, 0x60, 0x29, 0x02, 0x33, - 0x9d, 0x54, 0xc0, 0xb2, 0x49, 0x07, 0xab, 0x1d, 0x2e, 0x23, 0x1d, 0x67, 0x73, 0x32, 0x86, 0xcf, - 0x60, 0x3a, 0x5a, 0xc2, 0x85, 0x6f, 0xc1, 0xfe, 0x2c, 0xda, 0x6f, 0xb7, 0xbd, 0x01, 0xb2, 0x83, - 0x0e, 0x56, 0xbb, 0x5c, 0x53, 0x1f, 0x8f, 0xb4, 0xe3, 0x45, 0x4d, 0x8e, 0x33, 0x08, 0x03, 0xea, - 0x68, 0x29, 0x1f, 0xfe, 0x1a, 0x1c, 0x2e, 0x8b, 0x37, 0x06, 0x81, 0xea, 0x71, 0x69, 0xe9, 0x1a, - 0x76, 0x8f, 0xb4, 0x41, 0x07, 0x81, 0x8e, 0xee, 0x93, 0x61, 0x87, 0xc1, 0x34, 0xd5, 0x18, 0x04, - 0xd5, 0x28, 0x56, 0x7f, 0xc3, 0x95, 0xa5, 0x4f, 0x2a, 0x29, 0xd3, 0x41, 0x60, 0x84, 0x51, 0xac, - 0xa3, 0x79, 0x16, 0x3b, 0x86, 0x45, 0xe8, 0x4d, 0xad, 0xae, 0xde, 0x72, 0x09, 0xe9, 0x18, 0x4e, - 0x24, 0x3e, 0x30, 0xea, 0x0c, 0xa7, 0xff, 0x2e, 0x03, 0x36, 0x10, 0xfe, 0xd0, 0xc7, 0x31, 0x85, - 0xe7, 0x20, 0x5f, 0x8d, 0x30, 0xb1, 0xa9, 0x17, 0x06, 0xdc, 0x76, 0x77, 0x5e, 0x28, 0x89, 0x79, - 0x4f, 0xe3, 0x68, 0x06, 0x81, 0x5f, 0x4e, 0x2e, 0x10, 0xaa, 0x70, 0xfa, 0x42, 0x02, 0x16, 0x41, - 0x34, 0xb9, 0x5d, 0x7c, 0x39, 0xf1, 0x76, 0x7e, 0xb5, 0x9f, 0xc1, 0x44, 0x10, 0x25, 0x49, 0xfd, - 0x1b, 0xb0, 0x89, 0x70, 0x1c, 0x85, 0x41, 0x8c, 0xa1, 0x0a, 0x36, 0xea, 0x7d, 0xc7, 0xc1, 0x71, - 0xcc, 0xf7, 0xb1, 0x89, 0x26, 0x4b, 0xf8, 0x10, 0xe4, 0xd8, 0x25, 0xb1, 0x1f, 0x0b, 0x67, 0x47, - 0xc9, 0xea, 0xec, 0x1f, 0x19, 0x69, 0xf3, 0x70, 0x07, 0x80, 0x4a, 0x48, 0xeb, 0xd4, 0x26, 0x14, - 0xbb, 0xca, 0x0a, 0xdc, 0x07, 0x4a, 0x72, 0x05, 0xe2, 0x31, 0x76, 0xe6, 0x28, 0x19, 0xb8, 0x0b, - 0xb6, 0x10, 0x8e, 0xa7, 0x81, 0x55, 0xb8, 0x0d, 0x36, 0xaf, 0x3d, 0xdf, 0xe7, 0xab, 0x35, 0x96, - 0x66, 0x63, 0x5c, 0x24, 0x4e, 0xd7, 0xbb, 0xc3, 0xca, 0x3a, 0x53, 0xb9, 0xc0, 0x31, 0x25, 0xe1, - 0x90, 0x21, 0xf8, 0x55, 0x46, 0xc9, 0xc2, 0x47, 0xe0, 0xa0, 0xe4, 0xdb, 0xce, 0x6d, 0x37, 0xf4, - 0xf9, 0xd5, 0xba, 0x16, 0x12, 0xda, 0x18, 0xa0, 0x81, 0xe2, 0xc2, 0xc7, 0xe0, 0xf0, 0x26, 0x68, - 0x2d, 0x4d, 0x62, 0x78, 0x00, 0x1e, 0x70, 0xcb, 0x4f, 0x85, 0xdb, 0xf0, 0x10, 0xec, 0xdd, 0x04, - 0xee, 0x42, 0xa2, 0x73, 0xf6, 0xc7, 0x35, 0xb1, 0x9f, 0xc4, 0xe2, 0x18, 0xff, 0xfa, 0xca, 0xb2, - 0x9a, 0xd5, 0x8a, 0xd9, 0x7c, 0x55, 0xb5, 0xac, 0xea, 0x3b, 0x13, 0x29, 0x2b, 0x6c, 0xd7, 0x3c, - 0x6c, 0x99, 0xc5, 0x0b, 0x13, 0x29, 0x19, 0x78, 0x0c, 0x8e, 0x16, 0x70, 0xcd, 0x57, 0x55, 0xd4, - 0xb4, 0xaa, 0x95, 0x6f, 0x95, 0x55, 0xa8, 0x82, 0x7d, 0x89, 0x30, 0xcb, 0xac, 0x4d, 0xa5, 0xde, - 0xdc, 0x54, 0xd1, 0xcd, 0x6b, 0x65, 0x9d, 0xd7, 0x87, 0x05, 0x8a, 0x96, 0xa5, 0x64, 0xe1, 0x19, - 0x78, 0x56, 0xb2, 0x8a, 0xe5, 0xeb, 0xcb, 0xaa, 0x65, 0x36, 0x6b, 0xa6, 0x89, 0x9a, 0xb5, 0x2a, - 0x6a, 0x34, 0x1b, 0xef, 0x9b, 0xe8, 0x7d, 0x7a, 0x57, 0x39, 0x78, 0x0a, 0x7e, 0x78, 0x3f, 0x36, - 0x79, 0x72, 0xb5, 0x62, 0x2a, 0x1b, 0xf0, 0x0b, 0xf0, 0xf4, 0x7e, 0x24, 0x7b, 0xf0, 0x26, 0x7c, - 0x06, 0xf4, 0x0b, 0xd3, 0x2a, 0xfe, 0xea, 0x7f, 0x3f, 0x34, 0x0f, 0x4f, 0xc0, 0x93, 0xe5, 0xb8, - 0xa4, 0x36, 0x00, 0x3e, 0x05, 0x8f, 0x96, 0x23, 0xd8, 0x83, 0xb6, 0x58, 0x1b, 0xbd, 0x2a, 0x5e, - 0x59, 0xb5, 0xea, 0x55, 0xa5, 0x51, 0x57, 0x5c, 0xb8, 0x0d, 0x36, 0x2a, 0xd5, 0x26, 0x0b, 0x29, - 0x1f, 0x33, 0xb0, 0x00, 0x36, 0xcd, 0xf7, 0x0d, 0x13, 0x55, 0x8a, 0x96, 0xf2, 0xa7, 0xd5, 0xb3, - 0xdf, 0x02, 0x30, 0x33, 0x49, 0x98, 0x03, 0xab, 0xd7, 0x6f, 0x95, 0x15, 0x98, 0x07, 0x59, 0xcb, - 0x2c, 0xd6, 0x4d, 0x85, 0xe1, 0xf3, 0x95, 0x6a, 0xb3, 0xde, 0x40, 0x66, 0xbd, 0xae, 0xac, 0xc2, - 0x3d, 0xb0, 0x6b, 0x5a, 0x66, 0xb9, 0x71, 0x55, 0xad, 0x34, 0xd1, 0x4d, 0xa5, 0x62, 0x22, 0x65, - 0x0d, 0x2a, 0x60, 0xfb, 0x5d, 0xb1, 0x51, 0xbe, 0x9c, 0x44, 0xd6, 0xd9, 0x67, 0xb6, 0xaa, 0xe5, - 0xeb, 0x26, 0x2a, 0x96, 0x4d, 0x34, 0x09, 0x67, 0x19, 0x90, 0xeb, 0x4e, 0x22, 0xb9, 0x17, 0x2f, - 0x41, 0xbe, 0x41, 0xec, 0x20, 0x8e, 0x42, 0x42, 0xe1, 0x0b, 0x79, 0xb1, 0x93, 0x0c, 0x5c, 0x32, - 0xe7, 0x47, 0xbb, 0xd3, 0xb5, 0x18, 0x37, 0x7d, 0xe5, 0x34, 0xf3, 0xe3, 0x4c, 0x69, 0xff, 0xe3, - 0xbf, 0x8e, 0x57, 0x3e, 0x7e, 0x3e, 0xce, 0xfc, 0xfd, 0xf3, 0x71, 0xe6, 0x9f, 0x9f, 0x8f, 0x33, - 0x7f, 0xf8, 0xf7, 0xf1, 0x4a, 0x2b, 0xc7, 0xff, 0xfc, 0x7f, 0xf5, 0xdf, 0x00, 0x00, 0x00, 0xff, - 0xff, 0xd3, 0x41, 0x5a, 0x89, 0x45, 0x10, 0x00, 0x00, + // 1813 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x84, 0x57, 0x51, 0x73, 0xda, 0xca, + 0x15, 0x36, 0xb6, 0xc1, 0x66, 0x6d, 0x6c, 0xdd, 0xb5, 0x1d, 0x2b, 0x4e, 0x62, 0x71, 0xd5, 0xde, + 0x8c, 0xeb, 0x19, 0x39, 0x6d, 0xee, 0x4c, 0x67, 0x7a, 0xe7, 0x76, 0x52, 0xc0, 0xca, 0x8d, 0x6b, + 0x05, 0xc8, 0x82, 0x93, 0xf4, 0x89, 0x0a, 0x69, 0x01, 0xd5, 0x42, 0x52, 0x56, 0x8b, 0x2f, 0xdc, + 0x87, 0xbe, 0x76, 0xfa, 0x0f, 0xda, 0xff, 0xd0, 0xfe, 0x8f, 0xb4, 0xbd, 0x0f, 0xfd, 0x05, 0xb4, + 0x4d, 0xff, 0x01, 0x2f, 0x7d, 0xed, 0xec, 0xae, 0x80, 0x15, 0xe0, 0xf6, 0x8d, 0x3d, 0xe7, 0xfb, + 0xbe, 0x3d, 0x7b, 0x74, 0xce, 0xd9, 0x05, 0xec, 0x93, 0xc8, 0x89, 0xda, 0xcf, 0x48, 0xe4, 0x5c, + 0x44, 0x24, 0xa4, 0x21, 0xcc, 0x72, 0xc3, 0x89, 0xd1, 0xf5, 0x68, 0x6f, 0xd0, 0xbe, 0x70, 0xc2, + 0xfe, 0xb3, 0x6e, 0xd8, 0x0d, 0x9f, 0x71, 0x6f, 0x7b, 0xd0, 0xe1, 0x2b, 0xbe, 0xe0, 0xbf, 0x04, + 0x4b, 0xff, 0x7e, 0x0b, 0x6c, 0x9a, 0xd4, 0x71, 0xe1, 0x0f, 0xc0, 0x66, 0xd5, 0xee, 0x63, 0x35, + 0x53, 0xcc, 0x9c, 0xe5, 0xcb, 0xfb, 0x93, 0xb1, 0xb6, 0x33, 0xb2, 0xfb, 0xfe, 0x57, 0x7a, 0x60, + 0xf7, 0xb1, 0x8e, 0xb8, 0x13, 0x1a, 0x60, 0xeb, 0xd2, 0xa6, 0xf6, 0xa5, 0x47, 0xd4, 0x75, 0x8e, + 0x3b, 0x98, 0x8c, 0xb5, 0x7d, 0x81, 0x73, 0x6d, 0x6a, 0x1b, 0xae, 0x47, 0x74, 0x34, 0xc5, 0xc0, + 0x73, 0x90, 0x7b, 0x57, 0xb2, 0x18, 0x7a, 0x83, 0xa3, 0xe1, 0x64, 0xac, 0xed, 0x09, 0xf4, 0xb7, + 0xb6, 0x2f, 0xc0, 0x09, 0x02, 0x5e, 0x01, 0xc5, 0xf2, 0x62, 0x8a, 0x83, 0x8a, 0xef, 0xe1, 0x80, + 0xde, 0x20, 0x2b, 0x56, 0x37, 0x8b, 0x1b, 0x67, 0xf9, 0xf2, 0x93, 0xc9, 0x58, 0x7b, 0x28, 0x58, + 0x3e, 0x47, 0x18, 0x0e, 0x87, 0x18, 0x03, 0xe2, 0xc7, 0x3a, 0x5a, 0xa2, 0x41, 0x04, 0x0e, 0x4a, + 0xee, 0x1d, 0x26, 0xd4, 0x8b, 0xb1, 0xa4, 0x96, 0xe5, 0x6a, 0xc5, 0xc9, 0x58, 0x7b, 0x2c, 0xd4, + 0xec, 0x29, 0x28, 0x2d, 0xb8, 0x8a, 0x0c, 0x2b, 0x60, 0x4f, 0xec, 0x53, 0xc7, 0x98, 0x70, 0xb9, + 0x1c, 0x97, 0x7b, 0x34, 0x19, 0x6b, 0xc7, 0xa9, 0xe0, 0x22, 0x8c, 0x49, 0xa2, 0xb4, 0x40, 0x81, + 0x6d, 0xa0, 0x5e, 0x05, 0x1e, 0xf5, 0x6c, 0x7f, 0xb6, 0xc5, 0x4c, 0x6e, 0x8b, 0xcb, 0x3d, 0x9d, + 0x8c, 0x35, 0x5d, 0xc8, 0x79, 0x02, 0x69, 0xcc, 0xa3, 0x94, 0x94, 0xef, 0xd5, 0x81, 0x65, 0xb0, + 0x97, 0xf8, 0x2a, 0xfe, 0x20, 0xa6, 0x98, 0xa8, 0xdb, 0x3c, 0xf7, 0x27, 0x93, 0xb1, 0xf6, 0x20, + 0xad, 0xec, 0x08, 0x80, 0x8e, 0x16, 0x18, 0x2c, 0x81, 0x69, 0x4b, 0x83, 0xda, 0x14, 0xab, 0x79, + 0x2e, 0x24, 0x25, 0x70, 0x41, 0xc8, 0x88, 0x19, 0x4c, 0x47, 0xab, 0xc8, 0xcb, 0x9a, 0xcd, 0xf0, + 0x16, 0x07, 0x2a, 0xf8, 0x7f, 0x9a, 0x94, 0xc1, 0x96, 0x34, 0x39, 0x19, 0xbe, 0x00, 0x85, 0x46, + 0x60, 0x47, 0x71, 0x2f, 0xa4, 0x95, 0x70, 0x10, 0x50, 0x75, 0xa7, 0x98, 0x39, 0xdb, 0x28, 0x3f, + 0x9c, 0x8c, 0xb5, 0x23, 0xa1, 0x16, 0x27, 0x6e, 0xc3, 0x61, 0x7e, 0x1d, 0xa5, 0xf1, 0xd0, 0x02, + 0x9f, 0xbd, 0x19, 0x84, 0xd4, 0x2e, 0xdb, 0xce, 0x2d, 0x0e, 0xdc, 0xf2, 0x88, 0xe2, 0x58, 0xdd, + 0xe5, 0x22, 0xa7, 0x93, 0xb1, 0x76, 0x22, 0x44, 0x3e, 0x30, 0x88, 0xd1, 0x16, 0x18, 0xa3, 0xcd, + 0x40, 0x3a, 0x5a, 0x26, 0xb2, 0xee, 0xa8, 0x13, 0xfc, 0x36, 0xa4, 0x58, 0x2d, 0x14, 0x33, 0x67, + 0xdb, 0x72, 0x77, 0x44, 0x04, 0x1b, 0x77, 0x21, 0xcb, 0xce, 0x14, 0x23, 0x67, 0x24, 0x24, 0x64, + 0x10, 0xd1, 0x4a, 0x0f, 0x3b, 0xb7, 0xea, 0x1e, 0xa7, 0xae, 0xca, 0x88, 0x40, 0x19, 0x0e, 0x83, + 0x49, 0x19, 0x91, 0xc8, 0xfa, 0xef, 0xb3, 0x20, 0xf7, 0x1a, 0xf7, 0xdb, 0x98, 0xc0, 0x9f, 0x83, + 0x5d, 0xd6, 0xd8, 0xe6, 0x10, 0x3b, 0x75, 0x9b, 0xf6, 0x92, 0xc6, 0x96, 0x72, 0x83, 0xa9, 0xe3, + 0x1a, 0x78, 0x88, 0x1d, 0x23, 0xb2, 0x69, 0x4f, 0x47, 0x29, 0x38, 0xfc, 0x12, 0xe4, 0x4b, 0x5d, + 0x1c, 0xd0, 0x92, 0xeb, 0x12, 0x9e, 0xd7, 0x7c, 0xf9, 0x68, 0x32, 0xd6, 0x3e, 0x4b, 0x5a, 0x87, + 0xb9, 0x0c, 0xdb, 0x75, 0x89, 0x8e, 0xe6, 0x38, 0x96, 0xcf, 0x97, 0xb6, 0xe7, 0x47, 0xa1, 0x17, + 0xd0, 0x57, 0xcd, 0x66, 0x9d, 0x93, 0x77, 0x39, 0x59, 0xca, 0x67, 0x67, 0x0a, 0x31, 0x7a, 0x94, + 0x46, 0x89, 0xca, 0x32, 0x91, 0xe5, 0xb3, 0x6c, 0xc7, 0x98, 0xcd, 0x0f, 0xbc, 0x38, 0x6d, 0xda, + 0x76, 0x8c, 0x93, 0x69, 0x93, 0x60, 0xe0, 0x57, 0x60, 0x87, 0x9d, 0xc0, 0x0a, 0xbb, 0xfc, 0xbc, + 0x1d, 0x4e, 0x51, 0x27, 0x63, 0xed, 0x50, 0x3a, 0xaf, 0x1f, 0x76, 0x93, 0xe3, 0xca, 0x60, 0x58, + 0x02, 0x05, 0xb6, 0x14, 0x0d, 0xdf, 0xb4, 0x1a, 0xea, 0x5f, 0x32, 0xfc, 0x33, 0x48, 0x5d, 0xc3, + 0xe9, 0xc9, 0xa0, 0xa0, 0xac, 0x07, 0xd3, 0x0c, 0xf8, 0x0d, 0xd8, 0x9f, 0x1b, 0xea, 0x24, 0x1c, + 0x8e, 0xd4, 0xbf, 0x0a, 0x91, 0xc7, 0x93, 0xb1, 0xa6, 0x2e, 0x8b, 0x44, 0x0c, 0xa3, 0xa3, 0x45, + 0xd6, 0x34, 0x16, 0xd6, 0xd1, 0x42, 0xe6, 0x6f, 0xab, 0x63, 0xe1, 0xe3, 0x20, 0x11, 0x49, 0x33, + 0x60, 0x1d, 0xc0, 0xb9, 0xaa, 0x19, 0xb8, 0x3c, 0xaf, 0xea, 0xf7, 0xa2, 0x04, 0xb4, 0xc9, 0x58, + 0x7b, 0xb4, 0x1c, 0x0e, 0x4e, 0x60, 0x3a, 0x5a, 0xc1, 0x85, 0x3f, 0x11, 0xd7, 0x84, 0xfa, 0x67, + 0x36, 0xf7, 0x77, 0x9e, 0xef, 0x5c, 0xf0, 0xdb, 0xe6, 0x82, 0xd9, 0xe4, 0xcb, 0x82, 0x09, 0xea, + 0x88, 0x43, 0xf5, 0xff, 0x00, 0x90, 0x6b, 0x62, 0x3e, 0x50, 0x5e, 0x80, 0x82, 0xf8, 0x55, 0xc5, + 0xf4, 0xdb, 0x90, 0xdc, 0x2e, 0x17, 0x23, 0xe5, 0x6e, 0x23, 0x10, 0x7e, 0x1d, 0xa5, 0xf1, 0xf0, + 0xa7, 0x00, 0x08, 0x03, 0xaf, 0x28, 0x71, 0xf7, 0x3c, 0x98, 0x8c, 0x35, 0x98, 0x62, 0x8b, 0x4a, + 0x92, 0x90, 0x6c, 0x6c, 0x5f, 0x62, 0xdf, 0x1e, 0x59, 0x36, 0xc5, 0x81, 0x33, 0x7a, 0x1d, 0xf3, + 0x52, 0x2e, 0xc8, 0x63, 0xdb, 0x65, 0x7e, 0xc3, 0x17, 0x00, 0xa3, 0xcf, 0xc6, 0x76, 0x9a, 0x02, + 0x7f, 0x09, 0x94, 0xb4, 0x05, 0xdd, 0xf1, 0xa2, 0x2e, 0xc8, 0x45, 0xbd, 0x28, 0x63, 0x90, 0x3b, + 0x1d, 0x2d, 0xf1, 0xd8, 0x41, 0x50, 0x38, 0x08, 0x5c, 0xcb, 0xeb, 0x7b, 0x54, 0x3d, 0x2a, 0x66, + 0xce, 0xb2, 0xf2, 0x41, 0x08, 0xf3, 0x19, 0x3e, 0x73, 0xea, 0x48, 0x42, 0xc2, 0x5f, 0x80, 0x82, + 0x39, 0xf4, 0x68, 0x2d, 0x60, 0x6d, 0x32, 0x20, 0x58, 0x7d, 0xb0, 0x54, 0x13, 0x43, 0x8f, 0x1a, + 0x61, 0x60, 0x74, 0x04, 0x80, 0xd5, 0x84, 0x4c, 0x80, 0xaf, 0x80, 0x52, 0x09, 0x83, 0x98, 0xdf, + 0x48, 0xce, 0x48, 0xcc, 0x9a, 0xe3, 0xc5, 0xfa, 0x74, 0xe6, 0x88, 0xe9, 0x9c, 0x59, 0x62, 0xc1, + 0x9f, 0x81, 0x1d, 0x33, 0xb0, 0xdb, 0x3e, 0xae, 0x47, 0x24, 0xec, 0xa8, 0x2a, 0x17, 0x39, 0x9e, + 0x8c, 0xb5, 0x83, 0x24, 0x12, 0xee, 0x34, 0x22, 0xe6, 0x65, 0x7d, 0x36, 0xc7, 0xc2, 0xaf, 0xc1, + 0x6e, 0x12, 0x4f, 0xc5, 0x8e, 0x71, 0xac, 0x6a, 0xfc, 0xd6, 0x93, 0x9a, 0x34, 0x89, 0xde, 0x70, + 0x98, 0x5b, 0x47, 0x29, 0x34, 0xbb, 0xdb, 0x92, 0x75, 0xa3, 0x37, 0xe8, 0x74, 0x7c, 0xac, 0x16, + 0x17, 0xb3, 0x30, 0xe5, 0xc7, 0x02, 0xa0, 0xa3, 0x05, 0x06, 0xbc, 0x96, 0x46, 0x54, 0x25, 0xec, + 0xf7, 0xed, 0xc0, 0x8d, 0xd5, 0xcf, 0x17, 0x1f, 0x1a, 0xf3, 0x11, 0xe5, 0x24, 0x18, 0x79, 0x42, + 0x4d, 0x79, 0xac, 0xbc, 0xd0, 0x20, 0x08, 0x30, 0x99, 0x4d, 0xd9, 0x1f, 0xf1, 0xd2, 0x94, 0xca, + 0x8b, 0x70, 0xbf, 0x3c, 0x67, 0x17, 0x28, 0xec, 0xe5, 0x63, 0x0e, 0x29, 0x26, 0x81, 0xed, 0xcf, + 0x64, 0xce, 0xb9, 0x8c, 0x14, 0x10, 0x4e, 0x10, 0xb2, 0xd0, 0x12, 0x8d, 0x7d, 0x99, 0x06, 0x25, + 0x38, 0x8e, 0x9b, 0xa3, 0x08, 0xc7, 0x2a, 0xe6, 0xc7, 0x92, 0xbe, 0x4c, 0xcc, 0x9d, 0x06, 0x65, + 0x5e, 0x1d, 0xc9, 0x58, 0x56, 0x60, 0x62, 0x79, 0x8d, 0x47, 0x0d, 0xef, 0x3b, 0xcc, 0xe7, 0x67, + 0x56, 0x4e, 0x6d, 0x42, 0xbe, 0xc5, 0x23, 0x23, 0xf6, 0xbe, 0x63, 0x05, 0x96, 0x22, 0xb0, 0xa1, + 0x93, 0x32, 0x58, 0x36, 0xe9, 0x62, 0xb5, 0xcb, 0x65, 0xa4, 0xeb, 0x6c, 0x41, 0xc6, 0xf0, 0x19, + 0x4c, 0x47, 0x2b, 0xb8, 0xf0, 0x2d, 0x38, 0x9c, 0x5b, 0x07, 0x9d, 0x8e, 0x37, 0x44, 0x76, 0xd0, + 0xc5, 0x6a, 0x8f, 0x6b, 0xea, 0x93, 0xb1, 0x76, 0xba, 0xac, 0xc9, 0x71, 0x06, 0x61, 0x40, 0x1d, + 0xad, 0xe4, 0xc3, 0x5f, 0x83, 0xe3, 0x55, 0xf6, 0xe6, 0x30, 0x50, 0x3d, 0x2e, 0x2d, 0x3d, 0xc3, + 0xee, 0x91, 0x36, 0xe8, 0x30, 0xd0, 0xd1, 0x7d, 0x32, 0xec, 0x32, 0x98, 0xb9, 0x9a, 0xc3, 0xa0, + 0x16, 0xc5, 0xea, 0x6f, 0xb8, 0xb2, 0xf4, 0x49, 0x25, 0x65, 0x3a, 0x0c, 0x8c, 0x30, 0x8a, 0x75, + 0xb4, 0xc8, 0x62, 0xd7, 0xb0, 0x30, 0xbd, 0xa9, 0x37, 0xd4, 0x5b, 0x2e, 0x21, 0x5d, 0xc3, 0x89, + 0xc4, 0x07, 0x46, 0x9d, 0xe3, 0xf4, 0xdf, 0x65, 0xc0, 0x16, 0xc2, 0x1f, 0x06, 0x38, 0xa6, 0xf0, + 0x02, 0xe4, 0x6b, 0x11, 0x26, 0x36, 0xf5, 0xc2, 0x80, 0x8f, 0xdd, 0xbd, 0xe7, 0x4a, 0x32, 0xbc, + 0x67, 0x76, 0x34, 0x87, 0xc0, 0x2f, 0xa6, 0x0f, 0x08, 0x55, 0x4c, 0xfa, 0x42, 0x02, 0x16, 0x46, + 0x34, 0x7d, 0x5d, 0x7c, 0x31, 0x9d, 0xed, 0xfc, 0x69, 0x3f, 0x87, 0x09, 0x23, 0x4a, 0x9c, 0xfa, + 0xd7, 0x60, 0x1b, 0xe1, 0x38, 0x0a, 0x83, 0x18, 0x43, 0x15, 0x6c, 0x35, 0x06, 0x8e, 0x83, 0xe3, + 0x98, 0xc7, 0xb1, 0x8d, 0xa6, 0x4b, 0xf8, 0x00, 0xe4, 0xd8, 0x23, 0x71, 0x10, 0x8b, 0xc9, 0x8e, + 0x92, 0xd5, 0xf9, 0x3f, 0x32, 0x52, 0xf0, 0x70, 0x0f, 0x80, 0x6a, 0x48, 0x1b, 0xd4, 0x26, 0x14, + 0xbb, 0xca, 0x1a, 0x3c, 0x04, 0x4a, 0xf2, 0x04, 0xe2, 0x36, 0x76, 0xe7, 0x28, 0x19, 0xb8, 0x0f, + 0x76, 0x10, 0x8e, 0x67, 0x86, 0x75, 0xb8, 0x0b, 0xb6, 0xaf, 0x3d, 0xdf, 0xe7, 0xab, 0x0d, 0xe6, + 0x66, 0x6d, 0x5c, 0x22, 0x4e, 0xcf, 0xbb, 0xc3, 0xca, 0x26, 0x53, 0xb9, 0xc4, 0x31, 0x25, 0xe1, + 0x88, 0x21, 0xf8, 0x53, 0x46, 0xc9, 0xc2, 0x87, 0xe0, 0xa8, 0xec, 0xdb, 0xce, 0x6d, 0x2f, 0xf4, + 0xf9, 0xd3, 0xba, 0x1e, 0x12, 0xda, 0x1c, 0xa2, 0xa1, 0xe2, 0xc2, 0x47, 0xe0, 0xf8, 0x26, 0x68, + 0xaf, 0x74, 0x62, 0x78, 0x04, 0x3e, 0xe3, 0x23, 0x3f, 0x65, 0xee, 0xc0, 0x63, 0x70, 0x70, 0x13, + 0xb8, 0x4b, 0x8e, 0xee, 0xf9, 0x1f, 0x37, 0x44, 0x3c, 0xc9, 0x88, 0x63, 0xfc, 0xeb, 0x2b, 0xcb, + 0x6a, 0xd5, 0xaa, 0x66, 0xeb, 0x65, 0xcd, 0xb2, 0x6a, 0xef, 0x4c, 0xa4, 0xac, 0xb1, 0xa8, 0xb9, + 0xd9, 0x32, 0x4b, 0x97, 0x26, 0x52, 0x32, 0xf0, 0x14, 0x9c, 0x2c, 0xe1, 0x5a, 0x2f, 0x6b, 0xa8, + 0x65, 0xd5, 0xaa, 0xdf, 0x28, 0xeb, 0x50, 0x05, 0x87, 0x12, 0x61, 0xee, 0xd9, 0x98, 0x49, 0xbd, + 0xb9, 0xa9, 0xa1, 0x9b, 0xd7, 0xca, 0x26, 0xcf, 0x0f, 0x33, 0x94, 0x2c, 0x4b, 0xc9, 0xc2, 0x73, + 0xf0, 0xb4, 0x6c, 0x95, 0x2a, 0xd7, 0xaf, 0x6a, 0x96, 0xd9, 0xaa, 0x9b, 0x26, 0x6a, 0xd5, 0x6b, + 0xa8, 0xd9, 0x6a, 0xbe, 0x6f, 0xa1, 0xf7, 0xe9, 0xa8, 0x72, 0xf0, 0x87, 0xa0, 0x78, 0x3f, 0x36, + 0x09, 0x75, 0x0b, 0x7e, 0x0e, 0x9e, 0xdc, 0x8f, 0x62, 0x9b, 0x6e, 0xc3, 0xa7, 0x40, 0xbf, 0x34, + 0xad, 0xd2, 0xaf, 0xfe, 0xf7, 0x86, 0x79, 0x58, 0x04, 0x8f, 0x57, 0xe3, 0x92, 0xcd, 0x00, 0x7c, + 0x02, 0x1e, 0xae, 0x46, 0xb0, 0x8d, 0x76, 0x58, 0x09, 0xbd, 0x2c, 0x5d, 0x59, 0xf5, 0xda, 0x55, + 0xb5, 0xd9, 0x50, 0x5c, 0xb8, 0x0b, 0xb6, 0xaa, 0xb5, 0x16, 0x33, 0x29, 0x1f, 0x33, 0xb0, 0x00, + 0xb6, 0xcd, 0xf7, 0x4d, 0x13, 0x55, 0x4b, 0x96, 0xf2, 0xa7, 0xf5, 0xf3, 0xdf, 0x02, 0x30, 0x1f, + 0x90, 0x30, 0x07, 0xd6, 0xaf, 0xdf, 0x2a, 0x6b, 0x30, 0x0f, 0xb2, 0x96, 0x59, 0x6a, 0x98, 0x0a, + 0xc3, 0xe7, 0xab, 0xb5, 0x56, 0xa3, 0x89, 0xcc, 0x46, 0x43, 0x59, 0x87, 0x07, 0x60, 0xdf, 0xb4, + 0xcc, 0x4a, 0xf3, 0xaa, 0x56, 0x6d, 0xa1, 0x9b, 0x6a, 0xd5, 0x44, 0xca, 0x06, 0x54, 0xc0, 0xee, + 0xbb, 0x52, 0xb3, 0xf2, 0x6a, 0x6a, 0xd9, 0x64, 0x9f, 0xd8, 0xaa, 0x55, 0xae, 0x5b, 0xa8, 0x54, + 0x31, 0xd1, 0xd4, 0x9c, 0x65, 0x40, 0xae, 0x3b, 0xb5, 0xe4, 0x9e, 0xbf, 0x00, 0xf9, 0x26, 0xb1, + 0x83, 0x38, 0x0a, 0x09, 0x85, 0xcf, 0xe5, 0xc5, 0x5e, 0xd2, 0x6c, 0x49, 0x8f, 0x9f, 0xec, 0xcf, + 0xd6, 0xa2, 0xd5, 0xf4, 0xb5, 0xb3, 0xcc, 0x8f, 0x33, 0xe5, 0xc3, 0x8f, 0xff, 0x3a, 0x5d, 0xfb, + 0xf8, 0xe9, 0x34, 0xf3, 0xf7, 0x4f, 0xa7, 0x99, 0x7f, 0x7e, 0x3a, 0xcd, 0xfc, 0xe1, 0xdf, 0xa7, + 0x6b, 0xed, 0x1c, 0xff, 0xe3, 0xff, 0xe5, 0x7f, 0x03, 0x00, 0x00, 0xff, 0xff, 0xc2, 0x76, 0x9b, + 0x6a, 0x41, 0x10, 0x00, 0x00, } diff --git a/tools/functional-tester/rpcpb/rpc.proto b/tools/functional-tester/rpcpb/rpc.proto index 0db771709..dcb9aef37 100644 --- a/tools/functional-tester/rpcpb/rpc.proto +++ b/tools/functional-tester/rpcpb/rpc.proto @@ -93,7 +93,7 @@ enum FailureCase { KILL_ALL = 5; BLACKHOLE_PEER_PORT_TX_RX_ONE_FOLLOWER = 6; - BLACKHOLE_PEER_PORT_TX_RX_LEADER_ONE = 7; + BLACKHOLE_PEER_PORT_TX_RX_LEADER = 7; BLACKHOLE_PEER_PORT_TX_RX_ALL = 8; DELAY_PEER_PORT_TX_RX_ONE_FOLLOWER = 9; diff --git a/tools/functional-tester/tester/cluster.go b/tools/functional-tester/tester/cluster.go index bb4a13019..f94287515 100644 --- a/tools/functional-tester/tester/cluster.go +++ b/tools/functional-tester/tester/cluster.go @@ -265,11 +265,11 @@ func (clus *Cluster) updateFailures() { for _, cs := range clus.Tester.FailureCases { switch cs { case "KILL_ONE_FOLLOWER": - clus.failures = append(clus.failures, newFailureKillOne()) // TODO + clus.failures = append(clus.failures, newFailureKillOneFollower()) case "KILL_LEADER": clus.failures = append(clus.failures, newFailureKillLeader()) case "KILL_ONE_FOLLOWER_FOR_LONG": - clus.failures = append(clus.failures, newFailureKillOneForLongTime()) // TODO + clus.failures = append(clus.failures, newFailureKillOneFollowerForLongTime()) case "KILL_LEADER_FOR_LONG": clus.failures = append(clus.failures, newFailureKillLeaderForLongTime()) case "KILL_QUORUM": @@ -277,17 +277,17 @@ func (clus *Cluster) updateFailures() { case "KILL_ALL": clus.failures = append(clus.failures, newFailureKillAll()) case "BLACKHOLE_PEER_PORT_TX_RX_ONE_FOLLOWER": - clus.failures = append(clus.failures, newFailureBlackholePeerPortTxRxOne()) // TODO - case "BLACKHOLE_PEER_PORT_TX_RX_LEADER_ONE": - clus.failures = append(clus.failures, newFailureBlackholePeerPortTxRxOne()) // TODO + clus.failures = append(clus.failures, newFailureBlackholePeerPortTxRxOneFollower()) + case "BLACKHOLE_PEER_PORT_TX_RX_LEADER": + clus.failures = append(clus.failures, newFailureBlackholePeerPortTxRxLeader()) case "BLACKHOLE_PEER_PORT_TX_RX_ALL": clus.failures = append(clus.failures, newFailureBlackholePeerPortTxRxAll()) case "DELAY_PEER_PORT_TX_RX_ONE_FOLLOWER": - clus.failures = append(clus.failures, newFailureDelayPeerPortTxRxOneMember()) // TODO + clus.failures = append(clus.failures, newFailureDelayPeerPortTxRxOneFollower()) case "DELAY_PEER_PORT_TX_RX_LEADER": - clus.failures = append(clus.failures, newFailureDelayPeerPortTxRxLeader()) // TODO + clus.failures = append(clus.failures, newFailureDelayPeerPortTxRxLeader()) case "DELAY_PEER_PORT_TX_RX_ALL": - clus.failures = append(clus.failures, newFailureDelayPeerPortTxRxAll()) // TODO + clus.failures = append(clus.failures, newFailureDelayPeerPortTxRxAll()) case "FAILPOINTS": fpFailures, fperr := failpointFailures(clus) if len(fpFailures) == 0 { diff --git a/tools/functional-tester/tester/cluster_test.go b/tools/functional-tester/tester/cluster_test.go index 82a785621..eab971142 100644 --- a/tools/functional-tester/tester/cluster_test.go +++ b/tools/functional-tester/tester/cluster_test.go @@ -126,7 +126,7 @@ func Test_newCluster(t *testing.T) { "KILL_QUORUM", "KILL_ALL", "BLACKHOLE_PEER_PORT_TX_RX_ONE_FOLLOWER", - "BLACKHOLE_PEER_PORT_TX_RX_LEADER_ONE", + "BLACKHOLE_PEER_PORT_TX_RX_LEADER", "BLACKHOLE_PEER_PORT_TX_RX_ALL", "DELAY_PEER_PORT_TX_RX_ONE_FOLLOWER", "DELAY_PEER_PORT_TX_RX_LEADER", diff --git a/tools/functional-tester/tester/failure.go b/tools/functional-tester/tester/failure.go index 5ff1e856e..b0fbb0b86 100644 --- a/tools/functional-tester/tester/failure.go +++ b/tools/functional-tester/tester/failure.go @@ -14,6 +14,12 @@ package tester +import ( + "fmt" + "math/rand" + "time" +) + // Failure defines failure injection interface. // To add a fail case: // 1. implement "Failure" interface @@ -28,3 +34,173 @@ type Failure interface { // Desc returns a description of the failure Desc() string } + +type description string + +func (d description) Desc() string { return string(d) } + +type injectMemberFunc func(*Cluster, int) error +type recoverMemberFunc func(*Cluster, int) error + +type failureByFunc struct { + description + injectMember injectMemberFunc + recoverMember recoverMemberFunc +} + +type failureFollower struct { + failureByFunc + last int + lead int +} + +type failureLeader struct { + failureByFunc + last int + lead int +} + +func (f *failureFollower) updateIndex(clus *Cluster) error { + idx, err := clus.GetLeader() + if err != nil { + return err + } + f.lead = idx + + n := len(clus.Members) + if f.last == -1 { // first run + f.last = clus.rd % n + if f.last == f.lead { + f.last = (f.last + 1) % n + } + } else { + f.last = (f.last + 1) % n + if f.last == f.lead { + f.last = (f.last + 1) % n + } + } + return nil +} + +func (f *failureLeader) updateIndex(clus *Cluster) error { + idx, err := clus.GetLeader() + if err != nil { + return err + } + f.lead = idx + f.last = idx + return nil +} + +type failureQuorum failureByFunc +type failureAll failureByFunc + +// failureUntilSnapshot injects a failure and waits for a snapshot event +type failureUntilSnapshot struct{ Failure } + +func (f *failureFollower) Inject(clus *Cluster) error { + if err := f.updateIndex(clus); err != nil { + return err + } + return f.injectMember(clus, f.last) +} + +func (f *failureFollower) Recover(clus *Cluster) error { + return f.recoverMember(clus, f.last) +} + +func (f *failureLeader) Inject(clus *Cluster) error { + if err := f.updateIndex(clus); err != nil { + return err + } + return f.injectMember(clus, f.last) +} + +func (f *failureLeader) Recover(clus *Cluster) error { + return f.recoverMember(clus, f.last) +} + +func (f *failureQuorum) Inject(clus *Cluster) error { + for i := range killMap(len(clus.Members), clus.rd) { + if err := f.injectMember(clus, i); err != nil { + return err + } + } + return nil +} + +func (f *failureQuorum) Recover(clus *Cluster) error { + for i := range killMap(len(clus.Members), clus.rd) { + if err := f.recoverMember(clus, i); err != nil { + return err + } + } + return nil +} + +func (f *failureAll) Inject(clus *Cluster) error { + for i := range clus.Members { + if err := f.injectMember(clus, i); err != nil { + return err + } + } + return nil +} + +func (f *failureAll) Recover(clus *Cluster) error { + for i := range clus.Members { + if err := f.recoverMember(clus, i); err != nil { + return err + } + } + return nil +} + +const snapshotCount = 10000 + +func (f *failureUntilSnapshot) Inject(clus *Cluster) error { + if err := f.Failure.Inject(clus); err != nil { + return err + } + if len(clus.Members) < 3 { + return nil + } + // maxRev may fail since failure just injected, retry if failed. + startRev, err := clus.maxRev() + for i := 0; i < 10 && startRev == 0; i++ { + startRev, err = clus.maxRev() + } + if startRev == 0 { + return err + } + lastRev := startRev + // Normal healthy cluster could accept 1000req/s at least. + // Give it 3-times time to create a new snapshot. + retry := snapshotCount / 1000 * 3 + for j := 0; j < retry; j++ { + lastRev, _ = clus.maxRev() + // If the number of proposals committed is bigger than snapshot count, + // a new snapshot should have been created. + if lastRev-startRev > snapshotCount { + return nil + } + time.Sleep(time.Second) + } + return fmt.Errorf("cluster too slow: only commit %d requests in %ds", lastRev-startRev, retry) +} + +func (f *failureUntilSnapshot) Desc() string { + return f.Failure.Desc() + " for a long time and expect it to recover from an incoming snapshot" +} + +func killMap(size int, seed int) map[int]bool { + m := make(map[int]bool) + r := rand.New(rand.NewSource(int64(seed))) + majority := size/2 + 1 + for { + m[r.Intn(size)] = true + if len(m) >= majority { + return m + } + } +} diff --git a/tools/functional-tester/tester/failure_case_failpoints.go b/tools/functional-tester/tester/failure_case_failpoints.go index e6ceaf442..ede60916a 100644 --- a/tools/functional-tester/tester/failure_case_failpoints.go +++ b/tools/functional-tester/tester/failure_case_failpoints.go @@ -83,8 +83,26 @@ func failuresFromFailpoint(fp string, failpointCommands []string) (fs []Failure) for _, fcmd := range failpointCommands { inject := makeInjectFailpoint(fp, fcmd) fs = append(fs, []Failure{ - &failureOne{ - description: description(fmt.Sprintf("failpoint %s (one: %s)", fp, fcmd)), + &failureFollower{ + failureByFunc: failureByFunc{ + description: description(fmt.Sprintf("failpoint %s (one: %s)", fp, fcmd)), + injectMember: inject, + recoverMember: recov, + }, + last: -1, + lead: -1, + }, + &failureLeader{ + failureByFunc: failureByFunc{ + description: description(fmt.Sprintf("failpoint %s (leader: %s)", fp, fcmd)), + injectMember: inject, + recoverMember: recov, + }, + last: -1, + lead: -1, + }, + &failureQuorum{ + description: description(fmt.Sprintf("failpoint %s (quorum: %s)", fp, fcmd)), injectMember: inject, recoverMember: recov, }, @@ -93,19 +111,6 @@ func failuresFromFailpoint(fp string, failpointCommands []string) (fs []Failure) injectMember: inject, recoverMember: recov, }, - &failureQuorum{ - description: description(fmt.Sprintf("failpoint %s (majority: %s)", fp, fcmd)), - injectMember: inject, - recoverMember: recov, - }, - &failureLeader{ - failureByFunc{ - description: description(fmt.Sprintf("failpoint %s (leader: %s)", fp, fcmd)), - injectMember: inject, - recoverMember: recov, - }, - 0, - }, }...) } return fs diff --git a/tools/functional-tester/tester/failure_case_kill.go b/tools/functional-tester/tester/failure_case_kill.go index ddbfab350..d59fddf8f 100644 --- a/tools/functional-tester/tester/failure_case_kill.go +++ b/tools/functional-tester/tester/failure_case_kill.go @@ -14,15 +14,7 @@ package tester -import ( - "fmt" - "math/rand" - "time" - - "github.com/coreos/etcd/tools/functional-tester/rpcpb" -) - -const snapshotCount = 10000 +import "github.com/coreos/etcd/tools/functional-tester/rpcpb" func injectKill(clus *Cluster, idx int) error { return clus.sendOperation(idx, rpcpb.Operation_KillEtcd) @@ -32,182 +24,44 @@ func recoverKill(clus *Cluster, idx int) error { return clus.sendOperation(idx, rpcpb.Operation_RestartEtcd) } -func newFailureKillAll() Failure { - return &failureAll{ - description: "kill all members", - injectMember: injectKill, - recoverMember: recoverKill, - } -} - -func newFailureKillQuorum() Failure { - return &failureQuorum{ - description: "kill quorum of the cluster", - injectMember: injectKill, - recoverMember: recoverKill, - } -} - -func newFailureKillOne() Failure { - return &failureOne{ - description: "kill one random member", +func newFailureKillOneFollower() Failure { + ff := failureByFunc{ + description: "kill one follower", injectMember: injectKill, recoverMember: recoverKill, } + return &failureFollower{ff, -1, -1} } func newFailureKillLeader() Failure { ff := failureByFunc{ - description: "kill leader member", + description: "kill leader", injectMember: injectKill, recoverMember: recoverKill, } - return &failureLeader{ff, 0} + return &failureLeader{ff, -1, -1} } -func newFailureKillOneForLongTime() Failure { - return &failureUntilSnapshot{newFailureKillOne()} +func newFailureKillQuorum() Failure { + return &failureQuorum{ + description: "kill quorum", + injectMember: injectKill, + recoverMember: recoverKill, + } +} + +func newFailureKillAll() Failure { + return &failureAll{ + description: "kill all", + injectMember: injectKill, + recoverMember: recoverKill, + } +} + +func newFailureKillOneFollowerForLongTime() Failure { + return &failureUntilSnapshot{newFailureKillOneFollower()} } func newFailureKillLeaderForLongTime() Failure { return &failureUntilSnapshot{newFailureKillLeader()} } - -type description string - -func (d description) Desc() string { return string(d) } - -type injectMemberFunc func(*Cluster, int) error -type recoverMemberFunc func(*Cluster, int) error - -type failureByFunc struct { - description - injectMember injectMemberFunc - recoverMember recoverMemberFunc -} - -// TODO: support kill follower -type failureOne failureByFunc -type failureAll failureByFunc -type failureQuorum failureByFunc - -type failureLeader struct { - failureByFunc - idx int -} - -// failureUntilSnapshot injects a failure and waits for a snapshot event -type failureUntilSnapshot struct{ Failure } - -func (f *failureOne) Inject(clus *Cluster) error { - return f.injectMember(clus, clus.rd%len(clus.Members)) -} - -func (f *failureOne) Recover(clus *Cluster) error { - if err := f.recoverMember(clus, clus.rd%len(clus.Members)); err != nil { - return err - } - clus.logger.Info("wait health after recovering failureOne") - return clus.WaitHealth() -} - -func (f *failureAll) Inject(clus *Cluster) error { - for i := range clus.Members { - if err := f.injectMember(clus, i); err != nil { - return err - } - } - return nil -} - -func (f *failureAll) Recover(clus *Cluster) error { - for i := range clus.Members { - if err := f.recoverMember(clus, i); err != nil { - return err - } - } - clus.logger.Info("wait health after recovering failureAll") - return clus.WaitHealth() -} - -func (f *failureQuorum) Inject(clus *Cluster) error { - for i := range killMap(len(clus.Members), clus.rd) { - if err := f.injectMember(clus, i); err != nil { - return err - } - } - return nil -} - -func (f *failureQuorum) Recover(clus *Cluster) error { - for i := range killMap(len(clus.Members), clus.rd) { - if err := f.recoverMember(clus, i); err != nil { - return err - } - } - return nil -} - -func (f *failureLeader) Inject(clus *Cluster) error { - idx, err := clus.GetLeader() - if err != nil { - return err - } - f.idx = idx - return f.injectMember(clus, idx) -} - -func (f *failureLeader) Recover(clus *Cluster) error { - if err := f.recoverMember(clus, f.idx); err != nil { - return err - } - clus.logger.Info("wait health after recovering failureLeader") - return clus.WaitHealth() -} - -func (f *failureUntilSnapshot) Inject(clus *Cluster) error { - if err := f.Failure.Inject(clus); err != nil { - return err - } - if len(clus.Members) < 3 { - return nil - } - // maxRev may fail since failure just injected, retry if failed. - startRev, err := clus.maxRev() - for i := 0; i < 10 && startRev == 0; i++ { - startRev, err = clus.maxRev() - } - if startRev == 0 { - return err - } - lastRev := startRev - // Normal healthy cluster could accept 1000req/s at least. - // Give it 3-times time to create a new snapshot. - retry := snapshotCount / 1000 * 3 - for j := 0; j < retry; j++ { - lastRev, _ = clus.maxRev() - // If the number of proposals committed is bigger than snapshot count, - // a new snapshot should have been created. - if lastRev-startRev > snapshotCount { - return nil - } - time.Sleep(time.Second) - } - return fmt.Errorf("cluster too slow: only commit %d requests in %ds", lastRev-startRev, retry) -} - -func (f *failureUntilSnapshot) Desc() string { - return f.Failure.Desc() + " for a long time and expect it to recover from an incoming snapshot" -} - -func killMap(size int, seed int) map[int]bool { - m := make(map[int]bool) - r := rand.New(rand.NewSource(int64(seed))) - majority := size/2 + 1 - for { - m[r.Intn(size)] = true - if len(m) >= majority { - return m - } - } -} diff --git a/tools/functional-tester/tester/failure_case_blackhole.go b/tools/functional-tester/tester/failure_case_network_blackhole.go similarity index 71% rename from tools/functional-tester/tester/failure_case_blackhole.go rename to tools/functional-tester/tester/failure_case_network_blackhole.go index 44e698d04..6951c892f 100644 --- a/tools/functional-tester/tester/failure_case_blackhole.go +++ b/tools/functional-tester/tester/failure_case_network_blackhole.go @@ -24,12 +24,26 @@ func recoverBlackholePeerPortTxRx(clus *Cluster, idx int) error { return clus.sendOperation(idx, rpcpb.Operation_UnblackholePeerPortTxRx) } -func newFailureBlackholePeerPortTxRxOne() Failure { - f := &failureOne{ - description: "blackhole peer port on one member", +func newFailureBlackholePeerPortTxRxOneFollower() Failure { + ff := failureByFunc{ + description: "blackhole peer port on one follower", injectMember: injectBlackholePeerPortTxRx, recoverMember: recoverBlackholePeerPortTxRx, } + f := &failureFollower{ff, -1, -1} + return &failureDelay{ + Failure: f, + delayDuration: triggerElectionDur, + } +} + +func newFailureBlackholePeerPortTxRxLeader() Failure { + ff := failureByFunc{ + description: "blackhole peer port on leader", + injectMember: injectBlackholePeerPortTxRx, + recoverMember: recoverBlackholePeerPortTxRx, + } + f := &failureLeader{ff, -1, -1} return &failureDelay{ Failure: f, delayDuration: triggerElectionDur, @@ -38,7 +52,7 @@ func newFailureBlackholePeerPortTxRxOne() Failure { func newFailureBlackholePeerPortTxRxAll() Failure { f := &failureAll{ - description: "blackhole peer port on all members", + description: "blackhole peer port on all", injectMember: injectBlackholePeerPortTxRx, recoverMember: recoverBlackholePeerPortTxRx, } diff --git a/tools/functional-tester/tester/failure_case_slow_network.go b/tools/functional-tester/tester/failure_case_network_slow.go similarity index 86% rename from tools/functional-tester/tester/failure_case_slow_network.go rename to tools/functional-tester/tester/failure_case_network_slow.go index 5bd932680..3011ba140 100644 --- a/tools/functional-tester/tester/failure_case_slow_network.go +++ b/tools/functional-tester/tester/failure_case_network_slow.go @@ -45,13 +45,14 @@ func recoverDelayPeerPortTxRx(clus *Cluster, idx int) error { return err } -func newFailureDelayPeerPortTxRxOneMember() Failure { - desc := fmt.Sprintf("delay one member's network by adding %d ms latency", slowNetworkLatency) - f := &failureOne{ +func newFailureDelayPeerPortTxRxOneFollower() Failure { + desc := fmt.Sprintf("delay follower peer port by adding %d ms latency", slowNetworkLatency) + ff := failureByFunc{ description: description(desc), injectMember: injectDelayPeerPortTxRx, recoverMember: recoverDelayPeerPortTxRx, } + f := &failureFollower{ff, -1, -1} return &failureDelay{ Failure: f, delayDuration: triggerElectionDur, @@ -59,13 +60,13 @@ func newFailureDelayPeerPortTxRxOneMember() Failure { } func newFailureDelayPeerPortTxRxLeader() Failure { - desc := fmt.Sprintf("delay leader's network by adding %d ms latency", slowNetworkLatency) + desc := fmt.Sprintf("delay leader peer port by adding %d ms latency", slowNetworkLatency) ff := failureByFunc{ description: description(desc), injectMember: injectDelayPeerPortTxRx, recoverMember: recoverDelayPeerPortTxRx, } - f := &failureLeader{ff, 0} + f := &failureLeader{ff, -1, -1} return &failureDelay{ Failure: f, delayDuration: triggerElectionDur, @@ -74,7 +75,7 @@ func newFailureDelayPeerPortTxRxLeader() Failure { func newFailureDelayPeerPortTxRxAll() Failure { f := &failureAll{ - description: "delay all members' network", + description: "delay all peer port", injectMember: injectDelayPeerPortTxRx, recoverMember: recoverDelayPeerPortTxRx, } diff --git a/tools/functional-tester/tester/local-test.yaml b/tools/functional-tester/tester/local-test.yaml index 46ec27460..4104691d4 100644 --- a/tools/functional-tester/tester/local-test.yaml +++ b/tools/functional-tester/tester/local-test.yaml @@ -92,7 +92,7 @@ tester-config: - KILL_QUORUM - KILL_ALL - BLACKHOLE_PEER_PORT_TX_RX_ONE_FOLLOWER - - BLACKHOLE_PEER_PORT_TX_RX_LEADER_ONE + - BLACKHOLE_PEER_PORT_TX_RX_LEADER - BLACKHOLE_PEER_PORT_TX_RX_ALL - DELAY_PEER_PORT_TX_RX_ONE_FOLLOWER - DELAY_PEER_PORT_TX_RX_LEADER