This is an automated email from the ASF dual-hosted git repository.
andrewzhaoluo pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/tvm.git
The following commit(s) were added to refs/heads/main by this push:
new c79b8f1aac [ci] Re-run flaky tests on failure (#12108)
c79b8f1aac is described below
commit c79b8f1aac0d11811257123127402d0ceff9135e
Author: driazati <[email protected]>
AuthorDate: Mon Jul 18 09:44:49 2022 -0700
[ci] Re-run flaky tests on failure (#12108)
This is a follow up to implement the library added in #12055
Co-authored-by: driazati <[email protected]>
---
Jenkinsfile | 16 ++++++++--------
ci/jenkins/Jenkinsfile.j2 | 14 +++++++-------
tests/scripts/setup-pytest-env.sh | 12 +++++++++---
3 files changed, 24 insertions(+), 18 deletions(-)
diff --git a/Jenkinsfile b/Jenkinsfile
index 8b59fe2192..c2f6407333 100755
--- a/Jenkinsfile
+++ b/Jenkinsfile
@@ -45,18 +45,18 @@
// 'python3 jenkins/generate.py'
// Note: This timestamp is here to ensure that updates to the Jenkinsfile are
// always rebased on main before merging:
-// Generated at 2022-07-01T12:43:52.727636
+// Generated at 2022-07-15T13:35:24.676914
import org.jenkinsci.plugins.pipeline.modeldefinition.Utils
// NOTE: these lines are scanned by docker/dev_common.sh. Please update the
regex as needed. -->
-ci_lint = 'tlcpack/ci-lint:20220630-060117-558ba99c7'
-ci_gpu = 'tlcpack/ci-gpu:20220630-060117-558ba99c7'
-ci_cpu = 'tlcpack/ci-cpu:20220630-060117-558ba99c7'
-ci_wasm = 'tlcpack/ci-wasm:20220630-060117-558ba99c7'
-ci_i386 = 'tlcpack/ci-i386:20220630-060117-558ba99c7'
+ci_lint = 'tlcpack/ci-lint:20220715-060127-37f9d3c49'
+ci_gpu = 'tlcpack/ci-gpu:20220715-060127-37f9d3c49'
+ci_cpu = 'tlcpack/ci-cpu:20220715-060127-37f9d3c49'
+ci_wasm = 'tlcpack/ci-wasm:20220715-060127-37f9d3c49'
+ci_i386 = 'tlcpack/ci-i386:20220715-060127-37f9d3c49'
ci_qemu = 'tlcpack/ci-qemu:20220630-060117-558ba99c7'
-ci_arm = 'tlcpack/ci-arm:20220630-060117-558ba99c7'
-ci_hexagon = 'tlcpack/ci-hexagon:20220630-060117-558ba99c7'
+ci_arm = 'tlcpack/ci-arm:20220715-060127-37f9d3c49'
+ci_hexagon = 'tlcpack/ci-hexagon:20220715-060127-37f9d3c49'
// <--- End of regex-scanned config.
// Parameters to allow overriding (in Jenkins UI), the images
diff --git a/ci/jenkins/Jenkinsfile.j2 b/ci/jenkins/Jenkinsfile.j2
index 2c38bf32c6..45b7565bf5 100644
--- a/ci/jenkins/Jenkinsfile.j2
+++ b/ci/jenkins/Jenkinsfile.j2
@@ -51,14 +51,14 @@ import org.jenkinsci.plugins.pipeline.modeldefinition.Utils
{% import 'ci/jenkins/macros.j2' as m with context -%}
// NOTE: these lines are scanned by docker/dev_common.sh. Please update the
regex as needed. -->
-ci_lint = 'tlcpack/ci-lint:20220630-060117-558ba99c7'
-ci_gpu = 'tlcpack/ci-gpu:20220630-060117-558ba99c7'
-ci_cpu = 'tlcpack/ci-cpu:20220630-060117-558ba99c7'
-ci_wasm = 'tlcpack/ci-wasm:20220630-060117-558ba99c7'
-ci_i386 = 'tlcpack/ci-i386:20220630-060117-558ba99c7'
+ci_lint = 'tlcpack/ci-lint:20220715-060127-37f9d3c49'
+ci_gpu = 'tlcpack/ci-gpu:20220715-060127-37f9d3c49'
+ci_cpu = 'tlcpack/ci-cpu:20220715-060127-37f9d3c49'
+ci_wasm = 'tlcpack/ci-wasm:20220715-060127-37f9d3c49'
+ci_i386 = 'tlcpack/ci-i386:20220715-060127-37f9d3c49'
ci_qemu = 'tlcpack/ci-qemu:20220630-060117-558ba99c7'
-ci_arm = 'tlcpack/ci-arm:20220630-060117-558ba99c7'
-ci_hexagon = 'tlcpack/ci-hexagon:20220630-060117-558ba99c7'
+ci_arm = 'tlcpack/ci-arm:20220715-060127-37f9d3c49'
+ci_hexagon = 'tlcpack/ci-hexagon:20220715-060127-37f9d3c49'
// <--- End of regex-scanned config.
// Parameters to allow overriding (in Jenkins UI), the images
diff --git a/tests/scripts/setup-pytest-env.sh
b/tests/scripts/setup-pytest-env.sh
index 63145c9909..1e4883f13d 100755
--- a/tests/scripts/setup-pytest-env.sh
+++ b/tests/scripts/setup-pytest-env.sh
@@ -24,7 +24,7 @@ if [[ ! -z $CI_PYTEST_ADD_OPTIONS ]]; then
else
export PYTEST_ADDOPTS="-s -vv $PYTEST_ADDOPTS"
fi
-set -u
+set -ux
export TVM_PATH=`pwd`
export PYTHONPATH="${TVM_PATH}/python"
@@ -51,19 +51,25 @@ function run_pytest() {
shift
local test_suite_name="$1"
shift
+ extra_args=( "$@" )
if [ -z "${ffi_type}" -o -z "${test_suite_name}" ]; then
- echo "error: run_pytest called incorrectly: run_pytest ${ffi_type}
${test_suite_name} $@"
+ echo "error: run_pytest called incorrectly: run_pytest ${ffi_type}
${test_suite_name}" "${extra_args[@]}"
echo "usage: run_pytest <FFI_TYPE> <TEST_SUITE_NAME> [pytest args...]"
exit 2
fi
+ has_reruns=$(python3 -m pytest --help 2>&1 | grep 'reruns=' || true)
+ if [ -n "$has_reruns" ]; then
+ extra_args+=('--reruns=3')
+ fi
+
suite_name="${test_suite_name}-${ffi_type}"
exit_code=0
TVM_FFI=${ffi_type} python3 -m pytest \
-o "junit_suite_name=${suite_name}" \
"--junit-xml=${TVM_PYTEST_RESULT_DIR}/${suite_name}.xml" \
"--junit-prefix=${ffi_type}" \
- "$@" || exit_code=$?
+ "${extra_args[@]}" || exit_code=$?
if [ "$exit_code" -ne "0" ]; then
pytest_errors+=("${suite_name}: $@")
fi