#! /usr/bin/env bash # $Header: /home/ubuntu/mnt/e9_copy/mitgcm.org/front_content/make_summary,v 1.4 2003/12/07 06:52:17 edhill Exp $ # # The purpose of this script is to create HTML summaries of the # directories produced by the "parse_emails" script. usage() { echo echo "Usage: $0 [OPTIONS]" echo echo "where possible OPTIONS are:" echo " (-help|-h) print usage" echo " (-date |-d )PERIOD run for PERIOD=\"YYYY_MM\"" echo " [def=\"$PERIOD\"]" echo exit 1 } # defaults PERIOD=`date +%Y`"_"`date +%m` # Parse options ac_prev= for ac_option ; do # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then eval "$ac_prev=\$ac_option" ac_prev= continue fi ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'` case $ac_option in -help | --help | -h | --h) usage ;; -date | --date | -d | --d) ac_prev=PERIOD ;; --date=* | -date=*) PERIOD=$ac_optarg ;; *) echo "Error: don't understand argument \"$ac_option\"" usage ;; esac done INDIR="/u/u0/httpd/html/testing/results/$PERIOD" OUTDIR="/u/u0/httpd/html/testing/summary" OUTFILE=$OUTDIR"/summary_"$PERIOD".html" # Create the summary file for $PERIOD echo -n "Creating the summary file for the period \"$PERIOD\" ... " cat > $OUTFILE << EOF MITgcm testing summary EOF # all_files=`find $INDIR -name summary.txt` all_files=`( cd $INDIR ; find . -name summary.txt )` for f in $all_files ; do file=$INDIR"/"${f/.\//} grep "^fresults" $file > /dev/null 2>&1 RETVAL=$? if test "x$RETVAL" != x0 ; then continue fi url=`echo $file | sed -e 's|/u/edhill/www|http://mitgcm.org/~edhill|'` url=`echo $url | sed -e 's|summary.txt||'` MACH= fresults= color="#eeeeee" source $file echo $fresults | grep FAIL > /dev/null 2>&1 if test "x$?" = x0 ; then color="#ff99ff" fi echo $fresults | grep pass > /dev/null 2>&1 if test "x$?" = x0 ; then color="#99ffff" fi gm_state=`echo $file | sed -e 's/summary.txt/genmake_state/g'` if test -r $gm_state ; then grep '^OPTFILE=' $gm_state > ./tmp_state source ./tmp_state else optfile="unknown" fi optfile=`echo $OPTFILE | awk -F '/' '{print $NF}'` echo "" >> $OUTFILE echo "" >> $OUTFILE echo "" >> $OUTFILE for i in $fresults ; do if test "x$i" = xN ; then echo -n "" >> $OUTFILE else echo -n "" >> $OUTFILE fi done echo "" >> $OUTFILE echo "" >> $OUTFILE done cat >> $OUTFILE << EOF
$MACH$DATE$i$i$optfile
EOF chmod a+r $OUTFILE echo "done" # Create the "latest" links echo "Creating the \"latest\" file for each machine: " LATEST=$OUTDIR"/latest_"$PERIOD".html" cat > $LATEST << EOF MITgcm testing summary

The MITgcm model is tested (compiled and run) in an automated fashion on a varirety of different machines. The following is a summary of the MITgcm verification suite for the time period: $PERIOD.

The machine naming scheme is:

Machine Type Nickname Notes
Intel P4 "faulks" Red Hat 7.3 (the "original" testing machine)
Intel P4 "shelley" Red Hat 9
Intel P3/P4 Beowulf "myrinet" MITgcm cluster facility
Alpha cluster "halem" NASA NCCS Halem
SGI Origin 2000 "hopper" NAS SGI Origin 2000
SGI Origin 3000 "lomax" NAS SGI Origin 3000
SGI Altix "orion" JPL Supercomputing and Visualization Facility
IBM POWER3 SP "bf" NCAR Blackforest
IBM POWER4 SP "bs" NCAR Bluesky
AMD Opteron "eaps" SuSE Linux 9.0 (x86-64)


The complete output for the verification runs can be found in the summary pages. The latest reports are:

EOF color="#bbffdd" res_url="http://mitgcm.org/testing/" MACHINES="faulks shelley myrinet eaps halem hopper lomax orion bf bs" ( cd $INDIR ; ls -1 ) > ./dir_all for mname in $MACHINES ; do echo " $mname" if test "x$color" = x#bbffdd ; then color="#bbddff" else color="#bbffdd" fi dir_list=`grep $mname ./dir_all` echo -n "" > ./mlist for i in $dir_list ; do dir=$INDIR"/"$i OPTFILE= if test -r $dir/summary.txt ; then comm=`grep 'OPTFILE=' $dir/summary.txt` eval $comm OPTFILE=${OPTFILE##*/} fi if test "x$OPTFILE" = x -a -r "$dir/genmake_state" ; then comm=`grep 'OPTFILE=' $dir/genmake_state 2>/dev/null` eval $comm OPTFILE=${OPTFILE##*/} fi if test "x$OPTFILE" = x ; then comm=`grep '^# OPTFILE=' $dir/*/Makefile 2>/dev/null | head -1` comm=${comm##*#} eval $comm OPTFILE=${OPTFILE##*/} fi if test "x$OPTFILE" = x ; then OPTFILE="not_explicitly_specified" fi ADJOINT= if test -r $dir/summary.txt ; then comm=`grep 'ADJOINT=true' $dir/summary.txt 2>/dev/null` eval $comm fi if test "x$ADJOINT" = x ; then kind="forward" else test "x$ADJOINT" = xtrue && kind="adjoint" fi tokens=`echo $i | sed -e 's|_| |g'` echo "" > ./ms_tmp for tok in $tokens ; do echo $tok >> ./ms_tmp done DAY=`cat ./ms_tmp | awk '(length($1)==8 && substr($1,0,3)=="200")'` rm -f ./ms_tmp echo "$OPTFILE$kind $DAY $OPTFILE $kind $i" >> ./mlist done # helpful for debugging # cat ./mlist # Do we have any data? If so, create the latest pointer. num=`wc -l ./mlist | awk '{print $1}'` if test $num -gt 0 ; then keys=`cat ./mlist | cut -d " " -f 1 | sort | uniq` for key in $keys ; do tline=`grep "^$key " ./mlist | sort -r | head -1` ldir=`echo $tline | cut -d " " -f 5` kind=`echo $tline | cut -d " " -f 4` optf=`echo $tline | cut -d " " -f 3` DAY=`echo $tline | cut -d " " -f 2` URL="results/$PERIOD/$ldir" cat <>$LATEST EOF done fi done cat >> $LATEST << EOF
Nickname OPTFILE Name Type Date (yyyymmdd) Summary
$mname $optf $kind $DAY summary.txt
EOF rm -f ./dir_all ./mlist CURR_PER=`date +%Y`"_"`date +%m` if test "x$PERIOD" = "x$CURR_PER" ; then cp $LATEST ./testing.xml ( cd $OUTDIR rm -f latest.html ln -s $LATEST latest.html ) fi