diff options
Diffstat (limited to 'taskcluster/scripts/tester/test-b2g.sh')
-rw-r--r-- | taskcluster/scripts/tester/test-b2g.sh | 118 |
1 files changed, 118 insertions, 0 deletions
diff --git a/taskcluster/scripts/tester/test-b2g.sh b/taskcluster/scripts/tester/test-b2g.sh new file mode 100644 index 000000000..43a54f93a --- /dev/null +++ b/taskcluster/scripts/tester/test-b2g.sh @@ -0,0 +1,118 @@ +#! /bin/bash -xe + +set -x -e + +echo "running as" $(id) + +#### +# Taskcluster friendly wrapper for performing fx desktop tests via mozharness. +#### + +# Inputs, with defaults + +: MOZHARNESS_URL ${MOZHARNESS_URL} +: MOZHARNESS_SCRIPT ${MOZHARNESS_SCRIPT} +: MOZHARNESS_CONFIG ${MOZHARNESS_CONFIG} +: NEED_XVFB ${NEED_XVFB:=true} +: NEED_PULSEAUDIO ${NEED_PULSEAUDIO:=false} +: NEED_PULL_GAIA ${NEED_PULL_GAIA:=false} +: SKIP_MOZHARNESS_RUN ${SKIP_MOZHARNESS_RUN:=false} +: WORKSPACE ${WORKSPACE:=/home/worker/workspace} +: mozharness args "${@}" + +set -v +cd $WORKSPACE + +# test required parameters are supplied +if [[ -z ${MOZHARNESS_URL} ]]; then exit 1; fi +if [[ -z ${MOZHARNESS_SCRIPT} ]]; then exit 1; fi +if [[ -z ${MOZHARNESS_CONFIG} ]]; then exit 1; fi + +mkdir -p ~/artifacts/public + +cleanup() { + if [ -n "$xvfb_pid" ]; then + kill $xvfb_pid || true + fi +} +trap cleanup EXIT INT + +# Unzip the mozharness ZIP file created by the build task +curl --fail -o mozharness.zip --retry 10 -L $MOZHARNESS_URL +rm -rf mozharness +unzip -q mozharness.zip +rm mozharness.zip + +if ! [ -d mozharness ]; then + echo "mozharness zip did not contain mozharness/" + exit 1 +fi + +# start up the pulseaudio daemon. Note that it's important this occur +# before the Xvfb startup. +if $NEED_PULSEAUDIO; then + pulseaudio --fail --daemonize --start + pactl load-module module-null-sink +fi + +# run XVfb in the background, if necessary +if $NEED_XVFB; then + Xvfb :0 -nolisten tcp -screen 0 1600x1200x24 \ + > ~/artifacts/public/xvfb.log 2>&1 & + export DISPLAY=:0 + xvfb_pid=$! + # Only error code 255 matters, because it signifies that no + # display could be opened. As long as we can open the display + # tests should work. We'll retry a few times with a sleep before + # failing. + retry_count=0 + max_retries=2 + xvfb_test=0 + until [ $retry_count -gt $max_retries ]; do + xvinfo || xvfb_test=$? + if [ $xvfb_test != 255 ]; then + retry_count=$(($max_retries + 1)) + else + retry_count=$(($retry_count + 1)) + echo "Failed to start Xvfb, retry: $retry_count" + sleep 2 + fi done + if [ $xvfb_test == 255 ]; then exit 255; fi +fi + +gaia_cmds="" +if $NEED_PULL_GAIA; then + # test required parameters are supplied + if [[ -z ${GAIA_BASE_REPOSITORY} ]]; then exit 1; fi + if [[ -z ${GAIA_HEAD_REPOSITORY} ]]; then exit 1; fi + if [[ -z ${GAIA_REV} ]]; then exit 1; fi + if [[ -z ${GAIA_REF} ]]; then exit 1; fi + + tc-vcs checkout \ + ${WORKSPACE}/gaia \ + ${GAIA_BASE_REPOSITORY} \ + ${GAIA_HEAD_REPOSITORY} \ + ${GAIA_REV} \ + ${GAIA_REF} + + gaia_cmds="--gaia-dir=${WORKSPACE}" +fi + +# support multiple, space delimited, config files +config_cmds="" +for cfg in $MOZHARNESS_CONFIG; do + config_cmds="${config_cmds} --config-file ${cfg}" +done + +if [ ${SKIP_MOZHARNESS_RUN} == true ]; then + # Skipping Mozharness is to allow the developer start the window manager + # properly and letting them change the execution of Mozharness without + # exiting the container + echo "We skipped running Mozharness." + echo "Make sure you export DISPLAY=:0 before calling Mozharness." + echo "Don't forget to call it with 'sudo -E -u worker'." +else + # run the given mozharness script and configs, but pass the rest of the + # arguments in from our own invocation + python2.7 $WORKSPACE/${MOZHARNESS_SCRIPT} ${config_cmds} ${gaia_cmds} "${@}" +fi |