Loading...
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
10T=/tmp/cmplitmushist.sh.$$
11trap 'rm -rf $T' 0
12mkdir $T
13
14# comparetest oldpath newpath
15badmacnam=0
16timedout=0
17perfect=0
18obsline=0
19noobsline=0
20obsresult=0
21badcompare=0
22comparetest () {
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
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
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
78 echo Missing Observation line "(e.g., syntax error)": $2
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
96sed -e 's/^.*$/comparetest &.out &.out.new/' > $T/cmpscript
97. $T/cmpscript > $T/cmpscript.out
98cat $T/cmpscript.out
99
100echo ' ---' Summary: 1>&2
101grep '!!!' $T/cmpscript.out 1>&2
102if test "$perfect" -ne 0
103then
104 echo Exact output matches: $perfect 1>&2
105fi
106if test "$obsline" -ne 0
107then
108 echo Matching Observation result and counts: $obsline 1>&2
109fi
110if test "$noobsline" -ne 0
111then
112 echo Missing Observation line "(e.g., syntax error)": $noobsline 1>&2
113fi
114if test "$obsresult" -ne 0
115then
116 echo Matching Observation Always/Sometimes/Never result: $obsresult 1>&2
117fi
118if test "$timedout" -ne 0
119then
120 echo "!!!" Timed out: $timedout 1>&2
121fi
122if test "$badmacnam" -ne 0
123then
124 echo "!!!" Unknown primitive: $badmacnam 1>&2
125fi
126if test "$badcompare" -ne 0
127then
128 echo "!!!" Result changed: $badcompare 1>&2
129 exit 1
130fi
131
132exit 0
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
10T=/tmp/cmplitmushist.sh.$$
11trap 'rm -rf $T' 0
12mkdir $T
13
14# comparetest oldpath newpath
15perfect=0
16obsline=0
17noobsline=0
18obsresult=0
19badcompare=0
20comparetest () {
21 grep -v 'maxresident)k\|minor)pagefaults\|^Time' $1 > $T/oldout
22 grep -v 'maxresident)k\|minor)pagefaults\|^Time' $2 > $T/newout
23 if cmp -s $T/oldout $T/newout && grep -q '^Observation' $1
24 then
25 echo Exact output match: $2
26 perfect=`expr "$perfect" + 1`
27 return 0
28 fi
29
30 grep '^Observation' $1 > $T/oldout
31 grep '^Observation' $2 > $T/newout
32 if test -s $T/oldout -o -s $T/newout
33 then
34 if cmp -s $T/oldout $T/newout
35 then
36 echo Matching Observation result and counts: $2
37 obsline=`expr "$obsline" + 1`
38 return 0
39 fi
40 else
41 echo Missing Observation line "(e.g., herd7 timeout)": $2
42 noobsline=`expr "$noobsline" + 1`
43 return 0
44 fi
45
46 grep '^Observation' $1 | awk '{ print $3 }' > $T/oldout
47 grep '^Observation' $2 | awk '{ print $3 }' > $T/newout
48 if cmp -s $T/oldout $T/newout
49 then
50 echo Matching Observation Always/Sometimes/Never result: $2
51 obsresult=`expr "$obsresult" + 1`
52 return 0
53 fi
54 echo ' !!!' Result changed: $2
55 badcompare=`expr "$badcompare" + 1`
56 return 1
57}
58
59sed -e 's/^.*$/comparetest &.out &.out.new/' > $T/cmpscript
60. $T/cmpscript > $T/cmpscript.out
61cat $T/cmpscript.out
62
63echo ' ---' Summary: 1>&2
64grep '!!!' $T/cmpscript.out 1>&2
65if test "$perfect" -ne 0
66then
67 echo Exact output matches: $perfect 1>&2
68fi
69if test "$obsline" -ne 0
70then
71 echo Matching Observation result and counts: $obsline 1>&2
72fi
73if test "$noobsline" -ne 0
74then
75 echo Missing Observation line "(e.g., herd7 timeout)": $noobsline 1>&2
76fi
77if test "$obsresult" -ne 0
78then
79 echo Matching Observation Always/Sometimes/Never result: $obsresult 1>&2
80fi
81if test "$badcompare" -ne 0
82then
83 echo "!!!" Result changed: $badcompare 1>&2
84 exit 1
85fi
86
87exit 0