Whamcloud - gitweb
LU-5674 test: print spl debug info 90/12590/2
authorMinh Diep <minh.diep@intel.com>
Wed, 5 Nov 2014 19:53:55 +0000 (11:53 -0800)
committerOleg Drokin <oleg.drokin@intel.com>
Thu, 15 Jan 2015 04:45:13 +0000 (04:45 +0000)
Print /proc/spl files in case of tests fail

This patch is back-ported from the following one:
Lustre-commit: acdaca8426a4ca21dab6f6b39365befb3a8f5ffc
Lustre-change: http://review.whamcloud.com/11580

Signed-off-by: Minh Diep <minh.diep@intel.com>
Change-Id: Ia255347e2ad47732e6f86f9d8cd7bfa883bcde9b
Reviewed-on: http://review.whamcloud.com/12590
Reviewed-by: Bob Glossman <bob.glossman@intel.com>
Reviewed-by: Isaac Huang <he.huang@intel.com>
Tested-by: Jenkins
Tested-by: Maloo <hpdd-maloo@intel.com>
Reviewed-by: Oleg Drokin <oleg.drokin@intel.com>
lustre/tests/test-framework.sh

index 2eba34a..92eec63 100644 (file)
@@ -3950,6 +3950,60 @@ run_lfsck() {
        return $rc
 }
 
+dump_file_contents() {
+       local nodes=$1
+       local dir=$2
+       local logname=$3
+       local node
+
+       if [ -z "$nodes" -o -z "$dir" -o -z "$logname" ]; then
+               error_noexit false \
+                       "Invalid parameters for dump_file_contents()"
+               return 1
+       fi
+       for node in ${nodes}; do
+               do_node $node "for i in \\\$(find $dir -type f); do
+                               echo ====\\\${i}=======================;
+                               cat \\\${i};
+                               done" >> ${logname}.${node}.log
+       done
+}
+
+dump_command_output() {
+       local nodes=$1
+       local cmd=$2
+       local logname=$3
+       local node
+
+       if [ -z "$nodes" -o -z "$cmd" -o -z "$logname" ]; then
+               error_noexit false \
+                       "Invalid parameters for dump_command_output()"
+               return 1
+       fi
+
+       for node in ${nodes}; do
+               do_node $node "echo ====${cmd}=======================;
+                               $cmd" >> ${logname}.${node}.log
+       done
+}
+
+log_zfs_info() {
+       local logname=$1
+
+       # dump file contents from /proc/spl in case of zfs test
+       if [ "$(facet_fstype ost1)" = "zfs" ]; then
+               dump_file_contents "$(osts_nodes)" "/proc/spl" "${logname}"
+               dump_command_output \
+                       "$(osts_nodes)" "zpool events -v" "${logname}"
+       fi
+
+       if [ "$(facet_fstype $SINGLEMDS)" = "zfs" ]; then
+               dump_file_contents "$(mdts_nodes)" "/proc/spl" "${logname}"
+               dump_command_output \
+                       "$(mdts_nodes)" "zpool events -v" "${logname}"
+       fi
+}
+
 check_and_cleanup_lustre() {
     if [ "$LFSCK_ALWAYS" = "yes" -a "$TESTSUITE" != "lfsck" ]; then
         get_svr_devs
@@ -4664,6 +4718,8 @@ run_one_logged() {
        local TEST_ERROR
        local name=${TESTSUITE}.test_${1}.test_log.$(hostname -s).log
        local test_log=$LOGDIR/$name
+       local zfs_log_name=${TESTSUITE}.test_${1}.zfs_log
+       local zfs_debug_log=$LOGDIR/$zfs_log_name
        rm -rf $LOGDIR/err
        rm -rf $LOGDIR/ignore
        rm -rf $LOGDIR/skip
@@ -4691,6 +4747,7 @@ run_one_logged() {
        log_sub_test_end $TEST_STATUS $duration "$RC" "$TEST_ERROR"
 
        if [ -f $LOGDIR/err ]; then
+               log_zfs_info "$zfs_debug_log"
                $FAIL_ON_ERROR && exit $RC
        fi