/[escript]/branches/domexper/autotest-scons
ViewVC logotype

Diff of /branches/domexper/autotest-scons

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

revision 757 by woo409, Mon Jun 26 13:12:56 2006 UTC revision 995 by ksteube, Sun Feb 25 22:38:18 2007 UTC
# Line 1  Line 1 
1  #!/bin/bash  #!/bin/sh
2  #          Copyright 2006 by ACcESS MNRF  
3    #
4    # Submit a PBS job to run the tests
5  #  #
6  #              http://www.access.edu.au  #   Usage: autotest-scons       # Short testing, only C++ tests
7  #       Primary Business: Queensland, Australia  #   Usage: autotest-scons run_tests # Short testing, only C++ tests
8  #  Licensed under the Open Software License version 3.0  #   Usage: autotest-scons all_tests # Long testing, C++ and python tests
 #     http://www.opensource.org/licenses/osl-3.0.php  
9  #  #
10    # Copy this somewhere and run it every day via cron
11  #  #
12    # This file should be maintained in SVN as esys13/trunk/autotest-scons,
13    # be sure to copy it there and commit after modification
14  #  #
 # $Id: autotest-scons 162 2005-11-11 00:09:59Z svn $  
 # An explicit testing script for esys using the scons build system  
15    
16  # list of users to email test results to  # Which tests should we run?
17  # currently disabled during testing.  target='run_tests'  # Default scons target that runs the tests
18  # MAIL_RECIPIENTS="gross@esscc.uq.edu.au elspeth@esscc.uq.edu.au matt@esscc.uq.edu.au robert.woodcock@csiro.au Peter.Hornby@csiro.au"  test "x$1" != "x" && target="$1"
19  MAIL_RECIPIENTS="elspeth@esscc.uq.edu.au"  requested_cpus=2
20    test "x$target" = "xall_tests" && requested_cpus=4
21  # the python tests to run  
22  BRUCE_PYTESTS="ImportTest.passed BruceTest.passed test_utilOnBruce.py"  MAIL_RECIPIENTS="l.gross@uq.edu.au matt@esscc.uq.edu.au robert.woodcock@csiro.au Peter.Hornby@csiro.au k.steube@uq.edu.au"
23  ESCRIPT_PYTESTS="ImportTest.passed BinaryOps.passed UnaryOps.passed SliceGetting.passed SliceSetting.passed MiscTests.passed ArchiveTests.passed newEscriptTests.passed test_xml.passed insituTests.passed s2.passed"  # MAIL_RECIPIENTS="k.steube@uq.edu.au"
24  FINLEY_PYTESTS="ImportTest.passed finleyTest.passed SimpleSolve.passed RecTest.passed test_linearPDEsOnFinley.passed test_generators.passed test_visualization_interface.passed test_utilOnFinley.passed"  
25    # This time is when the job was submitted. If it waits in the queue it might run on another day.
26  # Changed slightly to cope with new script, so it doesn't stomp all over previous iterations  # This date is also used to create the sandbox directory where the tests are run.
27    RunDate=`date '+%Y_%m_%d'`  # Time stamp for log file names
28  echo "===> cd $1"  
29  cd $1  WorkDir=/raid3/ksteube/AutoTests
30  if [ $? != 0 ]  cd $WorkDir
31  then  
32    echo "couldnt cd $1"  # Where to put the output of scons run_tests
33    echo "couldnt cd $1" | mail -s "esys autotest-scons results" $MAIL_RECIPIENTS  out_file="$WorkDir/Logs/$RunDate.test.output"
34    exit 1  
35  fi  # Save the name of this script
36    SCRIPT_NAME=$0
37  # this is for the automated script  
38  echo "===> change up a directory"  # Below here \$variable means I want the variable interpreted when PBS runs the job, not when the job is submitted
39  cd ..  # Similarly for \`...\`
40  echo "===> make a sandbox and work in that"  
41  mkdir sandbox  # Write the PBS script to run the tests
42  cd sandbox  cat << EOF > Logs/$RunDate.pbs.script.sh
43    #!/bin/bash
44  PWD=`pwd`  
45  echo "===> working in: $PWD"  #PBS -q q80
46    #PBS -N autotest
47  # Setup the environment  #PBS -l ncpus=$requested_cpus
48  echo "loading modules"  #PBS -o $RunDate.pbs.stdout
49  . ${MODULESHOME}/init/sh  #PBS -e $RunDate.pbs.stderr
50  module load intel_cc.9.0.026  #PBS -W umask=022
51  export MODULEPATH=${MODULEPATH}:/data/raid2/toolspp4/modulefiles/gcc-3.3.6  
52  module load python/2.4.1  echo "PBS_JOBNAME       \$PBS_JOBNAME"
53    echo "PBS_JOBID         \$PBS_JOBID"
54    echo "PBS_QUEUE         \$PBS_QUEUE"
55    echo "NCPUS             \$NCPUS"
56    echo "USER              \$USER"
57    echo "PBS_O_HOST        \$PBS_O_HOST"
58    echo "PBS_O_WORKDIR     \$PBS_O_WORKDIR"
59    echo "PBS_O_SHELL       \$PBS_O_SHELL"
60    date
61    echo ""
62    echo ""
63    
64    
65    
66    START=\`date '+%Y/%m/%d %H:%M'\`
67    
68    finish () {
69      # state will be 'FAILURE' or 'SUCCESS'
70      state="\$1"
71      date
72      # Clean up the sandbox
73      cd $WorkDir
74      /bin/rm -rf sandbox.$RunDate
75      END=\`date '+%Y/%m/%d %H:%M'\`
76      cat << END_MSG | mail -s "ESYS_TESTS $target $RunDate \$state" $MAIL_RECIPIENTS
77    \$2.
78    The tests ran from \$START to \$END on \$NCPUS CPUs
79    See the log files in $WorkDir/Logs/$RunDate*
80    This mail was sent by $SCRIPT_NAME
81    running as \$USER on \`hostname\`.
82    END_MSG
83      if [ "x\$state" = "xFAILURE" ]; then
84        touch Logs/$RunDate.FAILURE
85        exit 1
86      fi
87      exit 0
88    }
89    
90    
91    cd $WorkDir             || finish FAILURE "Could not cd to WorkDir $WorkDir"
92    
93    # Create an empty out_file
94    cat /dev/null > $out_file       || finish FAILURE "Could not create out_file $out_file"
95    
96    umask 022
97    
98    test -d sandbox.$RunDate        && finish FAILURE "Today's sandbox already exists"
99    mkdir sandbox.$RunDate          || finish FAILURE "Could not mkdir sandbox"
100    cd sandbox.$RunDate         || finish FAILURE "Could not cd to sandbox"
101    
102    echo "Checking out esys13/trunk"
103    svn checkout svn+ssh://shake200.esscc.uq.edu.au/home/www_svn/repos/esys13/trunk >> $out_file 2>&1 || finish FAILURE "Could not check out esys13/trunk"
104    
105    # Load modules
106    . /opt/modules/default/init/bash
107    module use /raid2/matt/modules/modulefiles
108    module use /raid2/toolspp4/modulefiles/gcc-3.3.6
109    module use /usr/share/modules/modulefiles
110    module load esys/env    # Recommended modules
111    module load doxygen/1.4.6
112  module load boost/1.33.0/python-2.4.1  module load boost/1.33.0/python-2.4.1
113  module load numarray/1.3.3  module load gmsh-1.65.0
114    
115    # How many threads? One per CPU.
116    export OMP_NUM_THREADS=\$NCPUS
117    
118    # Run the tests
119    echo "Running the tests $target"
120    cd trunk                || finish FAILURE "Could not cd to trunk"
121    scons -j \$NCPUS $target >> $out_file 2>&1      || finish FAILURE "Could not run scons $target"
122    
123    echo "Cleaning up after the tests"
124    
125    # Delete files older than 60 days
126    find $WorkDir -atime +60 -exec rm -f {} \;
127    
128    finish SUCCESS "Successfully ran 'scons $target' on \`hostname\`"
129    
130    EOF
131    
132    # cd to the logs area so the PBS logs are deposited there
133    cd $WorkDir/Logs
134    
135    # Submit the job
136    . /opt/modules/default/init/sh
137    module load pbspro
138    
139  # set openmp settings  # Submit the job
140  export OMP_NUM_THREADS=4  qsub -S /bin/bash $RunDate.pbs.script.sh > /dev/null
141    
 # doesn't appear to work - don't know why.  
 #echo "===> svn update"  
 #svn update  
 #if [ $? != 0 ]  
 #then  
 #  echo "svn update failed"  
 #  echo "svn update failed" | mail -s "esys autotest-scons results" $MAIL_RECIPIENTS  
 #  exit 2  
 #fi  
   
 # Need to test this bit yet.  
 echo "==> removing previous checkout"  
 rm -rf trunk/  
 ls  
 # This works - temporarily removed to speed up testing.  
 echo "==> svn checkout"  
 svn checkout svn+ssh://ess/esys13/trunk  
 if [ $? != 0 ]  
 then  
     echo "svn checkout failed"  
     echo "svn checkout failed" | mail -s "esys autotest-scons results" $MAIL_RECIPIENTS  
     exit 2  
 fi  
   
 echo "==> change to trunk"  
 ls trunk  
 cd trunk  
   
 # This bit works. Commented out to speed up testing.  
 echo "===> scons building esys"  
 scons  
 if [ $? != 0 ]  
 then  
   echo "scons build failed"  
   echo "scons build failed" | mail -s "esys autotest-scons results" $MAIL_RECIPIENTS  
   exit 3  
 fi  
   
 # This bit works. Commented out to speed up testing.  
 echo "===> building unit_tests"  
 scons build_all_tests  
 if [ $? != 0 ]  
 then  
   echo "build_tests failed"  
   echo "build_tests failed" | mail -s "esys autotest-scons results" $MAIL_RECIPIENTS  
   exit 3  
 fi  
   
 FAIL=0  
   
 #echo "===> running all tests"  
 #scons all_tests  
 if [ $? != 0 ]  
 then  
   echo "all_tests failed"  
   echo "all_tests failed" | mail -s "esys autotest-scons results" $MAIL_RECIPIENTS  
   exit 4  
 fi  

Legend:
Removed from v.757  
changed lines
  Added in v.995

  ViewVC Help
Powered by ViewVC 1.1.26