/[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.9 by edhill, Tue Sep 16 18:16:03 2003 UTC revision 1.9.2.8 by edhill, Sat Oct 4 02:10:52 2003 UTC
# Line 18  usage() Line 18  usage()
18      echo "                             (DEF=\"\" which builds all)"      echo "                             (DEF=\"\" which builds all)"
19      echo "  (-b|-bash)STRING         location of \"bash\" executable"      echo "  (-b|-bash)STRING         location of \"bash\" executable"
20      echo "                             (DEF=\"\" for \"/bin/bash\")"      echo "                             (DEF=\"\" for \"/bin/bash\")"
21      echo "  (-c|-command)STRING      command to run"      echo "  (-command)STRING         command to run"
22      echo "                             (DEF=\"make output.txt\")"      echo "                             (DEF=\"make output.txt\")"
23      echo "  (-m|-make)STRING         command to use for \"make\""      echo "  (-m|-make)STRING         command to use for \"make\""
24      echo "                             (DEF=\"make\")"      echo "                             (DEF=\"make\")"
25        echo "  (-clean)                 *ONLY* run \"make CLEAN\""
26        echo "  (-quick|-q)              same as \"-nogenmake -noclean -nodepend\""
27        echo "  (-nogenmake|-ng)         skip the genmake stage"
28        echo "  (-noclean|-nc)           skip the \"make clean\" stage"
29        echo "  (-nodepend|-nd)          skip the \"make depend\" stage"
30      echo      echo
31      echo "and where STRING follows a whitespace-delimited format"      echo "and where STRING follows a whitespace-delimited format"
32      echo "such as:"      echo "such as:"
# Line 174  testoutput() Line 179  testoutput()
179  genmakemodel()  genmakemodel()
180  {  {
181      # genmakemodel directory      # genmakemodel directory
182      GENMAKE2="$BASH ../../../tools/genmake2"      if test "x$NOGENMAKE" = xt ; then
183      (          echo "genmake skipped!"
184          cd $1;      else
185          printf 'genmake ... ' 1>&2          GENMAKE2="$BASH ../../../tools/genmake2"
186          # ../../../tools/genmake -ieee -mods=../code > make.log 2>&1          (
187          $GENMAKE2  -ds -m $MAKE --mods=../code "--optfile="$OPTFILE > make.log 2>&1              cd $1;
188          RETVAL=$?              printf 'genmake ... ' 1>&2
189          for i in gm_state gm_optfile gm_local Makefile ; do              command="$GENMAKE2  -ds -m $MAKE --mods=../code"
190              if test -r $i ; then              if test "x$OPTFILE" != xNONE ; then
191                  cp $i $CDIR                  command="$command --optfile=$OPTFILE"
192                    # echo "  command=\"$command\""
193              fi              fi
194          done              $command > make.log 2>&1
195          if test "x$RETVAL" != x0 ; then              RETVAL=$?
196              tail make.log              for i in genmake_state genmake_optfile genmake_local Makefile ; do
197              echo "genmakemodel: genmake failed" 1>&2                  if test -r $i ; then
198              cp make.log $CDIR                      cp $i $CDIR
199              return 1                  fi
200          else              done
201              echo "succesful" 1>&2              if test "x$RETVAL" != x0 ; then
202          fi                  tail make.log
203      )                  echo "genmakemodel: genmake failed" 1>&2
204                    cp make.log $CDIR
205                    return 1
206                else
207                    echo "succesful" 1>&2
208                fi
209            )
210        fi
211  }  }
212    
213  makeclean()  makeclean()
214  {  {
215      # makeclean directory      # makeclean directory
216      (      if test "x$NOCLEAN" = xt ; then
217          cd $1;          echo "make CLEAN skipped!"
218          if test -e output.txt ; then      else
219              rm -f output.txt          (
220          fi              cd $1;
221          printf 'make CLEAN ... ' 2>&1              if test -e output.txt ; then
222          if test -r Makefile ; then                  rm -f output.txt
             $MAKE CLEAN >> make.log 2>&1  
             RETVAL=$?  
             if test "x$RETVAL" != x0 ; then  
                 tail make.log  
                 echo "makeclean: \"make CLEAN\" failed" 1>&2  
                 cp make.log $CDIR"/make.log"  
                 return 1  
223              fi              fi
224          fi              printf 'make CLEAN ... ' 2>&1
225          echo succesful 1>&2              if test -r Makefile ; then
226          exit 0                  $MAKE CLEAN >> make.log 2>&1
227      )                  RETVAL=$?
228                    if test "x$RETVAL" != x0 ; then
229                        tail make.log
230                        echo "makeclean: \"make CLEAN\" failed" 1>&2
231                        cp make.log $CDIR"/make.log"
232                        return 1
233                    fi
234                fi
235                echo succesful 1>&2
236                exit 0
237            )
238        fi
239  }  }
240    
241  makedependmodel()  makedependmodel()
242  {  {
243      # makedependmodel directory      # makedependmodel directory
244      (      if test "x$NODEPEND" = xt ; then
245          cd $1;          echo "make depend skipped!"
246          printf 'make depend ... ' 1>&2      else
247          $MAKE depend >> make.log 2>&1          (
248          RETVAL=$?              cd $1;
249          if test "x$RETVAL" != x0 ; then              printf 'make depend ... ' 1>&2
250              tail make.log              $MAKE depend >> make.log 2>&1
251              echo "makedependmodel: make depend failed" 1>&2              RETVAL=$?
252              cp make.log $CDIR"/make.log"              if test "x$RETVAL" != x0 ; then
253              return 1                  tail make.log
254          else                  echo "makedependmodel: make depend failed" 1>&2
255              echo succesful 1>&2                  cp make.log $CDIR"/make.log"
256          fi                  return 1
257      )              else
258                    echo succesful 1>&2
259                fi
260            )
261        fi
262  }  }
263    
264  makemodel()  makemodel()
# Line 360  show_help() Line 381  show_help()
381  {  {
382      cat - << EOF      cat - << EOF
383  $0 [-help] [-quick] [-verbose] dir1 [dir2] [...]  $0 [-help] [-quick] [-verbose] dir1 [dir2] [...]
384   -help      Show this help message  
385   -quick     Skip "genmake" and "make depend" if the Makefile exists   -help|-h      Show this help message
386   -quiet     Reduce the amount of output   -quiet     Reduce the amount of output
387   -verbose   Produce copious amounts of output   -verbose   Produce copious amounts of output
388   -debug     Produce even more output which will mean nothing to most   -debug     Produce even more output which will mean nothing to most
# Line 399  verbose=1 Line 420  verbose=1
420  clean=0  clean=0
421  expts=''  expts=''
422  # ieee=1  # ieee=1
423  # quick=0  
424    CLEANUP=f
425    QUICK=f
426    NOGENMAKE=f
427    NOCLEAN=f
428    NODEPEND=f
429    
430  BASH=  BASH=
431  OPTFILES=  OPTFILE=NONE
432  ADDRESSES=edhill@mitgcm.org  ADDRESSES=
433  TESTDIRS=  TESTDIRS=
434  MPACKDIR="../tools/mpack-1.6"  MPACKDIR="../tools/mpack-1.6"
435  MPACK="$MPACKDIR/mpack"  MPACK="$MPACKDIR/mpack"
# Line 431  for ac_option ; do Line 457  for ac_option ; do
457              usage ;;              usage ;;
458                    
459          -optfile | --optfile | -of | --of)          -optfile | --optfile | -of | --of)
460              ac_prev=OPTFILES ;;              ac_prev=OPTFILE ;;
461          -optfile=* | --optfile=* | -of=* | --of=*)          -optfile=* | --optfile=* | -of=* | --of=*)
462              OPTFILES=$ac_optarg ;;              OPTFILE=$ac_optarg ;;
463                    
464          -addr | --addr | -a | --a)          -addr | --addr | -a | --a)
465              ac_prev=ADDRESSES ;;              ac_prev=ADDRESSES ;;
# Line 460  for ac_option ; do Line 486  for ac_option ; do
486          -make=* | --make=*)          -make=* | --make=*)
487              MAKE=$ac_optarg ;;              MAKE=$ac_optarg ;;
488    
489            -clean | --clean)
490                CLEANUP=t ;;
491    
492            -quick | --quick | -q | --q)
493                QUICK=t ;;
494            -nogenmake | --nogenmake | -ng | --ng)
495                NOGENMAKE=t ;;
496            -noclean | --noclean | -nc | --nc)
497                NOCLEAN=t ;;
498            -nodepend | --nodepend | -nd | --nd)
499                NODEPEND=t ;;
500    
501          -mpi) MPI=t ;;          -mpi) MPI=t ;;
502          -verbose) verbose=2 ;;          -verbose) verbose=2 ;;
503          -debug) debug=1 ;;          -debug) debug=1 ;;
         -clean) clean=1 ;;  
504          -quiet) verbose=0 ;;          -quiet) verbose=0 ;;
505    
506          -*)          -*)
# Line 480  for ac_option ; do Line 517  for ac_option ; do
517            
518  done  done
519    
520    if test "x$QUICK" = xt ; then
521        NOGENMAKE=t
522        NOCLEAN=t
523        NODEPEND=t
524    fi
525    
526  if test "x$TESTDIRS" = x ; then  if test "x$TESTDIRS" = x ; then
527      TESTDIRS=`scandirs`      TESTDIRS=`scandirs`
528  fi  fi
529    
530    if test "x$OPTFILE" = xNONE -a "x$MITGCM_OF" != x ; then
531        OPTFILE=$MITGCM_OF
532    fi
533    
534  echo "OK"  echo "OK"
535    
536  #  create the FORTRAN comparison code  #  create the FORTRAN comparison code
# Line 522  EOF Line 569  EOF
569    
570  NDIR=0  NDIR=0
571    
572  #  For each optfile...  if test "x$OPTFILE" != xNONE ; then
573  for OPTFILE in $OPTFILES ; do      if test -r $OPTFILE ; then
574            OPTFILE=`pwd`"/$OPTFILE"
     OPTFILE=`pwd`"/$OPTFILE"  
     if test ! -r $OPTFILE ; then  
         echo "Error: can't read optfile \"$OPTFILE\""  
         exit 1  
575      fi      fi
576      echo  fi
577      echo "OPTFILE=$OPTFILE" >> $SUMMARY  echo
578      echo >> $SUMMARY  echo "OPTFILE=$OPTFILE" >> $SUMMARY
579        echo >> $SUMMARY
     #  ...and each test directory...  
     for dir in $TESTDIRS ; do  
580    
581          #  Verify that the testdir exists and contains previous  #  ...and each test directory...
582          #  results in the correct location--or skip this directory!  for dir in $TESTDIRS ; do
583          if test ! -r $dir"/results/output.txt" ; then      
584              echo | tee -a $SUMMARY      #  Cleanup only!
585              echo "can't read \"$dir/results/output.txt\" -- skipping $dir" \      if test "x$CLEANUP" = xt ; then
586                  | tee -a $SUMMARY          if test -r $dir/build/Makefile ; then
587              continue              ( cd $dir/build ; make CLEAN )
         fi  
   
         #  Is this an MPI run?  
         if test "x$MPI" = xt ; then  
             if test ! -r $dir"/code/CPP_EEOPTIONS.h_mpi" -o ! -r $dir"/code/SIZE.h_mpi" ; then  
                 echo | tee -a $SUMMARY  
                 echo "can't read \"$dir/code/CPP_EEOPTIONS.h_mpi\" or \"$dir/code/SIZE.h_mpi\"" \  
                     | tee -a $SUMMARY  
                 continue  
             else  
                 cp $dir"/code/CPP_EEOPTIONS.h_mpi" $dir"/code/CPP_EEOPTIONS.h"  
                 cp $dir"/code/SIZE.h_mpi" $dir"/code/SIZE.h"  
             fi  
         else  
             if test -r $dir"/code/CPP_EEOPTIONS.h_nompi" ; then  
                 cp $dir"/code/CPP_EEOPTIONS.h_nompi" $dir"/code/CPP_EEOPTIONS.h"  
             fi  
             if test -r $dir"/code/SIZE.h_nompi" ; then  
                 cp $dir"/code/SIZE.h_nompi" $dir"/code/SIZE.h"  
             fi  
588          fi          fi
589            if test -r $dir/input/Makefile ; then
590                ( cd $dir/input ; make CLEAN )
591            fi
592            continue
593        fi
594    
595          #  Create an output dir for each OPTFILE/tdir combination      #  Verify that the testdir exists and contains previous
596          CDIR=$DRESULTS"/"$DRESULTS"_"$NDIR      #  results in the correct location--or skip this directory!
597          mkdir $CDIR      if test ! -r $dir"/results/output.txt" ; then
598          CDIR=`pwd`"/$CDIR"          echo "can't read \"$dir/results/output.txt\" -- skipping $dir"
599            continue
600        fi
601    
602          #  ...configue, make, run, and compare the output.      echo "-------------------------------------------------------------------------------"
603          echo "-------------------------------------------------------------------------------"      echo
604          echo      echo "Experiment:  $dir"
605          echo "Experiment:  $dir"      echo
606          echo      unset genmake makedepend make run
607          unset genmake makedepend make run      results='-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --'
         results='-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --'  
         ( cd $dir/input; rm -f *.{o,f,c,F} *.[f,F]90 work* output.txt Make* make.log; )  
         if [ -r $dir/build ]; then  
             seperatebuilddir=1  
             builddir=build  
             rundir=build  
             ( cd $dir/build; ln -sf ../input/* . )  
         else  
             seperatebuilddir=0  
             builddir=input  
             rundir=input  
         fi  
608    
609        if [ -r $dir/build ]; then
610            seperatebuilddir=1
611            builddir=build
612            rundir=build
613            ( cd $dir/build; ln -sf ../input/* . )
614        else
615            seperatebuilddir=0
616            builddir=input
617            rundir=input
618        fi
619        
620        CODE_DIR=$dir/code
621        BUILD_DIR=$dir/$builddir
622        MPI_FILES="CPP_EEOPTIONS.h_mpi SIZE.h_mpi"
623        NOMPI_FILES="CPP_EEOPTIONS.h_nompi SIZE.h_nompi"
624    
625        #  Is this an MPI run?
626        if test "x$MPI" = xt ; then
627            FILES=$MPI_FILES
628        else
629            FILES=$NOMPI_FILES
630        fi
631        
632        #  Check to see that we have the files
633        have_files=t
634        for i in $FILES ; do
635            if test ! -r $CODE_DIR/$i ; then
636                echo "Warning: can't read file $CODE_DIR/$i"
637                have_files=f
638            fi
639        done
640        if test "x$have_files" != xt -a "x$MPI" = xt ; then
641            echo "Skipping $dir due to lack of input files (see above warning)"
642            continue
643        fi
644        
645        #  If we have the $FILES and they differ, copy the $FILES to $BUILD_DIR
646        if test "x$have_files" = xt ; then
647            for i in $FILES ; do
648                cmp $CODE_DIR/$i $BUILD_DIR/$i > /dev/null 2>&1
649                RETVAL=$?
650                if test "x$RETVAL" != x0 ; then
651                    cp $CODE_DIR/$i $BUILD_DIR/$i
652                fi
653            done
654        fi
655        
656        #  Create an output dir for each OPTFILE/tdir combination
657        CDIR=$DRESULTS"/"$DRESULTS"_"$NDIR
658        mkdir $CDIR
659        CDIR=`pwd`"/$CDIR"
660        
661        if test "x$CLEANUP" = xt ; then
662            makeclean $dir/$builddir
663        else
664          genmakemodel $dir/$builddir && genmake=Y \          genmakemodel $dir/$builddir && genmake=Y \
665              && makeclean $dir/$builddir \              && makeclean $dir/$builddir \
666              && makedependmodel $dir/$builddir && makedepend=Y \              && makedependmodel $dir/$builddir && makedepend=Y \
# Line 597  for OPTFILE in $OPTFILES ; do Line 668  for OPTFILE in $OPTFILES ; do
668              && linkdata $seperatebuilddir $dir/$rundir \              && linkdata $seperatebuilddir $dir/$rundir \
669              && runmodel $dir/$builddir && run=Y \              && runmodel $dir/$builddir && run=Y \
670              && results=`testoutput $dir $rundir`              && results=`testoutput $dir $rundir`
671          echo      fi
672          formatresults $dir ${genmake:-N} ${makedepend:-N} ${make:-N} \      
673              ${run:-N} $results      echo
674          echo      formatresults $dir ${genmake:-N} ${makedepend:-N} ${make:-N} \
675          formatresults $dir ${genmake:-N} ${makedepend:-N} ${make:-N} \          ${run:-N} $results
676              ${run:-N} $results >> $SUMMARY      echo
677          echo "fresults='" > $CDIR"/summary.txt"      formatresults $dir ${genmake:-N} ${makedepend:-N} ${make:-N} \
678          formatresults $dir ${genmake:-N} ${makedepend:-N} ${make:-N} \          ${run:-N} $results >> $SUMMARY
679              ${run:-N} $results >> $CDIR"/summary.txt"      echo "fresults='" > $CDIR"/summary.txt"
680          echo "'" >> $CDIR"/summary.txt"      formatresults $dir ${genmake:-N} ${makedepend:-N} ${make:-N} \
681          echo "MACH='$MACH'" >> $CDIR"/summary.txt"          ${run:-N} $results >> $CDIR"/summary.txt"
682          echo "UNAMEA='$UNAMEA'" >> $CDIR"/summary.txt"      echo "'" >> $CDIR"/summary.txt"
683          echo "DATE='$DATE'" >> $CDIR"/summary.txt"      echo "MACH='$MACH'" >> $CDIR"/summary.txt"
684          echo "tdir='$dir'" >> $CDIR"/summary.txt"      echo "UNAMEA='$UNAMEA'" >> $CDIR"/summary.txt"
685        echo "DATE='$DATE'" >> $CDIR"/summary.txt"
686          (      echo "tdir='$dir'" >> $CDIR"/summary.txt"
687              cd $DRESULTS      
688              tar -cf $NDIR".tar" $DRESULTS"_"$NDIR > /dev/null 2>&1      (
689              gzip $NDIR".tar"          cd $DRESULTS
690          )          tar -cf $NDIR".tar" $DRESULTS"_"$NDIR > /dev/null 2>&1
691            gzip $NDIR".tar"
692        )
693        
694        if test "x$ADDRESSES" = xNONE -o "x$ADDRESSES" = x ; then
695            echo "No mail sent"
696        else
697          $MPACK -s MITgcm-test -m 1000000 $DRESULTS"/"$NDIR".tar.gz" $ADDRESSES          $MPACK -s MITgcm-test -m 1000000 $DRESULTS"/"$NDIR".tar.gz" $ADDRESSES
698          RETVAL=$?          RETVAL=$?
699          if test "x$RETVAL" != x0 ; then          if test "x$RETVAL" != x0 ; then
# Line 625  for OPTFILE in $OPTFILES ; do Line 701  for OPTFILE in $OPTFILES ; do
701          else          else
702              rm -f $DRESULTS"/"$NDIR".tar*"              rm -f $DRESULTS"/"$NDIR".tar*"
703          fi          fi
704        fi
705    
706          NDIR=$(( $NDIR + 1 ))      echo "-------------------------------------------------------------------------------"
707                
708      done      NDIR=$(( $NDIR + 1 ))
709        
710  done  done
711    
712  rm tmp_cmpnum.f a.out  rm tmp_cmpnum.f a.out

Legend:
Removed from v.1.9  
changed lines
  Added in v.1.9.2.8

  ViewVC Help
Powered by ViewVC 1.1.22