[mapguide-commits] r8932 - in trunk/Tools/Vagrant: . centos/x64 centos/x86 scripts ubuntu/x64 ubuntu/x86

svn_mapguide at osgeo.org svn_mapguide at osgeo.org
Fri Apr 29 05:48:08 PDT 2016


Author: jng
Date: 2016-04-29 05:48:08 -0700 (Fri, 29 Apr 2016)
New Revision: 8932

Modified:
   trunk/Tools/Vagrant/
   trunk/Tools/Vagrant/centos/x64/Vagrantfile
   trunk/Tools/Vagrant/centos/x86/Vagrantfile
   trunk/Tools/Vagrant/scripts/build.sh
   trunk/Tools/Vagrant/scripts/build_fdo.sh
   trunk/Tools/Vagrant/scripts/provision_centos.sh
   trunk/Tools/Vagrant/scripts/provision_ubuntu.sh
   trunk/Tools/Vagrant/ubuntu/x64/Vagrantfile
   trunk/Tools/Vagrant/ubuntu/x86/Vagrantfile
Log:
Trunk vagrant build environment changes:
 - Parameterize MG/FDO unit tests switches
 - Use FDO_HOME and MG_HOME instead of hard-coding and assuming the home directory is /home/vagrant. In the provisioning scripts, these vars are set to `pwd` before invoking the build scripts
 - Parameterize the vagrant and source directories in provisioning scripts
 - Wrap all server tests using the timeout utility, guaranteeing us an upper bound on test execution (any process exceeding the alotted execution time is killed by the utility). This allows us to safely re-enable the tile/resource service tests for mgserver without fear of hung execution (which these tests have a propensity of exhibiting)
 - Similarly, add a check function specific for server tests that will properly check for the return code of the original mgserver test invocation. This return code was swallowed up by tee piping the stdout output. The $PIPESTATUS variable contains the original return code. If we determine it is because the timeout utility killed the process (=124), we can output the appropriate warning.



Property changes on: trunk/Tools/Vagrant
___________________________________________________________________
Modified: svn:ignore
   - builds

   + builds
.vscode


Modified: trunk/Tools/Vagrant/centos/x64/Vagrantfile
===================================================================
--- trunk/Tools/Vagrant/centos/x64/Vagrantfile	2016-04-22 13:00:17 UTC (rev 8931)
+++ trunk/Tools/Vagrant/centos/x64/Vagrantfile	2016-04-29 12:48:08 UTC (rev 8932)
@@ -119,5 +119,5 @@
   config.vm.provision "shell",
     privileged: false,
     path: "provision_centos.sh",
-    args: [4, 1, 0, 3, 1, 0, "trunk", "trunk", "amd64", "Test", "centos6"]
+    args: [4, 1, 0, 3, 1, 0, "trunk", "trunk", "amd64", "Test", "centos6", 1, 1]
 end

Modified: trunk/Tools/Vagrant/centos/x86/Vagrantfile
===================================================================
--- trunk/Tools/Vagrant/centos/x86/Vagrantfile	2016-04-22 13:00:17 UTC (rev 8931)
+++ trunk/Tools/Vagrant/centos/x86/Vagrantfile	2016-04-29 12:48:08 UTC (rev 8932)
@@ -119,5 +119,5 @@
   config.vm.provision "shell",
     privileged: false,
     path: "provision_centos.sh",
-    args: [4, 1, 0, 3, 1, 0, "trunk", "trunk", "i386", "Test", "centos6"]
+    args: [4, 1, 0, 3, 1, 0, "trunk", "trunk", "i386", "Test", "centos6", 1, 1]
 end

Modified: trunk/Tools/Vagrant/scripts/build.sh
===================================================================
--- trunk/Tools/Vagrant/scripts/build.sh	2016-04-22 13:00:17 UTC (rev 8931)
+++ trunk/Tools/Vagrant/scripts/build.sh	2016-04-29 12:48:08 UTC (rev 8932)
@@ -29,7 +29,11 @@
 # Use LOCALSVN=1 if you want to build from an existing copy instead of building
 # from an export (saves bandwidth and faster)
 LOCALSVN=1
-SVNROOT=/home/vagrant
+SVNROOT=$HOME
+if [ "$MG_HOME" != "" ]; then
+    SVNROOT=$MG_HOME
+fi
+
 #SVNROOT="svn://svn.bld.mgproto.net"
 #SVNROOT="http://svn.osgeo.org"
 SVNRELPATH=/mapguide/branches/${MG_VER_MAJOR}.${MG_VER_MINOR}/MgDev

Modified: trunk/Tools/Vagrant/scripts/build_fdo.sh
===================================================================
--- trunk/Tools/Vagrant/scripts/build_fdo.sh	2016-04-22 13:00:17 UTC (rev 8931)
+++ trunk/Tools/Vagrant/scripts/build_fdo.sh	2016-04-29 12:48:08 UTC (rev 8932)
@@ -132,7 +132,11 @@
 PRESERVE_BUILD_ROOT=1
 CMAKE=0
 
-MY_HOME_DIR=/home/vagrant
+MY_HOME_DIR=$HOME
+if [ "$FDO_HOME" != "" ]; then
+    MY_HOME_DIR=$FDO_HOME
+fi
+
 FDO_SRC=${MY_HOME_DIR}/fdo/branches/${FDO_VER_MAJOR}.${FDO_VER_MINOR}
 if [ "${FDO_BRANCH}" = "trunk" ]; then
     FDO_SRC=${MY_HOME_DIR}/fdo/trunk

Modified: trunk/Tools/Vagrant/scripts/provision_centos.sh
===================================================================
--- trunk/Tools/Vagrant/scripts/provision_centos.sh	2016-04-22 13:00:17 UTC (rev 8931)
+++ trunk/Tools/Vagrant/scripts/provision_centos.sh	2016-04-29 12:48:08 UTC (rev 8932)
@@ -24,6 +24,10 @@
 #  $9 - architecture (i386|amd64)
 #  $10 - release label (eg. Beta1, RC1, Final)
 #  $11 - distro label (eg. centos6, ubuntu12) - Optional
+#  $12 - Run FDO tests (1|0)
+#  $13 - Run MapGuide tests (1|0)
+#  $14 - Vagrant folder [default: /vagrant]
+#  $15 - Source folder [default: /mapguide_sources]
 
 PROVISION_START_TIME=`date +%s`
 
@@ -40,6 +44,10 @@
 echo "  9 - ${9}"
 echo " 10 - ${10}"
 echo " 11 - ${11}"
+echo " 12 - ${12}"
+echo " 13 - ${13}"
+echo " 14 - ${14:-/vagrant}"
+echo " 15 - ${15:-/mapguide_sources}"
 echo "*****************************************************"
 
 # FDO version
@@ -62,6 +70,15 @@
 MG_DISTRO=${DISTRO}
 UBUNTU=0
 
+TEST_FDO_FLAG=${12}
+TEST_MG_FLAG=${13}
+
+MOUNT_DIR=${14:-/vagrant}
+SOURCES_DIR=${15:-/mapguide_sources}
+
+MG_HOME=`pwd`
+FDO_HOME=`pwd`
+
 FDO_PLATFORM=
 if [ "${MG_ARCH}" = "amd64" ]; then
     FDO_PLATFORM=64
@@ -85,6 +102,8 @@
 export UBUNTU
 export FDO_DISTRO
 export MG_DISTRO
+export FDO_HOME
+export MG_HOME
 
 BUILD_COMPONENT=
 check_build()
@@ -95,40 +114,62 @@
         exit $error
     fi
 }
-check_test()
+check_webtier_test()
 {
     error=$?
     if [ $error -ne 0 ]; then
         echo "[warning]: ${BUILD_COMPONENT} - Unit Tests failed ($error)"
-        echo "[warning]: ${BUILD_COMPONENT} - Unit Tests failed ($error)" >> ~/unit_test_status.log
+        echo "[warning]: ${BUILD_COMPONENT} - Unit Tests failed ($error)" >> $MG_HOME/unit_test_status.log
     fi
 }
+check_server_test()
+{
+    # As this will be called after a test command that is piped to tee, we need to read from $PIPESTATUS
+    error=$PIPESTATUS
+    if [ $error -ne 0 ]; then
+        if [ $error -eq 124 ]; then # Test timed out
+            echo "[warning]: ${BUILD_COMPONENT} - Unit tests failed to complete within the alotted time period. Test logs/results may or may not have been saved"
+            echo "[warning]: ${BUILD_COMPONENT} - Unit tests failed to complete within the alotted time period. Test logs/results may or may not have been saved" >> $MG_HOME/unit_test_status.log
+        else
+            echo "[warning]: ${BUILD_COMPONENT} - Unit Tests failed ($error)"
+            echo "[warning]: ${BUILD_COMPONENT} - Unit Tests failed ($error)" >> $MG_HOME/unit_test_status.log
+        fi
+    fi
+}
 if hash scons 2>/dev/null; then
     echo [provision]: We have scons
 else
     echo [provision]: We do not have scons. Installing it
-    sudo rpm -Uvh /mapguide_sources/scons-2.3.0-1.noarch.rpm
+    sudo rpm -Uvh $SOURCES_DIR/scons-2.3.0-1.noarch.rpm
     check_build
 fi
-cd ~
+cd $MG_HOME
 HAVE_FDO=0
 HAVE_FDO_LIBS=0
 HAVE_MAPGUIDE=0
 MG_UNIT_TEST=0
 FDO_UNIT_TEST=0
+
+if [ "${TEST_FDO_FLAG}" = "1" ]; then
+    FDO_UNIT_TEST=1
+fi
+if [ "${TEST_MG_FLAG}" = "1" ]; then
+    MG_UNIT_TEST=1
+fi
+
 MAKE_FDO_SDK=0
-SCRIPT_ROOT=~/scripts
-FDO_SRC_ROOT=~/fdo/branches
+SCRIPT_ROOT=$MG_HOME/scripts
+FDO_SRC_ROOT=$MG_HOME/fdo/branches
 FDO_SRC_DIR=${FDO_BRANCH}
 FDO_SRC=$FDO_SRC_ROOT/$FDO_SRC_DIR
 if [ "${FDO_BRANCH}" = "trunk" ]; then
-    FDO_SRC_ROOT=~/fdo
+    FDO_SRC_ROOT=$MG_HOME/fdo
     FDO_SRC=$FDO_SRC_ROOT/$FDO_SRC_DIR
 fi
-FDO_LIB_SRC=~/fdo_rdbms_thirdparty
-MG_SRC_ROOT=~/mapguide/branches/${MG_BRANCH}
+FDO_LIB_SRC=$MG_HOME/fdo_rdbms_thirdparty
+MG_SRC_ROOT=$MG_HOME/mapguide/branches/${MG_BRANCH}
 if [ "${MG_BRANCH}" = "trunk" ]; then
-    MG_SRC_ROOT=~/mapguide/trunk
+    MG_SRC_ROOT=$MG_HOME/mapguide/trunk
 fi
 MG_SRC=$MG_SRC_ROOT/MgDev
 FDO_TARBALL=fdo-checkout-${FDO_BRANCH}.tar.gz
@@ -145,6 +186,8 @@
 echo "Build target:     ${MG_DISTRO} - ${MG_ARCH}"
 echo "Release Label:    ${MG_RELEASE_LABEL}"
 echo "FDO Distro label: ${FDO_DISTRO}"
+echo "Running FDO Tests: ${FDO_UNIT_TEST}"
+echo "Running MapGuide Tests: ${MG_UNIT_TEST}"
 echo "Checking directories"
 echo "********************************************************************************"
 
@@ -166,151 +209,166 @@
 else
     echo [provision]: Copy atomic.h
     sudo mkdir -p /usr/include/asm
-    sudo cp /mapguide_sources/atomic.h /usr/include/asm
+    sudo cp $SOURCES_DIR/atomic.h /usr/include/asm
 fi
 echo [provision]: Clean line endings
-sudo dos2unix /vagrant/*.sh
-sudo dos2unix /vagrant/*.pl
-sudo dos2unix /vagrant/*.txt
+sudo dos2unix $MOUNT_DIR/*.sh
+sudo dos2unix $MOUNT_DIR/*.pl
+sudo dos2unix $MOUNT_DIR/*.txt
 echo [provision]: Copying shell scripts
 mkdir -p $SCRIPT_ROOT
-cp -f /vagrant/*.sh $SCRIPT_ROOT
-cp -f /vagrant/*.pl $SCRIPT_ROOT
-cp -f /vagrant/*.txt $SCRIPT_ROOT
+cp -f $MOUNT_DIR/*.sh $SCRIPT_ROOT
+cp -f $MOUNT_DIR/*.pl $SCRIPT_ROOT
+cp -f $MOUNT_DIR/*.txt $SCRIPT_ROOT
 cd $SCRIPT_ROOT
 if [ $HAVE_FDO_LIBS -eq 0 ];
 then
     echo [provision]: Extracting FDO thirdparty libs
-    tar -zxf /mapguide_sources/fdo_rdbms_thirdparty.tar.gz -C ~
+    tar -zxf $SOURCES_DIR/fdo_rdbms_thirdparty.tar.gz -C $MG_HOME
 fi
 if [ $HAVE_FDO -eq 0 ];
 then
     echo [provision]: Extracting FDO working copy
     mkdir -p $FDO_SRC_ROOT
-    tar -zxf /mapguide_sources/$FDO_TARBALL -C $FDO_SRC_ROOT
+    tar -zxf $SOURCES_DIR/$FDO_TARBALL -C $FDO_SRC_ROOT
 fi
 if [ $HAVE_MAPGUIDE -eq 0 ];
 then
     echo [provision]: Extracting MapGuide working copy
     mkdir -p $MG_SRC_ROOT
-    tar -zxf /mapguide_sources/$MG_TARBALL -C $MG_SRC_ROOT
+    tar -zxf $SOURCES_DIR/$MG_TARBALL -C $MG_SRC_ROOT
 fi
-if [ -d /mapguide_sources/patches/fdo ];
+if [ -d $SOURCES_DIR/patches/fdo ];
 then
     echo [provision]: Applying FDO source patches
-    cp -R /mapguide_sources/patches/fdo/* $FDO_SRC
+    cp -R $SOURCES_DIR/patches/fdo/* $FDO_SRC
 fi
-if [ -d /mapguide_sources/patches/mapguide ];
+if [ -d $SOURCES_DIR/patches/mapguide ];
 then
     echo [provision]: Applying MapGuide source patches
-    cp -R /mapguide_sources/patches/mapguide/* $MG_SRC
+    cp -R $SOURCES_DIR/patches/mapguide/* $MG_SRC
 fi
 echo [provision]: Making sure swig is executable
 chmod +x $MG_SRC/Oem/SWIGEx/Linux/swig
-cd ~/scripts
+cd $MG_HOME/scripts
 BUILD_COMPONENT="FDO"
-sudo -E ./build_fdo.sh 2>&1 | tee ~/fdo_build.log
+sudo -E ./build_fdo.sh 2>&1 | tee $MG_HOME/fdo_build.log
 check_build
 BUILD_COMPONENT="MapGuide"
-sudo -E ./build.sh 2>&1 | tee ~/mapguide_build.log
+sudo -E ./build.sh 2>&1 | tee $MG_HOME/mapguide_build.log
 check_build
 FDO_REV=`svn info $FDO_SRC | perl revnum.pl`
 MG_REV=`svn info $MG_SRC | perl revnum.pl`
-> ~/unit_test_status.log
+> $MG_HOME/unit_test_status.log
 if [ $FDO_UNIT_TEST -eq 1 ];
 then
     echo [provision]: Unit test FDO
     BUILD_COMPONENT="Unit Test FDO Core"
     cd $SCRIPT_ROOT/fdo_build_area/Fdo/UnitTest
-    sudo -E NLSPATH=${FDO_INST_PATH}/nls/%N ./UnitTest 2>&1 | tee ~/fdo_core_unit_test.log
-    check_test
+    sudo -E NLSPATH=${FDO_INST_PATH}/nls/%N ./UnitTest 2>&1 | tee $MG_HOME/fdo_core_unit_test.log
+    check_test_generic
     BUILD_COMPONENT="Unit Test SHP Provider"
     cd $SCRIPT_ROOT/fdo_build_area/Providers/SHP/Src/UnitTest
     sudo rm providers.xml
-    sudo -E NLSPATH=${FDO_INST_PATH}/nls/%N ./UnitTest 2>&1 | tee ~/fdo_shp_unit_test.log
-    check_test
+    sudo -E NLSPATH=${FDO_INST_PATH}/nls/%N ./UnitTest 2>&1 | tee $MG_HOME/fdo_shp_unit_test.log
+    check_test_generic
     BUILD_COMPONENT="Unit Test SDF Provider"
     cd $SCRIPT_ROOT/fdo_build_area/Providers/SDF/Src/UnitTest
     sudo rm providers.xml
-    sudo -E NLSPATH=${FDO_INST_PATH}/nls/%N ./UnitTest 2>&1 | tee ~/fdo_sdf_unit_test.log
-    check_test
+    sudo -E NLSPATH=${FDO_INST_PATH}/nls/%N ./UnitTest 2>&1 | tee $MG_HOME/fdo_sdf_unit_test.log
+    check_test_generic
     BUILD_COMPONENT="Unit Test SQLite Provider"
     cd $SCRIPT_ROOT/fdo_build_area/Providers/SQLite/Src/UnitTest
     sudo rm providers.xml
-    sudo -E NLSPATH=${FDO_INST_PATH}/nls/%N ./UnitTest 2>&1 | tee ~/fdo_sqlite_unit_test.log
-    check_test
+    sudo -E NLSPATH=${FDO_INST_PATH}/nls/%N ./UnitTest 2>&1 | tee $MG_HOME/fdo_sqlite_unit_test.log
+    check_test_generic
     BUILD_COMPONENT="Unit Test GDAL Provider"
     cd $SCRIPT_ROOT/fdo_build_area/Providers/GDAL/Src/UnitTest
     sudo rm providers.xml
-    sudo -E NLSPATH=${FDO_INST_PATH}/nls/%N ./UnitTest 2>&1 | tee ~/fdo_gdal_unit_test.log
-    check_test
-    BUILD_COMPONENT="Unit Test OGR Provider"
-    cd $SCRIPT_ROOT/fdo_build_area/Providers/OGR/Src/UnitTest
-    sudo rm providers.xml
-    sudo -E NLSPATH=${FDO_INST_PATH}/nls/%N ./UnitTest 2>&1 | tee ~/fdo_ogr_unit_test.log
-    check_test
-    BUILD_COMPONENT="Unit Test WMS Provider"
-    cd $SCRIPT_ROOT/fdo_build_area/Providers/WMS/Src/UnitTest
-    sudo rm providers.xml
-    sudo -E NLSPATH=${FDO_INST_PATH}/nls/%N ./UnitTest 2>&1 | tee ~/fdo_wms_unit_test.log
-    check_test
+    sudo -E NLSPATH=${FDO_INST_PATH}/nls/%N ./UnitTest 2>&1 | tee $MG_HOME/fdo_gdal_unit_test.log
+    check_test_generic
+    # Depending on what version we're building, OGR unit tests may not exist
+    if [ -d "$SCRIPT_ROOT/fdo_build_area/Providers/OGR/Src/UnitTest" ];
+    then
+        BUILD_COMPONENT="Unit Test OGR Provider"
+        cd $SCRIPT_ROOT/fdo_build_area/Providers/OGR/Src/UnitTest
+        sudo rm providers.xml
+        sudo -E NLSPATH=${FDO_INST_PATH}/nls/%N ./UnitTest 2>&1 | tee $MG_HOME/fdo_ogr_unit_test.log
+        check_test_generic
+    fi
+    # BUILD_COMPONENT="Unit Test WMS Provider"
+    # cd $SCRIPT_ROOT/fdo_build_area/Providers/WMS/Src/UnitTest
+    # sudo rm providers.xml
+    # sudo -E NLSPATH=${FDO_INST_PATH}/nls/%N ./UnitTest 2>&1 | tee $MG_HOME/fdo_wms_unit_test.log
+    # check_test_generic
 fi
 if [ $MG_UNIT_TEST -eq 1 ];
 then
     echo [provision]: Unit test MapGuide
     BUILD_COMPONENT="Unit Test MapGuide Server"
-    # HACK: Tile and Resource Service tests are known to freeze our VMs when driven by vagrant (why? who knows? 
-    # All we know is that those tests involve threads)
-    # So test everything *but* the above services. If required, this can be tested under a manually controlled
-    # VM
-    #
+    # HACK: Due to unforeseen threading issues or gremlins, none of the server unit tests here
+    # are guaranteed to complete and have a possibility of hanging
+
     # build the individual targets that would comprise "make check" sans execution of unittest.sh
     cd $SCRIPT_ROOT/mgdev/Server/src/UnitTesting
     sudo make libMgUnitTesting.la
     cd $SCRIPT_ROOT/mgdev/Server/src/Core
     sudo make unittest.sh
-    # Run the test suites individually except for TileService/ResourceService for reasons already stated
-    for comp in CoordinateSystem FeatureService Geometry KmlService LogManager MappingService MdfModel Misc Performance RenderingService ServerAdminService ServerManager ServiceManager SiteManager SiteService ProfilingService TransformMesh
+    # As CoordinateSystem will run longer than the others, run this separately with its own timeout
+    for comp in CoordinateSystem
     do
-        sudo -E ./mgserver test $comp UnitTestResults_${comp}.xml 2>&1 | tee ~/mapguide_${comp}_unit_test.log
-        check_test
+        BUILD_COMPONENT="Unit Test MapGuide Server ($comp)"
+        sudo -E timeout 20m ./mgserver test $comp UnitTestResults_${comp}.xml 2>&1 | tee $MG_HOME/mapguide_${comp}_unit_test.log
+        check_server_test
         if [ -f UnitTestResults_${comp}.xml ]; then
-            sudo mv UnitTestResults_${comp}.xml ~/UnitTestResults_${comp}.xml
+            sudo mv UnitTestResults_${comp}.xml $MG_HOME/UnitTestResults_${comp}.xml
         fi
     done
+    # Run the rest
+    for comp in CoordinateSystem FeatureService Geometry KmlService LogManager MappingService TileService ResourceService MdfModel Misc Performance RenderingService ServerAdminService ServerManager ServiceManager SiteManager SiteService ProfilingService TransformMesh
+    do
+        BUILD_COMPONENT="Unit Test MapGuide Server ($comp)"
+        sudo -E timeout 5m ./mgserver test $comp UnitTestResults_${comp}.xml 2>&1 | tee $MG_HOME/mapguide_${comp}_unit_test.log
+        check_server_test
+        if [ -f UnitTestResults_${comp}.xml ]; then
+            sudo mv UnitTestResults_${comp}.xml $MG_HOME/UnitTestResults_${comp}.xml
+        fi
+    done
     cd $SCRIPT_ROOT/mgdev
-    sudo -E ./run_tests.sh --prefix ${MG_INST_PATH} --with-php --with-java --logpath ~
+    BUILD_COMPONENT="Unit Test MapGuide Web Tier ($comp)"
+    sudo -E ./run_tests.sh --prefix ${MG_INST_PATH} --with-php --with-java --logpath $MG_HOME
+    check_test_generic
 fi
 cd $SCRIPT_ROOT
 echo [provision]: Make output dir
-sudo mkdir -p /vagrant/build
+sudo mkdir -p $MOUNT_DIR/build
 echo [provision]: Copy log files to output dir
-sudo mv -f ~/*.log /vagrant/build
+sudo mv -f $MG_HOME/*.log $MOUNT_DIR/build
 echo [provision]: Copy tarballs to output dir
-sudo cp bin/*.tar.xz /vagrant/build
-sudo cp fdosdk-${FDO_DISTRO}-${MG_ARCH}-${FDO_VER_MAJOR}.${FDO_VER_MINOR}.${FDO_VER_REV}_${FDO_REV}.tar.xz /vagrant/build
+sudo cp bin/*.tar.xz $MOUNT_DIR/build
+sudo cp fdosdk-${FDO_DISTRO}-${MG_ARCH}-${FDO_VER_MAJOR}.${FDO_VER_MINOR}.${FDO_VER_REV}_${FDO_REV}.tar.xz $MOUNT_DIR/build
 if [ $MAKE_FDO_SDK -eq 1 ]; then
     echo [provision]: Copy FDO SDK for Ubuntu builds
     # Copy SDK also to sources, so Ubuntu can pick it up
-    sudo rm -f /mapguide_sources/fdosdk*.tar.xz
-    sudo cp fdosdk-${FDO_DISTRO}-${MG_ARCH}-${FDO_VER_MAJOR}.${FDO_VER_MINOR}.${FDO_VER_REV}_${FDO_REV}.tar.xz /mapguide_sources
+    sudo rm -f $SOURCES_DIR/fdosdk*.tar.xz
+    sudo cp fdosdk-${FDO_DISTRO}-${MG_ARCH}-${FDO_VER_MAJOR}.${FDO_VER_MINOR}.${FDO_VER_REV}_${FDO_REV}.tar.xz $SOURCES_DIR
     # Record file name so Ubuntu knows what tarball to extract from
-    sudo echo fdosdk-${FDO_DISTRO}-${MG_ARCH}-${FDO_VER_MAJOR}.${FDO_VER_MINOR}.${FDO_VER_REV}_${FDO_REV}.tar.xz > /mapguide_sources/fdosdk_filename
-    sudo echo ${FDO_REV} > /mapguide_sources/fdosdk_rev
+    sudo echo fdosdk-${FDO_DISTRO}-${MG_ARCH}-${FDO_VER_MAJOR}.${FDO_VER_MINOR}.${FDO_VER_REV}_${FDO_REV}.tar.xz > $SOURCES_DIR/fdosdk_filename
+    sudo echo ${FDO_REV} > $SOURCES_DIR/fdosdk_rev
     # Export filelist to Ubuntu can deb package this SDK if needed
-    sudo cp -R $SCRIPT_ROOT/fdo_build_area/install/filelist /mapguide_sources
+    sudo cp -R $SCRIPT_ROOT/fdo_build_area/install/filelist $SOURCES_DIR
 fi
 echo [provision]: Copy unit test logs to output dir
-if [ -f "~/unit_test_status.log" ]; then
-    sudo mv ~/unit_test_status.log /vagrant/build/unit_test_status.log
+if [ -f "$MG_HOME/unit_test_status.log" ]; then
+    sudo mv $MG_HOME/unit_test_status.log $MOUNT_DIR/build/unit_test_status.log
 fi
-if ls ~/fdo_*_unit_test.log 1> /dev/null 2>&1; then
-    sudo mv ~/fdo_*_unit_test.log /vagrant/build
+if ls $MG_HOME/fdo_*_unit_test.log 1> /dev/null 2>&1; then
+    sudo mv $MG_HOME/fdo_*_unit_test.log $MOUNT_DIR/build
 else
     echo [provision]: No FDO unit test result files found. If FDO_UNIT_TEST is 0 [value is ${FDO_UNIT_TEST}], this can be safely ignored
 fi
-if ls ~/UnitTestResults_*.xml 1> /dev/null 2>&1; then
-    sudo mv ~/UnitTestResults_*.xml /vagrant/build
+if ls $MG_HOME/UnitTestResults_*.xml 1> /dev/null 2>&1; then
+    sudo mv $MG_HOME/UnitTestResults_*.xml $MOUNT_DIR/build
 else
     echo [provision]: No MapGuide unit test result files found. If MG_UNIT_TEST is 0 [value is ${MG_UNIT_TEST}], this can be safely ignored
 fi
@@ -321,27 +379,27 @@
 fi
 
 echo [provision]: Stamping install script
-sudo cp /vagrant/mginstallcentos.sh /vagrant/build/mginstallcentos.sh
-sudo cp /vagrant/mguninstallcentos.sh /vagrant/build/mguninstallcentos.sh
-sudo sed -i 's/URL_PART="centos"/URL_PART='"$DISTNAME"'/g' /vagrant/build/mginstallcentos.sh
-sudo sed -i 's/MGRELEASELABEL="ReleaseLabel"/MGRELEASELABEL='"$MG_RELEASE_LABEL"'/g' /vagrant/build/mginstallcentos.sh
-sudo sed -i 's/FDO_ARCH=i386/FDO_ARCH='"$MG_ARCH"'/g' /vagrant/build/mginstallcentos.sh
-sudo sed -i 's/MG_ARCH=i386/MG_ARCH='"$MG_ARCH"'/g' /vagrant/build/mginstallcentos.sh
-sudo sed -i 's/FDOVER_REV=0/FDOVER_REV='"$FDO_REV"'/g' /vagrant/build/mginstallcentos.sh
-sudo sed -i 's/MGVER_REV=0/MGVER_REV='"$MG_REV"'/g' /vagrant/build/mginstallcentos.sh
-sudo sed -i 's/FDOVER_MAJOR=0/FDOVER_MAJOR='"$FDO_VER_MAJOR"'/g' /vagrant/build/mginstallcentos.sh
-sudo sed -i 's/FDOVER_MINOR=0/FDOVER_MINOR='"$FDO_VER_MINOR"'/g' /vagrant/build/mginstallcentos.sh
-sudo sed -i 's/FDOVER_POINT=0/FDOVER_POINT='"$FDO_VER_REV"'/g' /vagrant/build/mginstallcentos.sh
-sudo sed -i 's/MGVER_MAJOR=0/MGVER_MAJOR='"$MG_VER_MAJOR"'/g' /vagrant/build/mginstallcentos.sh
-sudo sed -i 's/MGVER_MINOR=0/MGVER_MINOR='"$MG_VER_MINOR"'/g' /vagrant/build/mginstallcentos.sh
-sudo sed -i 's/MGVER_POINT=0/MGVER_POINT='"$MG_VER_REV"'/g' /vagrant/build/mginstallcentos.sh
+sudo cp $MOUNT_DIR/mginstallcentos.sh $MOUNT_DIR/build/mginstallcentos.sh
+sudo cp $MOUNT_DIR/mguninstallcentos.sh $MOUNT_DIR/build/mguninstallcentos.sh
+sudo sed -i 's/URL_PART="centos"/URL_PART='"$DISTNAME"'/g' $MOUNT_DIR/build/mginstallcentos.sh
+sudo sed -i 's/MGRELEASELABEL="ReleaseLabel"/MGRELEASELABEL='"$MG_RELEASE_LABEL"'/g' $MOUNT_DIR/build/mginstallcentos.sh
+sudo sed -i 's/FDO_ARCH=i386/FDO_ARCH='"$MG_ARCH"'/g' $MOUNT_DIR/build/mginstallcentos.sh
+sudo sed -i 's/MG_ARCH=i386/MG_ARCH='"$MG_ARCH"'/g' $MOUNT_DIR/build/mginstallcentos.sh
+sudo sed -i 's/FDOVER_REV=0/FDOVER_REV='"$FDO_REV"'/g' $MOUNT_DIR/build/mginstallcentos.sh
+sudo sed -i 's/MGVER_REV=0/MGVER_REV='"$MG_REV"'/g' $MOUNT_DIR/build/mginstallcentos.sh
+sudo sed -i 's/FDOVER_MAJOR=0/FDOVER_MAJOR='"$FDO_VER_MAJOR"'/g' $MOUNT_DIR/build/mginstallcentos.sh
+sudo sed -i 's/FDOVER_MINOR=0/FDOVER_MINOR='"$FDO_VER_MINOR"'/g' $MOUNT_DIR/build/mginstallcentos.sh
+sudo sed -i 's/FDOVER_POINT=0/FDOVER_POINT='"$FDO_VER_REV"'/g' $MOUNT_DIR/build/mginstallcentos.sh
+sudo sed -i 's/MGVER_MAJOR=0/MGVER_MAJOR='"$MG_VER_MAJOR"'/g' $MOUNT_DIR/build/mginstallcentos.sh
+sudo sed -i 's/MGVER_MINOR=0/MGVER_MINOR='"$MG_VER_MINOR"'/g' $MOUNT_DIR/build/mginstallcentos.sh
+sudo sed -i 's/MGVER_POINT=0/MGVER_POINT='"$MG_VER_REV"'/g' $MOUNT_DIR/build/mginstallcentos.sh
 echo [provision]: Stamping variables to uninstall script
-sudo sed -i 's/FDOVER_MAJOR=0/FDOVER_MAJOR='"$FDO_VER_MAJOR"'/g' /vagrant/build/mguninstallcentos.sh
-sudo sed -i 's/FDOVER_MINOR=0/FDOVER_MINOR='"$FDO_VER_MINOR"'/g' /vagrant/build/mguninstallcentos.sh
-sudo sed -i 's/FDOVER_POINT=0/FDOVER_POINT='"$FDO_VER_REV"'/g' /vagrant/build/mguninstallcentos.sh
-sudo sed -i 's/MGVER_MAJOR=0/MGVER_MAJOR='"$MG_VER_MAJOR"'/g' /vagrant/build/mguninstallcentos.sh
-sudo sed -i 's/MGVER_MINOR=0/MGVER_MINOR='"$MG_VER_MINOR"'/g' /vagrant/build/mguninstallcentos.sh
-sudo sed -i 's/MGVER_POINT=0/MGVER_POINT='"$MG_VER_REV"'/g' /vagrant/build/mguninstallcentos.sh
+sudo sed -i 's/FDOVER_MAJOR=0/FDOVER_MAJOR='"$FDO_VER_MAJOR"'/g' $MOUNT_DIR/build/mguninstallcentos.sh
+sudo sed -i 's/FDOVER_MINOR=0/FDOVER_MINOR='"$FDO_VER_MINOR"'/g' $MOUNT_DIR/build/mguninstallcentos.sh
+sudo sed -i 's/FDOVER_POINT=0/FDOVER_POINT='"$FDO_VER_REV"'/g' $MOUNT_DIR/build/mguninstallcentos.sh
+sudo sed -i 's/MGVER_MAJOR=0/MGVER_MAJOR='"$MG_VER_MAJOR"'/g' $MOUNT_DIR/build/mguninstallcentos.sh
+sudo sed -i 's/MGVER_MINOR=0/MGVER_MINOR='"$MG_VER_MINOR"'/g' $MOUNT_DIR/build/mguninstallcentos.sh
+sudo sed -i 's/MGVER_POINT=0/MGVER_POINT='"$MG_VER_REV"'/g' $MOUNT_DIR/build/mguninstallcentos.sh
 PROVISION_END_TIME=`date +%s`
 echo [provision]: Build complete
 echo [provision]: Overall build duration: `expr $PROVISION_END_TIME - $PROVISION_START_TIME` s
\ No newline at end of file

Modified: trunk/Tools/Vagrant/scripts/provision_ubuntu.sh
===================================================================
--- trunk/Tools/Vagrant/scripts/provision_ubuntu.sh	2016-04-22 13:00:17 UTC (rev 8931)
+++ trunk/Tools/Vagrant/scripts/provision_ubuntu.sh	2016-04-29 12:48:08 UTC (rev 8932)
@@ -6,7 +6,7 @@
 #
 # Expected environment (set up by vagrant)
 #
-#  - Calling vagrantfile is for a Ubuntu 12.04.x LTS box
+#  - Calling vagrantfile is for a Ubuntu >= 12.04 box
 #  - Vagrant folder (path of the Vagrantfile) mounted as: /vagrant
 #  - Source folder mounted as: /mapguide_sources
 #     - Contains tarballs for MapGuide/FDO
@@ -24,6 +24,10 @@
 #  $9 - architecture (i386|amd64)
 #  $10 - release label (eg. Beta1, RC1, Final)
 #  $11 - distro label (eg. centos6, ubuntu12) - Optional
+#  $12 - Run FDO tests (1|0)
+#  $13 - Run MapGuide tests (1|0)
+#  $14 - Vagrant folder [default: /vagrant]
+#  $15 - Source folder [default: /mapguide_sources]
 
 PROVISION_START_TIME=`date +%s`
 
@@ -40,6 +44,10 @@
 echo "  9 - ${9}"
 echo " 10 - ${10}"
 echo " 11 - ${11}"
+echo " 12 - ${12}"
+echo " 13 - ${13}"
+echo " 14 - ${14:-/vagrant}"
+echo " 15 - ${15:-/mapguide_sources}"
 echo "*****************************************************"
 
 # FDO version
@@ -62,6 +70,15 @@
 MG_DISTRO=${DISTRO}
 UBUNTU=1
 
+TEST_FDO_FLAG=${12}
+TEST_MG_FLAG=${13}
+
+MOUNT_DIR=${14:-/vagrant}
+SOURCES_DIR=${15:-/mapguide_sources}
+
+MG_HOME=`pwd`
+FDO_HOME=`pwd`
+
 FDO_PLATFORM=
 if [ "${MG_ARCH}" = "amd64" ]; then
     FDO_PLATFORM=64
@@ -85,6 +102,8 @@
 export UBUNTU
 export FDO_DISTRO
 export MG_DISTRO
+export FDO_HOME
+export MG_HOME
 
 BUILD_COMPONENT=
 check_build()
@@ -95,40 +114,62 @@
         exit $error
     fi
 }
-check_test()
+check_test_generic()
 {
     error=$?
     if [ $error -ne 0 ]; then
         echo "[warning]: ${BUILD_COMPONENT} - Unit Tests failed ($error)"
-        echo "[warning]: ${BUILD_COMPONENT} - Unit Tests failed ($error)" >> ~/unit_test_status.log
+        echo "[warning]: ${BUILD_COMPONENT} - Unit Tests failed ($error)" >> $MG_HOME/unit_test_status.log
     fi
 }
+check_server_test()
+{
+    # As this will be called after a test command that is piped to tee, we need to read from $PIPESTATUS
+    error=$PIPESTATUS
+    if [ $error -ne 0 ]; then
+        if [ $error -eq 124 ]; then # Test timed out
+            echo "[warning]: ${BUILD_COMPONENT} - Unit tests failed to complete within the alotted time period. Test logs/results may or may not have been saved"
+            echo "[warning]: ${BUILD_COMPONENT} - Unit tests failed to complete within the alotted time period. Test logs/results may or may not have been saved" >> $MG_HOME/unit_test_status.log
+        else
+            echo "[warning]: ${BUILD_COMPONENT} - Unit Tests failed ($error)"
+            echo "[warning]: ${BUILD_COMPONENT} - Unit Tests failed ($error)" >> $MG_HOME/unit_test_status.log
+        fi
+    fi
+}
 if hash scons 2>/dev/null; then
     echo [provision]: We have scons
 else
     echo [provision]: We do not have scons. Installing it
-    sudo rpm -Uvh /mapguide_sources/scons-2.3.0-1.noarch.rpm
+    sudo rpm -Uvh $SOURCES_DIR/scons-2.3.0-1.noarch.rpm
     check_build
 fi
-cd ~
+cd $MG_HOME
 HAVE_FDO=0
 HAVE_FDO_LIBS=0
 HAVE_MAPGUIDE=0
 MG_UNIT_TEST=0
 FDO_UNIT_TEST=0
+
+if [ "${TEST_FDO_FLAG}" = "1" ]; then
+    FDO_UNIT_TEST=1
+fi
+if [ "${TEST_MG_FLAG}" = "1" ]; then
+    MG_UNIT_TEST=1
+fi
+
 MAKE_FDO_SDK=0
-SCRIPT_ROOT=~/scripts
-FDO_SRC_ROOT=~/fdo/branches
+SCRIPT_ROOT=$MG_HOME/scripts
+FDO_SRC_ROOT=$MG_HOME/fdo/branches
 FDO_SRC_DIR=${FDO_BRANCH}
 FDO_SRC=$FDO_SRC_ROOT/$FDO_SRC_DIR
 if [ "${FDO_BRANCH}" = "trunk" ]; then
-    FDO_SRC_ROOT=~/fdo
+    FDO_SRC_ROOT=$MG_HOME/fdo
     FDO_SRC=$FDO_SRC_ROOT/$FDO_SRC_DIR
 fi
-FDO_LIB_SRC=~/fdo_rdbms_thirdparty
-MG_SRC_ROOT=~/mapguide/branches/${MG_BRANCH}
+FDO_LIB_SRC=$MG_HOME/fdo_rdbms_thirdparty
+MG_SRC_ROOT=$MG_HOME/mapguide/branches/${MG_BRANCH}
 if [ "${MG_BRANCH}" = "trunk" ]; then
-    MG_SRC_ROOT=~/mapguide/trunk
+    MG_SRC_ROOT=$MG_HOME/mapguide/trunk
 fi
 MG_SRC=$MG_SRC_ROOT/MgDev
 FDO_TARBALL=fdo-checkout-${FDO_BRANCH}.tar.gz
@@ -145,6 +186,8 @@
 echo "Build target:     ${MG_DISTRO} - ${MG_ARCH}"
 echo "Release Label:    ${MG_RELEASE_LABEL}"
 echo "FDO Distro label: ${FDO_DISTRO}"
+echo "Running FDO Tests: ${FDO_UNIT_TEST}"
+echo "Running MapGuide Tests: ${MG_UNIT_TEST}"
 echo "Checking directories"
 echo "********************************************************************************"
 
@@ -166,158 +209,180 @@
 else
     echo [provision]: Copy atomic.h
     sudo mkdir -p /usr/include/asm
-    sudo cp /mapguide_sources/atomic.h /usr/include/asm
+    sudo cp $SOURCES_DIR/atomic.h /usr/include/asm
 fi
 echo [provision]: Clean line endings
-sudo dos2unix /vagrant/*.sh
-sudo dos2unix /vagrant/*.pl
-sudo dos2unix /vagrant/*.txt
+sudo dos2unix $MOUNT_DIR/*.sh
+sudo dos2unix $MOUNT_DIR/*.pl
+sudo dos2unix $MOUNT_DIR/*.txt
 echo [provision]: Copying shell scripts
 mkdir -p $SCRIPT_ROOT
-cp -f /vagrant/*.sh $SCRIPT_ROOT
-cp -f /vagrant/*.pl $SCRIPT_ROOT
-cp -f /vagrant/*.txt $SCRIPT_ROOT
+cp -f $MOUNT_DIR/*.sh $SCRIPT_ROOT
+cp -f $MOUNT_DIR/*.pl $SCRIPT_ROOT
+cp -f $MOUNT_DIR/*.txt $SCRIPT_ROOT
 cd $SCRIPT_ROOT
 if [ $HAVE_FDO_LIBS -eq 0 ];
 then
     echo [provision]: Extracting FDO thirdparty libs
-    tar -zxf /mapguide_sources/fdo_rdbms_thirdparty.tar.gz -C ~
+    tar -zxf $SOURCES_DIR/fdo_rdbms_thirdparty.tar.gz -C $MG_HOME
 fi
 if [ $HAVE_FDO -eq 0 ];
 then
     echo [provision]: Extracting FDO working copy
     mkdir -p $FDO_SRC_ROOT
-    tar -zxf /mapguide_sources/$FDO_TARBALL -C $FDO_SRC_ROOT
+    tar -zxf $SOURCES_DIR/$FDO_TARBALL -C $FDO_SRC_ROOT
 fi
 if [ $HAVE_MAPGUIDE -eq 0 ];
 then
     echo [provision]: Extracting MapGuide working copy
     mkdir -p $MG_SRC_ROOT
-    tar -zxf /mapguide_sources/$MG_TARBALL -C $MG_SRC_ROOT
+    tar -zxf $SOURCES_DIR/$MG_TARBALL -C $MG_SRC_ROOT
 fi
-if [ -d /mapguide_sources/patches/fdo ];
+if [ -d $SOURCES_DIR/patches/fdo ];
 then
     echo [provision]: Applying FDO source patches
-    cp -R /mapguide_sources/patches/fdo/* $FDO_SRC
+    cp -R $SOURCES_DIR/patches/fdo/* $FDO_SRC
 fi
-if [ -d /mapguide_sources/patches/mapguide ];
+if [ -d $SOURCES_DIR/patches/mapguide ];
 then
     echo [provision]: Applying MapGuide source patches
-    cp -R /mapguide_sources/patches/mapguide/* $MG_SRC
+    cp -R $SOURCES_DIR/patches/mapguide/* $MG_SRC
 fi
+# If Ubuntu > 12, we need to svn upgrade our working copies first
+UBUNTU_MAJOR_VERSION=`lsb_release -r | awk '{print $2}' | sed 's/\./ /g' | awk '{print $1}'`
+if [ $UBUNTU_MAJOR_VERSION -gt 12 ]; then
+    echo [provison]: We are on Ubuntu >= 12 [`lsb_release -r`]
+    svn upgrade $FDO_SRC
+    svn upgrade $MG_SRC
+fi
 echo [provision]: Making sure swig is executable
 chmod +x $MG_SRC/Oem/SWIGEx/Linux/swig
-cd ~/scripts
+cd $MG_HOME/scripts
 BUILD_COMPONENT="FDO"
-sudo -E ./build_fdo.sh 2>&1 | tee ~/fdo_build.log
+sudo -E ./build_fdo.sh 2>&1 | tee $MG_HOME/fdo_build.log
 check_build
 BUILD_COMPONENT="MapGuide"
-sudo -E ./build.sh 2>&1 | tee ~/mapguide_build.log
+sudo -E ./build.sh 2>&1 | tee $MG_HOME/mapguide_build.log
 check_build
 FDO_REV=`svn info $FDO_SRC | perl revnum.pl`
 MG_REV=`svn info $MG_SRC | perl revnum.pl`
 BUILD_COMPONENT="MapGuide deb packages"
-./dpkgmapguide.sh $MG_ARCH $MG_REV 2>&1 | tee ~/dpkg_mapguide.log
+./dpkgmapguide.sh $MG_ARCH $MG_REV 2>&1 | tee $MG_HOME/dpkg_mapguide.log
 check_build
-> ~/unit_test_status.log
+> $MG_HOME/unit_test_status.log
 if [ $FDO_UNIT_TEST -eq 1 ];
 then
     echo [provision]: Unit test FDO
     BUILD_COMPONENT="Unit Test FDO Core"
     cd $SCRIPT_ROOT/fdo_build_area/Fdo/UnitTest
-    sudo -E NLSPATH=${FDO_INST_PATH}/nls/%N ./UnitTest 2>&1 | tee ~/fdo_core_unit_test.log
-    check_test
+    sudo -E NLSPATH=${FDO_INST_PATH}/nls/%N ./UnitTest 2>&1 | tee $MG_HOME/fdo_core_unit_test.log
+    check_test_generic
     BUILD_COMPONENT="Unit Test SHP Provider"
     cd $SCRIPT_ROOT/fdo_build_area/Providers/SHP/Src/UnitTest
     sudo rm providers.xml
-    sudo -E NLSPATH=${FDO_INST_PATH}/nls/%N ./UnitTest 2>&1 | tee ~/fdo_shp_unit_test.log
-    check_test
+    sudo -E NLSPATH=${FDO_INST_PATH}/nls/%N ./UnitTest 2>&1 | tee $MG_HOME/fdo_shp_unit_test.log
+    check_test_generic
     BUILD_COMPONENT="Unit Test SDF Provider"
     cd $SCRIPT_ROOT/fdo_build_area/Providers/SDF/Src/UnitTest
     sudo rm providers.xml
-    sudo -E NLSPATH=${FDO_INST_PATH}/nls/%N ./UnitTest 2>&1 | tee ~/fdo_sdf_unit_test.log
-    check_test
+    sudo -E NLSPATH=${FDO_INST_PATH}/nls/%N ./UnitTest 2>&1 | tee $MG_HOME/fdo_sdf_unit_test.log
+    check_test_generic
     BUILD_COMPONENT="Unit Test SQLite Provider"
     cd $SCRIPT_ROOT/fdo_build_area/Providers/SQLite/Src/UnitTest
     sudo rm providers.xml
-    sudo -E NLSPATH=${FDO_INST_PATH}/nls/%N ./UnitTest 2>&1 | tee ~/fdo_sqlite_unit_test.log
-    check_test
+    sudo -E NLSPATH=${FDO_INST_PATH}/nls/%N ./UnitTest 2>&1 | tee $MG_HOME/fdo_sqlite_unit_test.log
+    check_test_generic
     BUILD_COMPONENT="Unit Test GDAL Provider"
     cd $SCRIPT_ROOT/fdo_build_area/Providers/GDAL/Src/UnitTest
     sudo rm providers.xml
-    sudo -E NLSPATH=${FDO_INST_PATH}/nls/%N ./UnitTest 2>&1 | tee ~/fdo_gdal_unit_test.log
-    check_test
-    BUILD_COMPONENT="Unit Test OGR Provider"
-    cd $SCRIPT_ROOT/fdo_build_area/Providers/OGR/Src/UnitTest
-    sudo rm providers.xml
-    sudo -E NLSPATH=${FDO_INST_PATH}/nls/%N ./UnitTest 2>&1 | tee ~/fdo_ogr_unit_test.log
-    check_test
-    BUILD_COMPONENT="Unit Test WMS Provider"
-    cd $SCRIPT_ROOT/fdo_build_area/Providers/WMS/Src/UnitTest
-    sudo rm providers.xml
-    sudo -E NLSPATH=${FDO_INST_PATH}/nls/%N ./UnitTest 2>&1 | tee ~/fdo_wms_unit_test.log
-    check_test
+    sudo -E NLSPATH=${FDO_INST_PATH}/nls/%N ./UnitTest 2>&1 | tee $MG_HOME/fdo_gdal_unit_test.log
+    check_test_generic
+    # Depending on what version we're building, OGR unit tests may not exist
+    if [ -d "$SCRIPT_ROOT/fdo_build_area/Providers/OGR/Src/UnitTest" ];
+    then
+        BUILD_COMPONENT="Unit Test OGR Provider"
+        cd $SCRIPT_ROOT/fdo_build_area/Providers/OGR/Src/UnitTest
+        sudo rm providers.xml
+        sudo -E NLSPATH=${FDO_INST_PATH}/nls/%N ./UnitTest 2>&1 | tee $MG_HOME/fdo_ogr_unit_test.log
+        check_test_generic
+    fi
+    # BUILD_COMPONENT="Unit Test WMS Provider"
+    # cd $SCRIPT_ROOT/fdo_build_area/Providers/WMS/Src/UnitTest
+    # sudo rm providers.xml
+    # sudo -E NLSPATH=${FDO_INST_PATH}/nls/%N ./UnitTest 2>&1 | tee $MG_HOME/fdo_wms_unit_test.log
+    # check_test_generic
 fi
 if [ $MG_UNIT_TEST -eq 1 ];
 then
     echo [provision]: Unit test MapGuide
     BUILD_COMPONENT="Unit Test MapGuide Server"
-    # HACK: Tile and Resource Service tests are known to freeze our VMs when driven by vagrant (why? who knows? 
-    # All we know is that those tests involve threads)
-    # So test everything *but* the above services. If required, this can be tested under a manually controlled
-    # VM
-    #
+    # HACK: Due to unforeseen threading issues or gremlins, none of the server unit tests here
+    # are guaranteed to complete and have a possibility of hanging
+
     # build the individual targets that would comprise "make check" sans execution of unittest.sh
     cd $SCRIPT_ROOT/mgdev/Server/src/UnitTesting
     sudo make libMgUnitTesting.la
     cd $SCRIPT_ROOT/mgdev/Server/src/Core
     sudo make unittest.sh
-    # Run the test suites individually except for TileService/ResourceService for reasons already stated
-    for comp in CoordinateSystem FeatureService Geometry KmlService LogManager MappingService MdfModel Misc Performance RenderingService ServerAdminService ServerManager ServiceManager SiteManager SiteService ProfilingService TransformMesh
+    # As CoordinateSystem will run longer than the others, run this separately with its own timeout
+    for comp in CoordinateSystem
     do
-        sudo -E ./mgserver test $comp UnitTestResults_${comp}.xml 2>&1 | tee ~/mapguide_${comp}_unit_test.log
-        check_test
+        BUILD_COMPONENT="Unit Test MapGuide Server ($comp)"
+        sudo -E timeout 20m ./mgserver test $comp UnitTestResults_${comp}.xml 2>&1 | tee $MG_HOME/mapguide_${comp}_unit_test.log
+        check_server_test
         if [ -f UnitTestResults_${comp}.xml ]; then
-            sudo mv UnitTestResults_${comp}.xml ~/UnitTestResults_${comp}.xml
+            sudo mv UnitTestResults_${comp}.xml $MG_HOME/UnitTestResults_${comp}.xml
         fi
     done
+    # Run the rest
+    for comp in CoordinateSystem FeatureService Geometry KmlService LogManager MappingService TileService ResourceService MdfModel Misc Performance RenderingService ServerAdminService ServerManager ServiceManager SiteManager SiteService ProfilingService TransformMesh
+    do
+        BUILD_COMPONENT="Unit Test MapGuide Server ($comp)"
+        sudo -E timeout 5m ./mgserver test $comp UnitTestResults_${comp}.xml 2>&1 | tee $MG_HOME/mapguide_${comp}_unit_test.log
+        check_server_test
+        if [ -f UnitTestResults_${comp}.xml ]; then
+            sudo mv UnitTestResults_${comp}.xml $MG_HOME/UnitTestResults_${comp}.xml
+        fi
+    done
     cd $SCRIPT_ROOT/mgdev
-    sudo -E ./run_tests.sh --prefix ${MG_INST_PATH} --with-php --with-java --logpath ~
+    BUILD_COMPONENT="Unit Test MapGuide Web Tier ($comp)"
+    sudo -E ./run_tests.sh --prefix ${MG_INST_PATH} --with-php --with-java --logpath $MG_HOME
+    check_test_generic
 fi
 cd $SCRIPT_ROOT
 echo [provision]: Make output dir
-sudo mkdir -p /vagrant/build
+sudo mkdir -p $MOUNT_DIR/build
 echo [provision]: Copy log files to output dir
-sudo mv -f ~/*.log /vagrant/build
+sudo mv -f $MG_HOME/*.log $MOUNT_DIR/build
 echo [provision]: Copy tarballs to output dir
-sudo cp bin/*.tar.xz /vagrant/build
-sudo cp fdosdk-${FDO_DISTRO}-${MG_ARCH}-${FDO_VER_MAJOR}.${FDO_VER_MINOR}.${FDO_VER_REV}_${FDO_REV}.tar.xz /vagrant/build
+sudo cp bin/*.tar.xz $MOUNT_DIR/build
+sudo cp fdosdk-${FDO_DISTRO}-${MG_ARCH}-${FDO_VER_MAJOR}.${FDO_VER_MINOR}.${FDO_VER_REV}_${FDO_REV}.tar.xz $MOUNT_DIR/build
 if [ $MAKE_FDO_SDK -eq 1 ]; then
     echo [provision]: Copy FDO SDK for Ubuntu builds
     # Copy SDK also to sources, so Ubuntu can pick it up
-    sudo rm -f /mapguide_sources/fdosdk*.tar.xz
-    sudo cp fdosdk-${FDO_DISTRO}-${MG_ARCH}-${FDO_VER_MAJOR}.${FDO_VER_MINOR}.${FDO_VER_REV}_${FDO_REV}.tar.xz /mapguide_sources
+    sudo rm -f $SOURCES_DIR/fdosdk*.tar.xz
+    sudo cp fdosdk-${FDO_DISTRO}-${MG_ARCH}-${FDO_VER_MAJOR}.${FDO_VER_MINOR}.${FDO_VER_REV}_${FDO_REV}.tar.xz $SOURCES_DIR
     # Record file name so Ubuntu knows what tarball to extract from
-    sudo echo fdosdk-${FDO_DISTRO}-${MG_ARCH}-${FDO_VER_MAJOR}.${FDO_VER_MINOR}.${FDO_VER_REV}_${FDO_REV}.tar.xz > /mapguide_sources/fdosdk_filename
-    sudo echo ${FDO_REV} > /mapguide_sources/fdosdk_rev
+    sudo echo fdosdk-${FDO_DISTRO}-${MG_ARCH}-${FDO_VER_MAJOR}.${FDO_VER_MINOR}.${FDO_VER_REV}_${FDO_REV}.tar.xz > $SOURCES_DIR/fdosdk_filename
+    sudo echo ${FDO_REV} > $SOURCES_DIR/fdosdk_rev
     # Export filelist to Ubuntu can deb package this SDK if needed
-    sudo cp -R $SCRIPT_ROOT/fdo_build_area/install/filelist /mapguide_sources
+    sudo cp -R $SCRIPT_ROOT/fdo_build_area/install/filelist $SOURCES_DIR
 fi
 echo [provision]: Copy FDO deb packages
-sudo cp fdo_build_area/install/bin/*.deb /vagrant/build
+sudo cp fdo_build_area/install/bin/*.deb $MOUNT_DIR/build
 echo [provision]: Copy MapGuide deb packages
-sudo cp bin/*.deb /vagrant/build
+sudo cp bin/*.deb $MOUNT_DIR/build
 echo [provision]: Copy unit test logs to output dir
-if [ -f "~/unit_test_status.log" ]; then
-    sudo mv ~/unit_test_status.log /vagrant/build/unit_test_status.log
+if [ -f "$MG_HOME/unit_test_status.log" ]; then
+    sudo mv $MG_HOME/unit_test_status.log $MOUNT_DIR/build/unit_test_status.log
 fi
-if ls ~/fdo_*_unit_test.log 1> /dev/null 2>&1; then
-    sudo mv ~/fdo_*_unit_test.log /vagrant/build
+if ls $MG_HOME/fdo_*_unit_test.log 1> /dev/null 2>&1; then
+    sudo mv $MG_HOME/fdo_*_unit_test.log $MOUNT_DIR/build
 else
     echo [provision]: No FDO unit test result files found. If FDO_UNIT_TEST is 0 [value is ${FDO_UNIT_TEST}], this can be safely ignored
 fi
-if ls ~/UnitTestResults_*.xml 1> /dev/null 2>&1; then
-    sudo mv ~/UnitTestResults_*.xml /vagrant/build
+if ls $MG_HOME/UnitTestResults_*.xml 1> /dev/null 2>&1; then
+    sudo mv $MG_HOME/UnitTestResults_*.xml $MOUNT_DIR/build
 else
     echo [provision]: No MapGuide unit test result files found. If MG_UNIT_TEST is 0 [value is ${MG_UNIT_TEST}], this can be safely ignored
 fi
@@ -326,21 +391,22 @@
 if [ "${MG_ARCH}" = "amd64" ]; then
     DISTNAME=${MG_DISTRO}_x64
 fi
+
 echo [provision]: Stamping install script
-sudo cp /vagrant/mginstallubuntu.sh /vagrant/build/mginstallubuntu.sh
-sudo cp /vagrant/mguninstallubuntu.sh /vagrant/build/mguninstallubuntu.sh
-sudo sed -i 's/URL_PART="ubuntu12"/URL_PART='"$DISTNAME"'/g' /vagrant/build/mginstallubuntu.sh
-sudo sed -i 's/MGRELEASELABEL="ReleaseLabel"/MGRELEASELABEL='"$MG_RELEASE_LABEL"'/g' /vagrant/build/mginstallubuntu.sh
-sudo sed -i 's/FDOARCH=i386/FDOARCH='"$MG_ARCH"'/g' /vagrant/build/mginstallubuntu.sh
-sudo sed -i 's/MGARCH=i386/MGARCH='"$MG_ARCH"'/g' /vagrant/build/mginstallubuntu.sh
-sudo sed -i 's/FDOBUILD=0/FDOBUILD='"$FDO_REV"'/g' /vagrant/build/mginstallubuntu.sh
-sudo sed -i 's/MGBUILD=0/MGBUILD='"$MG_REV"'/g' /vagrant/build/mginstallubuntu.sh
-sudo sed -i 's/FDOVER_MAJOR=0/FDOVER_MAJOR='"$FDO_VER_MAJOR"'/g' /vagrant/build/mginstallubuntu.sh
-sudo sed -i 's/FDOVER_MINOR=0/FDOVER_MINOR='"$FDO_VER_MINOR"'/g' /vagrant/build/mginstallubuntu.sh
-sudo sed -i 's/FDOVER_POINT=0/FDOVER_POINT='"$FDO_VER_REV"'/g' /vagrant/build/mginstallubuntu.sh
-sudo sed -i 's/MGVER_MAJOR=0/MGVER_MAJOR='"$MG_VER_MAJOR"'/g' /vagrant/build/mginstallubuntu.sh
-sudo sed -i 's/MGVER_MINOR=0/MGVER_MINOR='"$MG_VER_MINOR"'/g' /vagrant/build/mginstallubuntu.sh
-sudo sed -i 's/MGVER_POINT=0/MGVER_POINT='"$MG_VER_REV"'/g' /vagrant/build/mginstallubuntu.sh
+sudo cp $MOUNT_DIR/mginstallubuntu.sh $MOUNT_DIR/build/mginstallubuntu.sh
+sudo cp $MOUNT_DIR/mguninstallubuntu.sh $MOUNT_DIR/build/mguninstallubuntu.sh
+sudo sed -i 's/URL_PART="ubuntu12"/URL_PART='"$DISTNAME"'/g' $MOUNT_DIR/build/mginstallubuntu.sh
+sudo sed -i 's/MGRELEASELABEL="ReleaseLabel"/MGRELEASELABEL='"$MG_RELEASE_LABEL"'/g' $MOUNT_DIR/build/mginstallubuntu.sh
+sudo sed -i 's/FDOARCH=i386/FDOARCH='"$MG_ARCH"'/g' $MOUNT_DIR/build/mginstallubuntu.sh
+sudo sed -i 's/MGARCH=i386/MGARCH='"$MG_ARCH"'/g' $MOUNT_DIR/build/mginstallubuntu.sh
+sudo sed -i 's/FDOBUILD=0/FDOBUILD='"$FDO_REV"'/g' $MOUNT_DIR/build/mginstallubuntu.sh
+sudo sed -i 's/MGBUILD=0/MGBUILD='"$MG_REV"'/g' $MOUNT_DIR/build/mginstallubuntu.sh
+sudo sed -i 's/FDOVER_MAJOR=0/FDOVER_MAJOR='"$FDO_VER_MAJOR"'/g' $MOUNT_DIR/build/mginstallubuntu.sh
+sudo sed -i 's/FDOVER_MINOR=0/FDOVER_MINOR='"$FDO_VER_MINOR"'/g' $MOUNT_DIR/build/mginstallubuntu.sh
+sudo sed -i 's/FDOVER_POINT=0/FDOVER_POINT='"$FDO_VER_REV"'/g' $MOUNT_DIR/build/mginstallubuntu.sh
+sudo sed -i 's/MGVER_MAJOR=0/MGVER_MAJOR='"$MG_VER_MAJOR"'/g' $MOUNT_DIR/build/mginstallubuntu.sh
+sudo sed -i 's/MGVER_MINOR=0/MGVER_MINOR='"$MG_VER_MINOR"'/g' $MOUNT_DIR/build/mginstallubuntu.sh
+sudo sed -i 's/MGVER_POINT=0/MGVER_POINT='"$MG_VER_REV"'/g' $MOUNT_DIR/build/mginstallubuntu.sh
 PROVISION_END_TIME=`date +%s`
 echo [provision]: Build complete
 echo [provision]: Overall build duration: `expr $PROVISION_END_TIME - $PROVISION_START_TIME` s
\ No newline at end of file

Modified: trunk/Tools/Vagrant/ubuntu/x64/Vagrantfile
===================================================================
--- trunk/Tools/Vagrant/ubuntu/x64/Vagrantfile	2016-04-22 13:00:17 UTC (rev 8931)
+++ trunk/Tools/Vagrant/ubuntu/x64/Vagrantfile	2016-04-29 12:48:08 UTC (rev 8932)
@@ -119,5 +119,5 @@
   config.vm.provision "shell",
     privileged: false,
     path: "provision_ubuntu.sh",
-    args: [4, 1, 0, 3, 1, 0, "trunk", "trunk", "amd64", "Test", "ubuntu12"]
+    args: [4, 1, 0, 3, 1, 0, "trunk", "trunk", "amd64", "Test", "ubuntu12", 1, 1]
 end

Modified: trunk/Tools/Vagrant/ubuntu/x86/Vagrantfile
===================================================================
--- trunk/Tools/Vagrant/ubuntu/x86/Vagrantfile	2016-04-22 13:00:17 UTC (rev 8931)
+++ trunk/Tools/Vagrant/ubuntu/x86/Vagrantfile	2016-04-29 12:48:08 UTC (rev 8932)
@@ -119,5 +119,5 @@
   config.vm.provision "shell",
     privileged: false,
     path: "provision_ubuntu.sh",
-    args: [4, 1, 0, 3, 1, 0, "trunk", "trunk", "i386", "Test", "ubuntu12"]
+    args: [4, 1, 0, 3, 1, 0, "trunk", "trunk", "i386", "Test", "ubuntu12", 1, 1]
 end



More information about the mapguide-commits mailing list