18c2ecf20Sopenharmony_ci#!/bin/sh
28c2ecf20Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0+
38c2ecf20Sopenharmony_ci#
48c2ecf20Sopenharmony_ci# Compares .out and .out.new files for each name on standard input,
58c2ecf20Sopenharmony_ci# one full pathname per line.  Outputs comparison results followed by
68c2ecf20Sopenharmony_ci# a summary.
78c2ecf20Sopenharmony_ci#
88c2ecf20Sopenharmony_ci# sh cmplitmushist.sh
98c2ecf20Sopenharmony_ci
108c2ecf20Sopenharmony_ciT=/tmp/cmplitmushist.sh.$$
118c2ecf20Sopenharmony_citrap 'rm -rf $T' 0
128c2ecf20Sopenharmony_cimkdir $T
138c2ecf20Sopenharmony_ci
148c2ecf20Sopenharmony_ci# comparetest oldpath newpath
158c2ecf20Sopenharmony_ciperfect=0
168c2ecf20Sopenharmony_ciobsline=0
178c2ecf20Sopenharmony_cinoobsline=0
188c2ecf20Sopenharmony_ciobsresult=0
198c2ecf20Sopenharmony_cibadcompare=0
208c2ecf20Sopenharmony_cicomparetest () {
218c2ecf20Sopenharmony_ci	grep -v 'maxresident)k\|minor)pagefaults\|^Time' $1 > $T/oldout
228c2ecf20Sopenharmony_ci	grep -v 'maxresident)k\|minor)pagefaults\|^Time' $2 > $T/newout
238c2ecf20Sopenharmony_ci	if cmp -s $T/oldout $T/newout && grep -q '^Observation' $1
248c2ecf20Sopenharmony_ci	then
258c2ecf20Sopenharmony_ci		echo Exact output match: $2
268c2ecf20Sopenharmony_ci		perfect=`expr "$perfect" + 1`
278c2ecf20Sopenharmony_ci		return 0
288c2ecf20Sopenharmony_ci	fi
298c2ecf20Sopenharmony_ci
308c2ecf20Sopenharmony_ci	grep '^Observation' $1 > $T/oldout
318c2ecf20Sopenharmony_ci	grep '^Observation' $2 > $T/newout
328c2ecf20Sopenharmony_ci	if test -s $T/oldout -o -s $T/newout
338c2ecf20Sopenharmony_ci	then
348c2ecf20Sopenharmony_ci		if cmp -s $T/oldout $T/newout
358c2ecf20Sopenharmony_ci		then
368c2ecf20Sopenharmony_ci			echo Matching Observation result and counts: $2
378c2ecf20Sopenharmony_ci			obsline=`expr "$obsline" + 1`
388c2ecf20Sopenharmony_ci			return 0
398c2ecf20Sopenharmony_ci		fi
408c2ecf20Sopenharmony_ci	else
418c2ecf20Sopenharmony_ci		echo Missing Observation line "(e.g., herd7 timeout)": $2
428c2ecf20Sopenharmony_ci		noobsline=`expr "$noobsline" + 1`
438c2ecf20Sopenharmony_ci		return 0
448c2ecf20Sopenharmony_ci	fi
458c2ecf20Sopenharmony_ci
468c2ecf20Sopenharmony_ci	grep '^Observation' $1 | awk '{ print $3 }' > $T/oldout
478c2ecf20Sopenharmony_ci	grep '^Observation' $2 | awk '{ print $3 }' > $T/newout
488c2ecf20Sopenharmony_ci	if cmp -s $T/oldout $T/newout
498c2ecf20Sopenharmony_ci	then
508c2ecf20Sopenharmony_ci		echo Matching Observation Always/Sometimes/Never result: $2
518c2ecf20Sopenharmony_ci		obsresult=`expr "$obsresult" + 1`
528c2ecf20Sopenharmony_ci		return 0
538c2ecf20Sopenharmony_ci	fi
548c2ecf20Sopenharmony_ci	echo ' !!!' Result changed: $2
558c2ecf20Sopenharmony_ci	badcompare=`expr "$badcompare" + 1`
568c2ecf20Sopenharmony_ci	return 1
578c2ecf20Sopenharmony_ci}
588c2ecf20Sopenharmony_ci
598c2ecf20Sopenharmony_cised -e 's/^.*$/comparetest &.out &.out.new/' > $T/cmpscript
608c2ecf20Sopenharmony_ci. $T/cmpscript > $T/cmpscript.out
618c2ecf20Sopenharmony_cicat $T/cmpscript.out
628c2ecf20Sopenharmony_ci
638c2ecf20Sopenharmony_ciecho ' ---' Summary: 1>&2
648c2ecf20Sopenharmony_cigrep '!!!' $T/cmpscript.out 1>&2
658c2ecf20Sopenharmony_ciif test "$perfect" -ne 0
668c2ecf20Sopenharmony_cithen
678c2ecf20Sopenharmony_ci	echo Exact output matches: $perfect 1>&2
688c2ecf20Sopenharmony_cifi
698c2ecf20Sopenharmony_ciif test "$obsline" -ne 0
708c2ecf20Sopenharmony_cithen
718c2ecf20Sopenharmony_ci	echo Matching Observation result and counts: $obsline 1>&2
728c2ecf20Sopenharmony_cifi
738c2ecf20Sopenharmony_ciif test "$noobsline" -ne 0
748c2ecf20Sopenharmony_cithen
758c2ecf20Sopenharmony_ci	echo Missing Observation line "(e.g., herd7 timeout)": $noobsline 1>&2
768c2ecf20Sopenharmony_cifi
778c2ecf20Sopenharmony_ciif test "$obsresult" -ne 0
788c2ecf20Sopenharmony_cithen
798c2ecf20Sopenharmony_ci	echo Matching Observation Always/Sometimes/Never result: $obsresult 1>&2
808c2ecf20Sopenharmony_cifi
818c2ecf20Sopenharmony_ciif test "$badcompare" -ne 0
828c2ecf20Sopenharmony_cithen
838c2ecf20Sopenharmony_ci	echo "!!!" Result changed: $badcompare 1>&2
848c2ecf20Sopenharmony_ci	exit 1
858c2ecf20Sopenharmony_cifi
868c2ecf20Sopenharmony_ci
878c2ecf20Sopenharmony_ciexit 0
88