Sisyphus - adapt to build and test Mozilla2, bug 422942
authorBob Clary <bclary@bclary.com>
Wed, 25 Jun 2008 17:51:22 -0400
changeset 15533 5f932c24feea20b7aa52d9a00ceeae64bb9e6775
parent 15529 ec02b60c2a0b19f021ab1e67facefcea436b3ba4
child 15534 f012f9e140d9b8200eae9ed197dede839334ac64
push id292
push userbclary@mozilla.com
push dateWed, 25 Jun 2008 21:59:25 +0000
treeherdermozilla-central@f012f9e140d9 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
bugs422942
milestone1.9.1a1pre
Sisyphus - adapt to build and test Mozilla2, bug 422942
testing/sisyphus/bin/build.sh
testing/sisyphus/bin/builder.sh
testing/sisyphus/bin/check-spider.sh
testing/sisyphus/bin/checkout.sh
testing/sisyphus/bin/create-profile.sh
testing/sisyphus/bin/download.sh
testing/sisyphus/bin/edit-talkback.pl
testing/sisyphus/bin/edit-talkback.sh
testing/sisyphus/bin/install-build.sh
testing/sisyphus/bin/install-extensions.sh
testing/sisyphus/bin/install-plugins.sh
testing/sisyphus/bin/library.sh
testing/sisyphus/bin/memory.pl
testing/sisyphus/bin/mips.pl
testing/sisyphus/bin/set-build-env.sh
testing/sisyphus/bin/test-setup.sh
testing/sisyphus/bin/tester.sh
testing/sisyphus/bin/timed_run.py
testing/sisyphus/bin/uninstall-build.sh
testing/sisyphus/bin/userhook-checkspider.js
testing/sisyphus/data/download-check,firefox-1.5.0-ftp,darwin.data
testing/sisyphus/data/download-check,firefox-1.5.0-ftp,linux.data
testing/sisyphus/data/download-check,firefox-1.5.0-ftp,mac.data
testing/sisyphus/data/download-check,firefox-1.5.0-ftp,nt.data
testing/sisyphus/data/download-check,firefox-1.5.0-ftp,win32.data
testing/sisyphus/data/download-check,firefox-2.0.0-ftp,darwin.data
testing/sisyphus/data/download-check,firefox-2.0.0-ftp,linux.data
testing/sisyphus/data/download-check,firefox-2.0.0-ftp,mac.data
testing/sisyphus/data/download-check,firefox-2.0.0-ftp,nt.data
testing/sisyphus/data/download-check,firefox-2.0.0-ftp,win32.data
testing/sisyphus/data/download-check,firefox-all,darwin.data
testing/sisyphus/data/download-check,firefox-all,linux.data
testing/sisyphus/data/download-check,firefox-all,mac.data
testing/sisyphus/data/download-check,firefox-all,nt.data
testing/sisyphus/data/download-check,firefox-all,win32.data
testing/sisyphus/data/download-check,firefox-all-older,darwin.data
testing/sisyphus/data/download-check,firefox-all-older,linux.data
testing/sisyphus/data/download-check,firefox-all-older,mac.data
testing/sisyphus/data/download-check,firefox-all-older,nt.data
testing/sisyphus/data/download-check,firefox-all-older,win32.data
testing/sisyphus/data/download-check,thunderbird-1.5.0-ftp,darwin.data
testing/sisyphus/data/download-check,thunderbird-1.5.0-ftp,linux.data
testing/sisyphus/data/download-check,thunderbird-1.5.0-ftp,mac.data
testing/sisyphus/data/download-check,thunderbird-1.5.0-ftp,nt.data
testing/sisyphus/data/download-check,thunderbird-1.5.0-ftp,win32.data
testing/sisyphus/data/download-check,thunderbird-2.0.0-ftp,darwin.data
testing/sisyphus/data/download-check,thunderbird-2.0.0-ftp,linux.data
testing/sisyphus/data/download-check,thunderbird-2.0.0-ftp,mac.data
testing/sisyphus/data/download-check,thunderbird-2.0.0-ftp,nt.data
testing/sisyphus/data/download-check,thunderbird-2.0.0-ftp,win32.data
testing/sisyphus/data/download-check,thunderbird-all,darwin.data
testing/sisyphus/data/download-check,thunderbird-all,linux.data
testing/sisyphus/data/download-check,thunderbird-all,mac.data
testing/sisyphus/data/download-check,thunderbird-all,nt.data
testing/sisyphus/data/download-check,thunderbird-all,win32.data
testing/sisyphus/data/download-check,thunderbird-all-older,darwin.data
testing/sisyphus/data/download-check,thunderbird-all-older,linux.data
testing/sisyphus/data/download-check,thunderbird-all-older,mac.data
testing/sisyphus/data/download-check,thunderbird-all-older,nt.data
testing/sisyphus/data/download-check,thunderbird-all-older,win32.data
testing/sisyphus/data/firefox,1.8.0,nightly-darwin.data
testing/sisyphus/data/firefox,1.8.0,nightly-mac.data
testing/sisyphus/data/firefox,1.8.0,nightly-nt.data
testing/sisyphus/data/firefox,1.8.0,nightly-win32.data
testing/sisyphus/data/firefox,1.8.1,nightly-darwin.data
testing/sisyphus/data/firefox,1.8.1,nightly-linux.data
testing/sisyphus/data/firefox,1.8.1,nightly-mac.data
testing/sisyphus/data/firefox,1.8.1,nightly-nt.data
testing/sisyphus/data/firefox,1.8.1,nightly-win32.data
testing/sisyphus/data/firefox,1.9.0,nightly-darwin.data
testing/sisyphus/data/firefox,1.9.0,nightly-mac.data
testing/sisyphus/data/firefox,1.9.0,nightly-nt.data
testing/sisyphus/data/firefox,1.9.0,nightly-win32.data
testing/sisyphus/data/firefox,1.9.0-gcov,debug.data
testing/sisyphus/data/firefox,1.9.0-gcov,opt.data
testing/sisyphus/data/firefox,1.9.0-jemalloc,debug.data
testing/sisyphus/data/firefox,1.9.0-jemalloc,opt.data
testing/sisyphus/data/firefox,1.9.0-jemalloc-test,debug.data
testing/sisyphus/data/firefox,1.9.0-jemalloc-test,opt.data
testing/sisyphus/data/firefox,1.9.1,debug.data
testing/sisyphus/data/firefox,1.9.1,nightly-darwin.data
testing/sisyphus/data/firefox,1.9.1,nightly-linux.data
testing/sisyphus/data/firefox,1.9.1,nightly-nt.data
testing/sisyphus/data/firefox,1.9.1,opt.data
testing/sisyphus/data/firefox,1.9.1,too-much-gc,debug.data
testing/sisyphus/data/firefox,1.9.1-actionmonkey,debug.data
testing/sisyphus/data/firefox,1.9.1-actionmonkey,opt.data
testing/sisyphus/data/firefox,1.9.1-jemalloc,debug.data
testing/sisyphus/data/firefox,1.9.1-jemalloc,opt.data
testing/sisyphus/data/firefox,1.9.1-jemalloc-test,debug.data
testing/sisyphus/data/firefox,1.9.1-jemalloc-test,opt.data
testing/sisyphus/data/firefox,1.9.1-jprof,debug.data
testing/sisyphus/data/firefox,1.9.1-jprof,opt.data
testing/sisyphus/data/firefox,1.9.1-test,debug.data
testing/sisyphus/data/firefox,1.9.1-test,opt.data
testing/sisyphus/data/js,1.9.0-gcov,debug.data
testing/sisyphus/data/js,1.9.0-gcov,opt.data
testing/sisyphus/data/js,1.9.1,debug.data
testing/sisyphus/data/js,1.9.1,opt.data
testing/sisyphus/data/js,1.9.1,too-much-gc,debug.data
testing/sisyphus/data/js,1.9.1-actionmonkey,debug.data
testing/sisyphus/data/js,1.9.1-actionmonkey,opt.data
testing/sisyphus/data/js,1.9.1-test,debug.data
testing/sisyphus/data/js,1.9.1-test,opt.data
testing/sisyphus/data/thunderbird,1.9.1,debug.data
testing/sisyphus/data/thunderbird,1.9.1-test,debug.data
testing/sisyphus/tests/mozilla.org/download-page/collect-urls-userhook.js
testing/sisyphus/tests/mozilla.org/download-page/test.sh
--- a/testing/sisyphus/bin/build.sh
+++ b/testing/sisyphus/bin/build.sh
@@ -75,26 +75,22 @@ case $product in
                     fi
                 fi
                 ;;
             linux)
                 executablepath=$product-$buildtype/dist/bin
             ;;
         esac
 
-        if [[ "$OSID" != "win32" ]]; then
+        if [[ "$OSID" != "nt" ]]; then
             #
             # patch unix-like startup scripts to exec instead of 
             # forking new processes
             #
             executable=`get_executable $product $branch $executablepath`
-            if [[ -z "$executable" ]]; then
-                error "get_executable $product $branch $executablepath returned empty path" $LINENO
-            fi
-
 
             executabledir=`dirname $executable`
 
             # patch to use exec to prevent forked processes
             cd "$executabledir"
             if [ -e "$product" ]; then
                 echo "$SCRIPT: patching $product"
                 cp $TEST_DIR/bin/$product.diff .
--- a/testing/sisyphus/bin/builder.sh
+++ b/testing/sisyphus/bin/builder.sh
@@ -49,17 +49,17 @@ function usage()
 {
     cat<<EOF
 usage: 
 $SCRIPT -p products -b branches -B buildcommands -T buildtypes [-e extra] [-v]
 
 variable            description
 ===============     ===========================================================
 -p products         required. one or more of firefox thunderbird
--b branches         required. one or more of 1.8.0 1.8.1 1.9.0
+-b branches         required. one or more of 1.8.0 1.8.1 1.9.0 1.9.1
 -B buildcommands    required. one or more of clean checkout build
 -T buildtypes       required. one or more of opt debug
 -e extra            optional. extra qualifier to pick build tree and mozconfig.
 -d datafiles        optional. one or more filenames of files containing 
                     environment variable definitions to be included.
 -v                  optional. verbose - copies log file output to stdout.
 
 note that the environment variables should have the same names as in the 
@@ -81,22 +81,17 @@ while getopts $options optname ;
       e) extra="-$OPTARG"
           extraflag="-e $OPTARG";;
       d) datafiles=$OPTARG;;
       v) verbose=1;;
   esac
 done
 
 # include environment variables
-if [[ -n "$datafiles" ]]; then
-    for datafile in $datafiles; do 
-        cat $datafile | sed 's|^|data: |'
-        source $datafile
-    done
-fi
+loaddata $datafiles
 
 if [[ -z "$products" || -z "$branches" || -z "$buildcommands" || \
     -z "$buildtypes" ]]; then
     usage
 fi
 
 # clean first in case checkout changes the configuration
 if echo "$buildcommands" | grep -iq clean; then
--- a/testing/sisyphus/bin/check-spider.sh
+++ b/testing/sisyphus/bin/check-spider.sh
@@ -50,17 +50,17 @@ function usage()
     cat <<EOF
 usage: 
 $SCRIPT -p product -b branch -x executablepath -N profilename 
        [-d datafiles]
 
 variable            description
 ===============     ============================================================
 -p product          required. firefox|thunderbird
--b branch           required. 1.8.0|1.8.1|1.9.0
+-b branch           required. 1.8.0|1.8.1|1.9.0|1.9.1
 -x executablepath   required. directory-tree containing executable named 
                     'product'
 -N profilename      required. name of profile to be used
 -d datafiles        optional. one or more filenames of files containing 
                     environment variable definitions to be included.
 
 note that the environment variables should have the same names as in the 
 "variable" column.
@@ -83,55 +83,43 @@ while getopts $options optname ;
       b) branch=$OPTARG;;
       x) executablepath=$OPTARG;;
       N) profilename=$OPTARG;;
       d) datafiles=$OPTARG;;
   esac
 done
 
 # include environment variables
-if [[ -n "$datafiles" ]]; then
-    for datafile in $datafiles; do 
-        cat $datafile | sed 's|^|data: |'
-        source $datafile
-    done
-fi
+loaddata $datafiles
 
 if [[ -z "$product" || -z "$branch" || -z "$executablepath" || -z "$profilename" ]]; 
     then
     usage
 fi
 
 if [[ "$product" != "firefox" && "$product" != "thunderbird" ]]; then
     error "product \"$product\" must be one of firefox or thunderbird" $LINENO
 fi
 
-if [[ "$branch" != "1.8.0" && "$branch" != "1.8.1" && "$branch" != "1.9.0" ]]; 
+if [[ "$branch" != "1.8.0" && "$branch" != "1.8.1" && "$branch" != "1.9.0"  && "$branch" != "1.9.1" ]]; 
     then
-    error "branch \"$branch\" must be one of 1.8.0, 1.8.1, 1.9.0" $LINENO
+    error "branch \"$branch\" must be one of 1.8.0, 1.8.1, 1.9.0 1.9.1" $LINENO
 fi
 
 executable=`get_executable $product $branch $executablepath`
 
-if [[ -z "$executable" ]]; then
-    error "get_executable $product $branch $executablepath returned empty path" $LINENO
-fi
-
-if [[ ! -x "$executable" ]]; then 
-    error "executable \"$executable\" is not executable" $LINENO
-fi
-
 if echo "$profilename" | egrep -qiv '[a-z0-9_]'; then
     error "profile name must consist of letters, digits or _" $LINENO
 fi
 
 echo # attempt to force Spider to load
 
 tries=1
 while ! $TEST_DIR/bin/timed_run.py ${TEST_STARTUP_TIMEOUT} "Start Spider: try $tries" \
+     $EXECUTABLE_DRIVER \
     "$executable" -P "$profilename" \
     -spider -start -quit \
     -uri "http://${TEST_HTTP}/bin/start-spider.html" \
     -hook "http://${TEST_HTTP}/bin/userhook-checkspider.js"; do
   let tries=tries+1
   if [ "$tries" -gt $TEST_STARTUP_TRIES  ]; then
       error "Failed to start spider. Exiting..." $LINENO
   fi
--- a/testing/sisyphus/bin/checkout.sh
+++ b/testing/sisyphus/bin/checkout.sh
@@ -39,77 +39,182 @@
 
 source $TEST_DIR/bin/library.sh
 source $TEST_DIR/bin/set-build-env.sh $@
 
 if [[ -z "$TREE" ]]; then
     error "source tree not specified!" $LINENO
 fi
 
+if [[ "$branch" == "1.9.1" ]]; then
+
+    if [[ -z "$TEST_MOZILLA_HG" ]]; then
+        error "environment variable TEST_MOZILLA_HG must be set to the hg repository for branch 1.9.1"
+    fi
+
+    # maintain a local copy of the hg repository
+    # clone specific trees from it.
+
+    TEST_MOZILLA_HG_LOCAL=$BUILDDIR/hg.mozilla.org/`basename $TEST_MOZILLA_HG`
+
+    if [[ ! -d $BUILDDIR/hg.mozilla.org ]]; then
+        mkdir $BUILDDIR/hg.mozilla.org
+    fi
+
+    if [[ ! -d $TEST_MOZILLA_HG_LOCAL ]]; then
+        if ! hg clone -r $TEST_MOZILLA_HG_REV $TEST_MOZILLA_HG $TEST_MOZILLA_HG_LOCAL; then
+            error "during hg clone of $TEST_MOZILLA_HG" $LINENO
+        fi
+    fi
+
+    cd $TEST_MOZILLA_HG_LOCAL
+    hg pull
+fi
+
 cd $TREE
 
 case $product in
     firefox)
-        if [[ ! ( -d mozilla && \
-            -e mozilla/client.mk && \
-            -e "mozilla/$project/config/mozconfig" ) ]]; then
-            if ! eval cvs -z3 -q co $MOZ_CO_FLAGS $BRANCH_CO_FLAGS $DATE_CO_FLAGS \
-                mozilla/client.mk mozilla/$project/config/mozconfig; then
-                error "during checkout of $project mozconfig" $LINENO
-            fi
-        fi
+        case $branch in
+            1.8.*|1.9.0)
+                if [[ ! ( -d mozilla && \
+                    -e mozilla/client.mk && \
+                    -e "mozilla/$project/config/mozconfig" ) ]]; then
+                    if ! eval cvs -z3 -q co $MOZ_CO_FLAGS $BRANCH_CO_FLAGS $DATE_CO_FLAGS \
+                        mozilla/client.mk mozilla/$project/config/mozconfig; then
+                        error "during checkout of $project mozconfig" $LINENO
+                    fi
+                fi
+                if ! $buildbash $bashlogin -c "cd $TREE/mozilla; make -f client.mk checkout" 2>&1; then
+                    error "during checkout of $project tree" $LINENO
+                fi
+                ;;
+
+            1.9.1)
 
-#        cd mozilla
+                if [[ ! -e mozilla/client.py ]]; then
+                    if ! hg clone $TEST_MOZILLA_HG_LOCAL $TREE/mozilla; then
+                        error "during hg clone of $TEST_MOZILLA_HG_LOCAL" $LINENO
+                    fi
+                fi
 
-        if ! $buildbash $bashlogin -c "cd $TREE/mozilla; make -f client.mk checkout" 2>&1; then
-            error "during checkout of $project tree" $LINENO
-        fi
+                cd mozilla
+                hg pull -r $TEST_MOZILLA_HG_REV
+                
+                # do not use mozilla-build on windows systems as we 
+                # must use the cygwin python with the cygwin mercurial.
+
+                if ! python client.py checkout; then
+                    error "during checkout of $project tree" $LINENO
+                fi
+                ;;
+
+            *)
+                error "branch $branch not yet supported"
+                ;;
+        esac
         ;;
 
     thunderbird)
-        if [[ ! ( -d mozilla && \
-            -e mozilla/client.mk && \
-            -e "mozilla/$project/config/mozconfig" ) ]]; then
-            if ! eval cvs -z3 -q co $MOZ_CO_FLAGS $BRANCH_CO_FLAGS $DATE_CO_FLAGS \
-                mozilla/client.mk mozilla/$project/config/mozconfig; then
-                error "during checkout of $MOZ_CO_FLAGS $BRANCH_CO_FLAGS $DATE_CO_FLAGS $project mozconfig" $LINENO
-            fi
-        fi
-        if [[ ! ( -d mozilla && \
-            -e mozilla/client.mk && \
-            -e "mozilla/browser/config/mozconfig" ) ]]; then
-            if ! eval cvs -z3 -q co $MOZ_CO_FLAGS $BRANCH_CO_FLAGS $DATE_CO_FLAGS \
-                mozilla/client.mk mozilla/browser/config/mozconfig; then
-                error "during checkout of $MOZ_CO_FLAGS $BRANCH_CO_FLAGS $DATE_CO_FLAGS browser mozconfig" $LINENO
-            fi
-        fi
+
+        case $branch in
+            1.8.*|1.9.0)
+                if [[ ! ( -d mozilla && \
+                    -e mozilla/client.mk && \
+                    -e "mozilla/$project/config/mozconfig" ) ]]; then
+                    if ! eval cvs -z3 -q co $MOZ_CO_FLAGS $BRANCH_CO_FLAGS $DATE_CO_FLAGS \
+                        mozilla/client.mk mozilla/$project/config/mozconfig; then
+                        error "during checkout of $MOZ_CO_FLAGS $BRANCH_CO_FLAGS $DATE_CO_FLAGS $project mozconfig" $LINENO
+                    fi
+                fi
+
+                if [[ ! ( -d mozilla && \
+                    -e mozilla/client.mk && \
+                    -e "mozilla/browser/config/mozconfig" ) ]]; then
+                    if ! eval cvs -z3 -q co $MOZ_CO_FLAGS $BRANCH_CO_FLAGS $DATE_CO_FLAGS \
+                        mozilla/client.mk mozilla/browser/config/mozconfig; then
+                        error "during checkout of $MOZ_CO_FLAGS $BRANCH_CO_FLAGS $DATE_CO_FLAGS browser mozconfig" $LINENO
+                    fi
+                fi
 
- #       cd mozilla
+                if ! $buildbash $bashlogin -c "cd $TREE/mozilla; make -f client.mk checkout" 2>&1; then
+                    error "during checkout of $project tree" $LINENO
+                fi
+                ;;
+
+            1.9.1)
+                if [[ ! -e mozilla/client.py ]]; then
+                    if ! hg clone $TEST_MOZILLA_HG_LOCAL $TREE/mozilla; then
+                        error "during hg clone of $TEST_MOZILLA_HG_LOCAL" $LINENO
+                    fi
+                fi
 
-        if ! $buildbash $bashlogin -c "cd $TREE/mozilla; make -f client.mk checkout" 2>&1; then
-            error "during checkout of $project tree" $LINENO
-        fi
+                cd mozilla
+                hg pull -r $TEST_MOZILLA_HG_REV
+
+                # do not use mozilla-build on windows systems as we 
+                # must use the cygwin python with the cygwin mercurial.
+
+                if ! python client.py checkout; then
+                    error "during checkout of $project tree" $LINENO
+                fi
+                ;;
+
+            *)
+                error "branch $branch not yet supported"
+                ;;
+        esac
         ;;
 
     js) 
-        if [[ ! ( -d mozilla && \
-            -e mozilla/js && \
-            -e mozilla/js/src ) ]]; then
-            if ! eval cvs -z3 -q co $MOZ_CO_FLAGS $BRANCH_CO_FLAGS $DATE_CO_FLAGS mozilla/js; then
-                error "during initial co $MOZ_CO_FLAGS $BRANCH_CO_FLAGS $DATE_CO_FLAGS mozilla/js"
-            fi
-        fi
+
+        case $branch in
+            1.8.*|1.9.0)
+                if [[ ! ( -d mozilla && \
+                    -e mozilla/js && \
+                    -e mozilla/js/src ) ]]; then
+                    if ! eval cvs -z3 -q co $MOZ_CO_FLAGS $BRANCH_CO_FLAGS $DATE_CO_FLAGS mozilla/js; then
+                        error "during initial co $MOZ_CO_FLAGS $BRANCH_CO_FLAGS $DATE_CO_FLAGS mozilla/js"
+                    fi
+                fi
+
+                cd mozilla/js/src
+
+                if ! eval cvs -z3 -q update $MOZ_CO_FLAGS $BRANCH_CO_FLAGS $DATE_CO_FLAGS -d -P 2>&1; then
+                    error "during update $MOZ_CO_FLAGS $BRANCH_CO_FLAGS $DATE_CO_FLAGS js/src" $LINENO
+                fi
+
+                if ! cvs -z3 -q update -d -P -A editline config  2>&1; then
+                    error "during checkout of js/src" $LINENO
+                fi
+                ;;
+
+            1.9.1)
 
-        cd mozilla/js/src
+                if [[ ! -e mozilla/client.py ]]; then
+                    if ! hg clone $TEST_MOZILLA_HG_LOCAL $TREE/mozilla; then
+                        error "during hg clone of $TEST_MOZILLA_HG_LOCAL" $LINENO
+                    fi
+                fi
+
+                cd mozilla
+                hg pull -r $TEST_MOZILLA_HG_REV
+
+                # do not use mozilla-build on windows systems as we 
+                # must use the cygwin python with the cygwin mercurial.
 
-        if ! eval cvs -z3 -q update $MOZ_CO_FLAGS $BRANCH_CO_FLAGS $DATE_CO_FLAGS -d -P 2>&1; then
-            error "during update $MOZ_CO_FLAGS $BRANCH_CO_FLAGS $DATE_CO_FLAGS js/src" $LINENO
-        fi
+                if ! python client.py checkout; then
+                    error "during checkout of $project tree" $LINENO
+                fi
 
-        if ! cvs -z3 -q update -d -P -A editline config  2>&1; then
-            error "during checkout of js/src" $LINENO
-        fi
+                cd js/src
+                ;;
+
+            *)
+                error "branch $branch not yet supported"
+                ;;
+        esac
         # end for js shell
         ;;
     *)
         error "unknown product $product" $LINENO
         ;;
 esac
--- a/testing/sisyphus/bin/create-profile.sh
+++ b/testing/sisyphus/bin/create-profile.sh
@@ -48,17 +48,17 @@ function usage()
     cat <<EOF
 usage: 
 $SCRIPT -p product -b branch -x executablepath -D directory -N profilename 
        [-L profiletemplate] [-U user] [-d datafiles]
 
 variable            description
 ===============     ============================================================
 -p product          required. firefox|thunderbird
--b branch           required. 1.8.0|1.8.1|1.9.0
+-b branch           required. 1.8.0|1.8.1|1.9.0|1.9.1
 -x executablepath   required. directory-tree containing executable 'product'
 -D directory        required. directory where profile is to be created.
 -N profilename      required. profile name 
 -L profiletemplate  optional. location of a template profile to be used. 
 -U user             optional. user.js preferences file.
 -d datafiles        optional. one or more filenames of files containing 
                     environment variable definitions to be included.
 
@@ -81,65 +81,54 @@ while getopts $options optname ;
       N) profilename=$OPTARG;;
       L) profiletemplate=$OPTARG;;
       U) user=$OPTARG;;
       d) datafiles=$OPTARG;;
   esac
 done
 
 # include environment variables
-if [[ -n "$datafiles" ]]; then
-    for datafile in $datafiles; do 
-        cat $datafile | sed 's|^|data: |'
-        source $datafile
-    done
-fi
+loaddata $datafiles
 
 if [[ -z "$product" || -z "$branch" || -z "$executablepath" || \
     -z "$directory" || -z "$profilename" ]]; then
     usage
 fi
 
-if [[ "$product" != "firefox" && "$product" != "thunderbird" ]]; then
+if [[ "$product" != "firefox" && "$product" != "thunderbird" && "$product" ]]; then
     error "product \"$product\" must be one of firefox or thunderbird" $LINENO
 fi
 
-if [[ "$branch" != "1.8.0" && "$branch" != "1.8.1" && "$branch" != "1.9.0" ]]; 
+if [[ "$branch" != "1.8.0" && "$branch" != "1.8.1" && "$branch" != "1.9.0" && "$branch" != "1.9.1" ]]; 
     then
-    error "branch \"$branch\" must be one of 1.8.0, 1.8.1, 1.9.0" $LINENO
+    error "branch \"$branch\" must be one of 1.8.0, 1.8.1, 1.9.0 1.9.1" $LINENO
 fi
 
 executable=`get_executable $product $branch $executablepath`
 
-if [[ -z "$executable" ]]; then
-    error "get_executable $product $branch $executablepath returned empty path" $LINENO
-fi
-
-if [[ ! -x "$executable" ]]; then 
-    error "executable \"$executable\" is not executable" $LINENO
-fi
-
 $TEST_DIR/bin/create-directory.sh -d "$directory" -n 
 
 if echo "$profilename" | egrep -qiv '[a-z0-9_]'; then
     error "profile name \"$profilename\" must consist of letters, digits or _" $LINENO
 fi
 
-if [ $OSID == "win32" ]; then
+if [ $OSID == "nt" ]; then
     directoryospath=`cygpath -a -w $directory`
     if [[ -z "$directoryospath" ]]; then
 	    error "unable to convert unix path to windows path" $LINENO
     fi
 else
     directoryospath="$directory"
 fi
 
 echo "creating profile $profilename in directory $directory"
 
-if ! $TEST_DIR/bin/timed_run.py ${TEST_STARTUP_TIMEOUT} "-" $executable -CreateProfile "$profilename $directoryospath"; then
+if ! $TEST_DIR/bin/timed_run.py ${TEST_STARTUP_TIMEOUT} "-" \
+        $EXECUTABLE_DRIVER \
+        $executable -CreateProfile "$profilename $directoryospath"; then
 	error "creating profile $directory" $LINENO
 fi
 
 if [[ -n $profiletemplate ]]; then
 	if [[ ! -d $profiletemplate ]]; then
 	    error "profile template directory $profiletemplate does not exist" $LINENO
 	fi
 	echo "copying template profile $profiletemplate to $directory"
--- a/testing/sisyphus/bin/download.sh
+++ b/testing/sisyphus/bin/download.sh
@@ -83,22 +83,17 @@ while getopts $options optname ;
       c) credentials=$OPTARG;;
       f) filepath=$OPTARG;;
       t) timeout=$OPTARG;;
       d) datafiles=$OPTARG;;
   esac
 done
 
 # include environment variables
-if [[ -n "$datafiles" ]]; then
-    for datafile in $datafiles; do 
-        cat $datafile | sed 's|^|data: |'
-        source $datafile
-    done
-fi
+loaddata $datafiles
 
 if [[ -z $url || -z $filepath ]]
     then
     usage
 fi
 
 if [[ -n "$credentials" ]]; then
     auth="--user $credentials"
--- a/testing/sisyphus/bin/edit-talkback.pl
+++ b/testing/sisyphus/bin/edit-talkback.pl
@@ -66,25 +66,25 @@ sub editTalkback
         $ostype .= $_;
     }
     close OSTYPE;
 
     die "Unable to determine OSTYPE" if (!$ostype);
 
     if ($ostype =~ /cygwin/i)
     {
-        $os = "win32";
+        $os = "nt";
     }
     elsif ($ostype =~ /linux/i)
     {
         $os = "linux";
     }
     elsif ($ostype =~ /darwin/)
     {
-        $os = "mac";
+        $os = "darwin";
     }
     else
     {
         die "Unknown Operating System: $ostype";
     }
 
     if (!$binary)
     {
@@ -182,17 +182,17 @@ sub editTalkback
             print "vendorid=$vendorid\n";
             print "productid=$productid\n";
             print "platformid=$platformid\n";
             print "buildid=$buildid\n";
         }
 
         my $appdata;
 
-        if ($os eq "win32")
+        if ($os eq "nt")
         {
             # get application data directory in windows format
             $appdata = $ENV{APPDATA};
             if (!$appdata)
             {
                 die "Empty Windows Application Data directory\n";
             }
 
@@ -225,17 +225,17 @@ sub editTalkback
                 die "Unix format Windows Application Data directory is empty\n";
             }
             $talkbackdir = "$appdata/Talkback";
         }
         elsif ($os eq "linux")
         {
             $talkbackdir="$home/.fullcircle";
         }
-        elsif ($os eq "mac")
+        elsif ($os eq "darwin")
         {
             $talkbackdir="$home/Library/Application\ Support/FullCircle";
         }
         else
         {
             die "unknown os $os";
         }
 
@@ -245,17 +245,17 @@ sub editTalkback
             if (! mkdir "$talkbackdir", 755)
             {
                 die "unable to create $talkbackdir\n: $!";
             }
         }
 
         my $talkbackinidir;
 
-        if ($os eq "win32")
+        if ($os eq "nt")
         {
             $talkbackinidir="$talkbackdir/$vendorid/$productid/$platformid/$buildid/";
 
             if ( ! -e "$talkbackdir/$vendorid" )
             {
                 if (! mkdir "$talkbackdir/$vendorid", 755)
                 {
                     die "unable to make $talkbackdir/$vendorid: $!";
@@ -302,17 +302,17 @@ sub editTalkback
             if (! -e "$talkbackdir/$vendorid$productid$platformid$buildid" )
             {
                 if (! mkdir "$talkbackdir/$vendorid$productid$platformid$buildid", 755)
                 {
                     die "unable to make $talkbackdir/$vendorid$productid$platformid$buildid: $!";
                 }
             }
         }
-        elsif ($os eq "mac")
+        elsif ($os eq "darwin")
         {
             $talkbackinidir="$talkbackdir/$vendorid$productid$platformid$buildid";
             if (! -e "$talkbackdir/$vendorid$productid$platformid$buildid" )
             {
                 if (! mkdir "$talkbackdir/$vendorid$productid$platformid$buildid", 755)
                 {
                     die "unable to make $talkbackdir/$vendorid$productid$platformid$buildid: $!";
                 }
@@ -330,17 +330,17 @@ sub editTalkback
 
 
         if (!copy("/work/mozilla/mozilla.com/test.mozilla.com/www/talkback/$os/Talkback.ini", "Talkback.ini"))
         {
             die "unable to copy Talkback.ini: $!";
         }
         
         #print "patching Talkback.ini\n";
-        if ($os eq "win32")
+        if ($os eq "nt")
         {
             $rc = system(("sed", 
                           "-ibak", 
                           "-e", 
                           "s|URLEdit .*|URLEdit = \"mozqa:$talkbackid\"|", 
                           "Talkback.ini")) & 0xffff;
             if ($rc != 0)
             {
@@ -354,17 +354,17 @@ sub editTalkback
                           "-e",
                           "s|URLEditControl .*|URLEditControl = \"mozqa:$talkbackid\"|", 
                           "Talkback.ini")) & 0xffff;
             if ($rc != 0)
             {
                 die "unable to edit Talkback.ini: $!";
             }
         }
-        elsif ($os eq "mac")
+        elsif ($os eq "darwin")
         {
             $rc = system(("sed", 
                           "-ibak", 
                           "-e",
                           "s|URLEditControl .*|URLEditControl = \"mozqa:$talkbackid\"|", 
                           "Talkback.ini")) & 0xffff;
             if ($rc != 0)
             {
--- a/testing/sisyphus/bin/edit-talkback.sh
+++ b/testing/sisyphus/bin/edit-talkback.sh
@@ -47,17 +47,17 @@ function usage()
 {
     cat <<EOF
 usage: 
 $SCRIPT -p product -b branch -x executablepath -i talkbackid [-d datafiles]
 
 variable            description
 ===============     ============================================================
 -p product          required. firefox|thunderbird
--b branch           required. 1.8.0|1.8.1|1.9.0
+-b branch           required. 1.8.0|1.8.1|1.9.0|1.9.1
 -x executablepath   required. directory-tree containing executable named 
                     'product'
 -i talkbackid       required. identifier to add to talkback url
 -d datafiles        optional. one or more filenames of files containing 
                     environment variable definitions to be included.
 
 note that the environment variables should have the same names as in the 
 "variable" column.
@@ -75,38 +75,25 @@ while getopts $options optname ;
       b) branch=$OPTARG;;
       x) executablepath=$OPTARG;;
       i) talkbackid=$OPTARG;;
       d) datafiles=$OPTARG;;
   esac
 done
 
 # include environment variables
-if [[ -n "$datafiles" ]]; then
-    for datafile in $datafiles; do 
-        cat $datafile | sed 's|^|data: |'
-        source $datafile
-    done
-fi
+loaddata $datafiles
 
 if [[ -z "$product" || -z "$branch" || \
     -z "$executablepath" || -z "$talkbackid" ]]; then
     usage
 fi
 
 executable=`get_executable $product $branch $executablepath`
 
-if [[ -z "$executable" ]]; then
-    error "get_executable $product $branch $executablepath returned empty path" $LINENO
-fi
-
-if [[ ! -x "$executable" ]]; then 
-    error "executable \"$executable\" is not executable" $LINENO
-fi
-
 executablepath=`dirname $executable`
 
 # escape & in talkback id to prevent replacements
 talkbackid=`echo $talkbackid | sed 's@&@\\\\&@g'`
 
 #
 # edit talkback to automatically submit
 #
@@ -127,32 +114,32 @@ if [[ $talkback -eq 1 ]]; then
     # edit to automatically send talkback incidents
     if [[ ! -e master.sed ]]; then
         #echo "$0: editing talkback master.ini in `pwd`"
         cp $TEST_DIR/bin/master.sed .
         sed -f master.sed -i.bak master.ini
     fi
 
     case $OSID in
-        win32)
+        nt)
             vendorid=`dos2unix < master.ini | grep '^VendorID = "' | sed 's@VendorID = "\([^"]*\)"@\1@'`
             productid=`dos2unix < master.ini | grep '^ProductID = "' | sed 's@ProductID = "\([^"]*\)"@\1@'`
             platformid=`dos2unix < master.ini | grep '^PlatformID = "' | sed 's@PlatformID = "\([^"]*\)"@\1@'`
             buildid=`dos2unix < master.ini | grep '^BuildID = "' | sed 's@BuildID = "\([^"]*\)"@\1@'`
             appdata=`cygpath -a -d "$APPDATA"`
             talkbackdir="`cygpath -a -u $appdata`/Talkback"
             ;;
         linux)
             vendorid=`dos2unix < master.ini | grep '^VendorID = "' | sed 's@VendorID = "\([^"]*\)"@\1@'`
             productid=`dos2unix < master.ini | grep '^ProductID = "' | sed 's@ProductID = "\([^"]*\)"@\1@'`
             platformid=`dos2unix < master.ini | grep '^PlatformID = "' | sed 's@PlatformID = "\([^"]*\)"@\1@'`
             buildid=`dos2unix < master.ini | grep '^BuildID = "' | sed 's@BuildID = "\([^"]*\)"@\1@'`
             talkbackdir="$HOME/.fullcircle"
             ;;
-        mac)
+        darwin)
             # hack around Mac's use of spaces in directory names
             vendorid=`grep '^VendorID = "' master.ini | sed 's@VendorID = "\([^"]*\)"@\1@'`
             productid=`grep '^ProductID = "' master.ini | sed 's@ProductID = "\([^"]*\)"@\1@'`
             platformid=`grep '^PlatformID = "' master.ini | sed 's@PlatformID = "\([^"]*\)"@\1@'`
             buildid=`grep '^BuildID = "' master.ini | sed 's@BuildID = "\([^"]*\)"@\1@'`
             talkbackdir="$HOME/Library/Application Support/FullCircle"
             IFS=:
             ;;
@@ -163,38 +150,38 @@ if [[ $talkback -eq 1 ]]; then
 
     if [[ -z "$talkbackdir" ]]; then
         error "empty talkback directory" $LINENO
     fi
 
     mkdir -p "$talkbackdir"
     
     case $OSID in
-        win32)
+        nt)
             talkbackinidir="$talkbackdir/$vendorid/$productid/$platformid/$buildid"
             ;;
-        linux | mac )
+        linux | darwin )
             talkbackinidir="$talkbackdir/$vendorid$productid$platformid$buildid"
             ;;
     esac
     
     if [[ ! -d "$talkbackinidir" ]]; then
         create-directory.sh -d "$talkbackinidir" -n
     fi
 
     cd $talkbackinidir
 
     cp ${TEST_DIR}/talkback/$OSID/Talkback.ini .
 
     case "$OSID" in
-        win32)
+        nt)
             sed -i.bak "s@URLEdit .*@URLEdit = \"mozqa:$talkbackid\"@" Talkback.ini
             ;;
-        linux )
+        linux)
             sed -i.bak "s@URLEditControl .*@URLEditControl = \"mozqa:$talkbackid\"@" Talkback.ini
             ;;
-        mac )
+        darwin)
             sed -i.bak "s@URLEditControl .*@URLEditControl = \"mozqa:$talkbackid\"@" Talkback.ini
             ;;
         *)
             error "unknown os=$OSID" $LINENO
     esac
 fi
--- a/testing/sisyphus/bin/install-build.sh
+++ b/testing/sisyphus/bin/install-build.sh
@@ -47,17 +47,17 @@ function usage()
 {
     cat <<EOF
 usage: 
 $SCRIPT -p product -b branch  -x executablepath -f filename [-d datafiles]
 
 variable            description
 ===============     ============================================================
 -p product          required. firefox|thunderbird
--b branch           required. 1.8.0|1.8.1|1.9.0
+-b branch           required. 1.8.0|1.8.1|1.9.0|1.9.1
 -x executablepath   required. directory where to install build
 -f filename         required. path to filename where installer is stored
 -d datafiles        optional. one or more filenames of files containing 
                     environment variable definitions to be included.
 
 note that the environment variables should have the same names as in the 
 "variable" column.
 
@@ -74,45 +74,42 @@ while getopts $options optname ;
       b) branch=$OPTARG;;
       x) executablepath=$OPTARG;;
       f) filename=$OPTARG;;
       d) datafiles=$OPTARG;;
   esac
 done
 
 # include environment variables
-if [[ -n "$datafiles" ]]; then
-    for datafile in $datafiles; do 
-        cat $datafile | sed 's|^|data: |'
-        source $datafile
-    done
-fi
+loaddata $datafiles
 
 if [[ -z "$product" || -z "$branch" || -z "$executablepath" || -z "$filename" ]]
     then
     usage
 fi
 
 $TEST_DIR/bin/uninstall-build.sh -p "$product" -b "$branch" -x "$executablepath"
 
 $TEST_DIR/bin/create-directory.sh -d "$executablepath" -n
 
 filetype=`file $filename`
 
-if [[ $OSID == "win32" ]]; then
+if [[ $OSID == "nt" ]]; then
 
     if echo $filetype | grep -iq windows; then
 	    chmod u+x "$filename"
 	    if [[ $branch == "1.8.0" ]]; then
 	        $filename -ms -hideBanner -dd `cygpath -a -w "$executablepath"`
 	    else
 	        $filename /S /D=`cygpath -a -w "$executablepath"`
 	    fi
     elif echo  $filetype | grep -iq 'zip archive'; then
 	    unzip -o -d "$executablepath" "$filename"
+        find $executablepath -name '*.exe' | xargs chmod u+x
+        find $executablepath -name '*.dll' | xargs chmod u+x
     else
 	    error "$unknown file type $filetype" $LINENO
     fi
 
 else
     
     case "$OSID" in
         linux)
@@ -147,19 +144,17 @@ else
         ;;
     esac
 
     #
     # patch unix-like startup scripts to exec instead of 
     # forking new processes
     #
     executable=`get_executable $product $branch $executablepath`
-    if [[ -z "$executable" ]]; then
-        error "get_executable $product $branch $executablepath returned empty directory" $LINENO
-    fi
+
     executabledir=`dirname $executable`
 
     # patch to use exec to prevent forked processes
     cd "$executabledir"
     if [ -e "$product" ]; then
 	    echo "$SCRIPT: patching $product"
 	    cp $TEST_DIR/bin/$product.diff .
 	    patch -N -p0 < $product.diff
--- a/testing/sisyphus/bin/install-extensions.sh
+++ b/testing/sisyphus/bin/install-extensions.sh
@@ -34,33 +34,33 @@
 # and other provisions required by the GPL or the LGPL. If you do not delete
 # the provisions above, a recipient may use your version of this file under
 # the terms of any one of the MPL, the GPL or the LGPL.
 #
 # ***** END LICENSE BLOCK *****
 
 source $TEST_DIR/bin/library.sh
 
-echo "$SCRIPT $@"
+TEST_STARTUP_TRIES=${TEST_STARTUP_TRIES:-3}
 
 #
 # options processing
 #
 options="p:b:x:N:E:d:"
 function usage()
 {
     cat <<EOF
 usage: 
 $SCRIPT -p product -b branch -x executablepath -N profilename -E extensions 
        [-d datafiles]
 
 variable            description
 ===============     ============================================================
 -p product          required. firefox|thunderbird
--b branch           required. 1.8.0|1.8.1|1.9.0
+-b branch           required. 1.8.0|1.8.1|1.9.0|1.9.1
 -x executablepath   required. directory-tree containing executable named 
                     'product'
 -N profilename      required. profile name 
 -E extensions       required. path to directory containing xpis to be installed
 -d datafiles        optional. one or more filenames of files containing 
                     environment variable definitions to be included.
 
 note that the environment variables should have the same names as in the 
@@ -80,82 +80,83 @@ while getopts $options optname ;
       x) executablepath=$OPTARG;;
       N) profilename=$OPTARG;;
       E) extensions=$OPTARG;;
       d) datafiles=$OPTARG;;
   esac
 done
 
 # include environment variables
-if [[ -n "$datafiles" ]]; then
-    for datafile in $datafiles; do 
-        cat $datafile | sed 's|^|data: |'
-        source $datafile
-    done
-fi
+loaddata $datafiles
 
 if [[ -z "$product" || -z "$branch" || \
     -z "$executablepath" || -z "$profilename" || -z "$extensions" ]]; then
     usage
 fi
 
 if [[ "$product" != "firefox" && "$product" != "thunderbird" ]]; then
     error "product \"$product\" must be one of firefox or thunderbird" $LINENO
 fi
 
-if [[ "$branch" != "1.8.0" && "$branch" != "1.8.1" && "$branch" != "1.9.0" ]]; 
+if [[ "$branch" != "1.8.0" && "$branch" != "1.8.1" && "$branch" != "1.9.0" && "$branch" != "1.9.1" ]]; 
     then
-    error "branch \"$branch\" must be one of 1.8.0, 1.8.1, 1.9.0" $LINENO
+    error "branch \"$branch\" must be one of 1.8.0, 1.8.1, 1.9.0 1.9.1" $LINENO
 fi
 
 executable=`get_executable $product $branch $executablepath`
 
-if [[ -z "$executable" ]]; then
-    error "get_executable $product $branch $executablepath returned empty path" $LINENO
-fi
-
-if [[ ! -x "$executable" ]]; then 
-    error "executable \"$executable\" is not executable" $LINENO
-fi
-
 if echo $profilename | egrep -qiv '[a-z0-9_]'; then
     error "profile name must consist of letters, digits or _" $LINENO
 fi
 
 for extension in $extensions/all/*.xpi; do 
     if [[ $extension == "$extensions/all/*.xpi" ]]; then
 	    break
     fi
-    if [[ "$OSID" == "win32" ]]; then
+    if [[ "$OSID" == "nt" ]]; then
         extensionos=`cygpath -a -w $extension`
     else
         extensionos="$extension"
     fi
 
     echo installing $extension
-    $TEST_DIR/bin/timed_run.py ${TEST_STARTUP_TIMEOUT} "-" $executable -P $profilename -install-global-extension "$extensionos"
+    let tries=1
+    while ! $TEST_DIR/bin/timed_run.py ${TEST_STARTUP_TIMEOUT} "Install extension $extension: try $tries" \
+        $EXECUTABLE_DRIVER \
+        $executable -P $profilename -install-global-extension "$extensionos"; do
+        let tries=tries+1
+        if [[ "$tries" -gt $TEST_STARTUP_TRIES ]]; then
+            error "Failed to install extension $extension. Exiting..." $LINENO
+        fi
+        sleep 30
+    done
     # there is no reliable method of determining if the install worked 
     # from the output or from the exit code.
 done
 
 for extension in $extensions/$OSID/*; do 
     if [[ $extension == "$extensions/$OSID/*" ]]; then
 	    break
     fi
-    if [[ "$OSID" == "win32" ]]; then
+    if [[ "$OSID" == "nt" ]]; then
         extensionos=`cygpath -a -w $extension`
     else
         extensionos="$extension"
     fi
 
     echo installing $extension
-    if ! $TEST_DIR/bin/timed_run.py ${TEST_STARTUP_TIMEOUT} "-" $executable -P $profilename -install-global-extension "$extensionos"; then
-        error "Failed to install $extensionos" $LINENO
-    fi
-
+    let tries=1
+    while ! $TEST_DIR/bin/timed_run.py ${TEST_STARTUP_TIMEOUT} "Install extension $extension: try $tries" \
+        $executable -P $profilename -install-global-extension "$extensionos"; do
+        let tries=tries+1
+        if [[ "$tries" -gt $TEST_STARTUP_TRIES ]]; then
+            error "Failed to install extension $extension. Exiting..." $LINENO
+        fi
+        sleep 30
+    done
 done
 
 # restart twice to make extension manager happy
 
 if ! $TEST_DIR/bin/timed_run.py ${TEST_STARTUP_TIMEOUT} "install extensions - first restart" \
     $executable -P $profilename "http://${TEST_HTTP}/bin/install-extensions-1.html"; then
     echo "Ignoring 1st failure to load the install-extensions page"
 fi
--- a/testing/sisyphus/bin/install-plugins.sh
+++ b/testing/sisyphus/bin/install-plugins.sh
@@ -47,17 +47,17 @@ function usage()
 {
     cat <<EOF
 usage: 
 $SCRIPT -p product -b branch -x executablepath -D directory [-d datafiles]
 
 variable            description
 ===============     ============================================================
 -p product          required. firefox|thunderbird
--b branch           required. 1.8.0|1.8.1|1.9.0
+-b branch           required. 1.8.0|1.8.1|1.9.0|1.9.1
 -x executablepath   required. path to browser executable
 -D directory        required. path to location of plugins/components
 -d datafiles        optional. one or more filenames of files containing 
                     environment 
                     variable definitions to be included.
 
 note that the environment variables should have the same names as in the 
 "variable" column.
@@ -75,42 +75,29 @@ while getopts $options optname ;
       b) branch=$OPTARG;;
       x) executablepath=$OPTARG;;
       D) directory=$OPTARG;;
       d) datafiles=$OPTARG;;
   esac
 done
 
 # include environment variables
-if [[ -n "$datafiles" ]]; then
-    for datafile in $datafiles; do 
-        cat $datafile | sed 's|^|data: |'
-        source $datafile
-    done
-fi
+loadata $datafiles
 
 if [[ -z "$product" || -z "$branch" || \
     -z "$executablepath" || -z "$directory" ]]; then
     usage
 fi
 
 if [[ "$product" != "firefox" && "$product" != "thunderbird" ]]; then
     error "product \"$product\" must be one of firefox or thunderbird" $LINENO
 fi
 
 executable=`get_executable $product $branch $executablepath`
 
-if [[ -z "$executable" ]]; then
-    error "get_executable $product $branch $executablepath returned empty path" $LINENO
-fi
-
-if [[ ! -x "$executable" ]]; then 
-    error "executable \"$executable\" is not executable" $LINENO
-fi
-
 executablepath=`dirname $executable`
 
 #
 # install plugins and components
 #
 echo "$SCRIPT: installing plugins from $directory/ in $executablepath/"
 cp -r "$directory/$OSID/" "$executablepath/"
 
--- a/testing/sisyphus/bin/library.sh
+++ b/testing/sisyphus/bin/library.sh
@@ -80,78 +80,109 @@ function _exit()
     if [[ "$rc" -gt 0 && -n "$TEST_LOG" && "$SCRIPT" == "$currscript" ]]; then
         # only tail the log once at the top level script
         tail $TEST_LOG 1>&2
     fi
 }
 
 trap "_exit" EXIT
 
-    # error message
-    # output error message end exit 2
+# error message
+# output error message end exit 2
 
-    error()
-    {
-        local message=$1
-        local lineno=$2
+error()
+{
+    local message=$1
+    local lineno=$2
 
-        debug "error: $0:$LINENO"
+    debug "error: $0:$LINENO"
     
-        echo -e "FATAL ERROR in script $0:$lineno $message\n" 1>&2
-        if [[ "$0" == "-bash" || "$0" == "bash" ]]; then
-            return 0
-        fi
-        exit 2
-    } 
+    echo -e "FATAL ERROR in script $0:$lineno $message\n" 1>&2
+    if [[ "$0" == "-bash" || "$0" == "bash" ]]; then
+        return 0
+    fi
+    exit 2
+} 
 
 
 if [[ -z "$LIBRARYSH" ]]; then
     # skip remainder of script if it has already included
 
-    LIBRARYSH=1
-
-    # set time format for pipeline timing reports
-    TIMEFORMAT="Elapsed time %0R seconds, User %0U seconds, System %0S seconds, CPU %P%%"
-
-    MALLOC_CHECK_=2
-
-    ulimit -c 0
-
-    # debug msg
-    #
-    # output debugging message to stdout if $DEBUG is set
-
-    DEBUG=${DEBUG:-""}
-
     debug()
     {
         if [[ -n "$DEBUG" ]]; then
             echo "DEBUG: $@"
         fi
     }
 
     # console msg
     #
     # output message to console, ie. stderr
 
     console()
     {
         echo -e "$@" 1>&2
     }
 
+    # loaddata
+    # 
+    # load data files into environment
+    loaddata()
+    {
+        local datafiles="$@"
+        local datafile
+        if [[ -n "$datafiles" ]]; then
+            for datafile in $datafiles; do 
+                if [[ ! -e "$datafile" ]]; then
+                    error "datafile $datafile does not exist"
+                fi
+                cat $datafile | sed 's|^|data: |'
+                if ! source $datafile; then
+                    error "Unable to load data file $datafile"
+                fi
+            done
+        fi
+    }
 
     # dumpenvironment
     #
     # output environment to stdout
 
     dumpenvironment()
     {
         set | grep '^[A-Z]' | sed 's|^|environment: |'
     }
 
+    dumphardware()
+    {
+        echo "uname -a:`uname -a`"
+        echo "uname -s:`uname -s`"
+        echo "uname -n:`uname -n`"
+        echo "uname -r:`uname -r`"
+        echo "uname -v:`uname -v`"
+        echo "uname -m:`uname -m`"
+        echo "uname -p:`uname -p`"
+        if [[ "$OSID" != "darwin" ]]; then
+            echo "uname -i:`uname -i`"
+            echo "uname -o:`uname -o`"
+        fi
+
+        ulimit -a | sed 's|^|ulimit:|'
+
+        if [[ -e /proc/cpuinfo ]]; then
+            cat /proc/cpuinfo | sed 's|^|cpuinfo:|'
+        fi
+        if [[ -e /proc/meminfo ]]; then
+            cat /proc/meminfo | sed 's|^|meminfo:|'
+        fi
+        if which system_profiler 2> /dev/null; then
+            system_profiler | sed 's|^|system_profiler:|'
+        fi
+    }
+
     # dumpvars varname1, ...
     #
     # dumps name=value pairs to stdout for each variable named 
     # in argument list
 
     dumpvars()
     {
         local argc=$#
@@ -165,104 +196,95 @@ if [[ -z "$LIBRARYSH" ]]; then
     }
 
     # get_executable product branch directory
     #
     # writes path to product executable to stdout
 
     get_executable()
     {
-        get_executable_product="$1"
-        get_executable_branch="$2"
-        get_executable_directory="$3"
+        local get_executable_product="$1"
+        local get_executable_branch="$2"
+        local get_executable_directory="$3"
 
         if [[ -z "$get_executable_product" || \
             -z "$get_executable_branch" || \
             -z "$get_executable_directory" ]]; then
             error "usage: get_executable product branch directory"
         elif [[ ! -d "$get_executable_directory" ]]; then
             error "get_executable: executable directory \"$get_executable_directory\" does not exist"
         else
             # should use /u+x,g+x,a+x but mac os x uses an obsolete find
             # filter the output to remove extraneous file in dist/bin for
             # cvs builds on mac os x.
-            get_executable_name="$get_executable_product${EXE_EXT}"
-            case "$OSID" in
-                mac)
-                    get_executable_filter="Contents/MacOS/$get_executable_product"
-                    if [[ "$get_executable_product" == "thunderbird" ]]; then
-                        get_executable_name="$get_executable_product-bin"
-                    fi
-                    ;;
-                *)
-                    get_executable_filter="$get_executable_product"
-            esac
-            if find "$get_executable_directory" -perm +111 -type f \
-                -name "$get_executable_name" | \
-                grep "$get_executable_filter"; then
-                true
+            local executable=`(
+                get_executable_name="$get_executable_product${EXE_EXT}"
+                case "$OSID" in
+                    darwin)
+                        get_executable_filter="Contents/MacOS/$get_executable_product"
+                        if [[ "$get_executable_product" == "thunderbird" ]]; then
+                            get_executable_name="$get_executable_product-bin"
+                        fi
+                        ;;
+                    *)
+                        get_executable_filter="$get_executable_product"
+                        ;;
+                esac
+                if find "$get_executable_directory" -perm +111 -type f \
+                    -name "$get_executable_name" | \
+                    grep "$get_executable_filter"; then
+                    true
+                fi
+                )`
+
+            if [[ -z "$executable" ]]; then
+                error "get_executable $product $branch $executablepath returned empty path" $LINENO
             fi
+
+            if [[ ! -x "$executable" ]]; then 
+                error "executable \"$executable\" is not executable" $LINENO
+            fi
+
+            echo $executable
         fi
     }
 
     function get_scriptname()
     {
         debug "\$0: $0"
 
         local script
         if [[ "$0" == "-bash" || "$0" == "bash" ]]; then
             script="library.sh"
         else
             script=`basename $0`
         fi
         echo $script
     }
 
-    SCRIPT=`get_scriptname $0`
+    LIBRARYSH=1
 
-    if [[ -z "$TEST_DIR" ]]; then
-        # get the "bin" directory
-        TEST_DIR=`dirname $0`
-        # get the "bin" directory parent
-        TEST_DIR=`dirname $TEST_DIR`
-        if [[ ! -e "${TEST_DIR}/bin/library.sh" ]]; then
-            error "BAD TEST_DIR $TEST_DIR"
-        fi
-    fi
-    TEST_HTTP=${TEST_HTTP:-test.mozilla.com}
-    TEST_STARTUP_TIMEOUT=${TEST_STARTUP_TIMEOUT:-30}
+    MALLOC_CHECK_=2
 
-    TEST_MACHINE=`uname -n`
-    TEST_KERNEL=`uname -r`
-    TEST_PROCESSORTYPE=`uname -p`
+    ulimit -c 0
 
     # set path to make life easier
     if ! echo ${PATH} | grep -q $TEST_DIR/bin; then
         PATH=$TEST_DIR/bin:$PATH
     fi
 
-    if echo $OSTYPE | grep -iq cygwin; then
-        OSID=win32
-        EXE_EXT=".exe"
-    elif echo $OSTYPE | grep -iq Linux; then
-        OSID=linux
-        EXE_EXT=
-    elif echo $OSTYPE | grep -iq darwin; then
-        OSID=mac
-        EXE_EXT=
-    else
-        error "Unknown OS $OSTYPE"
-    fi
-
     # force en_US locale
     if ! echo "$LANG" | grep -q en_US; then
         LANG=en_US
         LC_TIME=en_US
     fi
 
+    # handle sorting non-ascii logs on mac os x 10.5.3
+    LC_ALL=C
+
     TEST_TIMEZONE=`date +%z`
 
     # save starting directory
     STARTDIR=`pwd`
 
     # location of the script.
     SCRIPTDIR=`dirname $0`
 
@@ -273,27 +295,119 @@ if [[ -z "$LIBRARYSH" ]]; then
     NO_EM_RESTART=1
 
     # bypass profile manager
     MOZ_BYPASS_PROFILE_AT_STARTUP=1
 
     # ah crap handler timeout
     MOZ_GDB_SLEEP=${MOZ_GDB_SLEEP:-10}
 
-    # no dialogs on asserts
-    XPCOM_DEBUG_BREAK=${XPCOM_DEBUG_BREAK:-warn}
-
     # no airbag
     unset MOZ_AIRBAG
-    MOZ_CRASHREPORTER_DISABLE=${MOZ_CRASHREPORTER_DISABLE:-1}
+    #MOZ_CRASHREPORTER_DISABLE=${MOZ_CRASHREPORTER_DISABLE:-1}
     MOZ_CRASHREPORTER_NO_REPORT=${MOZ_CRASHREPORTER_NO_REPORT:-1}
 
     #leak gauge
     #NSPR_LOG_MODULES=DOMLeak:5,DocumentLeak:5,nsDocShellLeak:5
 
+    TEST_CPUSPEED="`mips.pl`"
+    TEST_MEMORY="`memory.pl`"
+
+    # debug msg
+    #
+    # output debugging message to stdout if $DEBUG is set
+
+    DEBUG=${DEBUG:-""}
+
+    SCRIPT=`get_scriptname $0`
+
+    if [[ -z "$TEST_DIR" ]]; then
+        # get the "bin" directory
+        TEST_DIR=`dirname $0`
+        # get the "bin" directory parent
+        TEST_DIR=`dirname $TEST_DIR`
+        if [[ ! -e "${TEST_DIR}/bin/library.sh" ]]; then
+            error "BAD TEST_DIR $TEST_DIR"
+        fi
+    fi
+
+    TEST_HTTP=${TEST_HTTP:-test.mozilla.com}
+    TEST_STARTUP_TIMEOUT=${TEST_STARTUP_TIMEOUT:-30}
+    TEST_MACHINE=`uname -n`
+
+    kernel_name=`uname -s`
+
+    if [[ $kernel_name == 'Linux' ]]; then
+        OSID=linux
+        EXE_EXT=
+        TEST_KERNEL=`uname -r | sed 's|\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\)[-.0-9]*\.\([a-zA-Z0-9]*\)|\1.\2.\3|'`
+        TEST_PROCESSORTYPE=`cat /proc/cpuinfo | grep vendor | uniq | sed 's|vendor.* : \(.*\)|\1|'`
+        TIMECOMMAND='/usr/bin/time -f "Elapsed time %e seconds, User %U seconds, System %S seconds, CPU %P, Memory: %M"'
+
+        if echo $TEST_PROCESSORTYPE | grep -q 'Intel'; then
+            TEST_PROCESSORTYPE=intel
+        elif echo $TEST_PROCESSORTYPE | grep -q 'AMD'; then
+            TEST_PROCESSORTYPE=amd
+        fi
+
+        if uname -p | grep -q '64$'; then
+            TEST_PROCESSORTYPE=${TEST_PROCESSORTYPE}64
+        else
+            TEST_PROCESSORTYPE=${TEST_PROCESSORTYPE}32
+        fi
+
+    elif [[ $kernel_name == 'Darwin' ]]; then
+        OSID=darwin
+        EXE_EXT=
+        TEST_KERNEL=`uname -r`
+        TEST_PROCESSORTYPE=`uname -p`
+        TIMEFORMAT="Elapsed time %E seconds, User %U seconds, System %S seconds, CPU %P%"
+        TIMECOMMAND=time
+
+        if [[ $TEST_PROCESSORTYPE == "i386" ]]; then
+            TEST_PROCESSORTYPE=intel
+        fi
+
+        # assume 32bit for now...
+        TEST_PROCESSORTYPE=${TEST_PROCESSORTYPE}32
+
+    elif echo $kernel_name | grep -q CYGWIN; then
+        OSID=nt
+        EXE_EXT=".exe"
+        TEST_KERNEL=`echo $kernel_name | sed 's|[^.0-9]*\([.0-9]*\).*|\1|'`
+        TEST_PROCESSORTYPE=`cat /proc/cpuinfo | grep vendor | uniq | sed 's|vendor.* : \(.*\)|\1|'`
+        TIMECOMMAND='/usr/bin/time -f "Elapsed time %e seconds, User %U seconds, System %S seconds, CPU %P, Memory: %M"'
+
+        if echo $TEST_PROCESSORTYPE | grep -q 'Intel'; then
+            TEST_PROCESSORTYPE=intel
+        elif echo $TEST_PROCESSORTYPE | grep -q 'AMD'; then
+            TEST_PROCESSORTYPE=amd
+        fi
+
+        if uname -p | grep -q '64$'; then
+            TEST_PROCESSORTYPE=${TEST_PROCESSORTYPE}64
+        else
+            TEST_PROCESSORTYPE=${TEST_PROCESSORTYPE}32
+        fi
+
+    else
+        error "Unknown OS $kernel_name" $LINENO
+    fi
+
+    case $TEST_PROCESSORTYPE in
+        *32)
+            if [[ $TEST_MEMORY -gt 4 ]]; then
+                TEST_MEMORY=4
+            fi
+            ;;
+    esac
+
+    # no dialogs on asserts
+    XPCOM_DEBUG_BREAK=${XPCOM_DEBUG_BREAK:-warn}
+
     if [[ -z "$BUILDDIR" ]]; then
         case `uname -s` in
             MINGW*)
                 export BUILDDIR=/c/work/mozilla/builds
                 ;;
             *)
                 export BUILDDIR=/work/mozilla/builds
                 ;;
new file mode 100644
--- /dev/null
+++ b/testing/sisyphus/bin/memory.pl
@@ -0,0 +1,180 @@
+#!/usr/bin/perl -w
+# -*- Mode: Perl; tab-width: 4; indent-tabs-mode: nil; -*-
+# ***** BEGIN LICENSE BLOCK *****
+# Version: MPL 1.1/GPL 2.0/LGPL 2.1
+#
+# The contents of this file are subject to the Mozilla Public License Version
+# 1.1 (the "License"); you may not use this file except in compliance with
+# the License. You may obtain a copy of the License at
+# http://www.mozilla.org/MPL/
+#
+# Software distributed under the License is distributed on an "AS IS" basis,
+# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+# for the specific language governing rights and limitations under the
+# License.
+#
+# The Original Code is Mozilla Automated Testing Code.
+#
+# The Initial Developer of the Original Code is
+# Mozilla Corporation.
+# Portions created by the Initial Developer are Copyright (C) 2008
+# the Initial Developer. All Rights Reserved.
+#
+# Contributor(s): Bob Clary <bob@bclary.com>
+#
+# Alternatively, the contents of this file may be used under the terms of
+# either the GNU General Public License Version 2 or later (the "GPL"), or
+# the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+# in which case the provisions of the GPL or the LGPL are applicable instead
+# of those above. If you wish to allow use of your version of this file only
+# under the terms of either the GPL or the LGPL, and not to allow others to
+# use your version of this file under the terms of the MPL, indicate your
+# decision by deleting the provisions above and replace them with the notice
+# and other provisions required by the GPL or the LGPL. If you do not delete
+# the provisions above, a recipient may use your version of this file under
+# the terms of any one of the MPL, the GPL or the LGPL.
+#
+# ***** END LICENSE BLOCK *****
+
+my $K = 1024;
+my $M = 1024 * $K;
+my $G = 1024 * $M;
+
+my $tmpmemory;
+my $unitmemory;
+my $raw_memory = 0;
+my $swap_memory = 0;
+my $ulimit_maxmemory = 0;
+my $ulimit_virtualmemory = 0;
+my $test_memory = 0;
+
+# hack around lack of available environment entries in both
+# cygwin perl and redhat perl
+open OSTYPE, "set | grep OSTYPE |" || die "Unable to open OSTYPE: $!";
+while (<OSTYPE>)
+{
+    chomp;
+    $ostype .= $_;
+}
+close OSTYPE;
+
+die "Unable to determine OSTYPE" if (!$ostype);
+
+if ($ostype =~ /linux/i || $ostype =~ /cygwin/i)
+{
+    open MEMINFO, "/proc/meminfo" or die "Unable to open /proc/meminfo";
+    while (<MEMINFO>)
+    {
+        if ( ($tmpmemory, $unitmemory) = $_ =~ /MemTotal:\s*([0-9]*) (kB)/)
+        {
+            die "Unknown memory unit meminfo MemTotal $unitmemory" if $unitmemory ne "kB";
+
+            $tmpmemory *= 1024;
+            $raw_memory = int($tmpmemory / $G + .5);
+        }
+        elsif ( ($tmpmemory, $unitmemory) = $_ =~ /SwapTotal:\s*([0-9]*) (kB)/)
+        {
+            die "Unknown memory unit meminfo SwapTotal $unitmemory" if $unitmemory ne "kB";
+
+            $tmpmemory *= 1024;
+            $swap_memory = int($tmpmemory / $G + .5);
+        }
+    }
+    close MEMINFO;
+}
+elsif ($ostype =~ /darwin/i)
+{
+    open SYSTEMPROFILER, "system_profiler|" or die "Unable to open system_profiler";
+    while (<SYSTEMPROFILER>)
+    {
+        if (  ($tmpmemory, $unitmemory) = $_ =~ /\s*Memory:\s*([0-9]*) ([a-zA-Z]*)/)
+        {
+            if ($unitmemory =~ /KB/)
+            {
+                $tmpmemory *= $K;
+            }
+            elsif ($unitmemory =~ /MB/)
+            {
+                $tmpmemory *= $M;
+            }
+            elsif ($unitmemory =~ /GB/)
+            {
+                $tmpmemory *= $G;
+            }
+            else
+            {
+                die "Unknown memory unit system_profiler $unitmemory";
+            }
+            $raw_memory = int($tmpmemory / $G + .5);
+        }
+    }
+    close SYSTEMPROFILER;
+}
+else
+{
+    die "Unknown Operating System: $ostype";
+}
+
+open ULIMIT, 'bash -c "ulimit -a"|' or die "Unable to open ulimit -a";
+
+while (<ULIMIT>)
+{
+    if (  ($unitmemory, $tmpmemory) = $_ =~ /max memory size + \(([a-zA-Z]*), \-m\) ([0-9]*)/)
+    {
+        if ($tmpmemory eq "")
+        {
+            $tmpmemory = 0;
+        }
+
+        if ($unitmemory =~ /kbytes/i)
+        {
+            $tmpmemory *= $K;
+        }
+        elsif ($unitmemory =~ /mbytes/i)
+        {
+            $tmpmemory *= $M;
+        }
+        elsif ($unitmemory =~ /gbytes/i)
+        {
+            $tmpmemory *= $G;
+        }
+        else
+        {
+            die "Unknown memory unit ulimit $unitmemory";
+        }
+
+        $ulimit_maxmemory = int($tmpmemory / $G + .5);
+    }
+    elsif (  ($unitmemory, $tmpmemory) = $_ =~ /virtual memory + \(([a-zA-Z]*), \-v\) ([0-9]*)/)
+    {
+        if ($tmpmemory eq "")
+        {
+            $tmpmemory = 0;
+        }
+
+        if ($unitmemory =~ /kbytes/i)
+        {
+            $tmpmemory *= $K;
+        }
+        elsif ($unitmemory =~ /mbytes/i)
+        {
+            $tmpmemory *= $M;
+        }
+        elsif ($unitmemory =~ /gbytes/i)
+        {
+            $tmpmemory *= $G;
+        }
+        else
+        {
+            die "Unknown virtual memory unit ulimit $unitmemory";
+        }
+
+        $ulimit_virtualmemory = int($tmpmemory / $G + .5);
+    }
+}
+close ULIMIT;
+
+$test_memory = $ulimit_virtualmemory > 0 ? $ulimit_virtualmemory : ($raw_memory + $swap_memory);
+
+print "$test_memory";
+
new file mode 100644
--- /dev/null
+++ b/testing/sisyphus/bin/mips.pl
@@ -0,0 +1,72 @@
+#!/usr/bin/perl -w
+# -*- Mode: Perl; tab-width: 4; indent-tabs-mode: nil; -*-
+# ***** BEGIN LICENSE BLOCK *****
+# Version: MPL 1.1/GPL 2.0/LGPL 2.1
+#
+# The contents of this file are subject to the Mozilla Public License Version
+# 1.1 (the "License"); you may not use this file except in compliance with
+# the License. You may obtain a copy of the License at
+# http://www.mozilla.org/MPL/
+#
+# Software distributed under the License is distributed on an "AS IS" basis,
+# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+# for the specific language governing rights and limitations under the
+# License.
+#
+# The Original Code is Mozilla Automated Testing Code.
+#
+# The Initial Developer of the Original Code is
+# Mozilla Corporation.
+# Portions created by the Initial Developer are Copyright (C) 2008
+# the Initial Developer. All Rights Reserved.
+#
+# Contributor(s): Bob Clary <bob@bclary.com>
+#
+# Alternatively, the contents of this file may be used under the terms of
+# either the GNU General Public License Version 2 or later (the "GPL"), or
+# the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+# in which case the provisions of the GPL or the LGPL are applicable instead
+# of those above. If you wish to allow use of your version of this file only
+# under the terms of either the GPL or the LGPL, and not to allow others to
+# use your version of this file under the terms of the MPL, indicate your
+# decision by deleting the provisions above and replace them with the notice
+# and other provisions required by the GPL or the LGPL. If you do not delete
+# the provisions above, a recipient may use your version of this file under
+# the terms of any one of the MPL, the GPL or the LGPL.
+#
+# ***** END LICENSE BLOCK *****
+
+# Calculate a relative speed measurement based on 
+# iterating over a simple loop in perl. Print the
+# result as millions of iterations per cpu second.
+
+sub mips
+{
+    my $tries = 3;        # repeat count to get average
+    my $m     = 1000000;  # scale to million iterations/second
+    my $l     = 10000000; # number of iterations to time
+    my $cpu   = 0;        # cpu time accumlator
+    my $dummy = 0;        # dummy variable to prevent optimizations
+    my $i;
+    my $start;
+    my $stop;
+    my $a;
+
+    for ($a = 0; $a < $tries; ++$a)
+    {
+        $start = (times)[0];
+        for ($i = 0; $i < $l; ++$i)
+        {
+            $dummy += $i;
+        }
+        $stop = (times)[0];
+        $cpu += $stop - $start;
+    }
+    $cpu /= $tries;
+
+    print "" . int($l/($cpu*$m)) . "\n";
+
+    return $dummy; # reuse dummy variable
+}
+
+mips;
--- a/testing/sisyphus/bin/set-build-env.sh
+++ b/testing/sisyphus/bin/set-build-env.sh
@@ -32,22 +32,26 @@
 # use your version of this file under the terms of the MPL, indicate your
 # decision by deleting the provisions above and replace them with the notice
 # and other provisions required by the GPL or the LGPL. If you do not delete
 # the provisions above, a recipient may use your version of this file under
 # the terms of any one of the MPL, the GPL or the LGPL.
 #
 # ***** END LICENSE BLOCK *****
 
+if [[ -z "$LIBRARYSH" ]]; then
+    source $TEST_DIR/bin/library.sh
+fi
+
 export MOZ_CVS_FLAGS="-z3 -q"
 export MOZILLA_OFFICIAL=1
 export BUILD_OFFICIAL=1
 
 if [[ -z "$CVSROOT" ]]; then
-    if grep -q mozqa@qm-mini-ubuntu01 ~/.ssh/id_dsa.pub; then
+    if grep -q buildbot@qm ~/.ssh/id_dsa.pub; then
         export CVSROOT=:ext:unittest@cvs.mozilla.org:/cvsroot
     else
         export CVSROOT=:pserver:anonymous@cvs-mirror.mozilla.org:/cvsroot
     fi
 fi
 
 #
 # options processing
@@ -55,17 +59,17 @@ fi
 options="p:b:T:e:"
 usage()
 {
     cat <<EOF
 
 usage: set-build-env.sh -p product -b branch -T buildtype [-e extra]
 
 -p product      [firefox|thunderbird]
--b branch       [1.8.0|1.8.1|1.9.0]
+-b branch       [1.8.0|1.8.1|1.9.0|1.9.1]
 -T buildtype    [opt|debug]
 -e extra        extra qualifier to pick mozconfig and tree
 
 EOF
 }
 
 myexit()
 {
@@ -86,20 +90,24 @@ for step in step1; do # dummy loop for h
     unset product branch buildtype extra
 
     while getopts $options optname ; 
       do 
       case $optname in
           p) product=$OPTARG;;
           b) branch=$OPTARG;;
           T) buildtype=$OPTARG;;
-          e) extra=$OPTARG;;
+          e) extra="-$OPTARG";;
       esac
     done
 
+    # include environment variables
+    datafiles=$TEST_DIR/data/$product,$branch$extra,$buildtype.data
+    loaddata $datafiles
+
     # echo product=$product, branch=$branch, buildtype=$buildtype, extra=$extra
 
     if [[ -z "$product" || -z "$branch" || -z "$buildtype" ]]; then
         echo -n "missing"
         if [[ -z "$product" ]]; then
             echo -n " -p product"
         fi
         if [[ -z "$branch" ]]; then
@@ -108,32 +116,35 @@ for step in step1; do # dummy loop for h
         if [[ -z "$buildtype" ]]; then
             echo -n " -T buildtype"
         fi
         usage
         myexit 1
     fi
 
     if [[ $branch == "1.8.0" ]]; then
-        export BRANCH_CO_FLAGS="-r MOZILLA_1_8_0_BRANCH"
+        export BRANCH_CO_FLAGS=${BRANCH_CO_FLAGS:--r MOZILLA_1_8_0_BRANCH}
     elif [[ $branch == "1.8.1" ]]; then
-        export BRANCH_CO_FLAGS="-r MOZILLA_1_8_BRANCH"
+        export BRANCH_CO_FLAGS=${BRANCH_CO_FLAGS:--r MOZILLA_1_8_BRANCH}
     elif [[ $branch == "1.9.0" ]]; then
         export BRANCH_CO_FLAGS="";
+    elif [[ $branch == "1.9.1" ]]; then
+        # XXX: mozilla-central
+        export BRANCH_CO_FLAGS="";
     else
         echo "Unknown branch: $branch"
         myexit 1
     fi
 
     if [[ -n "$MOZ_CO_DATE" ]]; then
         export DATE_CO_FLAGS="-D \"$MOZ_CO_DATE\""
     fi
 
-    case `uname -s` in 
-        CYGWIN*)
+    case $OSID in 
+        nt)
 
             # On Windows, Sisyphus is run under Cygwin, so the OS will be CYGWIN
             # regardless. Check if mozilla-build has been installed to the default
             # location, and if so, set up to call mozilla-build to perform the actual
             # build steps.
             # 
             # To make life simpler, change the mount point of the C: drive in cygwin from
             # /cygdrive/c to /c via mount -c /
@@ -142,36 +153,32 @@ for step in step1; do # dummy loop for h
             # 
             # Note that all commands *except* make client.mk will be performed in cygwin.
             #
             # Note that when calling a command string of the form $buildbash --login -c "command",
             # you must cd to the desired directory as part of "command" since msys will set the 
             # directory to the home directory prior to executing the command.
 
             if [[ -e "/c/mozilla-build" ]]; then
-                OSID=win32
                 export BUILDDIR=${BUILDDIR:-/c/work/mozilla/builds}
                 export buildbash="/c/mozilla-build/msys/bin/bash"
-                export platform=i686
                 export bashlogin=--login # this is for msys' bash.
 
                 if echo $branch | egrep -q '^1\.8'; then
                     export MOZ_TOOLS="/c/mozilla-build/moztools-180compat"
                     source ${TEST_DIR}/bin/set-msvc6-env.sh
                 else
                     export MOZ_TOOLS="/c/mozilla-build/moztools"
                     source ${TEST_DIR}/bin/set-msvc8-env.sh
                 fi
 
                 echo moztools Location: $MOZ_TOOLS
             else
-                OSID=win32
                 export BUILDDIR=${BUILDDIR:-/work/mozilla/builds}
                 export buildbash="/bin/bash"
-                export platform=i686
                 export bashlogin=-l
 
                 if echo $branch | egrep -q '^1\.8'; then
                     export MOZ_TOOLS="$BUILDDIR/moztools"
                     source ${TEST_DIR}/bin/set-msvc6-env.sh
                 else
                     export MOZ_TOOLS="$BUILDDIR/moztools-static"
                     source ${TEST_DIR}/bin/set-msvc8-env.sh
@@ -183,113 +190,112 @@ for step in step1; do # dummy loop for h
             # now convert TEST_DIR and BUILDDIR to cross compatible paths using
             # the common cygdrive prefix for cygwin and msys
             TEST_DIR_WIN=`cygpath -w $TEST_DIR`
             BUILDDIR_WIN=`cygpath -w $BUILDDIR`
             TEST_DIR=`cygpath -u $TEST_DIR_WIN`
             BUILDDIR=`cygpath -u $BUILDDIR_WIN`
             ;;
 
-        Linux)
-            OSID=linux
+        linux)
             export BUILDDIR=${BUILDDIR:-/work/mozilla/builds}
             export buildbash="/bin/bash"
-            export platform=`uname -p`
             export bashlogin=-l
 
             # if a 64 bit linux system, assume the 
             # compiler is in the standard reference
             # location /tools/gcc/bin/
-            case "$platform" in
-                x86_64)
+            case "$TEST_PROCESSORTYPE" in
+                *64)
                     export PATH=/tools/gcc/bin:$PATH
                     ;;
             esac
             
             ;;
-        Darwin)
-            OSID=mac
-
+        darwin)
             export BUILDDIR=${BUILDDIR:-/work/mozilla/builds}
             export buildbash="/bin/bash"
-            export platform=`uname -p`
             export bashlogin=-l
             ;;
         *)
             ;;
     esac
 
     export SHELL=$buildbash
     export CONFIG_SHELL=$buildbash
     export CONFIGURE_ENV_ARGS=$buildbash
 
+
+    export TEST_MOZILLA_HG=${TEST_MOZILLA_HG:-http://hg.mozilla.org/mozilla-central/}
+    export TEST_MOZILLA_HG_REV=${TEST_MOZILLA_HG_REV:-tip}
+
     if [[ -z $extra ]]; then
         export TREE="$BUILDDIR/$branch"
     else
-        export TREE="$BUILDDIR/$branch-$extra"
+        export TREE="$BUILDDIR/$branch$extra"
 
         #
         # extras can't be placed in mozconfigs since not all parts
         # of the build system use mozconfig (e.g. js shell) and since
         # the obj directory is not configurable for them as well thus
         # requiring separate source trees
         #
 
         case "$extra" in
-            too-much-gc)
+            -too-much-gc)
                 export XCFLAGS="-DWAY_TOO_MUCH_GC=1"
                 export CFLAGS="-DWAY_TOO_MUCH_GC=1"
                 export CXXFLAGS="-DWAY_TOO_MUCH_GC=1"
                 ;;
-            gcov)
+            -gcov)
 
-                if [[ "$OSID" == "win32" ]]; then
-                    echo "win32 does not support gcov"
+                if [[ "$OSID" == "nt" ]]; then
+                    echo "NT does not support gcov"
                     myexit 1
                 fi
                 export CFLAGS="--coverage"
                 export CXXFLAGS="--coverage"
                 export XCFLAGS="--coverage"
                 export OS_CFLAGS="--coverage"
                 export LDFLAGS="--coverage"
                 export XLDOPTS="--coverage"	
                 ;;
-            jprof)
+            -jprof)
                 ;;
         esac
     fi
 
     if [[ ! -d $TREE ]]; then
         echo "Build directory $TREE does not exist"
         myexit 2
     fi
 
     # here project refers to either browser or mail
     # and is used to find mozilla/(browser|mail)/config/mozconfig
     if [[ $product == "firefox" ]]; then
         project=browser
-        export MOZCONFIG="$TREE/mozconfig-firefox-$OSID-$platform-$buildtype"
+        export MOZCONFIG="$TREE/mozconfig-firefox-$OSID-$TEST_PROCESSORTYPE-$buildtype"
     elif [[ $product == "thunderbird" ]]; then
         project=mail
-        export MOZCONFIG="$TREE/mozconfig-thunderbird-$OSID-$platform-$buildtype"
+        export MOZCONFIG="$TREE/mozconfig-thunderbird-$OSID-$TEST_PROCESSORTYPE-$buildtype"
     else
         echo "Assuming project=browser for product: $product"
         project=browser
-        export MOZCONFIG="$TREE/mozconfig-firefox-$OSID-$platform-$buildtype"
+        export MOZCONFIG="$TREE/mozconfig-firefox-$OSID-$TEST_PROCESSORTYPE-$buildtype"
     fi
 
     # js shell builds
     if [[ $buildtype == "debug" ]]; then
         unset BUILD_OPT
     else
         export BUILD_OPT=1
     fi
 
     case "$OSID" in
-        mac)
+        darwin)
             export JS_EDITLINE=1 # required for mac
             ;;
     esac
     # end js shell builds
 
     set | sed 's/^/environment: /'
     echo "mozconfig: $MOZCONFIG"
     cat $MOZCONFIG | sed 's/^/mozconfig: /'
--- a/testing/sisyphus/bin/test-setup.sh
+++ b/testing/sisyphus/bin/test-setup.sh
@@ -54,17 +54,17 @@ usage:
        [-N profilename [-D profiledirectory [-L profiletemplate 
          [-U userpreferences]]]]
        [-E extensiondir]
        [-d datafiles] 
 
 variable            description
 ===============     ===========================================================
 -p product          required. one of firefox thunderbird
--b branch           required. one of 1.8.0 1.8.1 1.9.0
+-b branch           required. one of 1.8.0 1.8.1 1.9.0 1.9.1
 -u url              optional. url where to download build
 -f filepath         optional. location to save downloaded build or to find
                     previously downloaded build. If not specified, the
                     default will be the basename of the url saved to the
                     /tmp directory. If there is no basename, then the
                     filepath will be /tmp/\$product-\$branch-file.
 -B buildcommands    optional. one or more of clean checkout build
 -T buildtype        optional. one of opt debug
@@ -124,35 +124,31 @@ while getopts $options optname ;
 
       E) extensiondir="$OPTARG";;
 
       d) datafiles="$OPTARG";;
   esac
 done
 
 # include environment variables
-if [[ -n "$datafiles" ]]; then
-    for datafile in $datafiles; do 
-        cat $datafile | sed 's|^|data: |'
-        source $datafile
-    done
-fi
+loaddata $datafiles
 
 TEST_PRODUCT=$product
 TEST_BRANCH=$branch
 TEST_BUILDCOMMANDS=$buildcommands
 TEST_BUILDTYPE=$buildtype
 TEST_EXECUTABLEPATH=$executablepath
 TEST_PROFILENAME=$profilename
 TEST_PROFILETEMPLATE=$profiletemplate
 TEST_USERPREFERENCES=$userpreferences
 TEST_EXTENSIONDIR=$extensiondir
 TEST_DATAFILES=$datafiles
 
 dumpenvironment
+dumphardware
 
 if [[ -z "$product" || -z "$branch" ]]; then
     echo "product and branch are required"
     usage
 fi
 
 if [[ ( -n "$url" || -n "$filepath" ) && ( -n "$buildcommands" ) ]]; then
     echo "you can not both download and build cvs builds at the same time"
--- a/testing/sisyphus/bin/tester.sh
+++ b/testing/sisyphus/bin/tester.sh
@@ -107,9 +107,32 @@ for data in $datalist; do
     if [[ "$verbose" == "1" ]]; then
         test-setup.sh -d $TEST_DIR/data/$data.data 2>&1 | tee -a $TEST_LOG
         $testscript $testargs -d $TEST_DIR/data/$data.data 2>&1 | tee -a $TEST_LOG
     else
         test-setup.sh -d $TEST_DIR/data/$data.data >> $TEST_LOG 2>&1
         $testscript $testargs -d $TEST_DIR/data/$data.data >> $TEST_LOG 2>&1
     fi
 
+    if [[ "$XPCOM_DEBUG_BREAK" == "stack" ]]; then
+        case $OSID in
+            nt)
+                ;;
+            linux)
+                if which fix-linux-stack.pl > /dev/null; then
+                    fix-linux-stack.pl < $TEST_LOG > $TEST_LOG.tmp
+                    mv $TEST_LOG.tmp $TEST_LOG
+                else
+                    error "XPCOM_DEBUG_BREAK=stack specified but fix-linux-stack.pl is not available"
+                fi
+                ;;
+            darwin)
+                if which fix-macosx-stack.pl > /dev/null; then
+                    fix-macosx-stack.pl < $TEST_LOG > $TEST_LOG.tmp
+                    mv $TEST_LOG.tmp $TEST_LOG
+                else
+                    error "XPCOM_DEBUG_BREAK=stack specified but fix-macosx-stack.pl is not available"
+                fi
+                ;;
+        esac
+    fi
+
 done
--- a/testing/sisyphus/bin/timed_run.py
+++ b/testing/sisyphus/bin/timed_run.py
@@ -15,16 +15,17 @@
 # The Original Code is mozilla.org code.
 #
 # The Initial Developer of the Original Code is
 # Mozilla Foundation.
 # Portions created by the Initial Developer are Copyright (C) 2004
 # the Initial Developer. All Rights Reserved.
 #
 # Contributor(s): Chris Cooper
+#                 Jesse Ruderman
 #
 # Alternatively, the contents of this file may be used under the terms of
 # either the GNU General Public License Version 2 or later (the "GPL"), or
 # the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
 # in which case the provisions of the GPL or the LGPL are applicable instead
 # of those above. If you wish to allow use of your version of this file only
 # under the terms of either the GPL or the LGPL, and not to allow others to
 # use your version of this file under the terms of the MPL, indicate your
@@ -50,41 +51,50 @@ pid = None
 prefix = sys.argv[2]
 elapsedtime = 0
 
 if prefix == "-":
     prefix = ''
 else:
     prefix = prefix + ':'
 
+def getSignalName(num):
+    for p in dir(signal):
+        if p.startswith("SIG") and not p.startswith("SIG_"):
+            if getattr(signal, p) == num:
+                return p
+    return "UNKNOWN"
+
 def alarm_handler(signum, frame):
     global pid
     global prefix
     try:
-        print "%s EXIT STATUS: TIMED OUT (%s seconds)" % (prefix, sys.argv[1])
+	stoptime = time.time()
+	elapsedtime = stoptime - starttime
+        print "\n%s EXIT STATUS: TIMED OUT (%s seconds)\n" % (prefix, elapsedtime)
         flushkill(pid, signal.SIGKILL)
     except OSError, e:
-        print "timed_run.py: exception trying to kill process: %d (%s)" % (e.errno, e.strerror)
+        print "\ntimed_run.py: exception trying to kill process: %d (%s)\n" % (e.errno, e.strerror)
         pass
     flushexit(exitTimeout)
 
 def forkexec(command, args):
     global prefix
     global elapsedtime
     #print command
     #print args
     try:
         pid = os.fork()
         if pid == 0:  # Child
             os.execvp(command, args)
             flushbuffers()
         else:  # Parent
             return pid
     except OSError, e:
-        print "%s ERROR: %s %s failed: %d (%s) (%f seconds)" % (prefix, command, args, e.errno, e.strerror, elapsedtime)
+        print "\n%s ERROR: %s %s failed: %d (%s) (%f seconds)\n" % (prefix, command, args, e.errno, e.strerror, elapsedtime)
         flushexit(exitOSError)
 
 def flushbuffers():
         sys.stdout.flush()
         sys.stderr.flush()
 
 def flushexit(rc):
         flushbuffers()
@@ -101,31 +111,37 @@ try:
 	pid = forkexec(sys.argv[3], sys.argv[3:])
 	status = os.waitpid(pid, 0)[1]
 	signal.alarm(0) # Cancel the alarm
 	stoptime = time.time()
 	elapsedtime = stoptime - starttime
 	# it appears that linux at least will on "occasion" return a status
 	# when the process was terminated by a signal, so test signal first.
 	if os.WIFSIGNALED(status):
-	    print "%s EXIT STATUS: CRASHED signal %d (%f seconds)" % (prefix, os.WTERMSIG(status), elapsedtime)
-	    flushexit(exitSignal)
+            signum = os.WTERMSIG(status)
+            if signum == 2:
+                msg = 'INTERRUPT'
+                rc = exitInterrupt
+            else:
+                msg = 'CRASHED'
+                rc = exitSignal
+
+            print "\n%s EXIT STATUS: %s signal %d %s (%f seconds)\n" % (prefix, msg, signum, getSignalName(signum), elapsedtime)
+            flushexit(rc)
+
 	elif os.WIFEXITED(status):
 	    rc = os.WEXITSTATUS(status)
 	    msg = ''
 	    if rc == 0:
 	        msg = 'NORMAL'
-	    elif rc < 3:
+	    else:
 	        msg = 'ABNORMAL ' + str(rc)
 		rc = exitSignal
-	    else:
-	        msg = 'CRASHED ' + str(rc)
-		rc = exitSignal
 
-	    print "%s EXIT STATUS: %s (%f seconds)" % (prefix, msg, elapsedtime)
+	    print "\n%s EXIT STATUS: %s (%f seconds)\n" % (prefix, msg, elapsedtime)
 	    flushexit(rc)
 	else:
-	    print "%s EXIT STATUS: NONE (%f seconds)" % (prefix, elapsedtime)
+	    print "\n%s EXIT STATUS: NONE (%f seconds)\n" % (prefix, elapsedtime)
 	    flushexit(0)
 except KeyboardInterrupt:
 	flushkill(pid, 9)
 	flushexit(exitInterrupt)
 
--- a/testing/sisyphus/bin/uninstall-build.sh
+++ b/testing/sisyphus/bin/uninstall-build.sh
@@ -47,17 +47,17 @@ function usage()
 {
     cat <<EOF
 usage: 
 $SCRIPT -p product -b branch  -x executablepath [-d datafiles]
 
 variable            description
 ===============     ============================================================
 -p product          required. firefox|thunderbird
--b branch           required. 1.8.0|1.8.1|1.9.0
+-b branch           required. 1.8.0|1.8.1|1.9.0|1.9.1
 -x executablepath   required. directory where build is installed
 -d datafiles        optional. one or more filenames of files containing 
                     environment variable definitions to be included.
 
 note that the environment variables should have the same names as in the 
 "variable" column.
 
 Uninstalls build located in directory-tree 'executablepath'
@@ -75,63 +75,54 @@ while getopts $options optname ;
       p) product=$OPTARG;;
       b) branch=$OPTARG;;
       x) executablepath=$OPTARG;;
       d) datafiles=$OPTARG;;
   esac
 done
 
 # include environment variables
-if [[ -n "$datafiles" ]]; then
-    for datafile in $datafiles; do 
-        cat $datafile | sed 's|^|data: |'
-        source $datafile
-    done
-fi
+loaddata $datafiles
 
 if [[ -z "$product" || -z "$branch" || -z "$executablepath" ]]
     then
     usage
 fi
 
 
 if [[ ! -d "$executablepath" ]]; then
     exit 0
 fi
 
 executable=`get_executable $product $branch $executablepath`
 
-if [[ -z "$executable" ]]; then
-    exit 0
-fi
-
 executabledir=`dirname $executable`
 
-if [[ $OSID == "win32" ]]; then
+if [[ $OSID == "nt" ]]; then
     # see http://nsis.sourceforge.net/Docs/Chapter3.html
 
     # if the directory already exists, attempt to uninstall
     # any existing installation.
 
     if [[ -d "$executabledir/uninstall" ]]; then
 
-        if [[ $branch == "1.8.0" ]]; then
+        if [[ "$branch" == "1.8.0" ]]; then
             uninstallexe="$executabledir/uninstall/uninstall.exe"
             uninstallini="$executabledir/uninstall/uninstall.ini"
             if [[ -n "$uninstallexe"  && -e "$uninstallexe" ]]; then
                 if sed -i.bak 's/Run Mode=Normal/Run Mode=Silent/' $uninstallini; 
                     then
                     # uninstall.exe will return non zero exit codes 
                     # for no damn reason.
                     if $uninstallexe; then
                         true
                     fi
                 fi
             fi
-        elif [[ $branch == "1.8.1" || $branch == "1.9.0" ]]; then
+        elif [[ "$branch" == "1.8.1" || "$branch" == "1.9.0" || "$branch" == "1.9.1" ]]; then
             uninstalloldexe="$executabledir/uninstall/uninst.exe"
             uninstallnewexe="$executabledir/uninstall/helper.exe"
             if [[ -n "$uninstallnewexe" && -e "$uninstallnewexe" ]]; then
                 $uninstallnewexe /S /D=`cygpath -a -w $executabledir | sed 's@\\\\@\\\\\\\\@g'`
             elif [[ -n "$uninstalloldexe" && -e "$uninstalloldexe" ]]; then
                 $uninstalloldexe /S /D=`cygpath -a -w $executabledir | sed 's@\\\\@\\\\\\\\@g'`
             else
                 uninstallexe="$executabledir/$product/uninstall/uninstaller.exe"
--- a/testing/sisyphus/bin/userhook-checkspider.js
+++ b/testing/sisyphus/bin/userhook-checkspider.js
@@ -45,19 +45,49 @@ function userOnStart()
 }
 
 function userOnBeforePage()
 {
 }
 
 function userOnAfterPage()
 {
+  var win = gSpider.mDocument.defaultView;
+  if (win.wrappedJSObject)
+  {
+    win = win.wrappedJSObject;
+  }
+
+  dumpObject('navigator', win.navigator);
+
+  for (var i = 0; i < win.navigator.mimeTypes.length; i++)
+  {
+    dumpObject('navigator.mimeTypes[' + i + ']', win.navigator.mimeTypes[i]);
+  }
+
+  for (var i = 0; i < win.navigator.plugins.length; i++)
+  {
+    dumpObject('navigator.plugins[' + i + ']', win.navigator.plugins[i]);
+  }
+
   gPageCompleted = true;
 }
 
+function dumpObject(name, object)
+{
+  for (var p in object)
+  {
+    if (/(string|number)/.test(typeof object[p]))
+    {
+      cdump(name + '.' + p + ':' + object[p]);
+    }
+  }
+
+}
+
 function userOnStop()
 {
 }
 
 
 gConsoleListener.onConsoleMessage = 
 function userOnConsoleMessage(s)
 {
new file mode 100644
--- /dev/null
+++ b/testing/sisyphus/data/download-check,firefox-1.5.0-ftp,darwin.data
@@ -0,0 +1,11 @@
+allurl=http://ftp.mozilla.org/pub/mozilla.org/firefox/nightly/1.5.0.12-candidates/rc2/
+product=firefox
+branch=1.8.1
+url=http://releases.mozilla.org/pub/mozilla.org/firefox/releases/2.0.0.14/mac/en-US/Firefox%202.0.0.14.dmg
+profilename=firefox-1.8.1-profile
+profiledirectory=/tmp/firefox-1.8.1-profile
+executablepath=/tmp/firefox-1.8.1
+userpreferences=${TEST_DIR}/prefs/test-user.js
+extensiondir=${TEST_DIR}/xpi
+test=ftp
+buildtype=nightly
--- a/testing/sisyphus/data/download-check,firefox-1.5.0-ftp,linux.data
+++ b/testing/sisyphus/data/download-check,firefox-1.5.0-ftp,linux.data
@@ -1,11 +1,11 @@
 allurl=http://ftp.mozilla.org/pub/mozilla.org/firefox/nightly/1.5.0.12-candidates/rc2/
 product=firefox
 branch=1.8.1
-url=http://releases.mozilla.org/pub/mozilla.org/firefox/releases/2.0.0.13/linux-i686/en-US/firefox-2.0.0.13.tar.gz
+url=http://releases.mozilla.org/pub/mozilla.org/firefox/releases/2.0.0.14/linux-i686/en-US/firefox-2.0.0.14.tar.gz
 profilename=firefox-1.8.1-profile
 profiledirectory=/tmp/firefox-1.8.1-profile
 executablepath=/tmp/firefox-1.8.1
 userpreferences=${TEST_DIR}/prefs/test-user.js
 extensiondir=${TEST_DIR}/xpi
 test=ftp
 buildtype=nightly
deleted file mode 100755
--- a/testing/sisyphus/data/download-check,firefox-1.5.0-ftp,mac.data
+++ /dev/null
@@ -1,11 +0,0 @@
-allurl=http://ftp.mozilla.org/pub/mozilla.org/firefox/nightly/1.5.0.12-candidates/rc2/
-product=firefox
-branch=1.8.1
-url=http://releases.mozilla.org/pub/mozilla.org/firefox/releases/2.0.0.13/mac/en-US/Firefox%202.0.0.13.dmg
-profilename=firefox-1.8.1-profile
-profiledirectory=/tmp/firefox-1.8.1-profile
-executablepath=/tmp/firefox-1.8.1
-userpreferences=${TEST_DIR}/prefs/test-user.js
-extensiondir=${TEST_DIR}/xpi
-test=ftp
-buildtype=nightly
new file mode 100644
--- /dev/null
+++ b/testing/sisyphus/data/download-check,firefox-1.5.0-ftp,nt.data
@@ -0,0 +1,11 @@
+allurl=http://ftp.mozilla.org/pub/mozilla.org/firefox/nightly/1.5.0.12-candidates/rc2/
+product=firefox
+branch=1.8.1
+url=http://releases.mozilla.org/pub/mozilla.org/firefox/releases/2.0.0.14/win32/en-US/Firefox%20Setup%202.0.0.14.exe
+profilename=firefox-1.8.1-profile
+profiledirectory=/tmp/firefox-1.8.1-profile
+executablepath=/tmp/firefox-1.8.1
+userpreferences=${TEST_DIR}/prefs/test-user.js
+extensiondir=${TEST_DIR}/xpi
+test=ftp
+buildtype=nightly
deleted file mode 100755
--- a/testing/sisyphus/data/download-check,firefox-1.5.0-ftp,win32.data
+++ /dev/null
@@ -1,11 +0,0 @@
-allurl=http://ftp.mozilla.org/pub/mozilla.org/firefox/nightly/1.5.0.12-candidates/rc2/
-product=firefox
-branch=1.8.1
-url=http://releases.mozilla.org/pub/mozilla.org/firefox/releases/2.0.0.13/win32/en-US/Firefox%20Setup%202.0.0.13.exe
-profilename=firefox-1.8.1-profile
-profiledirectory=/tmp/firefox-1.8.1-profile
-executablepath=/tmp/firefox-1.8.1
-userpreferences=${TEST_DIR}/prefs/test-user.js
-extensiondir=${TEST_DIR}/xpi
-test=ftp
-buildtype=nightly
new file mode 100644
--- /dev/null
+++ b/testing/sisyphus/data/download-check,firefox-2.0.0-ftp,darwin.data
@@ -0,0 +1,11 @@
+allurl=http://ftp.mozilla.org/pub/mozilla.org/firefox/nightly/2.0.0.14-candidates/rc2/
+product=firefox
+branch=1.8.1
+url=http://releases.mozilla.org/pub/mozilla.org/firefox/releases/2.0.0.14/mac/en-US/Firefox%202.0.0.14.dmg
+profilename=firefox-1.8.1-profile
+profiledirectory=/tmp/firefox-1.8.1-profile
+executablepath=/tmp/firefox-1.8.1
+userpreferences=${TEST_DIR}/prefs/test-user.js
+extensiondir=${TEST_DIR}/xpi
+test=ftp
+buildtype=nightly
--- a/testing/sisyphus/data/download-check,firefox-2.0.0-ftp,linux.data
+++ b/testing/sisyphus/data/download-check,firefox-2.0.0-ftp,linux.data
@@ -1,11 +1,11 @@
-allurl=http://ftp.mozilla.org/pub/mozilla.org/firefox/nightly/2.0.0.13-candidates/rc2/
+allurl=http://ftp.mozilla.org/pub/mozilla.org/firefox/nightly/2.0.0.14-candidates/rc2/
 product=firefox
 branch=1.8.1
-url=http://releases.mozilla.org/pub/mozilla.org/firefox/releases/2.0.0.13/linux-i686/en-US/firefox-2.0.0.13.tar.gz
+url=http://releases.mozilla.org/pub/mozilla.org/firefox/releases/2.0.0.14/linux-i686/en-US/firefox-2.0.0.14.tar.gz
 profilename=firefox-1.8.1-profile
 profiledirectory=/tmp/firefox-1.8.1-profile
 executablepath=/tmp/firefox-1.8.1
 userpreferences=${TEST_DIR}/prefs/test-user.js
 extensiondir=${TEST_DIR}/xpi
 test=ftp
 buildtype=nightly
deleted file mode 100755
--- a/testing/sisyphus/data/download-check,firefox-2.0.0-ftp,mac.data
+++ /dev/null
@@ -1,11 +0,0 @@
-allurl=http://ftp.mozilla.org/pub/mozilla.org/firefox/nightly/2.0.0.13-candidates/rc2/
-product=firefox
-branch=1.8.1
-url=http://releases.mozilla.org/pub/mozilla.org/firefox/releases/2.0.0.13/mac/en-US/Firefox%202.0.0.13.dmg
-profilename=firefox-1.8.1-profile
-profiledirectory=/tmp/firefox-1.8.1-profile
-executablepath=/tmp/firefox-1.8.1
-userpreferences=${TEST_DIR}/prefs/test-user.js
-extensiondir=${TEST_DIR}/xpi
-test=ftp
-buildtype=nightly
new file mode 100644
--- /dev/null
+++ b/testing/sisyphus/data/download-check,firefox-2.0.0-ftp,nt.data
@@ -0,0 +1,11 @@
+allurl=http://ftp.mozilla.org/pub/mozilla.org/firefox/nightly/2.0.0.14-candidates/rc2/
+product=firefox
+branch=1.8.1
+url=http://ftp.mozilla.org/pub/mozilla.org/firefox/nightly/latest-trunk/firefox-3.0pre.en-US.win32.zip
+profilename=firefox-1.8.1-profile
+profiledirectory=/tmp/firefox-1.8.1-profile
+executablepath=/tmp/firefox-1.8.1
+userpreferences=${TEST_DIR}/prefs/test-user.js
+extensiondir=${TEST_DIR}/xpi
+test=ftp
+buildtype=nightly
deleted file mode 100755
--- a/testing/sisyphus/data/download-check,firefox-2.0.0-ftp,win32.data
+++ /dev/null
@@ -1,11 +0,0 @@
-allurl=http://ftp.mozilla.org/pub/mozilla.org/firefox/nightly/2.0.0.13-candidates/rc2/
-product=firefox
-branch=1.8.1
-url=http://ftp.mozilla.org/pub/mozilla.org/firefox/nightly/latest-trunk/firefox-3.0pre.en-US.win32.zip
-profilename=firefox-1.8.1-profile
-profiledirectory=/tmp/firefox-1.8.1-profile
-executablepath=/tmp/firefox-1.8.1
-userpreferences=${TEST_DIR}/prefs/test-user.js
-extensiondir=${TEST_DIR}/xpi
-test=ftp
-buildtype=nightly
new file mode 100644
--- /dev/null
+++ b/testing/sisyphus/data/download-check,firefox-all,darwin.data
@@ -0,0 +1,11 @@
+allurl=http://www.mozilla.com/en-US/firefox/all.html
+product=firefox
+branch=1.8.1
+url=http://releases.mozilla.org/pub/mozilla.org/firefox/releases/2.0.0.14/mac/en-US/Firefox%202.0.0.14.dmg
+profilename=firefox-1.8.1-profile
+profiledirectory=/tmp/firefox-1.8.1-profile
+executablepath=/tmp/firefox-1.8.1
+userpreferences=${TEST_DIR}/prefs/test-user.js
+extensiondir=${TEST_DIR}/xpi
+test=all
+buildtype=nightly
--- a/testing/sisyphus/data/download-check,firefox-all,linux.data
+++ b/testing/sisyphus/data/download-check,firefox-all,linux.data
@@ -1,11 +1,11 @@
 allurl=http://www.mozilla.com/en-US/firefox/all.html
 product=firefox
 branch=1.8.1
-url=http://releases.mozilla.org/pub/mozilla.org/firefox/releases/2.0.0.13/linux-i686/en-US/firefox-2.0.0.13.tar.gz
+url=http://releases.mozilla.org/pub/mozilla.org/firefox/releases/2.0.0.14/linux-i686/en-US/firefox-2.0.0.14.tar.gz
 profilename=firefox-1.8.1-profile
 profiledirectory=/tmp/firefox-1.8.1-profile
 executablepath=/tmp/firefox-1.8.1
 userpreferences=${TEST_DIR}/prefs/test-user.js
 extensiondir=${TEST_DIR}/xpi
 test=all
 buildtype=nightly
deleted file mode 100755
--- a/testing/sisyphus/data/download-check,firefox-all,mac.data
+++ /dev/null
@@ -1,11 +0,0 @@
-allurl=http://www.mozilla.com/en-US/firefox/all.html
-product=firefox
-branch=1.8.1
-url=http://releases.mozilla.org/pub/mozilla.org/firefox/releases/2.0.0.13/mac/en-US/Firefox%202.0.0.13.dmg
-profilename=firefox-1.8.1-profile
-profiledirectory=/tmp/firefox-1.8.1-profile
-executablepath=/tmp/firefox-1.8.1
-userpreferences=${TEST_DIR}/prefs/test-user.js
-extensiondir=${TEST_DIR}/xpi
-test=all
-buildtype=nightly
new file mode 100644
--- /dev/null
+++ b/testing/sisyphus/data/download-check,firefox-all,nt.data
@@ -0,0 +1,11 @@
+allurl=http://www.mozilla.com/en-US/firefox/all.html
+product=firefox
+branch=1.8.1
+url=http://releases.mozilla.org/pub/mozilla.org/firefox/releases/2.0.0.14/win32/en-US/Firefox%20Setup%202.0.0.14.exe
+profilename=firefox-1.8.1-profile
+profiledirectory=/tmp/firefox-1.8.1-profile
+executablepath=/tmp/firefox-1.8.1
+userpreferences=${TEST_DIR}/prefs/test-user.js
+extensiondir=${TEST_DIR}/xpi
+test=all
+buildtype=nightly
deleted file mode 100755
--- a/testing/sisyphus/data/download-check,firefox-all,win32.data
+++ /dev/null
@@ -1,11 +0,0 @@
-allurl=http://www.mozilla.com/en-US/firefox/all.html
-product=firefox
-branch=1.8.1
-url=http://releases.mozilla.org/pub/mozilla.org/firefox/releases/2.0.0.13/win32/en-US/Firefox%20Setup%202.0.0.13.exe
-profilename=firefox-1.8.1-profile
-profiledirectory=/tmp/firefox-1.8.1-profile
-executablepath=/tmp/firefox-1.8.1
-userpreferences=${TEST_DIR}/prefs/test-user.js
-extensiondir=${TEST_DIR}/xpi
-test=all
-buildtype=nightly
new file mode 100644
--- /dev/null
+++ b/testing/sisyphus/data/download-check,firefox-all-older,darwin.data
@@ -0,0 +1,11 @@
+allurl=http://khan.landfill.bugzilla.org/en-US/firefox/all-older.html
+product=firefox
+branch=1.8.1
+url=http://releases.mozilla.org/pub/mozilla.org/firefox/releases/2.0.0.14/mac/en-US/Firefox%202.0.0.14.dmg
+profilename=firefox-1.8.1-profile
+profiledirectory=/tmp/firefox-1.8.1-profile
+executablepath=/tmp/firefox-1.8.1
+userpreferences=${TEST_DIR}/prefs/test-user.js
+extensiondir=${TEST_DIR}/xpi
+test=all
+buildtype=nightly
--- a/testing/sisyphus/data/download-check,firefox-all-older,linux.data
+++ b/testing/sisyphus/data/download-check,firefox-all-older,linux.data
@@ -1,11 +1,11 @@
 allurl=http://khan.landfill.bugzilla.org/en-US/firefox/all-older.html
 product=firefox
 branch=1.8.1
-url=http://releases.mozilla.org/pub/mozilla.org/firefox/releases/2.0.0.13/linux-i686/en-US/firefox-2.0.0.13.tar.gz
+url=http://releases.mozilla.org/pub/mozilla.org/firefox/releases/2.0.0.14/linux-i686/en-US/firefox-2.0.0.14.tar.gz
 profilename=firefox-1.8.1-profile
 profiledirectory=/tmp/firefox-1.8.1-profile
 executablepath=/tmp/firefox-1.8.1
 userpreferences=${TEST_DIR}/prefs/test-user.js
 extensiondir=${TEST_DIR}/xpi
 test=all
 buildtype=nightly
deleted file mode 100755
--- a/testing/sisyphus/data/download-check,firefox-all-older,mac.data
+++ /dev/null
@@ -1,11 +0,0 @@
-allurl=http://khan.landfill.bugzilla.org/en-US/firefox/all-older.html
-product=firefox
-branch=1.8.1
-url=http://releases.mozilla.org/pub/mozilla.org/firefox/releases/2.0.0.13/mac/en-US/Firefox%202.0.0.13.dmg
-profilename=firefox-1.8.1-profile
-profiledirectory=/tmp/firefox-1.8.1-profile
-executablepath=/tmp/firefox-1.8.1
-userpreferences=${TEST_DIR}/prefs/test-user.js
-extensiondir=${TEST_DIR}/xpi
-test=all
-buildtype=nightly
new file mode 100644
--- /dev/null
+++ b/testing/sisyphus/data/download-check,firefox-all-older,nt.data
@@ -0,0 +1,11 @@
+allurl=http://khan.landfill.bugzilla.org/en-US/firefox/all-older.html
+product=firefox
+branch=1.8.1
+url=http://releases.mozilla.org/pub/mozilla.org/firefox/releases/2.0.0.14/win32/en-US/Firefox%20Setup%202.0.0.14.exe
+profilename=firefox-1.8.1-profile
+profiledirectory=/tmp/firefox-1.8.1-profile
+executablepath=/tmp/firefox-1.8.1
+userpreferences=${TEST_DIR}/prefs/test-user.js
+extensiondir=${TEST_DIR}/xpi
+test=all
+buildtype=nightly
deleted file mode 100755
--- a/testing/sisyphus/data/download-check,firefox-all-older,win32.data
+++ /dev/null
@@ -1,11 +0,0 @@
-allurl=http://khan.landfill.bugzilla.org/en-US/firefox/all-older.html
-product=firefox
-branch=1.8.1
-url=http://releases.mozilla.org/pub/mozilla.org/firefox/releases/2.0.0.13/win32/en-US/Firefox%20Setup%202.0.0.13.exe
-profilename=firefox-1.8.1-profile
-profiledirectory=/tmp/firefox-1.8.1-profile
-executablepath=/tmp/firefox-1.8.1
-userpreferences=${TEST_DIR}/prefs/test-user.js
-extensiondir=${TEST_DIR}/xpi
-test=all
-buildtype=nightly
new file mode 100644
--- /dev/null
+++ b/testing/sisyphus/data/download-check,thunderbird-1.5.0-ftp,darwin.data
@@ -0,0 +1,11 @@
+allurl=http://releases.mozilla.org/pub/mozilla.org/thunderbird/releases/1.5.0.14/
+product=firefox
+branch=1.8.1
+url=http://releases.mozilla.org/pub/mozilla.org/firefox/releases/2.0.0.14/mac/en-US/Firefox%202.0.0.14.dmg
+profilename=firefox-1.8.1-profile
+profiledirectory=/tmp/firefox-1.8.1-profile
+executablepath=/tmp/firefox-1.8.1
+userpreferences=${TEST_DIR}/prefs/test-user.js
+extensiondir=${TEST_DIR}/xpi
+test=ftp
+buildtype=nightly
--- a/testing/sisyphus/data/download-check,thunderbird-1.5.0-ftp,linux.data
+++ b/testing/sisyphus/data/download-check,thunderbird-1.5.0-ftp,linux.data
@@ -1,11 +1,11 @@
 allurl=http://releases.mozilla.org/pub/mozilla.org/thunderbird/releases/1.5.0.14/
 product=firefox
 branch=1.8.1
-url=http://releases.mozilla.org/pub/mozilla.org/firefox/releases/2.0.0.13/linux-i686/en-US/firefox-2.0.0.13.tar.gz
+url=http://releases.mozilla.org/pub/mozilla.org/firefox/releases/2.0.0.14/linux-i686/en-US/firefox-2.0.0.14.tar.gz
 profilename=firefox-1.8.1-profile
 profiledirectory=/tmp/firefox-1.8.1-profile
 executablepath=/tmp/firefox-1.8.1
 userpreferences=${TEST_DIR}/prefs/test-user.js
 extensiondir=${TEST_DIR}/xpi
 test=ftp
 buildtype=nightly
deleted file mode 100755
--- a/testing/sisyphus/data/download-check,thunderbird-1.5.0-ftp,mac.data
+++ /dev/null
@@ -1,11 +0,0 @@
-allurl=http://releases.mozilla.org/pub/mozilla.org/thunderbird/releases/1.5.0.14/
-product=firefox
-branch=1.8.1
-url=http://releases.mozilla.org/pub/mozilla.org/firefox/releases/2.0.0.13/mac/en-US/Firefox%202.0.0.13.dmg
-profilename=firefox-1.8.1-profile
-profiledirectory=/tmp/firefox-1.8.1-profile
-executablepath=/tmp/firefox-1.8.1
-userpreferences=${TEST_DIR}/prefs/test-user.js
-extensiondir=${TEST_DIR}/xpi
-test=ftp
-buildtype=nightly
new file mode 100644
--- /dev/null
+++ b/testing/sisyphus/data/download-check,thunderbird-1.5.0-ftp,nt.data
@@ -0,0 +1,11 @@
+allurl=http://releases.mozilla.org/pub/mozilla.org/thunderbird/releases/1.5.0.14/
+product=firefox
+branch=1.8.1
+url=http://releases.mozilla.org/pub/mozilla.org/firefox/releases/2.0.0.14/win32/en-US/Firefox%20Setup%202.0.0.14.exe
+profilename=firefox-1.8.1-profile
+profiledirectory=/tmp/firefox-1.8.1-profile
+executablepath=/tmp/firefox-1.8.1
+userpreferences=${TEST_DIR}/prefs/test-user.js
+extensiondir=${TEST_DIR}/xpi
+test=ftp
+buildtype=nightly
deleted file mode 100755
--- a/testing/sisyphus/data/download-check,thunderbird-1.5.0-ftp,win32.data
+++ /dev/null
@@ -1,11 +0,0 @@
-allurl=http://releases.mozilla.org/pub/mozilla.org/thunderbird/releases/1.5.0.14/
-product=firefox
-branch=1.8.1
-url=http://releases.mozilla.org/pub/mozilla.org/firefox/releases/2.0.0.13/win32/en-US/Firefox%20Setup%202.0.0.13.exe
-profilename=firefox-1.8.1-profile
-profiledirectory=/tmp/firefox-1.8.1-profile
-executablepath=/tmp/firefox-1.8.1
-userpreferences=${TEST_DIR}/prefs/test-user.js
-extensiondir=${TEST_DIR}/xpi
-test=ftp
-buildtype=nightly
new file mode 100644
--- /dev/null
+++ b/testing/sisyphus/data/download-check,thunderbird-2.0.0-ftp,darwin.data
@@ -0,0 +1,11 @@
+allurl=http://ftp.mozilla.org/pub/mozilla.org/thunderbird/releases/2.0.0.14/
+product=firefox
+branch=1.8.1
+url=http://releases.mozilla.org/pub/mozilla.org/firefox/releases/2.0.0.14/mac/en-US/Firefox%202.0.0.14.dmg
+profilename=firefox-1.8.1-profile
+profiledirectory=/tmp/firefox-1.8.1-profile
+executablepath=/tmp/firefox-1.8.1
+userpreferences=${TEST_DIR}/prefs/test-user.js
+extensiondir=${TEST_DIR}/xpi
+test=ftp
+buildtype=nightly
--- a/testing/sisyphus/data/download-check,thunderbird-2.0.0-ftp,linux.data
+++ b/testing/sisyphus/data/download-check,thunderbird-2.0.0-ftp,linux.data
@@ -1,11 +1,11 @@
-allurl=http://ftp.mozilla.org/pub/mozilla.org/thunderbird/releases/2.0.0.12/
+allurl=http://ftp.mozilla.org/pub/mozilla.org/thunderbird/releases/2.0.0.14/
 product=firefox
 branch=1.8.1
-url=http://releases.mozilla.org/pub/mozilla.org/firefox/releases/2.0.0.13/linux-i686/en-US/firefox-2.0.0.13.tar.gz
+url=http://releases.mozilla.org/pub/mozilla.org/firefox/releases/2.0.0.14/linux-i686/en-US/firefox-2.0.0.14.tar.gz
 profilename=firefox-1.8.1-profile
 profiledirectory=/tmp/firefox-1.8.1-profile
 executablepath=/tmp/firefox-1.8.1
 userpreferences=${TEST_DIR}/prefs/test-user.js
 extensiondir=${TEST_DIR}/xpi
 test=ftp
 buildtype=nightly
deleted file mode 100755
--- a/testing/sisyphus/data/download-check,thunderbird-2.0.0-ftp,mac.data
+++ /dev/null
@@ -1,11 +0,0 @@
-allurl=http://ftp.mozilla.org/pub/mozilla.org/thunderbird/releases/2.0.0.12/
-product=firefox
-branch=1.8.1
-url=http://releases.mozilla.org/pub/mozilla.org/firefox/releases/2.0.0.13/mac/en-US/Firefox%202.0.0.13.dmg
-profilename=firefox-1.8.1-profile
-profiledirectory=/tmp/firefox-1.8.1-profile
-executablepath=/tmp/firefox-1.8.1
-userpreferences=${TEST_DIR}/prefs/test-user.js
-extensiondir=${TEST_DIR}/xpi
-test=ftp
-buildtype=nightly
new file mode 100644
--- /dev/null
+++ b/testing/sisyphus/data/download-check,thunderbird-2.0.0-ftp,nt.data
@@ -0,0 +1,11 @@
+allurl=http://ftp.mozilla.org/pub/mozilla.org/thunderbird/releases/2.0.0.14/
+product=firefox
+branch=1.8.1
+url=http://releases.mozilla.org/pub/mozilla.org/firefox/releases/2.0.0.14/win32/en-US/Firefox%20Setup%202.0.0.14.exe
+profilename=firefox-1.8.1-profile
+profiledirectory=/tmp/firefox-1.8.1-profile
+executablepath=/tmp/firefox-1.8.1
+userpreferences=${TEST_DIR}/prefs/test-user.js
+extensiondir=${TEST_DIR}/xpi
+test=ftp
+buildtype=nightly
deleted file mode 100755
--- a/testing/sisyphus/data/download-check,thunderbird-2.0.0-ftp,win32.data
+++ /dev/null
@@ -1,11 +0,0 @@
-allurl=http://ftp.mozilla.org/pub/mozilla.org/thunderbird/releases/2.0.0.12/
-product=firefox
-branch=1.8.1
-url=http://releases.mozilla.org/pub/mozilla.org/firefox/releases/2.0.0.13/win32/en-US/Firefox%20Setup%202.0.0.13.exe
-profilename=firefox-1.8.1-profile
-profiledirectory=/tmp/firefox-1.8.1-profile
-executablepath=/tmp/firefox-1.8.1
-userpreferences=${TEST_DIR}/prefs/test-user.js
-extensiondir=${TEST_DIR}/xpi
-test=ftp
-buildtype=nightly
new file mode 100644
--- /dev/null
+++ b/testing/sisyphus/data/download-check,thunderbird-all,darwin.data
@@ -0,0 +1,11 @@
+allurl=http://www.mozilla.com/en-US/thunderbird/all.html
+product=firefox
+branch=1.8.1
+url=http://releases.mozilla.org/pub/mozilla.org/firefox/releases/2.0.0.14/mac/en-US/Firefox%202.0.0.14.dmg
+profilename=firefox-1.8.1-profile
+profiledirectory=/tmp/firefox-1.8.1-profile
+executablepath=/tmp/firefox-1.8.1
+userpreferences=${TEST_DIR}/prefs/test-user.js
+extensiondir=${TEST_DIR}/xpi
+test=all
+buildtype=nightly
--- a/testing/sisyphus/data/download-check,thunderbird-all,linux.data
+++ b/testing/sisyphus/data/download-check,thunderbird-all,linux.data
@@ -1,11 +1,11 @@
 allurl=http://www.mozilla.com/en-US/thunderbird/all.html
 product=firefox
 branch=1.8.1
-url=http://releases.mozilla.org/pub/mozilla.org/firefox/releases/2.0.0.13/linux-i686/en-US/firefox-2.0.0.13.tar.gz
+url=http://releases.mozilla.org/pub/mozilla.org/firefox/releases/2.0.0.14/linux-i686/en-US/firefox-2.0.0.14.tar.gz
 profilename=firefox-1.8.1-profile
 profiledirectory=/tmp/firefox-1.8.1-profile
 executablepath=/tmp/firefox-1.8.1
 userpreferences=${TEST_DIR}/prefs/test-user.js
 extensiondir=${TEST_DIR}/xpi
 test=all
 buildtype=nightly
deleted file mode 100755
--- a/testing/sisyphus/data/download-check,thunderbird-all,mac.data
+++ /dev/null
@@ -1,11 +0,0 @@
-allurl=http://www.mozilla.com/en-US/thunderbird/all.html
-product=firefox
-branch=1.8.1
-url=http://releases.mozilla.org/pub/mozilla.org/firefox/releases/2.0.0.13/mac/en-US/Firefox%202.0.0.13.dmg
-profilename=firefox-1.8.1-profile
-profiledirectory=/tmp/firefox-1.8.1-profile
-executablepath=/tmp/firefox-1.8.1
-userpreferences=${TEST_DIR}/prefs/test-user.js
-extensiondir=${TEST_DIR}/xpi
-test=all
-buildtype=nightly
new file mode 100644
--- /dev/null
+++ b/testing/sisyphus/data/download-check,thunderbird-all,nt.data
@@ -0,0 +1,11 @@
+allurl=http://www.mozilla.com/en-US/thunderbird/all.html
+product=firefox
+branch=1.8.1
+url=http://releases.mozilla.org/pub/mozilla.org/firefox/releases/2.0.0.14/win32/en-US/Firefox%20Setup%202.0.0.14.exe
+profilename=firefox-1.8.1-profile
+profiledirectory=/tmp/firefox-1.8.1-profile
+executablepath=/tmp/firefox-1.8.1
+userpreferences=${TEST_DIR}/prefs/test-user.js
+extensiondir=${TEST_DIR}/xpi
+test=all
+buildtype=nightly
deleted file mode 100755
--- a/testing/sisyphus/data/download-check,thunderbird-all,win32.data
+++ /dev/null
@@ -1,11 +0,0 @@
-allurl=http://www.mozilla.com/en-US/thunderbird/all.html
-product=firefox
-branch=1.8.1
-url=http://releases.mozilla.org/pub/mozilla.org/firefox/releases/2.0.0.13/win32/en-US/Firefox%20Setup%202.0.0.13.exe
-profilename=firefox-1.8.1-profile
-profiledirectory=/tmp/firefox-1.8.1-profile
-executablepath=/tmp/firefox-1.8.1
-userpreferences=${TEST_DIR}/prefs/test-user.js
-extensiondir=${TEST_DIR}/xpi
-test=all
-buildtype=nightly
new file mode 100644
--- /dev/null
+++ b/testing/sisyphus/data/download-check,thunderbird-all-older,darwin.data
@@ -0,0 +1,11 @@
+allurl=http://khan.landfill.bugzilla.org/en-US/thunderbird/all-older.html
+product=firefox
+branch=1.8.1
+url=http://releases.mozilla.org/pub/mozilla.org/firefox/releases/2.0.0.14/mac/en-US/Firefox%202.0.0.14.dmg
+profilename=firefox-1.8.1-profile
+profiledirectory=/tmp/firefox-1.8.1-profile
+executablepath=/tmp/firefox-1.8.1
+userpreferences=${TEST_DIR}/prefs/test-user.js
+extensiondir=${TEST_DIR}/xpi
+test=all
+buildtype=nightly
--- a/testing/sisyphus/data/download-check,thunderbird-all-older,linux.data
+++ b/testing/sisyphus/data/download-check,thunderbird-all-older,linux.data
@@ -1,11 +1,11 @@
 allurl=http://khan.landfill.bugzilla.org/en-US/thunderbird/all-older.html
 product=firefox
 branch=1.8.1
-url=http://releases.mozilla.org/pub/mozilla.org/firefox/releases/2.0.0.13/linux-i686/en-US/firefox-2.0.0.13.tar.gz
+url=http://releases.mozilla.org/pub/mozilla.org/firefox/releases/2.0.0.14/linux-i686/en-US/firefox-2.0.0.14.tar.gz
 profilename=firefox-1.8.1-profile
 profiledirectory=/tmp/firefox-1.8.1-profile
 executablepath=/tmp/firefox-1.8.1
 userpreferences=${TEST_DIR}/prefs/test-user.js
 extensiondir=${TEST_DIR}/xpi
 test=all
 buildtype=nightly
deleted file mode 100755
--- a/testing/sisyphus/data/download-check,thunderbird-all-older,mac.data
+++ /dev/null
@@ -1,11 +0,0 @@
-allurl=http://khan.landfill.bugzilla.org/en-US/thunderbird/all-older.html
-product=firefox
-branch=1.8.1
-url=http://releases.mozilla.org/pub/mozilla.org/firefox/releases/2.0.0.13/mac/en-US/Firefox%202.0.0.13.dmg
-profilename=firefox-1.8.1-profile
-profiledirectory=/tmp/firefox-1.8.1-profile
-executablepath=/tmp/firefox-1.8.1
-userpreferences=${TEST_DIR}/prefs/test-user.js
-extensiondir=${TEST_DIR}/xpi
-test=all
-buildtype=nightly
new file mode 100644
--- /dev/null
+++ b/testing/sisyphus/data/download-check,thunderbird-all-older,nt.data
@@ -0,0 +1,11 @@
+allurl=http://khan.landfill.bugzilla.org/en-US/thunderbird/all-older.html
+product=firefox
+branch=1.8.1
+url=http://releases.mozilla.org/pub/mozilla.org/firefox/releases/2.0.0.14/win32/en-US/Firefox%20Setup%202.0.0.14.exe
+profilename=firefox-1.8.1-profile
+profiledirectory=/tmp/firefox-1.8.1-profile
+executablepath=/tmp/firefox-1.8.1
+userpreferences=${TEST_DIR}/prefs/test-user.js
+extensiondir=${TEST_DIR}/xpi
+test=all
+buildtype=nightly
deleted file mode 100755
--- a/testing/sisyphus/data/download-check,thunderbird-all-older,win32.data
+++ /dev/null
@@ -1,11 +0,0 @@
-allurl=http://khan.landfill.bugzilla.org/en-US/thunderbird/all-older.html
-product=firefox
-branch=1.8.1
-url=http://releases.mozilla.org/pub/mozilla.org/firefox/releases/2.0.0.13/win32/en-US/Firefox%20Setup%202.0.0.13.exe
-profilename=firefox-1.8.1-profile
-profiledirectory=/tmp/firefox-1.8.1-profile
-executablepath=/tmp/firefox-1.8.1
-userpreferences=${TEST_DIR}/prefs/test-user.js
-extensiondir=${TEST_DIR}/xpi
-test=all
-buildtype=nightly
new file mode 100644
--- /dev/null
+++ b/testing/sisyphus/data/firefox,1.8.0,nightly-darwin.data
@@ -0,0 +1,9 @@
+product=firefox
+branch=1.8.0
+url=http://ftp.mozilla.org/pub/mozilla.org/firefox/nightly/latest-mozilla1.8.0/firefox-1.5.0.12eol.en-US.mac.dmg
+profilename=firefox-1.8.0-profile
+profiledirectory=/tmp/firefox-1.8.0-profile
+executablepath=/tmp/firefox-1.8.0
+userpreferences=${TEST_DIR}/prefs/test-user.js
+extensiondir=${TEST_DIR}/xpi
+buildtype=nightly
deleted file mode 100755
--- a/testing/sisyphus/data/firefox,1.8.0,nightly-mac.data
+++ /dev/null
@@ -1,9 +0,0 @@
-product=firefox
-branch=1.8.0
-url=http://ftp.mozilla.org/pub/mozilla.org/firefox/nightly/latest-mozilla1.8.0/firefox-1.5.0.12eol.en-US.mac.dmg
-profilename=firefox-1.8.0-profile
-profiledirectory=/tmp/firefox-1.8.0-profile
-executablepath=/tmp/firefox-1.8.0
-userpreferences=${TEST_DIR}/prefs/test-user.js
-extensiondir=${TEST_DIR}/xpi
-buildtype=nightly
new file mode 100644
--- /dev/null
+++ b/testing/sisyphus/data/firefox,1.8.0,nightly-nt.data
@@ -0,0 +1,9 @@
+product=firefox
+branch=1.8.0
+url=http://ftp.mozilla.org/pub/mozilla.org/firefox/nightly/latest-mozilla1.8.0/firefox-1.5.0.12eol.en-US.win32.zip
+profilename=firefox-1.8.0-profile
+profiledirectory=/tmp/firefox-1.8.0-profile
+executablepath=/tmp/firefox-1.8.0
+userpreferences=${TEST_DIR}/prefs/test-user.js
+extensiondir=${TEST_DIR}/xpi
+buildtype=nightly
deleted file mode 100755
--- a/testing/sisyphus/data/firefox,1.8.0,nightly-win32.data
+++ /dev/null
@@ -1,9 +0,0 @@
-product=firefox
-branch=1.8.0
-url=http://ftp.mozilla.org/pub/mozilla.org/firefox/nightly/latest-mozilla1.8.0/firefox-1.5.0.12eol.en-US.win32.zip
-profilename=firefox-1.8.0-profile
-profiledirectory=/tmp/firefox-1.8.0-profile
-executablepath=/tmp/firefox-1.8.0
-userpreferences=${TEST_DIR}/prefs/test-user.js
-extensiondir=${TEST_DIR}/xpi
-buildtype=nightly
new file mode 100644
--- /dev/null
+++ b/testing/sisyphus/data/firefox,1.8.1,nightly-darwin.data
@@ -0,0 +1,9 @@
+product=firefox
+branch=1.8.1
+url=http://ftp.mozilla.org/pub/mozilla.org/firefox/nightly/latest-mozilla1.8/firefox-2.0.0.15pre.en-US.mac.dmg
+profilename=firefox-1.8.1-profile
+profiledirectory=/tmp/firefox-1.8.1-profile
+executablepath=/tmp/firefox-1.8.1
+userpreferences=${TEST_DIR}/prefs/test-user.js
+extensiondir=${TEST_DIR}/xpi
+buildtype=nightly
--- a/testing/sisyphus/data/firefox,1.8.1,nightly-linux.data
+++ b/testing/sisyphus/data/firefox,1.8.1,nightly-linux.data
@@ -1,9 +1,9 @@
 product=firefox
 branch=1.8.1
-url=http://ftp.mozilla.org/pub/mozilla.org/firefox/nightly/latest-mozilla1.8/firefox-2.0.0.14pre.en-US.linux-i686.tar.gz
+url=http://ftp.mozilla.org/pub/mozilla.org/firefox/nightly/latest-mozilla1.8/firefox-2.0.0.15pre.en-US.linux-i686.tar.gz
 profilename=firefox-1.8.1-profile
 profiledirectory=/tmp/firefox-1.8.1-profile
 executablepath=/tmp/firefox-1.8.1
 userpreferences=${TEST_DIR}/prefs/test-user.js
 extensiondir=${TEST_DIR}/xpi
 buildtype=nightly
deleted file mode 100755
--- a/testing/sisyphus/data/firefox,1.8.1,nightly-mac.data
+++ /dev/null
@@ -1,9 +0,0 @@
-product=firefox
-branch=1.8.1
-url=http://ftp.mozilla.org/pub/mozilla.org/firefox/nightly/latest-mozilla1.8/firefox-2.0.0.14pre.en-US.mac.dmg
-profilename=firefox-1.8.1-profile
-profiledirectory=/tmp/firefox-1.8.1-profile
-executablepath=/tmp/firefox-1.8.1
-userpreferences=${TEST_DIR}/prefs/test-user.js
-extensiondir=${TEST_DIR}/xpi
-buildtype=nightly
new file mode 100644
--- /dev/null
+++ b/testing/sisyphus/data/firefox,1.8.1,nightly-nt.data
@@ -0,0 +1,9 @@
+product=firefox
+branch=1.8.1
+url=http://ftp.mozilla.org/pub/mozilla.org/firefox/nightly/latest-mozilla1.8/firefox-2.0.0.15pre.en-US.win32.zip
+profilename=firefox-1.8.1-profile
+profiledirectory=/tmp/firefox-1.8.1-profile
+executablepath=/tmp/firefox-1.8.1
+userpreferences=${TEST_DIR}/prefs/test-user.js
+extensiondir=${TEST_DIR}/xpi
+buildtype=nightly
deleted file mode 100755
--- a/testing/sisyphus/data/firefox,1.8.1,nightly-win32.data
+++ /dev/null
@@ -1,9 +0,0 @@
-product=firefox
-branch=1.8.1
-url=http://ftp.mozilla.org/pub/mozilla.org/firefox/nightly/latest-mozilla1.8/firefox-2.0.0.14pre.en-US.win32.zip
-profilename=firefox-1.8.1-profile
-profiledirectory=/tmp/firefox-1.8.1-profile
-executablepath=/tmp/firefox-1.8.1
-userpreferences=${TEST_DIR}/prefs/test-user.js
-extensiondir=${TEST_DIR}/xpi
-buildtype=nightly
new file mode 100644
--- /dev/null
+++ b/testing/sisyphus/data/firefox,1.9.0,nightly-darwin.data
@@ -0,0 +1,9 @@
+product=firefox
+branch=1.9.0
+url=http://ftp.mozilla.org/pub/mozilla.org/firefox/nightly/latest-trunk/firefox-3.0pre.en-US.mac.dmg
+profilename=firefox-1.9.0-profile
+profiledirectory=/tmp/firefox-1.9.0-profile
+executablepath=/tmp/firefox-1.9.0
+userpreferences=${TEST_DIR}/prefs/test-user.js
+extensiondir=${TEST_DIR}/xpi
+buildtype=nightly
deleted file mode 100755
--- a/testing/sisyphus/data/firefox,1.9.0,nightly-mac.data
+++ /dev/null
@@ -1,9 +0,0 @@
-product=firefox
-branch=1.9.0
-url=http://ftp.mozilla.org/pub/mozilla.org/firefox/nightly/latest-trunk/firefox-3.0pre.en-US.mac.dmg
-profilename=firefox-1.9.0-profile
-profiledirectory=/tmp/firefox-1.9.0-profile
-executablepath=/tmp/firefox-1.9.0
-userpreferences=${TEST_DIR}/prefs/test-user.js
-extensiondir=${TEST_DIR}/xpi
-buildtype=nightly
new file mode 100644
--- /dev/null
+++ b/testing/sisyphus/data/firefox,1.9.0,nightly-nt.data
@@ -0,0 +1,9 @@
+product=firefox
+branch=1.9.0
+url=http://ftp.mozilla.org/pub/mozilla.org/firefox/nightly/latest-trunk/firefox-3.0pre.en-US.win32.zip
+profilename=firefox-1.9.0-profile
+profiledirectory=/tmp/firefox-1.9.0-profile
+executablepath=/tmp/firefox-1.9.0
+userpreferences=${TEST_DIR}/prefs/test-user.js
+extensiondir=${TEST_DIR}/xpi
+buildtype=nightly
deleted file mode 100755
--- a/testing/sisyphus/data/firefox,1.9.0,nightly-win32.data
+++ /dev/null
@@ -1,9 +0,0 @@
-product=firefox
-branch=1.9.0
-url=http://ftp.mozilla.org/pub/mozilla.org/firefox/nightly/latest-trunk/firefox-3.0pre.en-US.win32.zip
-profilename=firefox-1.9.0-profile
-profiledirectory=/tmp/firefox-1.9.0-profile
-executablepath=/tmp/firefox-1.9.0
-userpreferences=${TEST_DIR}/prefs/test-user.js
-extensiondir=${TEST_DIR}/xpi
-buildtype=nightly
new file mode 100644
--- /dev/null
+++ b/testing/sisyphus/data/firefox,1.9.0-gcov,debug.data
@@ -0,0 +1,8 @@
+product=firefox
+branch=1.9.0
+profilename=firefox-1.9.0-gcov-profile
+profiledirectory=/tmp/firefox-1.9.0-gcov-profile
+executablepath=${BUILDDIR}/1.9.0-gcov/mozilla/firefox-debug/dist
+userpreferences=${TEST_DIR}/prefs/test-user.js
+extensiondir=${TEST_DIR}/xpi
+buildtype=debug
new file mode 100644
--- /dev/null
+++ b/testing/sisyphus/data/firefox,1.9.0-gcov,opt.data
@@ -0,0 +1,8 @@
+product=firefox
+branch=1.9.0
+profilename=firefox-1.9.0-gcov-profile
+profiledirectory=/tmp/firefox-1.9.0-gcov-profile
+executablepath=${BUILDDIR}/1.9.0-gcov/mozilla/firefox-opt/dist
+userpreferences=${TEST_DIR}/prefs/test-user.js
+extensiondir=${TEST_DIR}/xpi
+buildtype=opt
new file mode 100644
--- /dev/null
+++ b/testing/sisyphus/data/firefox,1.9.0-jemalloc,debug.data
@@ -0,0 +1,8 @@
+product=firefox
+branch=1.9.0
+profilename=firefox-1.9.0-jemalloc-profile
+profiledirectory=/tmp/firefox-1.9.0-jemalloc-profile
+executablepath=${BUILDDIR}/1.9.0-jemalloc/mozilla/firefox-debug/dist
+userpreferences=${TEST_DIR}/prefs/test-user.js
+extensiondir=${TEST_DIR}/xpi
+buildtype=debug
new file mode 100644
--- /dev/null
+++ b/testing/sisyphus/data/firefox,1.9.0-jemalloc,opt.data
@@ -0,0 +1,8 @@
+product=firefox
+branch=1.9.0
+profilename=firefox-1.9.0-jemalloc-profile
+profiledirectory=/tmp/firefox-1.9.0-jemalloc-profile
+executablepath=${BUILDDIR}/1.9.0-jemalloc/mozilla/firefox-opt/dist
+userpreferences=${TEST_DIR}/prefs/test-user.js
+extensiondir=${TEST_DIR}/xpi
+buildtype=opt
new file mode 100644
--- /dev/null
+++ b/testing/sisyphus/data/firefox,1.9.0-jemalloc-test,debug.data
@@ -0,0 +1,8 @@
+product=firefox
+branch=1.9.0
+profilename=firefox-1.9.0-jemalloc-test-profile
+profiledirectory=/tmp/firefox-1.9.0-jemalloc-test-profile
+executablepath=${BUILDDIR}/1.9.0-jemalloc-test/mozilla/firefox-debug/dist
+userpreferences=${TEST_DIR}/prefs/test-user.js
+extensiondir=${TEST_DIR}/xpi
+buildtype=debug
new file mode 100644
--- /dev/null
+++ b/testing/sisyphus/data/firefox,1.9.0-jemalloc-test,opt.data
@@ -0,0 +1,8 @@
+product=firefox
+branch=1.9.0
+profilename=firefox-1.9.0-jemalloc-test-profile
+profiledirectory=/tmp/firefox-1.9.0-jemalloc-test-profile
+executablepath=${BUILDDIR}/1.9.0-jemalloc-test/mozilla/firefox-opt/dist
+userpreferences=${TEST_DIR}/prefs/test-user.js
+extensiondir=${TEST_DIR}/xpi
+buildtype=opt
new file mode 100644
--- /dev/null
+++ b/testing/sisyphus/data/firefox,1.9.1,debug.data
@@ -0,0 +1,9 @@
+product=firefox
+branch=1.9.1
+profilename=firefox-1.9.1-profile
+profiledirectory=/tmp/firefox-1.9.1-profile
+executablepath=${BUILDDIR}/1.9.1/mozilla/firefox-debug/dist
+userpreferences=${TEST_DIR}/prefs/test-user.js
+extensiondir=${TEST_DIR}/xpi
+buildtype=debug
+TEST_MOZILLA_HG=http://hg.mozilla.org/mozilla-central
new file mode 100644
--- /dev/null
+++ b/testing/sisyphus/data/firefox,1.9.1,nightly-darwin.data
@@ -0,0 +1,9 @@
+product=firefox
+branch=1.9.1
+url=http://ftp.mozilla.org/pub/mozilla.org/firefox/nightly/latest-trunk/firefox-3.0pre.en-US.mac.dmg
+profilename=firefox-1.9.1-profile
+profiledirectory=/tmp/firefox-1.9.1-profile
+executablepath=/tmp/firefox-1.9.1
+userpreferences=${TEST_DIR}/prefs/test-user.js
+extensiondir=${TEST_DIR}/xpi
+buildtype=nightly
new file mode 100644
--- /dev/null
+++ b/testing/sisyphus/data/firefox,1.9.1,nightly-linux.data
@@ -0,0 +1,9 @@
+product=firefox
+branch=1.9.1
+url=http://ftp.mozilla.org/pub/mozilla.org/firefox/nightly/latest-trunk/firefox-3.0pre.en-US.linux-i686.tar.bz2
+profilename=firefox-1.9.1-profile
+profiledirectory=/tmp/firefox-1.9.1-profile
+executablepath=/tmp/firefox-1.9.1
+userpreferences=${TEST_DIR}/prefs/test-user.js
+extensiondir=${TEST_DIR}/xpi
+buildtype=nightly
new file mode 100644
--- /dev/null
+++ b/testing/sisyphus/data/firefox,1.9.1,nightly-nt.data
@@ -0,0 +1,9 @@
+product=firefox
+branch=1.9.1
+url=http://ftp.mozilla.org/pub/mozilla.org/firefox/nightly/latest-trunk/firefox-3.0pre.en-US.win32.zip
+profilename=firefox-1.9.1-profile
+profiledirectory=/tmp/firefox-1.9.1-profile
+executablepath=/tmp/firefox-1.9.1
+userpreferences=${TEST_DIR}/prefs/test-user.js
+extensiondir=${TEST_DIR}/xpi
+buildtype=nightly
new file mode 100644
--- /dev/null
+++ b/testing/sisyphus/data/firefox,1.9.1,opt.data
@@ -0,0 +1,9 @@
+product=firefox
+branch=1.9.1
+profilename=firefox-1.9.1-profile
+profiledirectory=/tmp/firefox-1.9.1-profile
+executablepath=${BUILDDIR}/1.9.1/mozilla/firefox-opt/dist
+userpreferences=${TEST_DIR}/prefs/test-user.js
+extensiondir=${TEST_DIR}/xpi
+buildtype=opt
+TEST_MOZILLA_HG=http://hg.mozilla.org/mozilla-central
new file mode 100644
--- /dev/null
+++ b/testing/sisyphus/data/firefox,1.9.1,too-much-gc,debug.data
@@ -0,0 +1,9 @@
+product=firefox
+branch=1.9.1
+profilename=firefox-1.9.1-too-much-gc-profile
+profiledirectory=/tmp/firefox-1.9.1-too-much-gc-profile
+executablepath=${BUILDDIR}/1.9.1-too-much-gc/mozilla/firefox-debug/dist
+userpreferences=${TEST_DIR}/prefs/test-user.js
+extensiondir=${TEST_DIR}/xpi
+buildtype=debug
+TEST_MOZILLA_HG=http://hg.mozilla.org/mozilla-central
new file mode 100644
--- /dev/null
+++ b/testing/sisyphus/data/firefox,1.9.1-actionmonkey,debug.data
@@ -0,0 +1,9 @@
+product=firefox
+branch=1.9.1
+profilename=firefox-1.9.1-test-profile
+profiledirectory=/tmp/firefox-1.9.1-test-profile
+executablepath=${BUILDDIR}/1.9.1-test/mozilla/firefox-debug/dist
+userpreferences=${TEST_DIR}/prefs/test-user.js
+extensiondir=${TEST_DIR}/xpi
+buildtype=debug
+TEST_MOZILLA_HG=http://hg.mozilla.org/actionmonkey
new file mode 100644
--- /dev/null
+++ b/testing/sisyphus/data/firefox,1.9.1-actionmonkey,opt.data
@@ -0,0 +1,9 @@
+product=firefox
+branch=1.9.1
+profilename=firefox-1.9.1-test-profile
+profiledirectory=/tmp/firefox-1.9.1-test-profile
+executablepath=${BUILDDIR}/1.9.1-test/mozilla/firefox-opt/dist
+userpreferences=${TEST_DIR}/prefs/test-user.js
+extensiondir=${TEST_DIR}/xpi
+buildtype=opt
+TEST_MOZILLA_HG=http://hg.mozilla.org/actionmonkey
new file mode 100644
--- /dev/null
+++ b/testing/sisyphus/data/firefox,1.9.1-jemalloc,debug.data
@@ -0,0 +1,9 @@
+product=firefox
+branch=1.9.1
+profilename=firefox-1.9.1-jemalloc-profile
+profiledirectory=/tmp/firefox-1.9.1-jemalloc-profile
+executablepath=${BUILDDIR}/1.9.1-jemalloc/mozilla/firefox-debug/dist
+userpreferences=${TEST_DIR}/prefs/test-user.js
+extensiondir=${TEST_DIR}/xpi
+buildtype=debug
+TEST_MOZILLA_HG=http://hg.mozilla.org/mozilla-central
new file mode 100644
--- /dev/null
+++ b/testing/sisyphus/data/firefox,1.9.1-jemalloc,opt.data
@@ -0,0 +1,9 @@
+product=firefox
+branch=1.9.1
+profilename=firefox-1.9.1-jemalloc-profile
+profiledirectory=/tmp/firefox-1.9.1-jemalloc-profile
+executablepath=${BUILDDIR}/1.9.1-jemalloc/mozilla/firefox-opt/dist
+userpreferences=${TEST_DIR}/prefs/test-user.js
+extensiondir=${TEST_DIR}/xpi
+buildtype=opt
+TEST_MOZILLA_HG=http://hg.mozilla.org/mozilla-central
new file mode 100644
--- /dev/null
+++ b/testing/sisyphus/data/firefox,1.9.1-jemalloc-test,debug.data
@@ -0,0 +1,9 @@
+product=firefox
+branch=1.9.1
+profilename=firefox-1.9.1-jemalloc-test-profile
+profiledirectory=/tmp/firefox-1.9.1-jemalloc-test-profile
+executablepath=${BUILDDIR}/1.9.1-jemalloc-test/mozilla/firefox-debug/dist
+userpreferences=${TEST_DIR}/prefs/test-user.js
+extensiondir=${TEST_DIR}/xpi
+buildtype=debug
+TEST_MOZILLA_HG=http://hg.mozilla.org/mozilla-central
new file mode 100644
--- /dev/null
+++ b/testing/sisyphus/data/firefox,1.9.1-jemalloc-test,opt.data
@@ -0,0 +1,9 @@
+product=firefox
+branch=1.9.1
+profilename=firefox-1.9.1-jemalloc-test-profile
+profiledirectory=/tmp/firefox-1.9.1-jemalloc-test-profile
+executablepath=${BUILDDIR}/1.9.1-jemalloc-test/mozilla/firefox-opt/dist
+userpreferences=${TEST_DIR}/prefs/test-user.js
+extensiondir=${TEST_DIR}/xpi
+buildtype=opt
+TEST_MOZILLA_HG=http://hg.mozilla.org/mozilla-central
new file mode 100644
--- /dev/null
+++ b/testing/sisyphus/data/firefox,1.9.1-jprof,debug.data
@@ -0,0 +1,9 @@
+product=firefox
+branch=1.9.1
+profilename=firefox-1.9.1-jprof-profile
+profiledirectory=/tmp/firefox-1.9.1-jprof-profile
+executablepath=${BUILDDIR}/1.9.1-jprof/mozilla/firefox-debug/dist
+userpreferences=${TEST_DIR}/prefs/test-user.js
+extensiondir=${TEST_DIR}/xpi
+buildtype=debug
+TEST_MOZILLA_HG=http://hg.mozilla.org/mozilla-central
new file mode 100644
--- /dev/null
+++ b/testing/sisyphus/data/firefox,1.9.1-jprof,opt.data
@@ -0,0 +1,9 @@
+product=firefox
+branch=1.9.1
+profilename=firefox-1.9.1-jprof-profile
+profiledirectory=/tmp/firefox-1.9.1-jprof-profile
+executablepath=${BUILDDIR}/1.9.1-jprof/mozilla/firefox-opt/dist
+userpreferences=${TEST_DIR}/prefs/test-user.js
+extensiondir=${TEST_DIR}/xpi
+buildtype=opt
+TEST_MOZILLA_HG=http://hg.mozilla.org/mozilla-central
new file mode 100644
--- /dev/null
+++ b/testing/sisyphus/data/firefox,1.9.1-test,debug.data
@@ -0,0 +1,9 @@
+product=firefox
+branch=1.9.1
+profilename=firefox-1.9.1-test-profile
+profiledirectory=/tmp/firefox-1.9.1-test-profile
+executablepath=${BUILDDIR}/1.9.1-test/mozilla/firefox-debug/dist
+userpreferences=${TEST_DIR}/prefs/test-user.js
+extensiondir=${TEST_DIR}/xpi
+buildtype=debug
+TEST_MOZILLA_HG=http://hg.mozilla.org/mozilla-central
new file mode 100644
--- /dev/null
+++ b/testing/sisyphus/data/firefox,1.9.1-test,opt.data
@@ -0,0 +1,9 @@
+product=firefox
+branch=1.9.1
+profilename=firefox-1.9.1-test-profile
+profiledirectory=/tmp/firefox-1.9.1-test-profile
+executablepath=${BUILDDIR}/1.9.1-test/mozilla/firefox-opt/dist
+userpreferences=${TEST_DIR}/prefs/test-user.js
+extensiondir=${TEST_DIR}/xpi
+buildtype=opt
+TEST_MOZILLA_HG=http://hg.mozilla.org/mozilla-central
new file mode 100644
--- /dev/null
+++ b/testing/sisyphus/data/js,1.9.0-gcov,debug.data
@@ -0,0 +1,4 @@
+product=js
+branch=1.9.0
+sourcepath=${BUILDDIR}/1.9.0-gcov/mozilla/js/src
+buildtype=debug
new file mode 100644
--- /dev/null
+++ b/testing/sisyphus/data/js,1.9.0-gcov,opt.data
@@ -0,0 +1,4 @@
+product=js
+branch=1.9.0
+sourcepath=${BUILDDIR}/1.9.0-gcov/mozilla/js/src
+buildtype=opt
new file mode 100644
--- /dev/null
+++ b/testing/sisyphus/data/js,1.9.1,debug.data
@@ -0,0 +1,5 @@
+product=js
+branch=1.9.1
+sourcepath=${BUILDDIR}/1.9.1/mozilla/js/src
+buildtype=debug
+TEST_MOZILLA_HG=http://hg.mozilla.org/mozilla-central
new file mode 100644
--- /dev/null
+++ b/testing/sisyphus/data/js,1.9.1,opt.data
@@ -0,0 +1,5 @@
+product=js
+branch=1.9.1
+sourcepath=${BUILDDIR}/1.9.1/mozilla/js/src
+buildtype=opt
+TEST_MOZILLA_HG=http://hg.mozilla.org/mozilla-central
new file mode 100644
--- /dev/null
+++ b/testing/sisyphus/data/js,1.9.1,too-much-gc,debug.data
@@ -0,0 +1,5 @@
+product=js
+branch=1.9.1
+sourcepath=${BUILDDIR}/1.9.1-too-much-gc/mozilla/js/src
+buildtype=debug
+TEST_MOZILLA_HG=http://hg.mozilla.org/mozilla-central
new file mode 100644
--- /dev/null
+++ b/testing/sisyphus/data/js,1.9.1-actionmonkey,debug.data
@@ -0,0 +1,5 @@
+product=js
+branch=1.9.1
+sourcepath=${BUILDDIR}/1.9.1/mozilla/js/src
+buildtype=debug
+TEST_MOZILLA_HG=http://hg.mozilla.org/actionmonkey
new file mode 100644
--- /dev/null
+++ b/testing/sisyphus/data/js,1.9.1-actionmonkey,opt.data
@@ -0,0 +1,5 @@
+product=js
+branch=1.9.1
+sourcepath=${BUILDDIR}/1.9.1/mozilla/js/src
+buildtype=opt
+TEST_MOZILLA_HG=http://hg.mozilla.org/actionmonkey
new file mode 100644
--- /dev/null
+++ b/testing/sisyphus/data/js,1.9.1-test,debug.data
@@ -0,0 +1,5 @@
+product=js
+branch=1.9.1
+sourcepath=${BUILDDIR}/1.9.1-test/mozilla/js/src
+buildtype=debug
+TEST_MOZILLA_HG=http://hg.mozilla.org/mozilla-central
new file mode 100644
--- /dev/null
+++ b/testing/sisyphus/data/js,1.9.1-test,opt.data
@@ -0,0 +1,5 @@
+product=js
+branch=1.9.1
+sourcepath=${BUILDDIR}/1.9.1-test/mozilla/js/src
+buildtype=opt
+TEST_MOZILLA_HG=http://hg.mozilla.org/mozilla-central
new file mode 100644
--- /dev/null
+++ b/testing/sisyphus/data/thunderbird,1.9.1,debug.data
@@ -0,0 +1,10 @@
+product=thunderbird
+branch=1.9.1
+profilename=thunderbird-1.9.1-profile
+profiledirectory=/tmp/thunderbird-1.9.1-profile
+executablepath=${BUILDDIR}/1.9.1/mozilla/thunderbird-debug/dist
+userpreferences=${TEST_DIR}/prefs/test-user.js
+extensiondir=${TEST_DIR}/xpi
+profiletemplate=${TEST_DIR}/profiles/imap
+buildtype=debug
+TEST_MOZILLA_HG=http://hg.mozilla.org/mozilla-central
new file mode 100644
--- /dev/null
+++ b/testing/sisyphus/data/thunderbird,1.9.1-test,debug.data
@@ -0,0 +1,13 @@
+product=thunderbird
+branch=1.9.1
+profilename=thunderbird-1.9.1-test-profile
+profiledirectory=/tmp/thunderbird-1.9.1-test-profile
+executablepath=${BUILDDIR}/1.9.1-test/mozilla/thunderbird-debug/dist
+userpreferences=${TEST_DIR}/prefs/test-user.js
+extensiondir=${TEST_DIR}/xpi
+profiletemplate=${TEST_DIR}/profiles/imap
+buildtype=debug
+TEST_MOZILLA_HG=http://hg.mozilla.org/mozilla-central
+
+
+
--- a/testing/sisyphus/tests/mozilla.org/download-page/collect-urls-userhook.js
+++ b/testing/sisyphus/tests/mozilla.org/download-page/collect-urls-userhook.js
@@ -38,34 +38,34 @@ function collectLinks()
   {
   case 'Win32':
     os = 'win';
     break;
   case 'MacPPC':
   case 'MacIntel':
     os = 'osx';
     break;
-  case 'Linux i686':
+  case 'Linux*':
     os = 'linux';
     break;
   default:
     cdump('Error: Unknown OS ' + navigator.platform);
     return;
   }
     
   cdump('document.body: ' + win.document.body.innerHTML);
   var links = win.document.links;
 
   for (var ilink = 0; ilink < links.length; ilink++)
   {
     var link = links[ilink];
-    if (link.href.indexOf('download.html') != -1 && 
+    if (link.href.indexOf('http://download.mozilla.org') != -1 && 
         link.href.indexOf('os=' + os) != -1)
     {
-      var href = 'http://download.mozilla.org/?' + link.href.split('?')[1];
+      var href = link.href;
       cdump('href: ' + href);
     }
   }
 
   gPageCompleted = true;
 }
 
 
--- a/testing/sisyphus/tests/mozilla.org/download-page/test.sh
+++ b/testing/sisyphus/tests/mozilla.org/download-page/test.sh
@@ -85,22 +85,24 @@ if [[ -z "$allurl" || -z "$test" || \
 fi
 
 executable=`get_executable $product $branch $executablepath`
 
 urlfile=`mktemp /tmp/URLS.XXXX`
 
 if [[ "$test" == "all" ]]; then
     $TEST_DIR/bin/timed_run.py $TEST_DOWNLOAD_PAGE_TIMEOUT "test download" \
+        $EXECUTABLE_DRIVER \
 	"$executable" -P "$profilename" -spider -start -quit \
 	-uri "$allurl" -timeout=$TEST_DOWNLOAD_PAGE_TIMEOUT \
 	-hook "http://$TEST_HTTP/tests/mozilla.org/download-page/collect-urls-userhook.js" | \
 	grep 'href: ' | sed 's/^href: //' > $urlfile
 elif [[ "$test" == "ftp" ]]; then
     $TEST_DIR/bin/timed_run.py $TEST_DOWNLOAD_PAGE_TIMEOUT "test download" \
+        $EXECUTABLE_DRIVER \
 	"$executable" -P "$profilename" -spider -start -quit \
 	-uri "$allurl" -timeout=$TEST_DOWNLOAD_PAGE_TIMEOUT \
 	-hook "http://$TEST_HTTP/tests/mozilla.org/download-page/userhook-ftp.js" | \
 	grep 'href: ' | sed 's/^href: //' > $urlfile
 fi
 
 cat $urlfile | while read url; do
 
@@ -177,16 +179,17 @@ cat $urlfile | while read url; do
 	-x $downloadexecutablepath \
 	-N $downloadprofilename; then
 	continue
     fi
 
     downloadexecutable=`get_executable $downloadproduct $downloadbranch $downloadexecutablepath`
 
     $TEST_DIR/bin/timed_run.py $TEST_DOWNLOAD_BUILD_TIMEOUT "..." \
+        $EXECUTABLE_DRIVER \
 	"$downloadexecutable" \
 	-spider -P $downloadprofilename \
 	-uri "http://$TEST_HTTP/bin/buildinfo.html" \
 	-hook "http://$TEST_HTTP/tests/mozilla.org/download-page/userhook.js" \
 	-start -quit
 
     if ! uninstall-build.sh  -p "$downloadproduct" -b "$downloadbranch" \
 	-x $downloadexecutablepath; then