#! /usr/bin/env bash # $Header: /home/ubuntu/mnt/e9_copy/mitgcm.org/front_content/make_summary,v 1.32 2007/12/25 17:38:26 jmc 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 "latest" links echo "Creating the \"latest\" file for each machine: " LATEST=$OUTDIR"/latest_"$PERIOD".html" the_date=`date` 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" Fedora Core 3
Intel P4 "hemmingway" Fedora Core 3
Intel P3/P4 Beowulf "myrinet" MITgcm cluster facility
Alpha cluster "halem" NASA NCCS Halem
SGI Altix 350 "altix350" MIT ACESgrid GeoCluster
IBM POWER3 SP "bf" NCAR Blackforest
IBM POWER4 SP "bs" NCAR Bluesky
AMD Opteron "adams" Fedora Core 4 (AMD64)
Sun UltraSparc "slough" Solaris 8
Intel P4 Mosix Cluster "sea" Red Hat v7.2
Intel P4 "eddy" Fedora Core 5
AMD Opteron cluster "dolphin" SuSE SLES v8.1
IBM/Apple dual G5 "two" Mac OSX 10.3 (gcc 3.4)
ACESgrid Dell Xeon "aces"Fedora Core 2


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

EOF color="#bbffdd" ncolor="#bbddff" res_url="http://mitgcm.org/testing/" MACHINES="faulks aces eddy bay meander" MACHINES="$MACHINES edvir rays1 model columbia" MACHINES="$MACHINES xd1 batsi starp" ( cd $INDIR ; ls -1 -t ) > ./dir_all MALL=`cat ./dir_all | sed -e 's|_| |g' | awk '{print $2}' | sort | uniq` for madd in $MALL ; do present=0 for m in $MACHINES ; do echo $madd | grep $m > /dev/null 2>&1 RETVAL=$? test $RETVAL = 0 && present=1 continue done test $present = 0 && MACHINES="$MACHINES $madd" done for mname in $MACHINES ; do echo " $mname" 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= RESTART=0 if test -r $dir/summary.txt ; then comm=`grep 'ADJOINT=true' $dir/summary.txt 2>/dev/null` eval $comm RESTART=`grep -c 'test 2+2=4 summary' $dir/summary.txt` fi if test "x$RESTART" = x0 ; then kind="forward" test "x$ADJOINT" = xtrue && kind="adjoint" else kind="restart" fi t_pass="--" t_tot="--" if test -r $dir/summary.txt ; then grep '^[YN] [YN] [YN] [YN]' $dir/summary.txt > ./all_tests 2>/dev/null t_tot=`cat ./all_tests | wc -l | sed -e 's| ||g'` t_pass=`grep 'pass ' ./all_tests | wc -l | sed -e 's| ||g'` fi rm -f ./all_tests # echo "${dir##*/} : $t_pass out of $t_tot" 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 $t_pass:$t_tot" >> ./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 # swap colors ctmp=$color color=$ncolor ncolor=$ctmp keys=`cat ./mlist | cut -d " " -f 1 | sort | uniq` for key in $keys ; do tline=`grep "^$key " ./mlist | head -1` ratio=`echo $tline | cut -d " " -f 6` 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 Summary Ratio
$mname $optf $kind $DAY summary.txt $ratio
This table generated on: $the_date

Examples of the scripts used for these testing runs can be obtained from: MITgcm/tools/example_scripts.

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