updates to align to ns-3-allinone
authorTom Henderson <tomh@tomh.org>
Tue Feb 10 16:13:29 2009 -0800 (12 months ago)
changeset 15bcf4a8426cd6
parent 14 b3a69f852c87
child 16 2864135f34db
updates to align to ns-3-allinone
regression/ns-3-run-tests.sh
     1.1 --- a/regression/ns-3-run-tests.sh	Fri Oct 31 15:55:28 2008 -0700
     1.2 +++ b/regression/ns-3-run-tests.sh	Tue Feb 10 16:13:29 2009 -0800
     1.3 @@ -21,25 +21,47 @@
     1.4  #        Add ability to easily configure options
     1.5  #        Scp the results to a web-browsable directory
     1.6  
     1.7 -#
     1.8 -# Who to send the mail to (overridden by command line argument)
     1.9 -#
    1.10 -if [ $1 ]
    1.11 -then
    1.12 -  REPO=$1
    1.13 -else
    1.14 -  echo "Error: please specify a repo"
    1.15 -  exit 1
    1.16 -fi
    1.17  
    1.18 -#
    1.19 -# Who to send the mail to (overridden by command line argument)
    1.20 -#
    1.21 +usage()
    1.22 +{
    1.23 +cat << EOF
    1.24 +usage: $0 options
    1.25  
    1.26 -if [ $2 ]
    1.27 -then
    1.28 -  MAILTO=$2
    1.29 -fi
    1.30 +This script runs the ns-3 branch through the ns-regression testbed.
    1.31 +OPTIONS:
    1.32 + -h Help:  show this message
    1.33 + -n ns-3 branch  Default:  ns-3-dev
    1.34 + -r regression branch  Default:  ns-3-dev-ref-traces
    1.35 + -m mailto address.  Where to send the mail.  If unspecified, program output will just scroll onto stdout.
    1.36 +EOF
    1.37 +}
    1.38 +
    1.39 +REPO=ns-3-dev
    1.40 +TRACES=ns-3-dev-ref-traces
    1.41 +MAILTO=
    1.42 +
    1.43 +while getopts "hn:r:m:" OPTION
    1.44 +do
    1.45 +  case $OPTION in
    1.46 +  h)
    1.47 +    usage
    1.48 +    exit 
    1.49 +    ;;
    1.50 +  n)
    1.51 +    REPO=$OPTARG
    1.52 +    ;;
    1.53 +  r)
    1.54 +    TRACES=$OPTARG
    1.55 +    ;;
    1.56 +  m)
    1.57 +    MAILTO=$OPTARG
    1.58 +    ;;
    1.59 +  ?)
    1.60 +    usage
    1.61 +    exit
    1.62 +    //
    1.63 +  esac
    1.64 +done
    1.65  
    1.66  #
    1.67  # Incredibly, there seems to be a bug related to path length in mercurial 1.01
    1.68 @@ -49,8 +71,7 @@
    1.69  #
    1.70  USER_DIR=${MAILTO%%@*}
    1.71  
    1.72 -hostlist="ns-regression ns-ubuntu-intrepid ns-old darwin-ppc"
    1.73 -
    1.74 +WHOAMI=`whoami`
    1.75  if [ $USER_DIR ]
    1.76  then
    1.77    BASEDIR="/tmp/$USER_DIR"
    1.78 @@ -58,13 +79,19 @@
    1.79    BASEDIR="/tmp/`whoami`"
    1.80  fi
    1.81  
    1.82 +if [ $MAILTO ] && [ $MAILTO == "ns-commits@isi.edu" ] && [ $WHOAMI != "nsnam" ]
    1.83 +then
    1.84 +  echo "Error: must be user nsnam to mailto ns-commits; did you forget to add your address as an argument?" 
    1.85 +  exit 1
    1.86 +fi
    1.87 +
    1.88 +# Some of these could become options as well
    1.89 +# 
    1.90 +HOSTLIST="ns-regression ns-ubuntu-intrepid ns-fedora-core-10 ns-old darwin-ppc"
    1.91  TESTDIR="tests"
    1.92 -
    1.93  LOGFILE=$BASEDIR/$TESTDIR/daily.log
    1.94 -
    1.95  # How to run the regression tests
    1.96  WAFVALGRINDCMD="./waf --valgrind --regression"
    1.97 -
    1.98  WAFREGRESSIONCMD="./waf --regression"
    1.99  
   1.100  die() {
   1.101 @@ -80,14 +107,6 @@
   1.102          exit 1
   1.103  }
   1.104  
   1.105 -WHOAMI=`whoami`
   1.106 -
   1.107 -if [ $MAILTO == "ns-commits@isi.edu" ] && [ $WHOAMI != "nsnam" ]
   1.108 -then
   1.109 -  echo "Error: must be user nsnam to mailto ns-commits; did you forget to add your address as an argument?" 
   1.110 -  exit 1
   1.111 -fi
   1.112 -
   1.113  # Clean up last night's or previous run's file, if anys
   1.114  rm -rf $BASEDIR/$TESTDIR
   1.115  mkdir -p $BASEDIR/$TESTDIR
   1.116 @@ -103,14 +122,20 @@
   1.117  #    There is a difference between the directory to which the repository is cloned and the repository name
   1.118  #    itself.  Example:  hg clone http://code.nsnam.org/craigdo/ns-3-yadda creates directory ns-3-yadda.
   1.119  REPO_DIR=${REPO##*/}
   1.120 -rm -rf $REPO_DIR
   1.121 -hg clone http://code.nsnam.org/$REPO
   1.122 -cd $REPO_DIR || die "FAILURE: couldn't clone $REPO"
   1.123 -cd ../
   1.124 +TRACES_DIR=${TRACES##*/}
   1.125 +hg clone http://code.nsnam.org/ns-3-allinone
   1.126 +cd ns-3-allinone
   1.127 +./download.py -n $REPO -r $TRACES
   1.128 +if [ $? == 0 ]; then
   1.129 +  echo "download.py success" 1>>$LOGFILE
   1.130 +else
   1.131 +  die "FAILURE: download.py failure for repo $REPO"
   1.132 +fi
   1.133 +cd ..
   1.134  
   1.135  # Foreach compile-farm host 
   1.136  
   1.137 -for host in $hostlist; do
   1.138 +for host in $HOSTLIST; do
   1.139    # First, run it locally on the host machine ns-regression
   1.140    if [ "$host" == `exec hostname` ]
   1.141    then
   1.142 @@ -120,9 +145,12 @@
   1.143      /usr/bin/g++ --version | head -1 1>>$LOGFILE
   1.144      echo "----------------------------- "  1>>$LOGFILE
   1.145      mkdir tmp
   1.146 -    cp -r $REPO_DIR tmp/
   1.147 -    cd $BASEDIR/$TESTDIR/tmp/$REPO_DIR
   1.148 -    (./waf -d debug configure > configure.stdout) >& configure.stderr
   1.149 +    cp -r ns-3-allinone tmp/
   1.150 +    cd $BASEDIR/$TESTDIR/tmp/ns-3-allinone
   1.151 +    # Build nsc and anything else controlled by master build script
   1.152 +    ./build.py
   1.153 +    cd $REPO_DIR
   1.154 +    (./waf -d debug configure --with-nsc=../nsc --with-pybindgen=../pybindgen --with-regression-traces=../$TRACES_DIR > configure.stdout) >& configure.stderr
   1.155      (./waf -j4 > build.stdout) >& build.stderr
   1.156      if [ -e "./build/debug/utils/run-tests" ]; then
   1.157        $WAFVALGRINDCMD >& waf-regression.out
   1.158 @@ -147,10 +175,10 @@
   1.159        die "Stopping regression tests"
   1.160      fi
   1.161    
   1.162 -    cd $BASEDIR/$TESTDIR/tmp/$REPO_DIR
   1.163 +    cd $BASEDIR/$TESTDIR/tmp/ns-3-allinone/$REPO_DIR
   1.164      rm -rf build
   1.165    
   1.166 -    (./waf -d optimized configure > configure.stdout) >& configure.stderr
   1.167 +    (./waf -d optimized configure --with-nsc=../nsc --with-pybindgen=../pybindgen --with-regression-traces=../$TRACES_DIR > configure.stdout) >& configure.stderr
   1.168      (./waf -j4 > build.stdout) >& build.stderr
   1.169      if [ -e "./build/optimized/utils/run-tests" ]; then
   1.170        $WAFVALGRINDCMD >& waf-regression.out
   1.171 @@ -175,21 +203,26 @@
   1.172        die "Stopping regression tests"
   1.173      fi
   1.174      # Run gcc-3.4
   1.175 -    rm -rf tmp
   1.176      echo "" 1>> $LOGFILE
   1.177      echo "Regression testing for machine: $host" 1>>$LOGFILE
   1.178      uname -s -r -m 1>>$LOGFILE
   1.179      /usr/bin/g++-3.4 --version | head -1 1>>$LOGFILE
   1.180      echo "----------------------------- "  1>>$LOGFILE
   1.181 -    mkdir tmp
   1.182 -    cp -r $REPO_DIR tmp/
   1.183 -    cd $BASEDIR/$TESTDIR/tmp/$REPO_DIR
   1.184 -    (CXX=g++-3.4 ./waf -d debug configure > configure.stdout) >& configure.stderr
   1.185 +    cd $BASEDIR/$TESTDIR/tmp/ns-3-allinone/$REPO_DIR
   1.186 +    cd ../nsc
   1.187 +    python scons.py -c
   1.188 +    CC=gcc-3.4 python scons.py
   1.189 +    cd ../$REPO_DIR
   1.190 +    rm -rf build
   1.191 +    (CXX=g++-3.4 ./waf -d debug configure --with-nsc=../nsc --with-pybindgen=../pybindgen --with-regression-traces=../$TRACES_DIR > configure.stdout) >& configure.stderr
   1.192      (./waf -j4 > build.stdout) >& build.stderr
   1.193      if [ -e "./build/debug/utils/run-tests" ]; then
   1.194        $WAFREGRESSIONCMD >& waf-regression.out
   1.195        if [ $? == 0 ]; then
   1.196          echo "SUCCESS: waf -d debug configure; $WAFREGRESSIONCMD passed on $REPO " 1>>$LOGFILE
   1.197 +        # clean out gcc-3.4 nsc 
   1.198 +        cd ../nsc
   1.199 +        python scons.py -c
   1.200        else
   1.201          cat waf-regression.out >> $LOGFILE
   1.202          die "FAILURE: waf -d debug configure; $WAFREGRESSIONCMD failed on $REPO"
   1.203 @@ -208,7 +241,8 @@
   1.204        echo "" 1>> $LOGFILE
   1.205        die "Stopping regression tests"
   1.206      fi
   1.207 -  else
   1.208 +  else  
   1.209 +    #
   1.210      # Run on external hosts
   1.211      #
   1.212      echo "" 1>>$LOGFILE
   1.213 @@ -218,57 +252,62 @@
   1.214      ssh $host /usr/bin/g++ --version | head -1 1>>$LOGFILE
   1.215      echo "----------------------------- "  1>>$LOGFILE
   1.216      ssh $host mkdir -p $BASEDIR/$TESTDIR/tmp
   1.217 -    rsync -avz -e ssh $BASEDIR/$TESTDIR/$REPO_DIR $host:$BASEDIR/tests/tmp
   1.218 -    ssh $host "cd $BASEDIR/$TESTDIR/tmp/$REPO_DIR; ./waf distclean"
   1.219 -    ssh $host "cd $BASEDIR/$TESTDIR/tmp/$REPO_DIR; (./waf -d debug configure > configure.stdout) >& configure.stderr"
   1.220 -    ssh $host "cd $BASEDIR/$TESTDIR/tmp/$REPO_DIR; (./waf > build.stdout) >& build.stderr"
   1.221 + #   rsync -avz -e ssh $BASEDIR/$TESTDIR/$REPO_DIR $host:$BASEDIR/tests/tmp
   1.222 +    rsync -avz -e ssh $BASEDIR/$TESTDIR/ns-3-allinone $host:$BASEDIR/tests/tmp
   1.223 +    # Temporary-- remove nsc directory on external machine
   1.224 +    # This prevents ns-3 from auto-finding nsc in the ../nsc directory
   1.225 +    # A cleaner solution is to do a platform check whether nsc is supported
   1.226 +    ssh $host "cd $BASEDIR/$TESTDIR/tmp/ns-3-allinone; rm -rf nsc"
   1.227 +    ssh $host "cd $BASEDIR/$TESTDIR/tmp/ns-3-allinone/$REPO_DIR; ./waf distclean"
   1.228 +    ssh $host "cd $BASEDIR/$TESTDIR/tmp/ns-3-allinone/$REPO_DIR; (./waf -d debug configure --with-pybindgen=../pybindgen --with-regression-traces=../$TRACES_DIR > configure.stdout) >& configure.stderr"
   1.229 +    ssh $host "cd $BASEDIR/$TESTDIR/tmp/ns-3-allinone/$REPO_DIR; (./waf > build.stdout) >& build.stderr"
   1.230      if [ $? != 0 ]; then
   1.231        echo "FAILURE: waf -d debug configure;  building failed on $host" 1>>$LOGFILE
   1.232        echo "" 1>> $LOGFILE
   1.233        echo "Configure stderr: " 1>>$LOGFILE
   1.234 -      ssh $host "cd $BASEDIR/$TESTDIR/tmp/$REPO_DIR; cat configure.stderr" >> $LOGFILE
   1.235 +      ssh $host "cd $BASEDIR/$TESTDIR/tmp/ns-3-allinone/$REPO_DIR; cat configure.stderr" >> $LOGFILE
   1.236        echo "" 1>> $LOGFILE
   1.237        echo "Build stderr: " 1>>$LOGFILE
   1.238 -      ssh $host "cd $BASEDIR/$TESTDIR/tmp/$REPO_DIR; cat build.stderr" >> $LOGFILE
   1.239 +      ssh $host "cd $BASEDIR/$TESTDIR/tmp/ns-3-allinone/$REPO_DIR; cat build.stderr" >> $LOGFILE
   1.240        echo "" 1>> $LOGFILE
   1.241        echo "ns3modulegen.log: " 1>>$LOGFILE
   1.242 -      ssh $host "cd $BASEDIR/$TESTDIR/tmp/$REPO_DIR; cat build/debug/bindings/python/ns3modulegen.log" >> $LOGFILE
   1.243 +      ssh $host "cd $BASEDIR/$TESTDIR/tmp/ns-3-allinone/$REPO_DIR; cat build/debug/bindings/python/ns3modulegen.log" >> $LOGFILE
   1.244        cat build/debug/bindings/python/ns3modulegen.log >> $LOGFILE
   1.245        echo "" 1>> $LOGFILE
   1.246        die "Stopping regression tests"
   1.247      fi
   1.248 -    ssh $host "cd $BASEDIR/$TESTDIR/tmp/$REPO_DIR; $WAFREGRESSIONCMD >& waf-regression.out"
   1.249 +    ssh $host "cd $BASEDIR/$TESTDIR/tmp/ns-3-allinone/$REPO_DIR; $WAFREGRESSIONCMD >& waf-regression.out"
   1.250      if [ $? == 0 ]; then
   1.251        echo "SUCCESS: waf -d debug configure; $WAFREGRESSIONCMD passed on $host " 1>>$LOGFILE
   1.252      else
   1.253 -      ssh $host "cd $BASEDIR/$TESTDIR/tmp/$REPO_DIR; cat waf-regression.out" >> $LOGFILE
   1.254 +      ssh $host "cd $BASEDIR/$TESTDIR/tmp/ns-3-allinone/$REPO_DIR; cat waf-regression.out" >> $LOGFILE
   1.255        die "FAILURE: waf -d debug configure; $WAFREGRESSIONCMD failed on $host "
   1.256      fi
   1.257 -    ssh $host "cd $BASEDIR/$TESTDIR/tmp/$REPO_DIR; ./waf distclean"
   1.258 +    ssh $host "cd $BASEDIR/$TESTDIR/tmp/ns-3-allinone/$REPO_DIR; ./waf distclean"
   1.259    
   1.260 -    ssh $host "cd $BASEDIR/$TESTDIR/tmp/$REPO_DIR; (./waf -d optimized configure > configure.stdout) >& configure.stderr"
   1.261 -    ssh $host "cd $BASEDIR/$TESTDIR/tmp/$REPO_DIR; (./waf > build.stdout) >& build.stderr"
   1.262 +    ssh $host "cd $BASEDIR/$TESTDIR/tmp/ns-3-allinone/$REPO_DIR; (./waf -d optimized configure --with-pybindgen=../pybindgen --with-regression-traces=../$TRACES_DIR > configure.stdout) >& configure.stderr"
   1.263 +    ssh $host "cd $BASEDIR/$TESTDIR/tmp/ns-3-allinone/$REPO_DIR; (./waf > build.stdout) >& build.stderr"
   1.264      if [ $? != 0 ]; then
   1.265        echo "FAILURE: waf -d optimized configure;  building failed on $host" 1>>$LOGFILE
   1.266        echo "" 1>> $LOGFILE
   1.267        echo "Configure stderr: " 1>>$LOGFILE
   1.268 -      ssh $host "cd $BASEDIR/$TESTDIR/tmp/$REPO_DIR; cat configure.stderr" >> $LOGFILE
   1.269 +      ssh $host "cd $BASEDIR/$TESTDIR/tmp/ns-3-allinone/$REPO_DIR; cat configure.stderr" >> $LOGFILE
   1.270        echo "" 1>> $LOGFILE
   1.271        echo "Build stderr: " 1>>$LOGFILE
   1.272 -      ssh $host "cd $BASEDIR/$TESTDIR/tmp/$REPO_DIR; cat build.stderr" >> $LOGFILE
   1.273 +      ssh $host "cd $BASEDIR/$TESTDIR/tmp/ns-3-allinone/$REPO_DIR; cat build.stderr" >> $LOGFILE
   1.274        echo "" 1>> $LOGFILE
   1.275        echo "ns3modulegen.log: " 1>>$LOGFILE
   1.276 -      ssh $host "cd $BASEDIR/$TESTDIR/tmp/$REPO_DIR; cat build/optimized/bindings/python/ns3modulegen.log" >> $LOGFILE
   1.277 +      ssh $host "cd $BASEDIR/$TESTDIR/tmp/ns-3-allinone/$REPO_DIR; cat build/optimized/bindings/python/ns3modulegen.log" >> $LOGFILE
   1.278        cat build/debug/bindings/python/ns3modulegen.log >> $LOGFILE
   1.279        echo "" 1>> $LOGFILE
   1.280        die "Stopping regression tests"
   1.281      fi
   1.282 -    ssh $host "cd $BASEDIR/$TESTDIR/tmp/$REPO_DIR; $WAFREGRESSIONCMD >& waf-regression.out"
   1.283 +    ssh $host "cd $BASEDIR/$TESTDIR/tmp/ns-3-allinone/$REPO_DIR; $WAFREGRESSIONCMD >& waf-regression.out"
   1.284      if [ $? == 0 ]; then
   1.285        echo "SUCCESS: waf -d optimized configure; $WAFREGRESSIONCMD passed on $host " 1>>$LOGFILE
   1.286      else
   1.287        
   1.288 -      ssh $host "cd $BASEDIR/$TESTDIR/tmp/$REPO_DIR; cat waf-regression.out" >> $LOGFILE
   1.289 +      ssh $host "cd $BASEDIR/$TESTDIR/tmp/ns-3-allinone/$REPO_DIR; cat waf-regression.out" >> $LOGFILE
   1.290        die "FAILURE: waf -d optimized configure; $WAFREGRESSIONCMD failed on $host "
   1.291      fi
   1.292    fi
   1.293 @@ -280,7 +319,7 @@
   1.294  then 
   1.295    cat $LOGFILE | mail -s "$REPO:  output of run-tests:  success" "$MAILTO"
   1.296  else
   1.297 -  echo $LOGFILE
   1.298 +  cat $LOGFILE
   1.299  fi
   1.300  
   1.301  rm -rf $BASEDIR