/[MITgcm]/MITgcm/tools/do_tst_2+2
ViewVC logotype

Annotation of /MITgcm/tools/do_tst_2+2

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


Revision 1.1 - (hide annotations) (download)
Tue Dec 25 22:10:51 2007 UTC (16 years, 3 months ago) by jmc
Branch: MAIN
moved from Contrib/jmc_script.
- change output format (compatible with testing web-page make_summary)
- add option to sent output with mpack

1 jmc 1.1 #!/bin/sh
2    
3     # $Header: /u/gcmpack/MITgcm_contrib/jmc_script/do_test_2+2,v 1.1 2007/11/25 21:14:57 jmc Exp $
4     # $Name: $
5    
6     usage()
7     {
8     echo "Usage: `basename $0` [OPTIONS]"
9     echo " -> perform test 2+2=4 for several experiments"
10     echo ""
11     echo "where possible OPTIONS are:"
12     echo " -help : print usage"
13     echo " -t LIST_EXP : only check experiments in LIST_EXP"
14     echo " -skd LIST_EXP : skip experiments in LIST_EXP"
15     echo " (-o) STRING : used to build output directory name"
16     echo " (DEF=\"hostname\")"
17     echo " (-a) STRING : email address to send output to"
18     echo " (DEF=\"\" no email is sent)"
19     echo " -clean : clean output & reset"
20     exit
21     }
22    
23     CLEAN=0
24     TESTDIRS=
25     SKIPDIRS=
26     OUTDIR=`hostname`
27     ADDRESS=
28     SCRIPT='../tools/tst_2+2'
29     MPACK="../tools/mpack-1.6/mpack"
30     here=`pwd`
31     yy=
32     for xx
33     do
34     if test -n "$yy"; then
35     eval "$yy=\$xx"
36     yy=
37     else
38     case $xx in
39     -help ) usage ;;
40     -clean) CLEAN=1 ;;
41     -t ) yy=TESTDIRS ;;
42     -skd ) yy=SKIPDIRS ;;
43     -a ) yy=ADDRESS ;;
44     -o ) yy=OUTDIR ;;
45     *) echo "Error: unrecognized option: "$xx ; usage ; exit ;;
46     esac
47     fi
48     done
49     #------------------------
50    
51     if test "x$TESTDIRS" = x
52     then
53     TESTDIRS=`ls `
54     fi
55     LIST=""
56     for xx in $TESTDIRS
57     do
58     yy=`echo $SKIPDIRS | grep -c $xx`
59     if test $yy = 0 ; then
60     if test -f $xx/results/output.txt
61     then
62     LIST=${LIST}" "$xx
63     # else
64     # echo ""; echo -n " -- skip \"$xx\" (not a directory !)"
65     fi
66     # else
67     # echo ""; echo -n " -- skip \"$xx\" (excluded)"
68     fi
69     done
70    
71     if test -x $SCRIPT ; then
72     echo "run script '$SCRIPT' for experiment in:"
73     echo " $LIST"
74     yy=`echo $SCRIPT | grep -c '^\/'`
75     if test $yy = 0 ; then SCRIPT="../../$SCRIPT" ; fi
76     else
77     echo "ERROR: script '$SCRIPT' not found or not executable"
78     exit
79     fi
80     echo ""
81     #------------------------
82    
83     if test $CLEAN = 1 ; then
84     for xx in $LIST
85     do
86     listD='run '`(cd $xx/results ; ls output.*.txt 2> /dev/null | sed 's/^output\./tr_run./g' | sed 's/\.txt$//g' )`
87     for yy in $listD
88     do
89     if test -r $xx/$yy/data.tst
90     then
91     echo "clean dir:" $xx/$yy
92     cd $xx/$yy
93     echo ' ' >> outp.tst_2+2.log
94     echo $SCRIPT 4 >> outp.tst_2+2.log
95     $SCRIPT 4 >> outp.tst_2+2.log 2>&1
96     cd $here
97     fi
98     done
99     done
100     exit
101     fi
102     #------------------------
103     # Create a uniquely named directory to store results
104     DATE=`date +%Y%m%d`
105     BASE="rs_"$OUTDIR"_"$DATE"_"
106     xx=0
107     DRESULTS="$BASE$xx"
108     while test -e $DRESULTS ; do
109     xx=$(( $xx + 1 ))
110     DRESULTS="$BASE$xx"
111     done
112     mkdir $DRESULTS
113     out=$?
114     if test "x$out" != x0 ; then
115     echo "ERROR: Can't create results directory \"./$DRESULTS\""
116     exit 1
117     fi
118     SUMMARY="$DRESULTS/summary.txt"
119     OPTFILE=
120    
121     printf "Start time: " > $SUMMARY
122     date >> $SUMMARY
123     if test -f tr_out.txt ; then
124     echo ' using output from:' >> $SUMMARY
125     sed -n '2,/OPTFILE/ p' tr_out.txt >> $SUMMARY
126     echo >> $SUMMARY
127     fi
128     echo 'test 2+2=4 summary :' >> $SUMMARY
129     echo >> $SUMMARY
130     echo 'P. Run Result experiment' >> $SUMMARY
131     echo ' 1 2 3' >> $SUMMARY
132    
133     for xx in $LIST
134     do
135     echo ==============================================================================
136     listD='run '`(cd $xx/results ; ls output.*.txt 2> /dev/null | sed 's/^output\./tr_run./g' | sed 's/\.txt$//g' )`
137     for yy in $listD
138     do
139     if test -f $xx/$yy/output.txt
140     then
141     if test "x$OPTFILE" = x -a -f $xx/build/Makefile ; then
142     comm=`grep '^# OPTFILE=' $xx/build/Makefile 2>/dev/null | head -1 | sed 's/^# //'`
143     echo "from '$xx/build/Makefile', extract:" > $DRESULTS/genmake_state
144     echo $comm >> $DRESULTS/genmake_state
145     eval $comm
146     fi
147     if test $yy = 'run' ; then nam=$xx
148     else nam=$xx`echo $yy | sed 's/tr_run//'` ; fi
149     echo -n "Entering $xx/$yy :"
150     cd $xx/$yy
151     echo $SCRIPT All > outp.tst_2+2.log ; echo ' ' >> outp.tst_2+2.log
152     $SCRIPT All >> outp.tst_2+2.log 2>&1
153     out=$?
154     case $out in
155     0 ) echo ' pass test 2+2=4'
156     echo "Y Y Y Y pass <- $nam" >> ../../$SUMMARY ;;
157     4|5) echo "Y Y Y Y FAIL ($out) - $nam" >> ../../$SUMMARY ;;
158     3 ) echo "Y Y Y N FAIL ($out) - $nam" >> ../../$SUMMARY ;;
159     2 ) echo "Y Y N N FAIL ($out) - $nam" >> ../../$SUMMARY ;;
160     1 ) echo "Y N N N FAIL ($out) - $nam" >> ../../$SUMMARY ;;
161     * ) echo "N N N N FAIL ($out) - $nam" >> ../../$SUMMARY ;;
162     esac
163     if test $out != '0'
164     then
165     echo " test 2+2=4 FAIL (exit $out)"
166     echo " "
167     tail -5 outp.tst_2+2.log
168     echo " "
169     fi
170     cd $here
171     fi
172     done
173     done
174     printf "End time: " >> $SUMMARY
175     date >> $SUMMARY
176    
177     # If address was supplied and mpack exist, then send email using mpack.
178     if test "x$ADDRESS" != xNONE -a "x$ADDRESS" != x ; then
179     if test -x $MPACK ; then
180     tar -cf $DRESULTS".tar" $DRESULTS > /dev/null 2>&1 \
181     && gzip $DRESULTS".tar" \
182     && $MPACK -s MITgcm-test -m 3555000 $DRESULTS".tar.gz" $ADDRESS
183     out=$?
184     if test "x$out" != x0 ; then
185     echo
186     echo "Warning: The tar, gzip, & mpack step failed. Please send email"
187     echo " to <MITgcm-support@mitgcm.org> for help. You may copy the "
188     echo " summary of results from the directory \"$DRESULTS\"."
189     echo
190     else
191     echo
192     echo "An email containing results was sent to the following address:"
193     echo " \"$ADDRESS\""
194     echo
195     fi
196     test -f $DRESULTS".tar" && rm -f $DRESULTS".tar"
197     test -f $DRESULTS".tar.gz" && rm -f $DRESULTS".tar.gz"
198     else
199     echo "Warning: $MPACK is not executable => no email was sent"
200     echo
201     fi
202     fi
203    
204     # save output and remove output Dir (if no address was provided)
205     # note: to keep the output Dir without sending email, use option "-a NONE"
206     if test -f tst_2+2_out.txt ; then mv -f tst_2+2_out.txt tst_2+2_out.old ; fi
207     cp -p $SUMMARY tst_2+2_out.txt
208     if test "x$ADDRESS" = x ; then
209     rm -rf $DRESULTS
210     fi
211    

  ViewVC Help
Powered by ViewVC 1.1.22