瀏覽代碼

CI: Introduce flaky test finder

comparing PR commit(s) to HEAD of moby/moby master branch and if founds
new (or renamed) integration tests will run stress tests for them.

Signed-off-by: Olli Janatuinen <olli.janatuinen@gmail.com>
Olli Janatuinen 6 年之前
父節點
當前提交
8a8fd37f6f
共有 3 個文件被更改,包括 30 次插入0 次删除
  1. 3 0
      Makefile
  2. 1 0
      hack/ci/janky
  3. 26 0
      hack/make/test-integration-flaky

+ 3 - 0
Makefile

@@ -165,6 +165,9 @@ test-integration-cli: test-integration ## (DEPRECATED) use test-integration
 test-integration: build ## run the integration tests
 test-integration: build ## run the integration tests
 	$(DOCKER_RUN_DOCKER) hack/make.sh dynbinary test-integration
 	$(DOCKER_RUN_DOCKER) hack/make.sh dynbinary test-integration
 
 
+test-integration-flaky: build ## run the stress test for all new integration tests
+	$(DOCKER_RUN_DOCKER) hack/make.sh dynbinary test-integration-flaky
+
 test-unit: build ## run the unit tests
 test-unit: build ## run the unit tests
 	$(DOCKER_RUN_DOCKER) hack/test/unit
 	$(DOCKER_RUN_DOCKER) hack/test/unit
 
 

+ 1 - 0
hack/ci/janky

@@ -13,5 +13,6 @@ hack/make.sh \
 	binary-daemon \
 	binary-daemon \
 	dynbinary \
 	dynbinary \
 	test-docker-py \
 	test-docker-py \
+	test-integration-flaky \
 	test-integration \
 	test-integration \
 	cross
 	cross

+ 26 - 0
hack/make/test-integration-flaky

@@ -0,0 +1,26 @@
+#!/usr/bin/env bash
+set -e -o pipefail
+
+source hack/validate/.validate
+new_tests=$(
+    validate_diff --diff-filter=ACMR --unified=0 -- 'integration/*_test.go' |
+    grep -E '^(\+func )(.*)(\*testing)' || true
+)
+
+if [ -z "$new_tests" ]; then
+    echo 'No new tests added to integration.'
+    return
+fi
+
+echo
+echo "Found new integrations tests:"
+echo "$new_tests"
+echo "Running stress test for them."
+
+(
+    TESTARRAY=$(echo "$new_tests" | sed 's/+func //' | awk -F'\\(' '{print $1}' | tr '\n' '|')
+    export TESTFLAGS="-test.count 5 -test.run ${TESTARRAY%?}"
+    export TEST_REPEAT=5
+    echo "Using test flags: $TESTFLAGS"
+    source hack/make/test-integration
+)