diff --git a/.ci/ci.sh b/.ci/ci.sh index f543967dc5..d89776535a 100755 --- a/.ci/ci.sh +++ b/.ci/ci.sh @@ -20,6 +20,7 @@ CONTAINER_CMD=${CONTAINER_CMD:-podman} CONTAINER_WORKSPACE="/workspace" CONTAINER_WORKDIR="/workspace/ovn-tmp" IMAGE_NAME=${IMAGE_NAME:-"ovn-org/ovn-tests"} +TIMEOUT=${TIMEOUT:-"0"} # Test variables ARCH=${ARCH:-$(uname -m)} @@ -100,7 +101,8 @@ function run_tests() { && \ ARCH=$ARCH CC=$CC LIBS=$LIBS OPTS=$OPTS TESTSUITE=$TESTSUITE \ TEST_RANGE=$TEST_RANGE SANITIZERS=$SANITIZERS DPDK=$DPDK \ - RECHECK=$RECHECK UNSTABLE=$UNSTABLE ./.ci/linux-build.sh + RECHECK=$RECHECK UNSTABLE=$UNSTABLE TIMEOUT=$TIMEOUT \ + ./.ci/linux-build.sh " } @@ -115,7 +117,8 @@ function check_clang_version_ge() { } options=$(getopt --options "" \ - --long help,shell,archive-logs,jobs:,ovn-path:,ovs-path:,image-name:\ + --long help,shell,archive-logs,jobs:,ovn-path:,ovs-path:,\ + image-name:,timeout:\ -- "${@}") eval set -- "$options" while true; do @@ -142,11 +145,15 @@ while true; do --archive-logs) archive_logs="1" ;; + --timeout) + shift + TIMEOUT="$1" + ;; --help) set +x printf "$0 [--shell] [--help] [--archive-logs] [--jobs=] " printf "[--ovn-path=] [--ovs-path=] " - printf "[--image-name=]\n" + printf "[--image-name=] [--timeout=]\n" exit ;; --) diff --git a/.ci/linux-build.sh b/.ci/linux-build.sh index 75a9480f9a..7740f7a3f1 100755 --- a/.ci/linux-build.sh +++ b/.ci/linux-build.sh @@ -10,6 +10,7 @@ OVN_CFLAGS="" OPTS="$OPTS --enable-Werror" JOBS=${JOBS:-"-j4"} RECHECK=${RECHECK:-"no"} +TIMEOUT=${TIMEOUT:="0"} function install_dpdk() { @@ -105,7 +106,8 @@ function configure_clang() function run_tests() { - if ! make distcheck CFLAGS="${COMMON_CFLAGS} ${OVN_CFLAGS}" $JOBS \ + if ! timeout $TIMEOUT make distcheck \ + CFLAGS="${COMMON_CFLAGS} ${OVN_CFLAGS}" $JOBS \ TESTSUITEFLAGS="$JOBS $TEST_RANGE" RECHECK=$RECHECK \ SKIP_UNSTABLE=$SKIP_UNSTABLE then @@ -147,8 +149,9 @@ function run_system_tests() local type=$1 local log_file=$2 - if ! sudo make $JOBS $type TESTSUITEFLAGS="$TEST_RANGE" \ - RECHECK=$RECHECK SKIP_UNSTABLE=$SKIP_UNSTABLE; then + if ! sudo timeout $TIMEOUT make $JOBS $type \ + TESTSUITEFLAGS="$TEST_RANGE" RECHECK=$RECHECK \ + SKIP_UNSTABLE=$SKIP_UNSTABLE; then # $log_file is necessary for debugging. cat tests/$log_file return 1 diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index f7a184c130..47085c4fe7 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -168,11 +168,11 @@ jobs: - name: build if: ${{ startsWith(matrix.cfg.testsuite, 'system-test') }} - run: sudo -E ./.ci/ci.sh --archive-logs + run: sudo -E ./.ci/ci.sh --archive-logs --timeout=1h - name: build if: ${{ !startsWith(matrix.cfg.testsuite, 'system-test') }} - run: ./.ci/ci.sh --archive-logs + run: ./.ci/ci.sh --archive-logs --timeout=1h - name: upload logs on failure if: failure() || cancelled()