#!/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 ">

' $OUTPUT_FILE sed -i '/REFTEST TEST/a
' $OUTPUT_FILE sed -i -e 's/^REFTEST IMAGE 1 (TEST): /&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 $*