Commit | Line | Data |
---|---|---|
b02eb5b0 PM |
1 | #!/bin/sh |
2 | # SPDX-License-Identifier: GPL-2.0+ | |
3 | # | |
4 | # Compares .out and .out.new files for each name on standard input, | |
5 | # one full pathname per line. Outputs comparison results followed by | |
6 | # a summary. | |
7 | # | |
8 | # sh cmplitmushist.sh | |
9 | ||
10 | T=/tmp/cmplitmushist.sh.$$ | |
11 | trap 'rm -rf $T' 0 | |
12 | mkdir $T | |
13 | ||
14 | # comparetest oldpath newpath | |
02484d82 | 15 | badmacnam=0 |
b1da11c9 | 16 | timedout=0 |
b02eb5b0 PM |
17 | perfect=0 |
18 | obsline=0 | |
19 | noobsline=0 | |
20 | obsresult=0 | |
21 | badcompare=0 | |
22 | comparetest () { | |
02484d82 PM |
23 | if grep -q ': Unknown macro ' $1 || grep -q ': Unknown macro ' $2 |
24 | then | |
25 | if grep -q ': Unknown macro ' $1 | |
26 | then | |
27 | badname=`grep ': Unknown macro ' $1 | | |
28 | sed -e 's/^.*: Unknown macro //' | | |
29 | sed -e 's/ (User error).*$//'` | |
30 | echo 'Current LKMM version does not know "'$badname'"' $1 | |
31 | fi | |
32 | if grep -q ': Unknown macro ' $2 | |
33 | then | |
34 | badname=`grep ': Unknown macro ' $2 | | |
35 | sed -e 's/^.*: Unknown macro //' | | |
36 | sed -e 's/ (User error).*$//'` | |
37 | echo 'Current LKMM version does not know "'$badname'"' $2 | |
38 | fi | |
39 | badmacnam=`expr "$badmacnam" + 1` | |
40 | return 0 | |
41 | elif grep -q '^Command exited with non-zero status 124' $1 || | |
42 | grep -q '^Command exited with non-zero status 124' $2 | |
b1da11c9 PM |
43 | then |
44 | if grep -q '^Command exited with non-zero status 124' $1 && | |
45 | grep -q '^Command exited with non-zero status 124' $2 | |
46 | then | |
47 | echo Both runs timed out: $2 | |
48 | elif grep -q '^Command exited with non-zero status 124' $1 | |
49 | then | |
50 | echo Old run timed out: $2 | |
51 | elif grep -q '^Command exited with non-zero status 124' $2 | |
52 | then | |
53 | echo New run timed out: $2 | |
54 | fi | |
55 | timedout=`expr "$timedout" + 1` | |
56 | return 0 | |
57 | fi | |
b02eb5b0 PM |
58 | grep -v 'maxresident)k\|minor)pagefaults\|^Time' $1 > $T/oldout |
59 | grep -v 'maxresident)k\|minor)pagefaults\|^Time' $2 > $T/newout | |
60 | if cmp -s $T/oldout $T/newout && grep -q '^Observation' $1 | |
61 | then | |
62 | echo Exact output match: $2 | |
63 | perfect=`expr "$perfect" + 1` | |
64 | return 0 | |
65 | fi | |
66 | ||
67 | grep '^Observation' $1 > $T/oldout | |
68 | grep '^Observation' $2 > $T/newout | |
69 | if test -s $T/oldout -o -s $T/newout | |
70 | then | |
71 | if cmp -s $T/oldout $T/newout | |
72 | then | |
73 | echo Matching Observation result and counts: $2 | |
74 | obsline=`expr "$obsline" + 1` | |
75 | return 0 | |
76 | fi | |
77 | else | |
02484d82 | 78 | echo Missing Observation line "(e.g., syntax error)": $2 |
b02eb5b0 PM |
79 | noobsline=`expr "$noobsline" + 1` |
80 | return 0 | |
81 | fi | |
82 | ||
83 | grep '^Observation' $1 | awk '{ print $3 }' > $T/oldout | |
84 | grep '^Observation' $2 | awk '{ print $3 }' > $T/newout | |
85 | if cmp -s $T/oldout $T/newout | |
86 | then | |
87 | echo Matching Observation Always/Sometimes/Never result: $2 | |
88 | obsresult=`expr "$obsresult" + 1` | |
89 | return 0 | |
90 | fi | |
91 | echo ' !!!' Result changed: $2 | |
92 | badcompare=`expr "$badcompare" + 1` | |
93 | return 1 | |
94 | } | |
95 | ||
96 | sed -e 's/^.*$/comparetest &.out &.out.new/' > $T/cmpscript | |
97 | . $T/cmpscript > $T/cmpscript.out | |
98 | cat $T/cmpscript.out | |
99 | ||
100 | echo ' ---' Summary: 1>&2 | |
101 | grep '!!!' $T/cmpscript.out 1>&2 | |
102 | if test "$perfect" -ne 0 | |
103 | then | |
104 | echo Exact output matches: $perfect 1>&2 | |
105 | fi | |
106 | if test "$obsline" -ne 0 | |
107 | then | |
108 | echo Matching Observation result and counts: $obsline 1>&2 | |
109 | fi | |
110 | if test "$noobsline" -ne 0 | |
111 | then | |
02484d82 | 112 | echo Missing Observation line "(e.g., syntax error)": $noobsline 1>&2 |
b02eb5b0 PM |
113 | fi |
114 | if test "$obsresult" -ne 0 | |
115 | then | |
116 | echo Matching Observation Always/Sometimes/Never result: $obsresult 1>&2 | |
117 | fi | |
b1da11c9 PM |
118 | if test "$timedout" -ne 0 |
119 | then | |
120 | echo "!!!" Timed out: $timedout 1>&2 | |
121 | fi | |
02484d82 PM |
122 | if test "$badmacnam" -ne 0 |
123 | then | |
124 | echo "!!!" Unknown primitive: $badmacnam 1>&2 | |
125 | fi | |
b02eb5b0 PM |
126 | if test "$badcompare" -ne 0 |
127 | then | |
128 | echo "!!!" Result changed: $badcompare 1>&2 | |
129 | exit 1 | |
130 | fi | |
131 | ||
132 | exit 0 |