79 lines
2.5 KiB
Bash
79 lines
2.5 KiB
Bash
#!/bin/bash
|
|
|
|
# This script processes a log file that was output by test_driver,
|
|
# giving lists of all variables with differences in values (those with
|
|
# RMS errors), and all variables with differences in fill patterns.
|
|
#
|
|
# This assumes that the log file contains output like:
|
|
# RMS foo
|
|
# RMS bar
|
|
# FILLDIFF foo
|
|
# FILLDIFF bar
|
|
# Some characteristics of these output lines are:
|
|
# - they begin with a leading space, followed by RMS or FILLDIFF
|
|
# - the variable name is in the second column of the line
|
|
#
|
|
# Note that (as of 4-5-12) the log file only contains output from the
|
|
# last file that didn't match, so this could potentially miss
|
|
# something -- especially if there are both h0 and h1 files in the
|
|
# comparison.
|
|
|
|
# Usage: show_var_diffs logfile
|
|
|
|
# ----------------------------------------------------------------------
|
|
# LOCAL FUNCTIONS DEFINED HERE
|
|
# ----------------------------------------------------------------------
|
|
|
|
# This function shows the differences for one prefix (e.g., "RMS")
|
|
# Usage: show_diffs prefix
|
|
# (also uses $logfile from the parent script)
|
|
#
|
|
# Matches lines that start with the regular expression "^ ${prefix}"
|
|
# (note that one leading space is expected before the prefix)
|
|
#
|
|
# Assumes that the variable name is in the second column of matching lines
|
|
function show_diffs {
|
|
prefix=$1
|
|
|
|
# first determine if there were warnings relating to this prefix
|
|
grep "WARNING: Too many instances of ${prefix}" $logfile > /dev/null
|
|
if [ $? -eq 0 ]; then # found a warning
|
|
echo "WARNING: Some output was truncated; this may not be a complete list"
|
|
fi
|
|
|
|
# now make a list of all variables matching this prefix
|
|
grep "^ ${prefix}" $logfile > $logfile.tmp.$$
|
|
if [ $? -eq 0 ]; then
|
|
awk '{print $2}' $logfile.tmp.$$ | sort | uniq
|
|
else
|
|
echo "(no differences)"
|
|
fi
|
|
|
|
rm $logfile.tmp.$$
|
|
}
|
|
|
|
# ----------------------------------------------------------------------
|
|
# BEGIN MAIN SCRIPT
|
|
# ----------------------------------------------------------------------
|
|
|
|
# ----------------------------------------------------------------------
|
|
# Handle command-line arguments
|
|
# ----------------------------------------------------------------------
|
|
|
|
if [[ $# -ne 1 ]]; then
|
|
echo "Usage: show_var_diffs logfile"
|
|
exit 1
|
|
fi
|
|
|
|
logfile=$1
|
|
|
|
# ----------------------------------------------------------------------
|
|
# Do the processing
|
|
# ----------------------------------------------------------------------
|
|
|
|
echo "Variables with differences in values:"
|
|
show_diffs "RMS"
|
|
|
|
echo ""
|
|
echo "Variables with differences in fill patterns:"
|
|
show_diffs "FILLDIFF" |