--- mitgcm.org/front_content/make_summary	2003/12/06 20:06:58	1.1
+++ mitgcm.org/front_content/make_summary	2009/02/16 18:07:20	1.48
@@ -1,6 +1,6 @@
 #! /usr/bin/env bash
 
-# $Header: /home/ubuntu/mnt/e9_copy/mitgcm.org/front_content/make_summary,v 1.1 2003/12/06 20:06:58 edhill Exp $
+# $Header: /home/ubuntu/mnt/e9_copy/mitgcm.org/front_content/make_summary,v 1.48 2009/02/16 18:07:20 jmc Exp $
 #
 #  The purpose of this script is to create HTML summaries of the
 #  directories produced by the "parse_emails" script.
@@ -19,22 +19,23 @@
     exit 1
 }
 
+CURR_PER=`date +%Y`"_"`date +%m`
 # defaults
-PERIOD=`date +%Y`"_"`date +%m`
+PERIOD=$CURR_PER
 
 #  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)
@@ -44,106 +45,28 @@
             ac_prev=PERIOD ;;
         --date=* | -date=*)
             PERIOD=$ac_optarg ;;
-        
+
         *)
 	    echo "Error: don't understand argument \"$ac_option\""
 	    usage
             ;;
-        
+
      esac
-     
+
 done
 
+#INDIR="/net/orwell/export/export-9/mitgcm-testing/results/$PERIOD"
+#OUTDIR="/home/jmc/mitgcm/test_web/summary"
 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 "| $MACH | " >> $OUTFILE
-    echo "$DATE | " >> $OUTFILE
-    for i in $fresults ; do
-        if test "x$i" = xN ; then
-            echo -n "$i | " >> $OUTFILE
-        else
-	    echo -n "$i | " >> $OUTFILE
-	fi
-    done
-    echo "$optfile | " >> $OUTFILE
-    echo "
" >> $OUTFILE
-
-done
-
-cat >> $OUTFILE << EOF
-
-    
-  
-
-
-EOF
-
-chmod a+r $OUTFILE
-echo "done"
 
+OUTFILE=$OUTDIR"/output_"$PERIOD".html"
+res_url="http://mitgcm.org/testing/"
 
-#  Create the "latest" links
+#  Create the links in $OUTFILE :
 echo "Creating the \"latest\" file for each machine: "
-LATEST=$OUTDIR"/latest_"$PERIOD".html"
-cat > $LATEST << EOF
+the_date=`date`
+cat > $OUTFILE << EOF
 
 
@@ -155,82 +78,175 @@
     
 
     
-    
-    
+    
+    
     
     
     
 
   
   
-    The following are the most recent MITgcm testing runs for the 
-      time period $PERIOD.
-      The machine naming scheme is:
-    
-       | Machine |  "Nickname" | 
+    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:
+    
-    
+
+    
+      The complete output for the verification runs can be found in
+      the summary pages
+      and the testing archives.
+      The latest reports are:
     
 
-  |  "Nickname"  | 
+   Nickname  | 
    OPTFILE Name  | 
-   Date (YYYYMMDD)  | 
+   Type  | 
+   Date  | 
+   Summary  | 
+   Ratio  | 
 
 
 EOF
 
 color="#bbffdd"
-res_url="http://mitgcm.org/testing/"
-
-MACHINES="faulks shelley myrinet halem hopper lomax orion bf bs"
+ncolor="#bbddff"
 
-( cd $INDIR ; ls -1 ) > ./dir_all
+MACHINES="faulks aces eddy bay meander lagoon hugo"
+MACHINES="$MACHINES columbia edvir rays solssrv solasrv sx8 xd1"
+MACHINES="$MACHINES beagle batsi starp"
+
+( cd $INDIR ; ls -1 -t */summary.txt | sed 's/\/summary.txt//' ) > ./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
+#MACHINES="faulks"
 
 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
@@ -245,18 +261,49 @@
 	    OPTFILE=${OPTFILE##*/}
 	fi
 	if test "x$OPTFILE" = x -a -r "$dir/genmake_state" ; then
-	    comm=`grep 'OPTFILE=' $dir/genmake_state`
+	    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 | sed -e 's|^# ||'`
+	    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
+	NOI3E=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`
+	    NOI3E=`grep -c "^run: .*testreport .* '*-noieee'* " $dir/summary.txt`
+	fi
+	if test "x$RESTART" = x0 ; then
+	    kind="forward"
+	    test "x$ADJOINT" = xtrue  &&  kind="adjoint"
+	else
+	    kind="restart"
+	fi
+	if test "x$NOI3E" = x1 ; then
+	    OPTFILE="${OPTFILE}.noieee"
+	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 '^Y Y Y Y' ./all_tests | grep 'pass ' | 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
@@ -264,7 +311,8 @@
 	done
 	DAY=`cat ./ms_tmp | awk '(length($1)==8 && substr($1,0,3)=="200")'`
 	rm -f ./ms_tmp
-	echo "$OPTFILE $DAY $i" >> ./mlist
+
+	echo "$OPTFILE$kind $DAY $OPTFILE $kind $i $t_pass:$t_tot" >> ./mlist
 
     done
 
@@ -274,16 +322,30 @@
     #  Do we have any data?  If so, create the latest pointer.
     num=`wc -l ./mlist | awk '{print $1}'`
     if test $num -gt 0 ; then
-	optfiles=`cat ./mlist | cut -d " " -f 1 | sort | uniq`
 
-	for optf in $optfiles ; do
-	    ldir=`grep "^$optf " ./mlist | sort -r | head -1 | cut -d " " -f 3`
+	# 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
+	    cat <>$OUTFILE
 
-  |  $mname  | 
+   $mname  | 
    $optf  | 
-   $DAY  | 
+   $kind  | 
+   $DAY  | 
+    summary.txt   | 
+   $ratio  | 
 
 EOF
 	done
@@ -291,9 +353,18 @@
 
 done
 
-cat >> $LATEST << EOF
+cat >> $OUTFILE << EOF
+
+  | This table generated on: $the_date | 
+
 
     
+
+Examples of the scripts used for these testing runs can be obtained from: 
+MITgcm/tools/example_scripts.
+
+