From 69c557ad8468f9e32090cbef78512f82a98f7043 Mon Sep 17 00:00:00 2001 From: ShyamsundarR Date: Wed, 8 Aug 2018 18:29:01 -0400 Subject: tests: Add ability to preserve older tarball for retried tests When a test is retried, the cleanup directives overwrite the older tarball with the latest one, thus losing the logs from the failed run. This patch changes run-tests.sh to rename the older tarball when retrying a test, thus preserving the same. The tarball is renamed using a time stamp and optionally a trailing sequence number, in case the test fails within the very second. Although the sequence # is not strictly required as we retry only once, it provides a defence for any future enhancements to the same. Fixes: bz#1614062 Change-Id: I9afe486b0b6f6a26f2ad0642e38bc0ba15b3ecc9 Signed-off-by: ShyamsundarR --- run-tests.sh | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) (limited to 'run-tests.sh') diff --git a/run-tests.sh b/run-tests.sh index c8eaf9b9683..5efdc201517 100755 --- a/run-tests.sh +++ b/run-tests.sh @@ -17,6 +17,38 @@ kill_after_time=5 OSTYPE=$(uname -s) +# Function for use in generating filenames with increasing "-" index +# In: +# $1 basepath: Directory where file needs to be created +# $2 filename: Name of the file sans extension +# $3 extension: Extension string that would be appended to the generated +# filename +# Out: +# string of next available filename with appended "-" if applicable +# Example: +# Interested routines that want to create a file name, say foo.txt at +# location /var/log/gluster would pass in "/var/log/gluster" "foo" "txt" +# and be returned next available foo.txt filename to create. If foo.txt +# is available then foo is returned, else foo- (where n is the next +# integer) is returned for use" +# Notes: +# Function will not accept empty extension, and will return the same name +# over and over (which can be fixed when there is a use-case for it) +function get_next_filename() +{ + local basepath=$1 + local filename=$2 + local extension=$3 + local next=2 + local tfilename=${filename} + while [ -e "${basepath}/${tfilename}.${extension}" ]; do + tfilename="${filename}-${next}" + next=$((next+1)) + done + + echo "$tfilename" +} + function check_dependencies() { ## Check all dependencies are present @@ -320,6 +352,13 @@ function run_tests() echo " * we got some spurious failures *" echo " *********************************" echo "" + # backup old tar ball with time stamp + # TODO: Using gluster CLI here is possibly not the best thing! + logdir=$(gluster --print-logdir) + basetarname=$(basename "$t" .t) + savetarname=$(get_next_filename "${logdir}" "${basetarname}-$(date +%H:%M:%S)" "tar" | tail -1) + mv "$logdir"/"$basetarname".tar "$logdir"/"$savetarname".tar + if [ ${timeout_cmd_exists} == "yes" ]; then timeout -k ${kill_after_time} ${cmd_timeout} prove -vmfe '/bin/bash' ${t} else -- cgit