| OLD | NEW |
| 1 #!/bin/bash -e | 1 #!/bin/bash -e |
| 2 # -*- Mode: Shell-script; tab-width: 4; indent-tabs-mode: nil; -*- | 2 # -*- Mode: Shell-script; tab-width: 4; indent-tabs-mode: nil; -*- |
| 3 | 3 |
| 4 # ***** BEGIN LICENSE BLOCK ***** | 4 # ***** BEGIN LICENSE BLOCK ***** |
| 5 # Version: MPL 1.1/GPL 2.0/LGPL 2.1 | 5 # Version: MPL 1.1/GPL 2.0/LGPL 2.1 |
| 6 # | 6 # |
| 7 # The contents of this file are subject to the Mozilla Public License Version | 7 # The contents of this file are subject to the Mozilla Public License Version |
| 8 # 1.1 (the "License"); you may not use this file except in compliance with | 8 # 1.1 (the "License"); you may not use this file except in compliance with |
| 9 # the License. You may obtain a copy of the License at | 9 # the License. You may obtain a copy of the License at |
| 10 # http://www.mozilla.org/MPL/ | 10 # http://www.mozilla.org/MPL/ |
| (...skipping 23 matching lines...) Expand all Loading... |
| 34 # and other provisions required by the GPL or the LGPL. If you do not delete | 34 # and other provisions required by the GPL or the LGPL. If you do not delete |
| 35 # the provisions above, a recipient may use your version of this file under | 35 # the provisions above, a recipient may use your version of this file under |
| 36 # the terms of any one of the MPL, the GPL or the LGPL. | 36 # the terms of any one of the MPL, the GPL or the LGPL. |
| 37 # | 37 # |
| 38 # ***** END LICENSE BLOCK ***** | 38 # ***** END LICENSE BLOCK ***** |
| 39 | 39 |
| 40 if [[ -z "$TEST_DIR" ]]; then | 40 if [[ -z "$TEST_DIR" ]]; then |
| 41 cat <<EOF | 41 cat <<EOF |
| 42 `basename $0`: error | 42 `basename $0`: error |
| 43 | 43 |
| 44 TEST_DIR, the location of the Sisyphus framework, | 44 TEST_DIR, the location of the Sisyphus framework, |
| 45 is required to be set prior to calling this script. | 45 is required to be set prior to calling this script. |
| 46 EOF | 46 EOF |
| 47 exit 2 | 47 exit 2 |
| 48 fi | 48 fi |
| 49 | 49 |
| 50 if [[ ! -e $TEST_DIR/bin/library.sh ]]; then | 50 if [[ ! -e $TEST_DIR/bin/library.sh ]]; then |
| 51 echo "TEST_DIR=$TEST_DIR" | 51 echo "TEST_DIR=$TEST_DIR" |
| 52 echo "" | 52 echo "" |
| 53 echo "This script requires the Sisyphus testing framework. Please " | 53 echo "This script requires the Sisyphus testing framework. Please " |
| 54 echo "cvs check out the Sisyphys framework from mozilla/testing/sisyphus" | 54 echo "cvs check out the Sisyphys framework from mozilla/testing/sisyphus" |
| 55 echo "and set the environment variable TEST_DIR to the directory where it" | 55 echo "and set the environment variable TEST_DIR to the directory where it" |
| 56 echo "located." | 56 echo "located." |
| 57 echo "" | 57 echo "" |
| 58 | 58 |
| 59 exit 2 | 59 exit 2 |
| 60 fi | 60 fi |
| 61 | 61 |
| 62 source $TEST_DIR/bin/library.sh | 62 source $TEST_DIR/bin/library.sh |
| 63 | 63 |
| 64 TEST_JSDIR=${TEST_JSDIR:-$TEST_DIR/tests/mozilla.org/js} | 64 TEST_JSDIR=${TEST_JSDIR:-$TEST_DIR/tests/mozilla.org/js} |
| 65 | 65 |
| 66 usage() | 66 usage() |
| 67 { | 67 { |
| 68 cat <<EOF | 68 cat <<EOF |
| 69 usage: runtests.sh -p products -b branches -e extra\\ | 69 usage: runtests.sh -p products -b branches -e extra\\ |
| 70 -T buildtypes -B buildcommands \\ | 70 -T buildtypes -B buildcommands \\ |
| 71 [-v] [-S] [-X excludetests] [-I includetests] [-c] [-t] \\ | 71 [-v] [-S] [-X excludetests] [-I includetests] [-c] [-t] \\ |
| 72 [-Z n] | 72 [-J javascriptoptions] |
| 73 | 73 |
| 74 variable description | 74 variable description |
| 75 =============== ============================================================ | 75 =============== ============================================================ |
| 76 -p products space separated list of js, firefox | 76 -p products space separated list of js, firefox, fennec |
| 77 -b branches space separated list of branches 1.8.0, 1.8.1, 1.9.0, 1.9.1 | 77 -b branches space separated list of supported branches. see library.sh |
| 78 -e extra optional. extra qualifier to pick build tree and mozconfig. | 78 -e extra optional. extra qualifier to pick build tree and mozconfig. |
| 79 -T buildtypes space separated list of build types opt debug | 79 -T buildtypes space separated list of build types opt debug |
| 80 -B buildcommands optional space separated list of build commands | 80 -B buildcommands optional space separated list of build commands |
| 81 clean, checkout, build. If not specified, defaults to | 81 clean, checkout, build. If not specified, defaults to |
| 82 'clean checkout build'. | 82 'clean checkout build'. |
| 83 If you wish to skip any build steps, simply specify a value | 83 If you wish to skip any build steps, simply specify a value |
| 84 not containing any of the build commands, e.g. 'none'. | 84 not containing any of the build commands, e.g. 'none'. |
| 85 -v optional. verbose - copies log file output to stdout. | 85 -v optional. verbose - copies log file output to stdout. |
| 86 -S optional. summary - output tailered for use with | 86 -S optional. summary - output tailered for use with |
| 87 Buildbot|Tinderbox | 87 Buildbot|Tinderbox |
| 88 -X excludetests optional. By default the test will exclude the | 88 -X excludetests optional. By default the test will exclude the |
| 89 tests listed in spidermonkey-n-\$branch.tests, | 89 tests listed in spidermonkey-n-\$branch.tests, |
| 90 performance-\$branch.tests. excludetests is a list of either | 90 performance-\$branch.tests. excludetests is a list of either |
| 91 individual tests, manifest files or sub-directories which | 91 individual tests, manifest files or sub-directories which |
| 92 will override the default exclusion list. | 92 will override the default exclusion list. |
| 93 -I includetests optional. By default the test will include the | 93 -I includetests optional. By default the test will include the |
| 94 JavaScript tests appropriate for the branch. includetests is
a | 94 JavaScript tests appropriate for the branch. includetests is
a |
| 95 list of either individual tests, manifest files or | 95 list of either individual tests, manifest files or |
| 96 sub-directories which will override the default inclusion | 96 sub-directories which will override the default inclusion |
| 97 list. | 97 list. |
| 98 -c optional. By default the test will exclude tests | 98 -c optional. By default the test will exclude tests |
| 99 which crash on this branch, test type, build type and | 99 which crash on this branch, test type, build type and |
| 100 operating system. -c will include tests which crash. | 100 operating system. -c will include tests which crash. |
| 101 Typically this should only be used in combination with -R. | 101 Typically this should only be used in combination with -R. |
| 102 This has no effect on shell based tests which execute crash | 102 This has no effect on shell based tests which execute crash |
| 103 tests regardless. | 103 tests regardless. |
| 104 -t optional. By default the test will exclude tests | 104 -t optional. By default the test will exclude tests |
| 105 which time out on this branch, test type, build type and | 105 which time out on this branch, test type, build type and |
| 106 operating system. -t will include tests which timeout. | 106 operating system. -t will include tests which timeout. |
| 107 -J jsoptions optional. Set JavaScript options: | 107 -J jsoptions optional. Set JavaScript options: |
| 108 -Z n Set gczeal to n. Currently, only valid for | 108 -Z n Set gczeal to n. Currently, only valid for |
| 109 debug builds of Gecko 1.8.1.15, 1.9.0 and later. | 109 debug builds of Gecko 1.8.1.15, 1.9.0 and later. |
| 110 -z optional. use split objects in the shell. | 110 -z optional. use split objects in the shell. |
| 111 -j optional. use JIT in the shell. Only available on 1.9.1 a
nd later | 111 -j optional. use JIT in the shell. Only available on 1.9.1 a
nd later |
| 112 | 112 |
| 113 if an argument contains more than one value, it must be quoted. | 113 if an argument contains more than one value, it must be quoted. |
| 114 EOF | 114 EOF |
| 115 exit 2 | 115 exit 2 |
| 116 } | 116 } |
| 117 | 117 |
| 118 verbose=0 | 118 verbose=0 |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 157 fi | 157 fi |
| 158 ;; | 158 ;; |
| 159 esac | 159 esac |
| 160 | 160 |
| 161 testlogfilelist=`mktemp /tmp/TESTLOGFILES.XXXX` | 161 testlogfilelist=`mktemp /tmp/TESTLOGFILES.XXXX` |
| 162 trap "_exit; rm -f $testlogfilelist" EXIT | 162 trap "_exit; rm -f $testlogfilelist" EXIT |
| 163 | 163 |
| 164 export testlogfiles | 164 export testlogfiles |
| 165 export testlogfile | 165 export testlogfile |
| 166 | 166 |
| 167 # because without pipefail, the pipe will not return a non-zero | 167 # because without pipefail, the pipe will not return a non-zero |
| 168 # exit code, we must pipe stderr from tester.sh to stdout and then | 168 # exit code, we must pipe stderr from tester.sh to stdout and then |
| 169 # look into the testlogfilelist for the error | 169 # look into the testlogfilelist for the error |
| 170 | 170 |
| 171 branchesextra=`combo.sh -d - "$branches" "$extra"` | 171 branchesextra=`combo.sh -d - "$branches" "$extra"` |
| 172 | 172 |
| 173 # can't test tester.sh's exit code to see if there was | 173 # can't test tester.sh's exit code to see if there was |
| 174 # an error since we are piping it and can't count on pipefail | 174 # an error since we are piping it and can't count on pipefail |
| 175 tester.sh -t "$TEST_JSDIR/test.sh" $verboseflag "$products" "$branchesextra" "$b
uildtypes" 2>&1 | tee -a $testlogfilelist | 175 tester.sh -t "$TEST_JSDIR/test.sh" $verboseflag "$products" "$branchesextra" "$b
uildtypes" 2>&1 | tee -a $testlogfilelist |
| 176 testlogfiles="`grep '^log:' $testlogfilelist|sed 's|^log: ||'`" | 176 testlogfiles="`grep '^log:' $testlogfilelist|sed 's|^log: ||'`" |
| 177 | 177 |
| 178 fatalerrors=`grep 'FATAL ERROR' $testlogfiles | cat` | 178 fatalerrors=`grep 'FATAL ERROR' $testlogfiles | cat` |
| 179 if [[ -n "$fatalerrors" ]]; then | 179 if [[ -n "$fatalerrors" ]]; then |
| 180 testlogarray=( $testlogfiles ) | 180 testlogarray=( $testlogfiles ) |
| 181 let itestlog=${#testlogarray[*]}-1 | 181 let itestlog=${#testlogarray[*]}-1 |
| 182 error "`tail -n 20 ${testlogarray[$itestlog]}`" $LINENO | 182 error "`tail -n 20 ${testlogarray[$itestlog]}`" $LINENO |
| 183 fi | 183 fi |
| 184 | 184 |
| 185 for testlogfile in $testlogfiles; do | 185 for testlogfile in $testlogfiles; do |
| 186 | 186 |
| 187 if [[ -n "$DEBUG" ]]; then | 187 if [[ -n "$DEBUG" ]]; then |
| 188 dumpvars testlogfile | 188 dumpvars testlogfile |
| 189 fi | 189 fi |
| 190 | 190 |
| 191 case "$testlogfile" in | 191 case "$testlogfile" in |
| 192 *,js,*) testtype=shell;; | 192 *,js,*) testtype=shell;; |
| 193 *,firefox,*) testtype=browser;; | 193 *,firefox,*) testtype=browser;; |
| 194 *,thunderbird,*) testtype=browser;; |
| 195 *,fennec,*) testtype=browser;; |
| 194 *) error "unknown testtype in logfile $testlogfile" $LINENO;; | 196 *) error "unknown testtype in logfile $testlogfile" $LINENO;; |
| 195 esac | 197 esac |
| 196 | 198 |
| 197 case "$testlogfile" in | 199 case "$testlogfile" in |
| 198 *,opt,*) buildtype=opt;; | 200 *,opt,*) buildtype=opt;; |
| 199 *,debug,*) buildtype=debug;; | 201 *,debug,*) buildtype=debug;; |
| 200 *,nightly,*) buildtype=opt;; | 202 *,nightly*) buildtype=opt;; |
| 201 *) error "unknown buildtype in logfile $testlogfile" $LINENO;; | 203 *) error "unknown buildtype in logfile $testlogfile" $LINENO;; |
| 202 esac | 204 esac |
| 203 | 205 |
| 204 case "$testlogfile" in | 206 branch=`echo $testlogfile | sed 's|.*,\([0-9]\.[0-9]*\.[0-9]*\).*|\1|'` |
| 205 *,1.8.0*) branch=1.8.0;; | |
| 206 *,1.8.1*) branch=1.8.1;; | |
| 207 *,1.9.0*) branch=1.9.0;; | |
| 208 *,1.9.1*) branch=1.9.1;; | |
| 209 *) error "unknown branch in logfile $testlogfile" $LINENO;; | |
| 210 esac | |
| 211 | 207 |
| 212 repo=`grep -m 1 '^environment: TEST_MOZILLA_HG=' $testlogfile | sed 's|.*TES
T_MOZILLA_HG=http://hg.mozilla.org/\(.*\)|\1|'` | 208 |
| 209 repo=`grep -m 1 '^environment: TEST_MOZILLA_HG=' $testlogfile | sed 's|.*TES
T_MOZILLA_HG=http://hg.mozilla.org.*/\([^\/]*\)|\1|'` |
| 213 if [[ -z "$repo" ]]; then | 210 if [[ -z "$repo" ]]; then |
| 214 repo=CVS | 211 repo=CVS |
| 215 fi | 212 fi |
| 216 debug "repo=$repo" | 213 debug "repo=$repo" |
| 217 | 214 |
| 218 outputprefix=$testlogfile | 215 outputprefix=$testlogfile |
| 219 | 216 |
| 220 if [[ -n "$DEBUG" ]]; then | 217 if [[ -n "$DEBUG" ]]; then |
| 221 dumpvars branch buildtype testtype OSID testlogfile TEST_PROCESSORTYPE T
EST_KERNEL outputprefix | 218 dumpvars branch buildtype testtype OSID testlogfile TEST_PROCESSORTYPE T
EST_KERNEL outputprefix |
| 222 fi | 219 fi |
| 223 | 220 |
| 224 if ! $TEST_DIR/tests/mozilla.org/js/known-failures.pl \ | 221 if ! $TEST_DIR/tests/mozilla.org/js/known-failures.pl \ |
| 225 -b $branch \ | 222 -b $branch \ |
| 226 -T $buildtype \ | 223 -T $buildtype \ |
| 227 -R $repo \ | 224 -R $repo \ |
| 228 -t $testtype \ | 225 -t $testtype \ |
| 226 -J "$javascriptoptions" \ |
| 229 -o "$OSID" \ | 227 -o "$OSID" \ |
| 230 -K "$TEST_KERNEL" \ | 228 -K "$TEST_KERNEL" \ |
| 231 -A "$TEST_PROCESSORTYPE" \ | 229 -A "$TEST_PROCESSORTYPE" \ |
| 232 -M "$TEST_MEMORY" \ | 230 -M "$TEST_MEMORY" \ |
| 233 -S "$TEST_CPUSPEED" \ | |
| 234 -z `date +%z` \ | 231 -z `date +%z` \ |
| 235 -l $testlogfile \ | 232 -l $testlogfile \ |
| 236 -r $TEST_JSDIR/failures.txt \ | 233 -r $TEST_JSDIR/failures.txt \ |
| 237 -O $outputprefix; then | 234 -O $outputprefix; then |
| 238 error "known-failures.pl" $LINENO | 235 error "known-failures.pl" $LINENO |
| 239 fi | 236 fi |
| 240 | 237 |
| 241 if [[ -n "$summary" ]]; then | 238 if [[ -n "$summary" ]]; then |
| 242 | 239 |
| 243 # use let to work around mac problem where numbers were | 240 # use let to work around mac problem where numbers were |
| (...skipping 12 matching lines...) Expand all Loading... |
| 256 echo -e "\nPossible Fixes:\n" | 253 echo -e "\nPossible Fixes:\n" |
| 257 cat "${outputprefix}-results-possible-fixes.log" | 254 cat "${outputprefix}-results-possible-fixes.log" |
| 258 echo -e "\nPossible Regressions:\n" | 255 echo -e "\nPossible Regressions:\n" |
| 259 cat "${outputprefix}-results-possible-regressions.log" | 256 cat "${outputprefix}-results-possible-regressions.log" |
| 260 echo -e "\nTinderboxPrint:<div title=\"$testlogfile\">\n" | 257 echo -e "\nTinderboxPrint:<div title=\"$testlogfile\">\n" |
| 261 echo -e "\nTinderboxPrint:js tests<br/>$branch $buildtype $testtype<br/>
$npass/$nfail<br/>F:$nfixes R:$nregressions" | 258 echo -e "\nTinderboxPrint:js tests<br/>$branch $buildtype $testtype<br/>
$npass/$nfail<br/>F:$nfixes R:$nregressions" |
| 262 echo -e "\nTinderboxPrint:</div>\n" | 259 echo -e "\nTinderboxPrint:</div>\n" |
| 263 fi | 260 fi |
| 264 | 261 |
| 265 done | 262 done |
| OLD | NEW |