make test: archive failed test data with build logs. 03/8603/1
authorDave Wallace <dwallacelf@gmail.com>
Sat, 30 Sep 2017 05:53:26 +0000 (01:53 -0400)
committerDave Wallace <dwallacelf@gmail.com>
Sat, 30 Sep 2017 05:53:26 +0000 (01:53 -0400)
- Fix invocation of compress_failed.sh
- Fix compress_failed to copy compressed results
  files to $WORKSPACE/archives and return failure
  exit code.

Failed test case data will be copied to logs.fd.io
and found in the archives/<make test data dir>-FAILED
directory in the build log link in the
vpp-verify-master-ubuntu1604 jenkins job page.

For example:
https://logs.fd.io/production/vex-yul-rot-jenkins-1/vpp-verify-master-ubuntu1604/7353/archives/

Change-Id: Ife9a0737115e69c0a8441e3bb0133af1528d909b
Signed-off-by: Dave Wallace <dwallacelf@gmail.com>
test/Makefile
test/scripts/compress_failed.sh

index 721ec96..da77acc 100644 (file)
@@ -86,8 +86,7 @@ $(PAPI_INSTALL_DONE): $(PIP_PATCH_DONE)
        @touch $@
 
 define retest-func
-       @env VPP_TEST_FAILED_DIR=$(VPP_TEST_FAILED_DIR) scripts/setsid_wrapper.sh $(FORCE_FOREGROUND) $(PYTHON_VENV_PATH)/bin/activate python run_tests.py -d $(TEST_DIR) $(UNITTEST_EXTRA_OPTS)
-       @env VPP_TEST_FAILED_DIR=$(VPP_TEST_FAILED_DIR) scripts/compress_failed.sh
+       @env VPP_TEST_FAILED_DIR=$(VPP_TEST_FAILED_DIR) scripts/setsid_wrapper.sh $(FORCE_FOREGROUND) $(PYTHON_VENV_PATH)/bin/activate python run_tests.py -d $(TEST_DIR) $(UNITTEST_EXTRA_OPTS) || env VPP_TEST_FAILED_DIR=$(VPP_TEST_FAILED_DIR) COMPRESS_FAILED_TEST_LOGS=$(COMPRESS_FAILED_TEST_LOGS) scripts/compress_failed.sh
 endef
 
 .PHONY: sanity
index 6076b3b..9559e2a 100755 (executable)
@@ -2,20 +2,36 @@
 
 if [ "$(ls -A ${VPP_TEST_FAILED_DIR})" ]
 then
-       if [ "${COMPRESS_FAILED_TEST_LOGS}" == "yes" ]
-       then
-               echo -n "Compressing files in temporary directories from failed test runs..."
-               cd ${VPP_TEST_FAILED_DIR}
-               for d in *
-               do
-                       cd ${d}
-                       find . ! -path . -print0 | xargs -0 -n1 gzip
-                       cd ${VPP_TEST_FAILED_DIR}
-               done
-               echo "done."
-       else
-               echo "Not compressing files in temporary directories from failed test runs."
-       fi
+    if [ "${COMPRESS_FAILED_TEST_LOGS}" == "yes" ]
+    then
+       echo -n "Compressing files in temporary directories from failed test runs... "
+       cd ${VPP_TEST_FAILED_DIR}
+       for d in *
+       do
+           cd ${d}
+           find . ! -path . -print0 | xargs -0 -n1 gzip
+           cd ${VPP_TEST_FAILED_DIR}
+       done
+       echo "done."
+        if [ -n "$WORKSPACE" ]
+        then
+            echo "Copying failed test logs into build log archive directory ($WORKSPACE/archives)... "
+            for failed_test in $(ls $VPP_TEST_FAILED_DIR)
+            do
+                mkdir -p $WORKSPACE/archives/$failed_test
+                cp -a $VPP_TEST_FAILED_DIR/$failed_test/* $WORKSPACE/archives/$failed_test
+            done
+           echo "done."
+        fi
+        
+    else
+       echo "Not compressing files in temporary directories from failed test runs."
+    fi
 else
-       echo "No symlinks to failed tests' temporary directories found in ${VPP_TEST_FAILED_DIR}."
+    echo "No symlinks to failed tests' temporary directories found in ${VPP_TEST_FAILED_DIR}."
 fi
+
+# This script gets run only if there was a 'make test' failure,
+# so return failure error status so that the build results are
+# recorded correctly.
+exit 1