162306a36Sopenharmony_ci#!/bin/sh 262306a36Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0+ 362306a36Sopenharmony_ci# 462306a36Sopenharmony_ci# Compares .out and .out.new files for each name on standard input, 562306a36Sopenharmony_ci# one full pathname per line. Outputs comparison results followed by 662306a36Sopenharmony_ci# a summary. 762306a36Sopenharmony_ci# 862306a36Sopenharmony_ci# sh cmplitmushist.sh 962306a36Sopenharmony_ci 1062306a36Sopenharmony_ciT=/tmp/cmplitmushist.sh.$$ 1162306a36Sopenharmony_citrap 'rm -rf $T' 0 1262306a36Sopenharmony_cimkdir $T 1362306a36Sopenharmony_ci 1462306a36Sopenharmony_ci# comparetest oldpath newpath 1562306a36Sopenharmony_cibadmacnam=0 1662306a36Sopenharmony_citimedout=0 1762306a36Sopenharmony_ciperfect=0 1862306a36Sopenharmony_ciobsline=0 1962306a36Sopenharmony_cinoobsline=0 2062306a36Sopenharmony_ciobsresult=0 2162306a36Sopenharmony_cibadcompare=0 2262306a36Sopenharmony_cicomparetest () { 2362306a36Sopenharmony_ci if grep -q ': Unknown macro ' $1 || grep -q ': Unknown macro ' $2 2462306a36Sopenharmony_ci then 2562306a36Sopenharmony_ci if grep -q ': Unknown macro ' $1 2662306a36Sopenharmony_ci then 2762306a36Sopenharmony_ci badname=`grep ': Unknown macro ' $1 | 2862306a36Sopenharmony_ci sed -e 's/^.*: Unknown macro //' | 2962306a36Sopenharmony_ci sed -e 's/ (User error).*$//'` 3062306a36Sopenharmony_ci echo 'Current LKMM version does not know "'$badname'"' $1 3162306a36Sopenharmony_ci fi 3262306a36Sopenharmony_ci if grep -q ': Unknown macro ' $2 3362306a36Sopenharmony_ci then 3462306a36Sopenharmony_ci badname=`grep ': Unknown macro ' $2 | 3562306a36Sopenharmony_ci sed -e 's/^.*: Unknown macro //' | 3662306a36Sopenharmony_ci sed -e 's/ (User error).*$//'` 3762306a36Sopenharmony_ci echo 'Current LKMM version does not know "'$badname'"' $2 3862306a36Sopenharmony_ci fi 3962306a36Sopenharmony_ci badmacnam=`expr "$badmacnam" + 1` 4062306a36Sopenharmony_ci return 0 4162306a36Sopenharmony_ci elif grep -q '^Command exited with non-zero status 124' $1 || 4262306a36Sopenharmony_ci grep -q '^Command exited with non-zero status 124' $2 4362306a36Sopenharmony_ci then 4462306a36Sopenharmony_ci if grep -q '^Command exited with non-zero status 124' $1 && 4562306a36Sopenharmony_ci grep -q '^Command exited with non-zero status 124' $2 4662306a36Sopenharmony_ci then 4762306a36Sopenharmony_ci echo Both runs timed out: $2 4862306a36Sopenharmony_ci elif grep -q '^Command exited with non-zero status 124' $1 4962306a36Sopenharmony_ci then 5062306a36Sopenharmony_ci echo Old run timed out: $2 5162306a36Sopenharmony_ci elif grep -q '^Command exited with non-zero status 124' $2 5262306a36Sopenharmony_ci then 5362306a36Sopenharmony_ci echo New run timed out: $2 5462306a36Sopenharmony_ci fi 5562306a36Sopenharmony_ci timedout=`expr "$timedout" + 1` 5662306a36Sopenharmony_ci return 0 5762306a36Sopenharmony_ci fi 5862306a36Sopenharmony_ci grep -v 'maxresident)k\|minor)pagefaults\|^Time' $1 > $T/oldout 5962306a36Sopenharmony_ci grep -v 'maxresident)k\|minor)pagefaults\|^Time' $2 > $T/newout 6062306a36Sopenharmony_ci if cmp -s $T/oldout $T/newout && grep -q '^Observation' $1 6162306a36Sopenharmony_ci then 6262306a36Sopenharmony_ci echo Exact output match: $2 6362306a36Sopenharmony_ci perfect=`expr "$perfect" + 1` 6462306a36Sopenharmony_ci return 0 6562306a36Sopenharmony_ci fi 6662306a36Sopenharmony_ci 6762306a36Sopenharmony_ci grep '^Observation' $1 > $T/oldout 6862306a36Sopenharmony_ci grep '^Observation' $2 > $T/newout 6962306a36Sopenharmony_ci if test -s $T/oldout -o -s $T/newout 7062306a36Sopenharmony_ci then 7162306a36Sopenharmony_ci if cmp -s $T/oldout $T/newout 7262306a36Sopenharmony_ci then 7362306a36Sopenharmony_ci echo Matching Observation result and counts: $2 7462306a36Sopenharmony_ci obsline=`expr "$obsline" + 1` 7562306a36Sopenharmony_ci return 0 7662306a36Sopenharmony_ci fi 7762306a36Sopenharmony_ci else 7862306a36Sopenharmony_ci echo Missing Observation line "(e.g., syntax error)": $2 7962306a36Sopenharmony_ci noobsline=`expr "$noobsline" + 1` 8062306a36Sopenharmony_ci return 0 8162306a36Sopenharmony_ci fi 8262306a36Sopenharmony_ci 8362306a36Sopenharmony_ci grep '^Observation' $1 | awk '{ print $3 }' > $T/oldout 8462306a36Sopenharmony_ci grep '^Observation' $2 | awk '{ print $3 }' > $T/newout 8562306a36Sopenharmony_ci if cmp -s $T/oldout $T/newout 8662306a36Sopenharmony_ci then 8762306a36Sopenharmony_ci echo Matching Observation Always/Sometimes/Never result: $2 8862306a36Sopenharmony_ci obsresult=`expr "$obsresult" + 1` 8962306a36Sopenharmony_ci return 0 9062306a36Sopenharmony_ci fi 9162306a36Sopenharmony_ci echo ' !!!' Result changed: $2 9262306a36Sopenharmony_ci badcompare=`expr "$badcompare" + 1` 9362306a36Sopenharmony_ci return 1 9462306a36Sopenharmony_ci} 9562306a36Sopenharmony_ci 9662306a36Sopenharmony_cised -e 's/^.*$/comparetest &.out &.out.new/' > $T/cmpscript 9762306a36Sopenharmony_ci. $T/cmpscript > $T/cmpscript.out 9862306a36Sopenharmony_cicat $T/cmpscript.out 9962306a36Sopenharmony_ci 10062306a36Sopenharmony_ciecho ' ---' Summary: 1>&2 10162306a36Sopenharmony_cigrep '!!!' $T/cmpscript.out 1>&2 10262306a36Sopenharmony_ciif test "$perfect" -ne 0 10362306a36Sopenharmony_cithen 10462306a36Sopenharmony_ci echo Exact output matches: $perfect 1>&2 10562306a36Sopenharmony_cifi 10662306a36Sopenharmony_ciif test "$obsline" -ne 0 10762306a36Sopenharmony_cithen 10862306a36Sopenharmony_ci echo Matching Observation result and counts: $obsline 1>&2 10962306a36Sopenharmony_cifi 11062306a36Sopenharmony_ciif test "$noobsline" -ne 0 11162306a36Sopenharmony_cithen 11262306a36Sopenharmony_ci echo Missing Observation line "(e.g., syntax error)": $noobsline 1>&2 11362306a36Sopenharmony_cifi 11462306a36Sopenharmony_ciif test "$obsresult" -ne 0 11562306a36Sopenharmony_cithen 11662306a36Sopenharmony_ci echo Matching Observation Always/Sometimes/Never result: $obsresult 1>&2 11762306a36Sopenharmony_cifi 11862306a36Sopenharmony_ciif test "$timedout" -ne 0 11962306a36Sopenharmony_cithen 12062306a36Sopenharmony_ci echo "!!!" Timed out: $timedout 1>&2 12162306a36Sopenharmony_cifi 12262306a36Sopenharmony_ciif test "$badmacnam" -ne 0 12362306a36Sopenharmony_cithen 12462306a36Sopenharmony_ci echo "!!!" Unknown primitive: $badmacnam 1>&2 12562306a36Sopenharmony_cifi 12662306a36Sopenharmony_ciif test "$badcompare" -ne 0 12762306a36Sopenharmony_cithen 12862306a36Sopenharmony_ci echo "!!!" Result changed: $badcompare 1>&2 12962306a36Sopenharmony_ci exit 1 13062306a36Sopenharmony_cifi 13162306a36Sopenharmony_ci 13262306a36Sopenharmony_ciexit 0 133