| #!/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' '|') |
| # Note: TEST_REPEAT will make the test suite run 5 times, restarting the daemon |
| # whereas testcount will make each test run 5 times in a row under the same daemon. |
| # This will make a total of 25 runs for each test in TESTARRAY. |
| export TEST_REPEAT=5 |
| local testcount=5 |
| # However, TIMEOUT needs to take testcount into account, or a premature time out may happen. |
| # The following ugliness will: |
| # - remove last character (usually 'm' from '10m') |
| # - multiply by testcount |
| # - add last character back |
| export TIMEOUT=$((${TIMEOUT::-1} * $testcount))${TIMEOUT:$((${#TIMEOUT}-1)):1} |
| |
| export TESTFLAGS="-test.count $testcount -test.run ${TESTARRAY%?}" |
| echo "Using test flags: $TESTFLAGS" |
| source hack/make/test-integration |
| ) |