From 94191c68c7ea258974cbda9f1e494abedaaa2fbc Mon Sep 17 00:00:00 2001 From: Alexander Apalikov Date: Fri, 18 Oct 2019 22:02:42 +0300 Subject: [PATCH] Run all SDK conformance tests in parallel (#1111) Run SDK conformance tests for different languages on different ports. Cloud Build updated to decrease overall execution time. --- build/build-sdk-images/rust/build-sdk-test.sh | 2 +- build/build-sdk-images/rust/sdktest.sh | 2 +- build/includes/sdk.mk | 23 ++++++++++++------- cloudbuild.yaml | 6 ++--- test/sdk/nodejs/testSDKClient.js | 8 +++++++ 5 files changed, 28 insertions(+), 13 deletions(-) diff --git a/build/build-sdk-images/rust/build-sdk-test.sh b/build/build-sdk-images/rust/build-sdk-test.sh index 57e68ee3ed..7963d51763 100644 --- a/build/build-sdk-images/rust/build-sdk-test.sh +++ b/build/build-sdk-images/rust/build-sdk-test.sh @@ -16,4 +16,4 @@ set -ex cd /go/src/agones.dev/agones/test/sdk/rust -cargo build --release +cargo build diff --git a/build/build-sdk-images/rust/sdktest.sh b/build/build-sdk-images/rust/sdktest.sh index c5e54f0f4f..783a4e4aff 100644 --- a/build/build-sdk-images/rust/sdktest.sh +++ b/build/build-sdk-images/rust/sdktest.sh @@ -15,4 +15,4 @@ # limitations under the License. set -ex -/go/src/agones.dev/agones/test/sdk/rust/target/release/rust-simple \ No newline at end of file +/go/src/agones.dev/agones/test/sdk/rust/target/debug/rust-simple \ No newline at end of file diff --git a/build/includes/sdk.mk b/build/includes/sdk.mk index 872f4d4d67..02132723e2 100644 --- a/build/includes/sdk.mk +++ b/build/includes/sdk.mk @@ -128,12 +128,13 @@ run-sdk-conformance-no-build: TIMEOUT ?= 30 run-sdk-conformance-no-build: RANDOM := $(shell bash -c 'echo $$RANDOM') run-sdk-conformance-no-build: DELAY ?= $(shell bash -c "echo $$[ ($(RANDOM) % 5 ) + 1 ]") run-sdk-conformance-no-build: TESTS ?= ready,allocate,setlabel,setannotation,gameserver,health,shutdown,watch,reserve -run-sdk-conformance-no-build: PORT ?= 59357 +run-sdk-conformance-no-build: GRPC_PORT ?= 59357 +run-sdk-conformance-no-build: HTTP_PORT ?= 59358 run-sdk-conformance-no-build: ensure-agones-sdk-image run-sdk-conformance-no-build: ensure-build-sdk-image - DOCKER_RUN_ARGS="--net host -e AGONES_SDK_GRPC_PORT=$(PORT) $(DOCKER_RUN_ARGS)" COMMAND=sdktest $(MAKE) run-sdk-command & \ - docker run -p $(PORT):$(PORT) -e "ADDRESS=" -e "TEST=$(TESTS)" -e "TIMEOUT=$(TIMEOUT)" -e "DELAY=$(DELAY)" \ - --net=host $(sidecar_tag) --grpc-port $(PORT) + DOCKER_RUN_ARGS="--net host -e AGONES_SDK_GRPC_PORT=$(GRPC_PORT) $(DOCKER_RUN_ARGS)" COMMAND=sdktest $(MAKE) run-sdk-command & \ + docker run -p $(GRPC_PORT):$(GRPC_PORT) -e "ADDRESS=" -e "TEST=$(TESTS)" -e "TIMEOUT=$(TIMEOUT)" -e "DELAY=$(DELAY)" \ + --net=host $(sidecar_tag) --grpc-port $(GRPC_PORT) --http-port $(HTTP_PORT) # Run SDK conformance test for a specific SDK_FOLDER run-sdk-conformance-test: ensure-agones-sdk-image @@ -141,12 +142,18 @@ run-sdk-conformance-test: ensure-build-sdk-image $(MAKE) run-sdk-command COMMAND=build-sdk-test $(MAKE) run-sdk-conformance-no-build -# Run a conformance test for all SDKs supported -run-sdk-conformance-tests: - $(MAKE) run-sdk-conformance-test SDK_FOLDER=node - $(MAKE) run-sdk-conformance-test SDK_FOLDER=go PORT=9001 +run-sdk-conformance-test-node: + $(MAKE) run-sdk-conformance-test SDK_FOLDER=node GRPC_PORT=9002 HTTP_PORT=9102 + +run-sdk-conformance-test-go: + $(MAKE) run-sdk-conformance-test SDK_FOLDER=go GRPC_PORT=9001 HTTP_PORT=9101 + +run-sdk-conformance-test-rust: $(MAKE) run-sdk-conformance-test SDK_FOLDER=rust +# Run a conformance test for all SDKs supported +run-sdk-conformance-tests: run-sdk-conformance-test-node run-sdk-conformance-test-go run-sdk-conformance-test-rust + # Clean package directories and binary files left # after building conformance tests for all SDKs supported clean-sdk-conformance-tests: diff --git a/cloudbuild.yaml b/cloudbuild.yaml index 5614e84cdf..6d0e44ec38 100644 --- a/cloudbuild.yaml +++ b/cloudbuild.yaml @@ -231,7 +231,7 @@ steps: - name: "make-docker" id: sdk-conformance dir: "build" - args: [ "run-sdk-conformance-tests"] + args: [ "-j", "3", "run-sdk-conformance-tests"] waitFor: - build-images @@ -244,13 +244,13 @@ steps: - build-sdks - tests dir: "sdks/cpp/.build" - args: ['cp', '*.tar.gz', 'gs://agones-artifacts/cpp-sdk'] + args: [ '-m', 'cp', '*.tar.gz', 'gs://agones-artifacts/cpp-sdk'] - name: 'gcr.io/cloud-builders/gsutil' waitFor: - build-images - tests dir: "cmd/sdk-server/bin" - args: ['cp', '*.zip', 'gs://agones-artifacts/sdk-server'] + args: [ '-m', 'cp', '*.zip', 'gs://agones-artifacts/sdk-server'] substitutions: _CACHE_BUCKET: agones-build-cache diff --git a/test/sdk/nodejs/testSDKClient.js b/test/sdk/nodejs/testSDKClient.js index a2d6958e9e..c710b515b0 100644 --- a/test/sdk/nodejs/testSDKClient.js +++ b/test/sdk/nodejs/testSDKClient.js @@ -51,6 +51,14 @@ const connect = async () => { console.log('send shutdown request'); agonesSDK.shutdown(); }, 1000); + setTimeout( () => { + console.log('closing agones SDK'); + // Closing Agones SDK and all event emitters + agonesSDK.close() + }, 2000); + setTimeout(() => { + process.exit(0); + }, 2000); } catch (error) { console.error(error); }