You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kudu.apache.org by da...@apache.org on 2018/09/11 22:37:19 UTC

[2/3] kudu git commit: build: add option to ignore test failures

build: add option to ignore test failures

Sometimes when running build-and-test.sh, we may not care about the
failure of any given test, so long as the tests ran, e.g. if running
only for the sake of reporting the results of the tests. As such, this
patch adds an option to ignore test failures during runs of
build-and-test.sh.

I tested this by injecting errors into a test and doing a
build-and-test.sh run with the new ERROR_ON_TEST_FAILURE=1, verifying
that it still returns an error; and with ERROR_ON_TEST_FAILURE=0,
verifying that it returns no error. I also broke the build and verified
that, despite ERROR_ON_TEST_FAILURE=0, it returns an error.

Change-Id: I27ecacd499423755dbf742bb70db6a7f1e5c9db7
Reviewed-on: http://gerrit.cloudera.org:8080/11399
Reviewed-by: Adar Dembo <ad...@cloudera.com>
Tested-by: Kudu Jenkins
Reviewed-by: Grant Henke <gr...@apache.org>


Project: http://git-wip-us.apache.org/repos/asf/kudu/repo
Commit: http://git-wip-us.apache.org/repos/asf/kudu/commit/d91a2525
Tree: http://git-wip-us.apache.org/repos/asf/kudu/tree/d91a2525
Diff: http://git-wip-us.apache.org/repos/asf/kudu/diff/d91a2525

Branch: refs/heads/master
Commit: d91a2525060d52bc27661b2b5978a288a71bcec2
Parents: 7856ec9
Author: Andrew Wong <aw...@cloudera.com>
Authored: Thu Sep 6 18:10:45 2018 -0700
Committer: Andrew Wong <aw...@cloudera.com>
Committed: Tue Sep 11 21:24:22 2018 +0000

----------------------------------------------------------------------
 build-support/jenkins/build-and-test.sh | 33 ++++++++++++++++++----------
 1 file changed, 21 insertions(+), 12 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/kudu/blob/d91a2525/build-support/jenkins/build-and-test.sh
----------------------------------------------------------------------
diff --git a/build-support/jenkins/build-and-test.sh b/build-support/jenkins/build-and-test.sh
index d1a3e42..312ff65 100755
--- a/build-support/jenkins/build-and-test.sh
+++ b/build-support/jenkins/build-and-test.sh
@@ -82,6 +82,9 @@
 #
 #   GRADLE_FLAGS       Default: ""
 #     Extra flags which are passed to 'gradle' when running Gradle commands.
+#
+#   ERROR_ON_TEST_FAILURE    Default: 1
+#     Whether test failures will cause this script to return an error.
 
 # If a commit messages contains a line that says 'DONT_BUILD', exit
 # immediately.
@@ -121,6 +124,7 @@ BUILD_MAVEN=${BUILD_MAVEN:-0}
 BUILD_GRADLE=${BUILD_GRADLE:-1}
 BUILD_PYTHON=${BUILD_PYTHON:-1}
 BUILD_PYTHON3=${BUILD_PYTHON3:-1}
+ERROR_ON_TEST_FAILURE=${ERROR_ON_TEST_FAILURE:-1}
 
 # Ensure that the test data directory is usable.
 mkdir -p "$TEST_TMPDIR"
@@ -329,6 +333,7 @@ if [ "$RUN_FLAKY_ONLY" == "1" ] ; then
   BUILD_JAVA=0
 fi
 
+TESTS_FAILED=0
 EXIT_STATUS=0
 FAILURES=""
 
@@ -350,7 +355,7 @@ if [ "$ENABLE_DIST_TEST" == "1" ]; then
 fi
 
 if ! $THIRDPARTY_BIN/ctest -j$NUM_PROCS $EXTRA_TEST_FLAGS ; then
-  EXIT_STATUS=1
+  TESTS_FAILED=1
   FAILURES="$FAILURES"$'C++ tests failed\n'
 fi
 
@@ -388,7 +393,7 @@ if [ "$BUILD_JAVA" == "1" ]; then
     EXTRA_MVN_FLAGS="$EXTRA_MVN_FLAGS -Dmaven.javadoc.skip"
     EXTRA_MVN_FLAGS="$EXTRA_MVN_FLAGS $MVN_FLAGS"
     if ! mvn $EXTRA_MVN_FLAGS clean verify ; then
-      EXIT_STATUS=1
+      TESTS_FAILED=1
       FAILURES="$FAILURES"$'Java Maven build/test failed\n'
     fi
   fi
@@ -418,7 +423,7 @@ if [ "$BUILD_JAVA" == "1" ]; then
     else
       # TODO: Run `gradle check` in BUILD_TYPE DEBUG when static code analysis is fixed
       if ! ./gradlew $EXTRA_GRADLE_FLAGS clean test ; then
-        EXIT_STATUS=1
+        TESTS_FAILED=1
         FAILURES="$FAILURES"$'Java Gradle build/test failed\n'
       fi
     fi
@@ -501,7 +506,7 @@ if [ "$BUILD_PYTHON" == "1" ]; then
   if ! python setup.py test \
       --addopts="kudu --junit-xml=$TEST_LOGDIR/python_client.xml" \
       2> $TEST_LOGDIR/python_client.log ; then
-    EXIT_STATUS=1
+    TESTS_FAILED=1
     FAILURES="$FAILURES"$'Python tests failed\n'
   fi
 
@@ -559,7 +564,7 @@ if [ "$BUILD_PYTHON3" == "1" ]; then
   if ! python setup.py test \
       --addopts="kudu --junit-xml=$TEST_LOGDIR/python3_client.xml" \
       2> $TEST_LOGDIR/python3_client.log ; then
-    EXIT_STATUS=1
+    TESTS_FAILED=1
     FAILURES="$FAILURES"$'Python 3 tests failed\n'
   fi
 
@@ -574,7 +579,7 @@ if [ "$ENABLE_DIST_TEST" == "1" ]; then
   echo ------------------------------------------------------------
   C_DIST_TEST_ID=`cat $BUILD_ROOT/c-dist-test-job-id`
   if ! $DIST_TEST_HOME/bin/client watch $C_DIST_TEST_ID ; then
-    EXIT_STATUS=1
+    TESTS_FAILED=1
     FAILURES="$FAILURES"$'Distributed C++ tests failed\n'
   fi
   DT_DIR=$TEST_LOGDIR/dist-test-out
@@ -594,7 +599,7 @@ if [ "$ENABLE_DIST_TEST" == "1" ]; then
     echo ------------------------------------------------------------
     JAVA_DIST_TEST_ID=`cat $BUILD_ROOT/java-dist-test-job-id`
     if ! $DIST_TEST_HOME/bin/client watch $JAVA_DIST_TEST_ID ; then
-      EXIT_STATUS=1
+      TESTS_FAILED=1
       FAILURES="$FAILURES"$'Distributed Java tests failed\n'
     fi
     DT_DIR=$TEST_LOGDIR/java-dist-test-out
@@ -610,7 +615,7 @@ if [ "$ENABLE_DIST_TEST" == "1" ]; then
   fi
 fi
 
-if [ $EXIT_STATUS != 0 ]; then
+if [ "$TESTS_FAILED" != "0" -o "$EXIT_STATUS" != "0" ]; then
   echo
   echo Tests failed, making sure we have XML files for all tests.
   echo ------------------------------------------------------------
@@ -626,10 +631,8 @@ if [ $EXIT_STATUS != 0 ]; then
       zcat $GTEST_OUTFILE | $SOURCE_ROOT/build-support/parse_test_failure.py -x > $GTEST_XMLFILE
     fi
   done
-fi
-
-# If all tests passed, ensure that they cleaned up their test output.
-if [ $EXIT_STATUS == 0 ]; then
+else
+  # If all tests passed, ensure that they cleaned up their test output.
   TEST_TMPDIR_CONTENTS=$(ls $TEST_TMPDIR)
   if [ -n "$TEST_TMPDIR_CONTENTS" ]; then
     echo "All tests passed, yet some left behind their test output."
@@ -652,4 +655,10 @@ if [ -n "$FAILURES" ]; then
   echo
 fi
 
+# If any of the tests failed and we are honoring test failures, set the exit
+# status to 1. Note that it may have already been set to 1 above.
+if [ "$ERROR_ON_TEST_FAILURE" == "1" -a "$TESTS_FAILED" == "1" ]; then
+  EXIT_STATUS=1
+fi
+
 exit $EXIT_STATUS