1*4882a593Smuzhiyun#!/bin/sh 2*4882a593Smuzhiyun# SPDX-License-Identifier: GPL-2.0+ 3*4882a593Smuzhiyun# 4*4882a593Smuzhiyun# Compares .out and .out.new files for each name on standard input, 5*4882a593Smuzhiyun# one full pathname per line. Outputs comparison results followed by 6*4882a593Smuzhiyun# a summary. 7*4882a593Smuzhiyun# 8*4882a593Smuzhiyun# sh cmplitmushist.sh 9*4882a593Smuzhiyun 10*4882a593SmuzhiyunT=/tmp/cmplitmushist.sh.$$ 11*4882a593Smuzhiyuntrap 'rm -rf $T' 0 12*4882a593Smuzhiyunmkdir $T 13*4882a593Smuzhiyun 14*4882a593Smuzhiyun# comparetest oldpath newpath 15*4882a593Smuzhiyunperfect=0 16*4882a593Smuzhiyunobsline=0 17*4882a593Smuzhiyunnoobsline=0 18*4882a593Smuzhiyunobsresult=0 19*4882a593Smuzhiyunbadcompare=0 20*4882a593Smuzhiyuncomparetest () { 21*4882a593Smuzhiyun grep -v 'maxresident)k\|minor)pagefaults\|^Time' $1 > $T/oldout 22*4882a593Smuzhiyun grep -v 'maxresident)k\|minor)pagefaults\|^Time' $2 > $T/newout 23*4882a593Smuzhiyun if cmp -s $T/oldout $T/newout && grep -q '^Observation' $1 24*4882a593Smuzhiyun then 25*4882a593Smuzhiyun echo Exact output match: $2 26*4882a593Smuzhiyun perfect=`expr "$perfect" + 1` 27*4882a593Smuzhiyun return 0 28*4882a593Smuzhiyun fi 29*4882a593Smuzhiyun 30*4882a593Smuzhiyun grep '^Observation' $1 > $T/oldout 31*4882a593Smuzhiyun grep '^Observation' $2 > $T/newout 32*4882a593Smuzhiyun if test -s $T/oldout -o -s $T/newout 33*4882a593Smuzhiyun then 34*4882a593Smuzhiyun if cmp -s $T/oldout $T/newout 35*4882a593Smuzhiyun then 36*4882a593Smuzhiyun echo Matching Observation result and counts: $2 37*4882a593Smuzhiyun obsline=`expr "$obsline" + 1` 38*4882a593Smuzhiyun return 0 39*4882a593Smuzhiyun fi 40*4882a593Smuzhiyun else 41*4882a593Smuzhiyun echo Missing Observation line "(e.g., herd7 timeout)": $2 42*4882a593Smuzhiyun noobsline=`expr "$noobsline" + 1` 43*4882a593Smuzhiyun return 0 44*4882a593Smuzhiyun fi 45*4882a593Smuzhiyun 46*4882a593Smuzhiyun grep '^Observation' $1 | awk '{ print $3 }' > $T/oldout 47*4882a593Smuzhiyun grep '^Observation' $2 | awk '{ print $3 }' > $T/newout 48*4882a593Smuzhiyun if cmp -s $T/oldout $T/newout 49*4882a593Smuzhiyun then 50*4882a593Smuzhiyun echo Matching Observation Always/Sometimes/Never result: $2 51*4882a593Smuzhiyun obsresult=`expr "$obsresult" + 1` 52*4882a593Smuzhiyun return 0 53*4882a593Smuzhiyun fi 54*4882a593Smuzhiyun echo ' !!!' Result changed: $2 55*4882a593Smuzhiyun badcompare=`expr "$badcompare" + 1` 56*4882a593Smuzhiyun return 1 57*4882a593Smuzhiyun} 58*4882a593Smuzhiyun 59*4882a593Smuzhiyunsed -e 's/^.*$/comparetest &.out &.out.new/' > $T/cmpscript 60*4882a593Smuzhiyun. $T/cmpscript > $T/cmpscript.out 61*4882a593Smuzhiyuncat $T/cmpscript.out 62*4882a593Smuzhiyun 63*4882a593Smuzhiyunecho ' ---' Summary: 1>&2 64*4882a593Smuzhiyungrep '!!!' $T/cmpscript.out 1>&2 65*4882a593Smuzhiyunif test "$perfect" -ne 0 66*4882a593Smuzhiyunthen 67*4882a593Smuzhiyun echo Exact output matches: $perfect 1>&2 68*4882a593Smuzhiyunfi 69*4882a593Smuzhiyunif test "$obsline" -ne 0 70*4882a593Smuzhiyunthen 71*4882a593Smuzhiyun echo Matching Observation result and counts: $obsline 1>&2 72*4882a593Smuzhiyunfi 73*4882a593Smuzhiyunif test "$noobsline" -ne 0 74*4882a593Smuzhiyunthen 75*4882a593Smuzhiyun echo Missing Observation line "(e.g., herd7 timeout)": $noobsline 1>&2 76*4882a593Smuzhiyunfi 77*4882a593Smuzhiyunif test "$obsresult" -ne 0 78*4882a593Smuzhiyunthen 79*4882a593Smuzhiyun echo Matching Observation Always/Sometimes/Never result: $obsresult 1>&2 80*4882a593Smuzhiyunfi 81*4882a593Smuzhiyunif test "$badcompare" -ne 0 82*4882a593Smuzhiyunthen 83*4882a593Smuzhiyun echo "!!!" Result changed: $badcompare 1>&2 84*4882a593Smuzhiyun exit 1 85*4882a593Smuzhiyunfi 86*4882a593Smuzhiyun 87*4882a593Smuzhiyunexit 0 88