From be87185f6de68d1ec5474d2418e85e0732f4be27 Mon Sep 17 00:00:00 2001
From: George Joseph <gjoseph@digium.com>
Date: Sat, 17 Nov 2018 12:07:32 -0700
Subject: [PATCH] CI:  Pass work directory to runTestsuite

The testsuite can now use a user-specified work directory for
all it's temp files.  This allows the docker containers to use
a tmpfs backed directory for the temp files instead of it's
own write-layer image.

* runTestsuite.sh now accepts a --work-dir command line argument
  that gets exported as AST_WORK_DIR before running the testsuite.

* gates.jenkinsfile now specifies --work-dir to be
  <testsuite_dir>/astroot.

Since the Asterisk CI docker hosts now mount /srv/jenkins/workspace
on a tmpfs, asterisk should be compiled and the testsuite run all in
memory.

Change-Id: If5ee905a15821296c355bb84cda38950ad8edc45
(cherry picked from commit a335f4c9adb0a00211345634f61917bdf5b412c2)
---
 tests/CI/gates.jenkinsfile | 2 +-
 tests/CI/runTestsuite.sh   | 7 ++++++-
 2 files changed, 7 insertions(+), 2 deletions(-)

diff --git a/tests/CI/gates.jenkinsfile b/tests/CI/gates.jenkinsfile
index 983564760f..7be576861b 100644
--- a/tests/CI/gates.jenkinsfile
+++ b/tests/CI/gates.jenkinsfile
@@ -197,7 +197,7 @@ pipeline {
 										]
 									}
 
-									sh "sudo tests/CI/runTestsuite.sh --testsuite-dir='${groupDir}' --testsuite-command='${groupTestcmd}'"
+									sh "sudo tests/CI/runTestsuite.sh --work-dir='${groupDir}/astroot' --testsuite-dir='${groupDir}' --testsuite-command='${groupTestcmd}'"
 
 									archiveArtifacts allowEmptyArchive: true, defaultExcludes: false, fingerprint: true,
 										artifacts: "${groupDir}/asterisk-test-suite-report.xml, ${groupDir}/logs/**, ${groupDir}/core*.txt"
diff --git a/tests/CI/runTestsuite.sh b/tests/CI/runTestsuite.sh
index 9ee7718338..466991a44c 100755
--- a/tests/CI/runTestsuite.sh
+++ b/tests/CI/runTestsuite.sh
@@ -5,6 +5,11 @@ TEST_TIMEOUT=600
 source $CIDIR/ci.functions
 ASTETCDIR=$DESTDIR/etc/asterisk
 
+if [ x"$WORK_DIR" != x ] ; then
+	export AST_WORK_DIR="$(readlink -f $WORK_DIR)"
+	mkdir -p "$AST_WORK_DIR"
+fi
+
 pushd $TESTSUITE_DIR
 
 ./cleanup-test-remnants.sh
@@ -14,7 +19,7 @@ if [ $REALTIME -eq 1 ] ; then
 fi
 
 export PYTHONPATH=./lib/python/
-echo "Running tests ${TESTSUITE_COMMAND}"
+echo "Running tests ${TESTSUITE_COMMAND} ${AST_WORK_DIR:+with work directory ${AST_WORK_DIR}}"
 ./runtests.py --cleanup --timeout=${TEST_TIMEOUT} ${TESTSUITE_COMMAND} | contrib/scripts/pretty_print --no-color --no-timer --term-width=120 --show-errors || :
 
 if [ $REALTIME -eq 1 ] ; then
-- 
GitLab