261 lines
		
	
	
		
			8.9 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			261 lines
		
	
	
		
			8.9 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
| #!/usr/bin/bash
 | |
| 
 | |
| 
 | |
| function run_tests_wayland {
 | |
|   # usage: run-tests-wayland [test flavour]
 | |
| 
 | |
|   set -x
 | |
| 
 | |
|   RUN_XPCSHELL_TEST=1
 | |
|   RUN_REFTEST=1
 | |
|   RUN_MOCHITEST=1
 | |
|   RUN_CRASHTEST=1
 | |
| 
 | |
|   while (( "$#" )); do
 | |
|     SELECTED_TEST=$1
 | |
|     if [ "$SELECTED_TEST" = "xpcshell" ] ; then
 | |
|       RUN_XPCSHELL_TEST=1
 | |
|     elif [ "$SELECTED_TEST" = "reftest" ] ; then
 | |
|       RUN_REFTEST=1
 | |
|     elif [ "$SELECTED_TEST" = "mochitest" ] ; then
 | |
|       RUN_MOCHITEST=1
 | |
|     elif [ "$SELECTED_TEST" = "crashtest" ] ; then
 | |
|       RUN_CRASHTEST=1
 | |
|     fi
 | |
|     shift
 | |
|   done
 | |
| 
 | |
|   export MACH_USE_SYSTEM_PYTHON=1
 | |
|   export MOZ_NODE_PATH=/usr/bin/node
 | |
| 
 | |
|   MOCHITEST_PARAMS="--timeout 1 --chunk-by-dir 4"
 | |
|   TEST_DIR="test_results"
 | |
|   mkdir $TEST_DIR
 | |
| 
 | |
|   env | grep "DISPLAY"
 | |
| 
 | |
|   # Fix for system nss
 | |
|   ln -s /usr/bin/certutil objdir/dist/bin/certutil
 | |
|   ln -s /usr/bin/pk12util objdir/dist/bin/pk12util
 | |
| 
 | |
|   NCPUS="`/usr/bin/getconf _NPROCESSORS_ONLN`"
 | |
| 
 | |
|   export MOZ_ENABLE_WAYLAND=1
 | |
| 
 | |
|   if [ $RUN_XPCSHELL_TEST -ne 0 ] ; then
 | |
|   #  ./mach xpcshell-test 2>&1 | cat - | tee $TEST_DIR/xpcshell
 | |
|     ./mach xpcshell-test --enable-webrender 2>&1 | cat - | tee $TEST_DIR/xpcshell-wr
 | |
|     sleep 60
 | |
|   fi
 | |
| 
 | |
|   # Basic render testing
 | |
|   export TEST_PARAMS="--setpref reftest.ignoreWindowSize=true --setpref widget.wayland.test-workarounds.enabled=true"
 | |
|   #export TEST_FLAVOUR=""
 | |
|   #if [ $RUN_REFTEST -ne 0 ] ; then
 | |
|   #  ./mach reftest --marionette localhost:$(($(($RANDOM))+2000)) $TEST_PARAMS 2>&1 | tee $TEST_DIR/reftest$TEST_FLAVOUR
 | |
|   #fi
 | |
|   #if [ $RUN_CRASHTEST -ne 0 ] ; then
 | |
|   #  ./mach crashtest --marionette localhost:$(($(($RANDOM))+2000)) $TEST_PARAMS 2>&1 | tee $TEST_DIR/crashtest$TEST_FLAVOUR
 | |
|   #fi
 | |
|   #if [ $RUN_MOCHITEST -ne 0 ] ; then
 | |
|   #  ./mach mochitest --marionette localhost:$(($(($RANDOM))+2000)) $MOCHITEST_PARAMS $TEST_PARAMS 2>&1 | tee $TEST_DIR/mochitest$TEST_FLAVOUR
 | |
|   #fi
 | |
| 
 | |
|   # WebRender testing
 | |
|   export TEST_PARAMS="--enable-webrender $TEST_PARAMS"
 | |
|   export TEST_FLAVOUR="-wr"
 | |
|   # Use dom/base/test or dom/base/test/chrome for short version
 | |
|   export MOCHITEST_DIR='dom'
 | |
|   if [ $RUN_REFTEST -ne 0 ] ; then
 | |
|     ./mach reftest $TEST_PARAMS 2>&1 | tee $TEST_DIR/reftest$TEST_FLAVOUR
 | |
|     sleep 60
 | |
|   fi
 | |
|   if [ $RUN_CRASHTEST -ne 0 ] ; then
 | |
|     ./mach crashtest $TEST_PARAMS 2>&1 | tee $TEST_DIR/crashtest$TEST_FLAVOUR
 | |
|     sleep 60
 | |
|   fi
 | |
|   if [ $RUN_MOCHITEST -ne 0 ] ; then
 | |
|     ./mach mochitest $MOCHITEST_DIR $MOCHITEST_PARAMS $TEST_PARAMS 2>&1 | tee $TEST_DIR/mochitest$TEST_FLAVOUR
 | |
|     sleep 60
 | |
|   fi
 | |
| 
 | |
|   rm -f  objdir/dist/bin/certutil
 | |
|   rm -f  objdir/dist/bin/pk12util
 | |
| }
 | |
| 
 | |
| function run_tests_x11() {
 | |
|   set -x
 | |
| 
 | |
|   export MACH_USE_SYSTEM_PYTHON=1
 | |
|   export MOZ_NODE_PATH=/usr/bin/node
 | |
|   export X_PARAMS="-screen 0 1600x1200x24"
 | |
|   export MOCHITEST_PARAMS="--timeout 1 --chunk-by-dir 4"
 | |
|   export TEST_DIR="test_results"
 | |
| 
 | |
|   # Fix for system nss
 | |
|   ln -s /usr/bin/certutil objdir/dist/bin/certutil
 | |
|   ln -s /usr/bin/pk12util objdir/dist/bin/pk12util
 | |
| 
 | |
|   NCPUS="`/usr/bin/getconf _NPROCESSORS_ONLN`"
 | |
| 
 | |
|   # Basic render testing
 | |
|   export TEST_PARAMS=""
 | |
|   export TEST_FLAVOUR=""
 | |
|   #xvfb-run -s "$X_PARAMS" -n 91 ./mach xpcshell-test --sequential $TEST_PARAMS 2>&1 | cat - | tee $TEST_DIR/xpcshell
 | |
|   #xvfb-run -s "$X_PARAMS" -n 92 ./mach reftest --marionette localhost:$(($(($RANDOM))+2000)) $TEST_PARAMS 2>&1 | tee $TEST_DIR/reftest$TEST_FLAVOUR
 | |
|   #xvfb-run -s "$X_PARAMS" -n 93 ./mach crashtest --marionette localhost:$(($(($RANDOM))+2000)) $TEST_PARAMS 2>&1 | tee $TEST_DIR/crashtest$TEST_FLAVOUR
 | |
|   #xvfb-run -s "$X_PARAMS" -n 94 ./mach mochitest --marionette localhost:$(($(($RANDOM))+2000)) $MOCHITEST_PARAMS $TEST_PARAMS 2>&1 | tee $TEST_DIR/mochitest$TEST_FLAVOUR
 | |
| 
 | |
|   # WebRender testing
 | |
|   export TEST_PARAMS="--enable-webrender $TEST_PARAMS"
 | |
|   export TEST_FLAVOUR="-wr"
 | |
|   #xvfb-run -s "$X_PARAMS" -n 95 ./mach xpcshell-test --sequential $TEST_PARAMS 2>&1 | cat - | tee $TEST_DIR/xpcshell-wr
 | |
|   #sleep 60
 | |
|   #xvfb-run -s "$X_PARAMS" -n 96 ./mach reftest $TEST_PARAMS 2>&1 | tee $TEST_DIR/reftest$TEST_FLAVOUR
 | |
|   #sleep 60
 | |
|   #xvfb-run -s "$X_PARAMS" -n 97 ./mach crashtest $TEST_PARAMS 2>&1 | tee $TEST_DIR/crashtest$TEST_FLAVOUR
 | |
|   #sleep 60
 | |
|   #export DISPLAY=:0
 | |
|   #./mach mochitest dom/base/test/ $MOCHITEST_PARAMS $TEST_PARAMS 2>&1 | tee $TEST_DIR/mochitest$TEST_FLAVOUR
 | |
|   export DISPLAY=:98
 | |
|   xvfb-run -s "$X_PARAMS" -n 98 ./mach mochitest dom/base/test/ $MOCHITEST_PARAMS $TEST_PARAMS 2>&1 | tee $TEST_DIR/mochitest$TEST_FLAVOUR
 | |
| 
 | |
|   rm -f  objdir/dist/bin/certutil
 | |
|   rm -f  objdir/dist/bin/pk12util
 | |
| }
 | |
| 
 | |
| function run_wayland_compositor() {
 | |
|   # Run wayland compositor and set WAYLAND_DISPLAY env variable
 | |
|   set -x
 | |
| 
 | |
|   echo export DESKTOP_SESSION=gnome > $HOME/.xsessionrc
 | |
|   echo export XDG_CURRENT_DESKTOP=GNOME > $HOME/.xsessionrc
 | |
|   echo export XDG_SESSION_TYPE=wayland >> $HOME/.xsessionrc
 | |
| 
 | |
|   # Turn off the screen saver and screen locking
 | |
|   gsettings set org.gnome.desktop.screensaver idle-activation-enabled false
 | |
|   gsettings set org.gnome.desktop.screensaver lock-enabled false
 | |
|   gsettings set org.gnome.desktop.screensaver lock-delay 3600
 | |
| 
 | |
|   # Disable the screen saver
 | |
|   # This starts the gnome-keyring-daemon with an unlocked login keyring. libsecret uses this to
 | |
|   # store secrets. Firefox uses libsecret to store a key that protects sensitive information like
 | |
|   # credit card numbers.
 | |
|   if test -z "$DBUS_SESSION_BUS_ADDRESS" ; then
 | |
|       # if not found, launch a new one
 | |
|       eval `dbus-launch --sh-syntax`
 | |
|   fi
 | |
|   eval `echo '' | /usr/bin/gnome-keyring-daemon -r -d --unlock --components=secrets`
 | |
| 
 | |
|   if [ -z "$XDG_RUNTIME_DIR" ]; then
 | |
|     export XDG_RUNTIME_DIR=$HOME
 | |
|   fi
 | |
| 
 | |
|   . xvfb-run -s "-screen 0 1600x1200x24" -n 80 mutter --display=:80 --wayland --nested &
 | |
|   export DISPLAY=:80
 | |
| 
 | |
|   if [ -z "$WAYLAND_DISPLAY" ] ; then
 | |
|     export WAYLAND_DISPLAY=wayland-0
 | |
|   else
 | |
|     export WAYLAND_DISPLAY=wayland-1
 | |
|   fi
 | |
|   sleep 10
 | |
|   retry_count=0
 | |
|   max_retries=5
 | |
|   until [ $retry_count -gt $max_retries ]; do
 | |
|     if [ -S "$XDG_RUNTIME_DIR/$WAYLAND_DISPLAY" ]; then
 | |
|       retry_count=$(($max_retries + 1))
 | |
|     else
 | |
|       retry_count=$(($retry_count + 1))
 | |
|       echo "Waiting for Mutter, retry: $retry_count"
 | |
|       sleep 2
 | |
|     fi
 | |
|   done
 | |
| 
 | |
|   env | grep "DISPLAY"
 | |
| }
 | |
| 
 | |
| function print_error_reftest() {
 | |
|   # Print reftest failures and compose them to html
 | |
| 
 | |
|   TEST_DIR="$1"
 | |
|   TEST_FLAVOUR="$2"
 | |
|   OUTPUT_FILE="failures-reftest$TEST_FLAVOUR.html"
 | |
| 
 | |
|   grep --text -e "REFTEST TEST-UNEXPECTED-PASS" -e "REFTEST TEST-UNEXPECTED-FAIL" -e "IMAGE 1 (TEST):" -e "IMAGE 2 (REFERENCE):" $TEST_DIR/reftest$TEST_FLAVOUR 2>&1 > $OUTPUT_FILE
 | |
|   sed -i '/REFTEST   IMAGE 1/a ">' $OUTPUT_FILE
 | |
|   sed -i '/REFTEST   IMAGE 2/a "><BR><BR>' $OUTPUT_FILE
 | |
|   sed -i '/REFTEST TEST/a <BR>' $OUTPUT_FILE
 | |
|   sed -i -e 's/^REFTEST   IMAGE 1 (TEST): /<img border=2 src="/' $OUTPUT_FILE
 | |
|   sed -i -e 's/^REFTEST   IMAGE 2 (REFERENCE): /<img border=2 src="/' $OUTPUT_FILE
 | |
| }
 | |
| 
 | |
| function print_errors() {
 | |
|   #!/usr/bin/bash
 | |
|   # Print failed tests
 | |
| 
 | |
|   TEST_DIR=$1
 | |
|   TEST_FLAVOUR=$2
 | |
| 
 | |
|   grep "TEST-UNEXPECTED-FAIL" $TEST_DIR/mochitest$TEST_FLAVOUR 2>&1 > failures-mochitest$TEST_FLAVOUR.txt
 | |
|   grep --text -e "  FAIL " -e "  TIMEOUT " $TEST_DIR/xpcshell$TEST_FLAVOUR 2>&1 > failures-xpcshell$TEST_FLAVOUR.txt
 | |
|   grep --text -e "REFTEST TEST-UNEXPECTED-PASS" -e "REFTEST TEST-UNEXPECTED-FAIL" $TEST_DIR/reftest$TEST_FLAVOUR 2>&1 > failures-reftest$TEST_FLAVOUR.txt
 | |
| }
 | |
| 
 | |
| function print_failures() {
 | |
|   #!/usr/bin/bash
 | |
|   # Analyze and print test failures
 | |
| 
 | |
|   export TEST_DIR="test_results"
 | |
| 
 | |
|   #./print-errors $TEST_DIR ""
 | |
|   print_errors $TEST_DIR "-wr"
 | |
|   #./print-error-reftest $TEST_DIR ""
 | |
|   print_error_reftest $TEST_DIR "-wr"
 | |
| }
 | |
| 
 | |
| function psummary() {
 | |
|   #!/usr/bin/bash
 | |
|   # Analyze and print specialized (basic/webrender) test results
 | |
| 
 | |
|   TEST_DIR=$1
 | |
|   TEST_FLAVOUR=$2
 | |
| 
 | |
|   MPASS=`grep "TEST_END: Test OK" $TEST_DIR/mochitest$TEST_FLAVOUR | wc -l`
 | |
|   MERR=`grep "TEST_END: Test ERROR" $TEST_DIR/mochitest$TEST_FLAVOUR | wc -l`
 | |
|   MUNEX=`grep "TEST-UNEXPECTED-FAIL" $TEST_DIR/mochitest$TEST_FLAVOUR | wc  -l`
 | |
|   echo "Mochitest   PASSED: $MPASS FAILED: $MERR UNEXPECTED-FAILURES: $MUNEX"
 | |
| 
 | |
|   XPCPASS=`grep --text "Expected results:" $TEST_DIR/xpcshell$TEST_FLAVOUR | cut -d ' ' -f 3`
 | |
|   XPCFAIL=`grep --text "Unexpected results:" $TEST_DIR/xpcshell$TEST_FLAVOUR | cut -d ' ' -f 3`
 | |
|   echo "XPCShell:   PASSED: $XPCPASS FAILED: $XPCFAIL"
 | |
| 
 | |
|   CRPASS=`grep "REFTEST INFO | Successful:" $TEST_DIR/crashtest$TEST_FLAVOUR | cut -d ' ' -f 5`
 | |
|   CRFAIL=`grep "^REFTEST INFO | Unexpected:" $TEST_DIR/crashtest$TEST_FLAVOUR | cut -d ' ' -f 5`
 | |
|   echo "Crashtest:  PASSED: $CRPASS FAILED: $CRFAIL"
 | |
| 
 | |
|   RFPASS=`grep --text "REFTEST INFO | Successful:" $TEST_DIR/reftest$TEST_FLAVOUR | cut -d ' ' -f 5`
 | |
|   RFUN=`grep --text "^REFTEST INFO | Unexpected:" $TEST_DIR/reftest$TEST_FLAVOUR | cut -d ' ' -f 5`
 | |
|   RFKNOWN=`grep --text "REFTEST INFO | Known problems:" $TEST_DIR/reftest$TEST_FLAVOUR | cut -d ' ' -f 6`
 | |
|   echo "Reftest:    PASSED: $RFPASS FAILED: $RFUN Known issues: $RFKNOWN"
 | |
| }
 | |
| 
 | |
| function print_results() {
 | |
|   #!/usr/bin/bash
 | |
|   # Analyze and print general test results
 | |
| 
 | |
|   export TEST_DIR="test_results"
 | |
| 
 | |
|   echo "Test results"
 | |
|   #echo "Basic compositor"
 | |
|   #./psummary $TEST_DIR ""
 | |
|   echo "WebRender"
 | |
|   psummary $TEST_DIR "-wr"
 | |
| }
 | |
| 
 | |
| set -x
 | |
| first=$1
 | |
| shift
 | |
| $first $*
 | |
| 
 |