diff options
Diffstat (limited to 'tools/testing/selftests/rcutorture/bin/kvm-find-errors.sh')
-rwxr-xr-x | tools/testing/selftests/rcutorture/bin/kvm-find-errors.sh | 79 |
1 files changed, 79 insertions, 0 deletions
diff --git a/tools/testing/selftests/rcutorture/bin/kvm-find-errors.sh b/tools/testing/selftests/rcutorture/bin/kvm-find-errors.sh new file mode 100755 index 000000000..88983cba7 --- /dev/null +++ b/tools/testing/selftests/rcutorture/bin/kvm-find-errors.sh @@ -0,0 +1,79 @@ +#!/bin/sh +# SPDX-License-Identifier: GPL-2.0+ +# +# Invoke a text editor on all console.log files for all runs with diagnostics, +# that is, on all such files having a console.log.diags counterpart. +# Note that both console.log.diags and console.log are passed to the +# editor (currently defaulting to "vi"), allowing the user to get an +# idea of what to search for in the console.log file. +# +# Usage: kvm-find-errors.sh directory +# +# The "directory" above should end with the date/time directory, for example, +# "tools/testing/selftests/rcutorture/res/2018.02.25-14:27:27". +# Returns error status reflecting the success (or not) of the specified run. +# +# Copyright (C) IBM Corporation, 2018 +# +# Author: Paul E. McKenney <paulmck@linux.ibm.com> + +rundir="${1}" +if test -z "$rundir" -o ! -d "$rundir" +then + echo Directory "$rundir" not found. + echo Usage: $0 directory + exit 1 +fi +editor=${EDITOR-vi} + +# Find builds with errors +files= +for i in ${rundir}/*/Make.out +do + scenariodir="`dirname $i`" + scenariobasedir="`echo ${scenariodir} | sed -e 's/\.[0-9]*$//'`" + if egrep -q "error:|warning:|^ld: .*undefined reference to" < $i + then + egrep "error:|warning:|^ld: .*undefined reference to" < $i > $i.diags + files="$files $i.diags $i" + elif ! test -f ${scenariobasedir}/vmlinux && ! test -f "${rundir}/re-run" + then + echo No ${scenariobasedir}/vmlinux file > $i.diags + files="$files $i.diags $i" + fi +done +if test -n "$files" +then + $editor $files + editorret=1 +else + echo No build errors. +fi +if grep -q -e "--build-\?only" < ${rundir}/log && ! test -f "${rundir}/remote-log" +then + echo Build-only run, no console logs to check. + exit $editorret +fi + +# Find console logs with errors +files= +for i in ${rundir}/*/console.log +do + if test -r $i.diags + then + files="$files $i.diags $i" + fi +done +if test -n "$files" +then + $editor $files + exit 1 +else + echo No errors in console logs. + if test -n "$editorret" + then + exit $editorret + else + exit 0 + fi +fi |