/[MITgcm]/MITgcm/verification/testreport
ViewVC logotype

Diff of /MITgcm/verification/testreport

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph | View Patch Patch

revision 1.49 by edhill, Tue Nov 23 21:25:24 2004 UTC revision 1.72 by edhill, Tue Aug 16 17:50:31 2005 UTC
# Line 27  usage() Line 27  usage()
27      echo "                             (DEF=\"make output.txt\")"      echo "                             (DEF=\"make output.txt\")"
28      echo "  (-m|-make) STRING        command to use for \"make\""      echo "  (-m|-make) STRING        command to use for \"make\""
29      echo "                             (DEF=\"make\")"      echo "                             (DEF=\"make\")"
30        echo "  (-odir) STRING           used to build output directory name"
31        echo "                             (DEF=\"hostname\")"
32        echo "  (-ptracers|-ptr) STRING  specify which ptracers to test"
33        echo "                             (DEF=\"1 2 3 4 5\")"
34      echo "  (-j) JOBS                use \"make -j JOBS\" for parallel builds"      echo "  (-j) JOBS                use \"make -j JOBS\" for parallel builds"
35      echo "  (-clean)                 *ONLY* run \"make CLEAN\""      echo "  (-clean)                 *ONLY* run \"make CLEAN\""
36      echo "  (-quick|-q)              same as \"-nogenmake -noclean -nodepend\""      echo "  (-quick|-q)              same as \"-nogenmake -noclean -nodepend\""
# Line 35  usage() Line 39  usage()
39      echo "  (-nodepend|-nd)          skip the \"make depend\" stage"      echo "  (-nodepend|-nd)          skip the \"make depend\" stage"
40      echo "  (-deldir|-dd)            on success, delete the output directory"      echo "  (-deldir|-dd)            on success, delete the output directory"
41      echo      echo
42      echo "and where STRING follows a whitespace-delimited format"      echo "and where STRING can be a whitespace-delimited list"
43      echo "such as:"      echo "such as:"
44        echo
45      echo "  -t 'exp0 exp2 exp3' "      echo "  -t 'exp0 exp2 exp3' "
46      echo "  -addr='abc@123.com testing@home.org'"      echo "  -addr='abc@123.com testing@home.org'"
47      echo      echo
48        echo "provided that the expression is properly quoted within the current"
49        echo "shell (note the use of single quotes to protect white space)."
50        echo
51      exit 1      exit 1
52  }  }
53    
# Line 89  testoutput_for_prop() Line 97  testoutput_for_prop()
97      fi      fi
98      if [ -r $1/$4/output.txt ]; then      if [ -r $1/$4/output.txt ]; then
99          grep "$2" $1/$4/output.txt | sed 's/.*=//' | cat -n > tmp1.txt          grep "$2" $1/$4/output.txt | sed 's/.*=//' | cat -n > tmp1.txt
100          lncnt=`wc -l tmp1.txt | awk '{print $1}' `          lncntA=`wc -l tmp1.txt | awk '{print $1}' `
101          if [ $lncnt -lt 3 ]; then          if [ $lncntA -lt 3 ]; then
102              if [ $verbose -gt 0 ]; then              if [ $verbose -gt 0 ]; then
103                  echo Not enough lines of output when searching for "$2" 1>&2                  echo Not enough lines of output when searching for "$2" 1>&2
104              fi              fi
# Line 104  testoutput_for_prop() Line 112  testoutput_for_prop()
112          echo testoutput_for_prop: grep "$2" $1/results/output.txt$5 1>&2          echo testoutput_for_prop: grep "$2" $1/results/output.txt$5 1>&2
113      fi      fi
114      grep "$2" $1/results/output.txt$5 | sed 's/.*=//' | cat -n > tmp2.txt      grep "$2" $1/results/output.txt$5 | sed 's/.*=//' | cat -n > tmp2.txt
115      lncnt=`wc -l tmp2.txt | awk '{print $1}' `      lncntB=`wc -l tmp2.txt | awk '{print $1}' `
116      if [ $lncnt -lt 3 ]; then      if [ $lncntB -lt 3 ]; then
117          if [ $verbose -gt 0 ]; then          if [ $verbose -gt 0 ]; then
118              echo Not enough lines of output when searching for "$2" 1>&2              echo Not enough lines of output when searching for "$2" 1>&2
119          fi          fi
120          return 99          return 99
121      fi      fi
122        if [ $lncntA -ne $lncntB ]; then
123            if [ $verbose -gt 0 ]; then
124                echo Not same Nb of lines when searching for "$2" ":" $lncntA $lncntB 1>&2
125            fi
126            return 99
127        fi
128        has_nan=`cat tmp1.txt | grep -i nan | wc -l`
129        if [ $has_nan -gt 0  ] ; then
130            echo testoutput_for_prop: output.txt contains $has_nan NaN values  1>&2
131            return 99
132        fi
133        has_inf=`cat tmp1.txt | grep -i inf | wc -l`
134        if [ $has_inf -gt 0  ] ; then
135            echo testoutput_for_prop: output.txt contains $has_inf Inf values  1>&2
136            return 99
137        fi
138      if [ $debug -gt 0 ]; then      if [ $debug -gt 0 ]; then
139          echo testoutput_for_prop: join tmp1.txt tmp2.txt 1>&2          echo testoutput_for_prop: join tmp1.txt tmp2.txt 1>&2
140      fi      fi
# Line 178  check_for_add_mon_output() Line 202  check_for_add_mon_output()
202          return          return
203      fi      fi
204    
205        for ii in $PTRACERS_NUM ; do
206            eval "HAVE_PTR0"$ii"=f"
207        done
208    
209      ptr_add="trcstat_ptracerXX_min trcstat_ptracerXX_max"      ptr_add="trcstat_ptracerXX_min trcstat_ptracerXX_max"
210      ptr_add="$ptr_add trcstat_ptracerXX_mean trcstat_ptracerXX_sd"      ptr_add="$ptr_add trcstat_ptracerXX_mean trcstat_ptracerXX_sd"
211      for ii in 1 2 3 4 5 ; do      for ii in $PTRACERS_NUM ; do
212          for jj in $ptr_add ; do          for jj in $ptr_add ; do
213              name=`eval "echo $jj | sed -e 's|XX|0"$ii"|g'"`              name=`eval "echo $jj | sed -e 's|XX|0"$ii"|g'"`
214              tst=`grep $name $1 | wc -l | awk '{print $1}'`              tst=`grep $name $1 | wc -l | awk '{print $1}'`
# Line 222  testoutput() Line 250  testoutput()
250          testoutput_for_prop $1 "dynstat_vvel_mean" "V mean" $2 $3; vmean=$?          testoutput_for_prop $1 "dynstat_vvel_mean" "V mean" $2 $3; vmean=$?
251          testoutput_for_prop $1 "dynstat_vvel_sd" "V s.d." $2 $3; vsd=$?          testoutput_for_prop $1 "dynstat_vvel_sd" "V s.d." $2 $3; vsd=$?
252    
253          for ii in 1 2 3 4 5 ; do          #  This is for PTRACERS
254              testoutput_for_prop $1 "trcstat_ptracer0"$ii"_min"  "p0"$ii"_min"  $2 $3          for ii in $PTRACERS_NUM ; do
255              RETVAL=$? ; eval `echo "p0"$ii"_min="$RETVAL`              eval `echo "p0"$ii"_min=99"`
256              testoutput_for_prop $1 "trcstat_ptracer0"$ii"_max"  "p0"$ii"_max"  $2 $3              eval `echo "p0"$ii"_max=99"`
257              RETVAL=$? ; eval `echo "p0"$ii"_max="$RETVAL`              eval `echo "p0"$ii"_mean=99"`
258              testoutput_for_prop $1 "trcstat_ptracer0"$ii"_mean" "p0"$ii"_mean" $2 $3              eval `echo "p0"$ii"_sd=99"`
259              RETVAL=$? ; eval `echo "p0"$ii"_mean="$RETVAL`              tst=`eval 'echo "$HAVE_PTR0'$ii'"'`
260              testoutput_for_prop $1 "trcstat_ptracer0"$ii"_sd"   "p0"$ii"_sd"   $2 $3              #echo 'tst = '$tst
261              RETVAL=$? ; eval `echo "p0"$ii"_sd="$RETVAL`              if test "x$tst" = xt ; then
262                    a="trcstat_ptracer0"
263                    testoutput_for_prop $1 "$a"$ii"_min"  "p0"$ii"_min"  $2 $3
264                    RETVAL=$? ; eval `echo "p0"$ii"_min="$RETVAL`
265                    testoutput_for_prop $1 "$a"$ii"_max"  "p0"$ii"_max"  $2 $3
266                    RETVAL=$? ; eval `echo "p0"$ii"_max="$RETVAL`
267                    testoutput_for_prop $1 "$a"$ii"_mean" "p0"$ii"_mean" $2 $3
268                    RETVAL=$? ; eval `echo "p0"$ii"_mean="$RETVAL`
269                    testoutput_for_prop $1 "$a"$ii"_sd"   "p0"$ii"_sd"   $2 $3
270                    RETVAL=$? ; eval `echo "p0"$ii"_sd="$RETVAL`
271                fi
272          done          done
273    
274          allargs="$cg2dres $tmin $tmax $tmean $tsd $smin $smax $smean $ssd"          allargs="$cg2dres $tmin $tmax $tmean $tsd $smin $smax $smean $ssd"
# Line 274  genmakemodel() Line 312  genmakemodel()
312              if test "x$IEEE" != x ; then              if test "x$IEEE" != x ; then
313                  command="$command -ieee"                  command="$command -ieee"
314              fi              fi
315                if test "x$MPI" = xt ; then
316                    command="$command -mpi"
317                fi
318              printf 'genmake ... ' 1>&2              printf 'genmake ... ' 1>&2
319              $command > make.log 2>&1              $command > make.log 2>&1
320              RETVAL=$?              RETVAL=$?
# Line 319  makeclean() Line 360  makeclean()
360      fi      fi
361  }  }
362    
363    postclean()
364    {
365        # postclean directory
366        if test "x$POSTCLEAN" = xt ; then
367            (
368                cd $1;
369                if test -r Makefile ; then
370                    $MAKE CLEAN >> /dev/null 2>&1
371                fi
372                exit 0
373            )
374        fi
375    }
376    
377  makedependmodel()  makedependmodel()
378  {  {
379      # makedependmodel directory      # makedependmodel directory
# Line 430  linkdata() Line 485  linkdata()
485              if test "x$ADM" = x ; then              if test "x$ADM" = x ; then
486                  files=`( cd ../input ; ls -1 | grep -v CVS )`                  files=`( cd ../input ; ls -1 | grep -v CVS )`
487                  for i in $files ; do                  for i in $files ; do
488                      if test ! -d "../input/"$i ; then                      if test ! -d "../input/"$i -a ! -f $i ; then
489                          ln -sf "../input/"$i $i                          ln -sf "../input/"$i $i
490                      fi                      fi
491                  done                  done
# Line 499  createcodelet() Line 554  createcodelet()
554  #include <math.h>  #include <math.h>
555  int main( int argc, char** argv )  {  int main( int argc, char** argv )  {
556    int linnum,best,lncnt;    int linnum,best,lncnt;
557    double a,b,diff;    double a,b,abave,relerr;
558    best = -16;    best = -22;
559    lncnt = 0;    lncnt = 0;
560    while( 1 & (lncnt+=1) < 999 )  {    while( 1 & (lncnt+=1) < 999 )  {
561      scanf("%d", &linnum);      scanf("%d", &linnum);
562      if (linnum == -1)  break;      if (linnum == -1)  break;
563      scanf("%lf", &a);  scanf("%lf", &b);      scanf("%lf", &a);  scanf("%lf", &b);
564      diff = 0.5*(fabs(a)+fabs(b));      abave = 0.5*(fabs(a)+fabs(b));
565      if (diff > 1.e-12) {      if (abave > 0.0) {
566        diff=fabs(a-b)/diff;        relerr=fabs(a-b)/abave;
567        if (diff > 0.0) {        if (relerr > 0.0) { linnum = (int)rint(log10(relerr)); }
568          linnum = (int)log10(diff);        else { linnum = -16 ; }
569          best = (best > linnum) ? best : linnum;        best = (best > linnum) ? best : linnum;
       }  
       else {  
         if (best == -16 && diff != 0)  best = -22;  
       }  
570      }      }
571    }    }
572    if (lncnt == 999) best=-29;    if (lncnt == 999) best=-29;
# Line 523  int main( int argc, char** argv )  { Line 574  int main( int argc, char** argv )  {
574    return 0;    return 0;
575  }  }
576  EOF  EOF
577      cc -o tmp_cmpnum tmp_cmpnum.c -lm      $CC -o tmp_cmpnum tmp_cmpnum.c -lm
578    
579      if [ -x ./tmp_cmpnum ]; then      if [ -x ./tmp_cmpnum ]; then
580          echo "OK"          echo "OK"
581          return 0          return 0
582      else      else
583          echo          echo
584          echo "ERROR: failed to compile comparison code"          echo "ERROR: failed to compile comparison code -- please specify"
585            echo "  a C compiler using the CC environment variable."
586          exit 1          exit 1
587      fi      fi
588  }  }
# Line 610  QUICK=f Line 662  QUICK=f
662  NOGENMAKE=f  NOGENMAKE=f
663  NOCLEAN=f  NOCLEAN=f
664  NODEPEND=f  NODEPEND=f
665    POSTCLEAN=f
666    
667  BASH=  BASH=
668  OPTFILE=NONE  OPTFILE=NONE
# Line 619  MPACKDIR="../tools/mpack-1.6" Line 672  MPACKDIR="../tools/mpack-1.6"
672  HAVE_MPACK=  HAVE_MPACK=
673  MPACK="$MPACKDIR/mpack"  MPACK="$MPACKDIR/mpack"
674  COMMAND=  COMMAND=
675  MAKE=make  if test "x$MAKE" = x ; then
676        MAKE=make
677    fi
678    if test "x$CC" = x ; then
679        CC=cc
680    fi
681  JOBS=  JOBS=
682  MPI=f  MPI=f
683    OUTDIR=
684  DELDIR=  DELDIR=
685    
686  ADM=  ADM=
687    
688  # Additional monitor types  # Additional monitor types
689  # HAVE_PTR01=  PTRACERS_NUM="1 2 3 4 5"
 # HAVE_PTR02=  
 # HAVE_PTR03=  
 # HAVE_PTR04=  
 # HAVE_PTR05=  
690    
691  printf "parsing options...  "  printf "parsing options...  "
692    
# Line 682  for ac_option ; do Line 737  for ac_option ; do
737          -make=* | --make=*)          -make=* | --make=*)
738              MAKE=$ac_optarg ;;              MAKE=$ac_optarg ;;
739    
740            -odir | --odir)
741                ac_prev=OUTDIR ;;
742            -odir=* | --odir=*)
743                OUTDIR=$ac_optarg ;;
744    
745            -ptracers | --ptracers | -ptr | --ptr)
746                ac_prev=PTRACERS_NUM ;;
747            -ptracers=* | --ptracers=* | -ptr=* | --ptr=*)
748                PTRACERS_NUM=$ac_optarg ;;
749    
750          -j) ac_prev=JOBS ;;          -j) ac_prev=JOBS ;;
751          -j=*) JOBS=$ac_optarg ;;          -j=*) JOBS=$ac_optarg ;;
752    
753          -clean | --clean)          -clean | --clean)
754              CLEANUP=t ;;              CLEANUP=t ; DELDIR=t ;;
755    
756          -quick | --quick | -q | --q)          -quick | --quick | -q | --q)
757              QUICK=t ;;              QUICK=t ;;
# Line 697  for ac_option ; do Line 762  for ac_option ; do
762          -nodepend | --nodepend | -nd | --nd)          -nodepend | --nodepend | -nd | --nd)
763              NODEPEND=t ;;              NODEPEND=t ;;
764    
765            -postclean | --postclean | -pc | --pc)
766                POSTCLEAN=t ;;
767    
768          -mpi) MPI=t ;;          -mpi) MPI=t ;;
769    
770          -adm | -ad) ADM=t ;;          -adm | -ad) ADM=t ;;
# Line 763  MACH=`hostname` Line 831  MACH=`hostname`
831  UNAMEA=`uname -a`  UNAMEA=`uname -a`
832  DATE=`date +%Y%m%d`  DATE=`date +%Y%m%d`
833  BASE="tr_"$MACH"_"$DATE"_"  BASE="tr_"$MACH"_"$DATE"_"
834    if test "x$OUTDIR" != x ; then
835        BASE="tr_"$OUTDIR"_"$DATE"_"
836    fi
837  DNUM=0  DNUM=0
838  DRESULTS="$BASE$DNUM"  DRESULTS="$BASE$DNUM"
839  while test -e $DRESULTS ; do  while test -e $DRESULTS ; do
# Line 813  if test "x$ADM" = x ; then Line 884  if test "x$ADM" = x ; then
884      line_2="E p a R  g  m  m  e  .  m  m  e  .  m  m  e  .  m  m  e  ."      line_2="E p a R  g  m  m  e  .  m  m  e  .  m  m  e  .  m  m  e  ."
885      line_3="N n k u  2  i  a  a  d  i  a  a  d  i  a  a  d  i  a  a  d"      line_3="N n k u  2  i  a  a  d  i  a  a  d  i  a  a  d  i  a  a  d"
886      line_4="2 d e n  d  n  x  n  .  n  x  n  .  n  x  n  .  n  x  n  ."      line_4="2 d e n  d  n  x  n  .  n  x  n  .  n  x  n  .  n  x  n  ."
887      for ii in 1 2 3 4 5 ; do      for ii in $PTRACERS_NUM ; do
888          #  tst=`eval 'echo $HAVE_PTR0'$ii`          #  tst=`eval 'echo $HAVE_PTR0'$ii`
889          #  if test "x$tst" = xt ; then          #  if test "x$tst" = xt ; then
890          line_0="$line_0  --PTR 0"$ii"--"          line_0="$line_0  --PTR 0"$ii"--"
# Line 852  for dir in $TESTDIRS ; do Line 923  for dir in $TESTDIRS ; do
923          if test -r $dir/input/Makefile ; then          if test -r $dir/input/Makefile ; then
924              ( cd $dir/input ; make CLEAN )              ( cd $dir/input ; make CLEAN )
925          fi          fi
926            (
927                cd $dir
928                rm -rf tr_run.*
929            )
930          continue          continue
931      fi      fi
932    
# Line 867  for dir in $TESTDIRS ; do Line 942  for dir in $TESTDIRS ; do
942          echo "can't read \"$fout\" -- skipping $dir"          echo "can't read \"$fout\" -- skipping $dir"
943          continue          continue
944      fi      fi
945        if test "x$ADM" = x ; then
946            check_for_add_mon_output  $fout
947        fi
948    
949      # Check for additional types of monitor output      # Check for additional types of monitor output
     check_for_add_mon_output  $fout  
950    
951      builddir="input"      builddir="input"
952      rundir="input"      rundir="input"
# Line 945  for dir in $TESTDIRS ; do Line 1022  for dir in $TESTDIRS ; do
1022          echo "DATE='$DATE'" >> $CDIR"/summary.txt"          echo "DATE='$DATE'" >> $CDIR"/summary.txt"
1023          echo "tdir='$dir'" >> $CDIR"/summary.txt"          echo "tdir='$dir'" >> $CDIR"/summary.txt"
1024    
         OLD_COMMAND=$COMMAND  
         COMMAND="./mitgcmuv > output.txt"  
1025          for ex in $extra_runs ; do          for ex in $extra_runs ; do
1026              test -e "$dir/tr_run.$ex" && rm -rf "$dir/tr_run.$ex"              test ! -e "$dir/tr_run.$ex" && mkdir "$dir/tr_run.$ex"
1027              mkdir "$dir/tr_run.$ex"              for ldir in input.$ex input ; do
1028              links=`( cd "$dir/input" > /dev/null 2>&1 ; ls -1 | grep -v CVS )`                  (
1029                        cd "$dir/$ldir" > /dev/null 2>&1
1030                        ls -1 2>/dev/null \
1031                            | sed -e 's|^CVS$||g' | sed -e 's|^output.txt$||g'
1032                    ) > tr_exrun_links
1033                    (
1034                        cd "$dir/tr_run.$ex"
1035                        cat ../../tr_exrun_links | while read i ; do
1036                            if test ! "x$i" = x ; then
1037                                test ! -r $i  &&  ln -s "../"$ldir"/"$i $i
1038                            fi
1039                        done
1040                    )
1041                    test -e tr_exrun_links  &&  rm -f tr_exrun_links
1042                done
1043                ldir=build
1044                (
1045                    cd "$dir/$ldir" > /dev/null 2>&1
1046                    ls -1 Makefile *.[fFhco] mitgcmuv  2>/dev/null \
1047                        | sed -e 's|^CVS$||g' | sed -e 's|^output.txt$||g'
1048                ) > tr_exrun_links
1049              (              (
1050                  cd "$dir/tr_run.$ex"                  cd "$dir/tr_run.$ex"
1051                  for i in $links; do                      cat ../../tr_exrun_links | while read i ; do
1052                      ln -s ../input/$i $i                          if test ! "x$i" = x ; then
1053                  done                              test ! -r $i  &&  ln -s "../"$ldir"/"$i $i
1054              )                          fi
1055              links=`( cd "$dir/input.$ex" > /dev/null 2>&1 ; ls -1 | grep -v CVS )`                      done
             (  
                 cd "$dir/tr_run.$ex"  
                 for i in $links; do  
                     test -e $i  &&  rm -f $i  
                     ln -s ../input.$ex/$i $i  
                 done  
                 ln -s ../$builddir/mitgcmuv mitgcmuv  
1056              )              )
1057                test -e tr_exrun_links  &&  rm -f tr_exrun_links
1058              runmodel $dir/tr_run.$ex && run=Y \              runmodel $dir/tr_run.$ex && run=Y \
1059                  && results=`testoutput $dir tr_run.$ex "."$ex`                  && results=`testoutput $dir tr_run.$ex "."$ex`
1060              fres=`printf '%s %s %s %s' ${genmake:-N} ${makedepend:-N} ${make:-N} ${run:-N}`              fres=`printf '%s %s %s %s' ${genmake:-N} ${makedepend:-N} ${make:-N} ${run:-N}`
# Line 979  for dir in $TESTDIRS ; do Line 1068  for dir in $TESTDIRS ; do
1068              echo "DATE='$DATE'" >> $CDIR"/summary.txt"              echo "DATE='$DATE'" >> $CDIR"/summary.txt"
1069              echo "tdir='$dir'" >> $CDIR"/summary.txt"              echo "tdir='$dir'" >> $CDIR"/summary.txt"
1070          done          done
         COMMAND=$OLD_COMMAND  
1071      else      else
1072          fres=`printf '%s %s %s %s' ${genmake:-N} ${makedepend:-N} ${make:-N} ${run:-N}`          fres=`printf '%s %s %s %s' ${genmake:-N} ${makedepend:-N} ${make:-N} ${run:-N}`
1073          fres=$fres"$results   $dir"          fres=$fres"$results   $dir"
# Line 991  for dir in $TESTDIRS ; do Line 1079  for dir in $TESTDIRS ; do
1079          echo "DATE='$DATE'" >> $CDIR"/summary.txt"          echo "DATE='$DATE'" >> $CDIR"/summary.txt"
1080          echo "tdir='$dir'" >> $CDIR"/summary.txt"          echo "tdir='$dir'" >> $CDIR"/summary.txt"
1081      fi      fi
1082    
1083        postclean $dir/$builddir
1084            
1085      echo "-------------------------------------------------------------------------------"      echo "-------------------------------------------------------------------------------"
1086            
# Line 1032  fi Line 1122  fi
1122  rm -f tmp_cmpnum.c tmp_cmpnum  rm -f tmp_cmpnum.c tmp_cmpnum
1123    
1124  if test "x$CLEANUP" != xt ; then  if test "x$CLEANUP" != xt ; then
1125      cat $SUMMARY      cat $SUMMARY | sed 's/ -- -- -- --//g'
1126      if test -e tr_out.txt ; then      if test -e tr_out.txt ; then
1127          mv tr_out.txt tr_out.txt.old          mv tr_out.txt tr_out.txt.old
1128      fi      fi
1129      cat $SUMMARY > tr_out.txt      cat $SUMMARY | sed 's/ -- -- -- --//g' > tr_out.txt
1130  fi  fi
1131    
1132  if test "x$DELDIR" = xt ; then  if test "x$DELDIR" = xt ; then

Legend:
Removed from v.1.49  
changed lines
  Added in v.1.72

  ViewVC Help
Powered by ViewVC 1.1.22