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