Merge branches 'acpi-battery', 'acpi-video' and 'acpi-misc'
[sfrench/cifs-2.6.git] / tools / testing / selftests / rcutorture / bin / kvm-recheck.sh
1 #!/bin/bash
2 # SPDX-License-Identifier: GPL-2.0+
3 #
4 # Given the results directories for previous KVM-based torture runs,
5 # check the build and console output for errors.  Given a directory
6 # containing results directories, this recursively checks them all.
7 #
8 # Usage: kvm-recheck.sh resdir ...
9 #
10 # Returns status reflecting the success or not of the last run specified.
11 #
12 # Copyright (C) IBM Corporation, 2011
13 #
14 # Authors: Paul E. McKenney <paulmck@linux.ibm.com>
15
16 T=/tmp/kvm-recheck.sh.$$
17 trap 'rm -f $T' 0 2
18
19 PATH=`pwd`/tools/testing/selftests/rcutorture/bin:$PATH; export PATH
20 . functions.sh
21 for rd in "$@"
22 do
23         firsttime=1
24         dirs=`find $rd -name Make.defconfig.out -print | sort | sed -e 's,/[^/]*$,,' | sort -u`
25         for i in $dirs
26         do
27                 if test -n "$firsttime"
28                 then
29                         firsttime=""
30                         resdir=`echo $i | sed -e 's,/$,,' -e 's,/[^/]*$,,'`
31                         head -1 $resdir/log
32                 fi
33                 TORTURE_SUITE="`cat $i/../torture_suite`"
34                 configfile=`echo $i | sed -e 's,^.*/,,'`
35                 rm -f $i/console.log.*.diags
36                 case "${TORTURE_SUITE}" in
37                 X*)
38                         ;;
39                 *)
40                         kvm-recheck-${TORTURE_SUITE}.sh $i
41                 esac
42                 if test -f "$i/qemu-retval" && test "`cat $i/qemu-retval`" -ne 0 && test "`cat $i/qemu-retval`" -ne 137
43                 then
44                         echo QEMU error, output:
45                         cat $i/qemu-output
46                 elif test -f "$i/console.log"
47                 then
48                         if test -f "$i/qemu-retval" && test "`cat $i/qemu-retval`" -eq 137
49                         then
50                                 echo QEMU killed
51                         fi
52                         configcheck.sh $i/.config $i/ConfigFragment > $T 2>&1
53                         cat $T
54                         if test -r $i/Make.oldconfig.err
55                         then
56                                 cat $i/Make.oldconfig.err
57                         fi
58                         parse-build.sh $i/Make.out $configfile
59                         parse-console.sh $i/console.log $configfile
60                         if test -r $i/Warnings
61                         then
62                                 cat $i/Warnings
63                         fi
64                 else
65                         if test -f "$i/buildonly"
66                         then
67                                 echo Build-only run, no boot/test
68                                 configcheck.sh $i/.config $i/ConfigFragment
69                                 parse-build.sh $i/Make.out $configfile
70                         elif test -f "$i/qemu-cmd"
71                         then
72                                 print_bug qemu failed
73                                 echo "   $i"
74                         else
75                                 print_bug Build failed
76                                 echo "   $i"
77                         fi
78                 fi
79         done
80         if test -f "$rd/kcsan.sum"
81         then
82                 if ! test -f $T
83                 then
84                         :
85                 elif grep -q CONFIG_KCSAN=y $T
86                 then
87                         echo "Compiler or architecture does not support KCSAN!"
88                         echo Did you forget to switch your compiler with '--kmake-arg CC=<cc-that-supports-kcsan>'?
89                 elif test -s "$rd/kcsan.sum"
90                 then
91                         echo KCSAN summary in $rd/kcsan.sum
92                 else
93                         echo Clean KCSAN run in $rd
94                 fi
95         fi
96 done
97 EDITOR=echo kvm-find-errors.sh "${@: -1}" > $T 2>&1
98 builderrors="`tr ' ' '\012' < $T | grep -c '/Make.out.diags'`"
99 if test "$builderrors" -gt 0
100 then
101         echo $builderrors runs with build errors.
102         ret=1
103 fi
104 runerrors="`tr ' ' '\012' < $T | grep -c '/console.log.diags'`"
105 if test "$runerrors" -gt 0
106 then
107         echo $runerrors runs with runtime errors.
108         ret=2
109 fi
110 exit $ret