summaryrefslogtreecommitdiffstats
path: root/testing/docker/desktop-test
diff options
context:
space:
mode:
Diffstat (limited to 'testing/docker/desktop-test')
-rw-r--r--testing/docker/desktop-test/Dockerfile108
-rw-r--r--testing/docker/desktop-test/apport1
-rw-r--r--testing/docker/desktop-test/buildprops.json8
-rw-r--r--testing/docker/desktop-test/deja-dup-monitor.desktop19
-rw-r--r--testing/docker/desktop-test/dot-files/config/pip/pip.conf2
-rw-r--r--testing/docker/desktop-test/dot-files/config/user-dirs.dirs15
-rw-r--r--testing/docker/desktop-test/dot-files/config/user-dirs.locale1
-rw-r--r--testing/docker/desktop-test/dot-files/pulse/default.pa164
-rw-r--r--testing/docker/desktop-test/fonts.conf5
-rw-r--r--testing/docker/desktop-test/jockey-gtk.desktop15
-rw-r--r--testing/docker/desktop-test/motd6
-rw-r--r--testing/docker/desktop-test/release-upgrades17
-rw-r--r--testing/docker/desktop-test/taskcluster-interactive-shell22
-rw-r--r--testing/docker/desktop-test/tc-vcs-config.yml40
-rw-r--r--testing/docker/desktop-test/tester.env4
15 files changed, 427 insertions, 0 deletions
diff --git a/testing/docker/desktop-test/Dockerfile b/testing/docker/desktop-test/Dockerfile
new file mode 100644
index 000000000..995ff34df
--- /dev/null
+++ b/testing/docker/desktop-test/Dockerfile
@@ -0,0 +1,108 @@
+FROM ubuntu:12.04
+MAINTAINER Jonas Finnemann Jensen <jopsen@gmail.com>
+
+RUN useradd -d /home/worker -s /bin/bash -m worker
+WORKDIR /home/worker
+
+# %include testing/docker/recipes/tooltool.py
+ADD topsrcdir/testing/docker/recipes/tooltool.py /setup/tooltool.py
+
+# %include testing/mozharness/external_tools/robustcheckout.py
+ADD topsrcdir/testing/mozharness/external_tools/robustcheckout.py /usr/local/mercurial/robustcheckout.py
+
+# %include testing/docker/recipes/install-mercurial.sh
+ADD topsrcdir/testing/docker/recipes/install-mercurial.sh /tmp/install-mercurial.sh
+
+# Add wrapper scripts for xvfb allowing tasks to easily retry starting up xvfb
+# %include testing/docker/recipes/xvfb.sh
+ADD topsrcdir/testing/docker/recipes/xvfb.sh /home/worker/scripts/xvfb.sh
+
+# Add the tooltool manifest containing the minidump_stackwalk binary.
+# %include testing/config/tooltool-manifests/linux64/releng.manifest
+ADD topsrcdir/testing/config/tooltool-manifests/linux64/releng.manifest /tmp/minidump_stackwalk.manifest
+
+# %include testing/docker/recipes/ubuntu1204-test-system-setup.sh
+ADD topsrcdir/testing/docker/recipes/ubuntu1204-test-system-setup.sh /setup/system-setup.sh
+RUN bash /setup/system-setup.sh
+
+# %include testing/docker/recipes/run-task
+ADD topsrcdir/testing/docker/recipes/run-task /home/worker/bin/run-task
+
+# %include taskcluster/scripts/tester/test-ubuntu.sh
+ADD topsrcdir/taskcluster/scripts/tester/test-ubuntu.sh /home/worker/bin/test-linux.sh
+
+# This will create a host mounted filesystem when the cache is stripped
+# on Try. This cancels out some of the performance losses of aufs. See
+# bug 1291940.
+VOLUME /home/worker/checkouts
+VOLUME /home/worker/workspace
+
+# Set variable normally configured at login, by the shells parent process, these
+# are taken from GNU su manual
+ENV HOME /home/worker
+ENV SHELL /bin/bash
+ENV USER worker
+ENV LOGNAME worker
+ENV HOSTNAME taskcluster-worker
+ENV LANG en_US.UTF-8
+ENV LC_ALL en_US.UTF-8
+
+# Add utilities and configuration
+COPY dot-files/config /home/worker/.config
+COPY dot-files/pulse /home/worker/.pulse
+RUN chmod +x bin/*
+# TODO: remove this when buildbot is gone
+COPY buildprops.json /home/worker/buildprops.json
+COPY tc-vcs-config.yml /etc/taskcluster-vcs.yml
+
+# TODO: remove
+ADD https://raw.githubusercontent.com/taskcluster/buildbot-step/master/buildbot_step /home/worker/bin/buildbot_step
+RUN chmod u+x /home/worker/bin/buildbot_step
+
+# allow the worker user to access video devices
+RUN usermod -a -G video worker
+
+RUN mkdir Documents; mkdir Pictures; mkdir Music; mkdir Videos; mkdir artifacts
+
+# install tc-vcs and tc-npm-cache
+RUN npm install -g taskcluster-vcs@2.3.12 \
+ && npm install -g taskcluster-npm-cache@1.1.14 \
+ && rm -rf ~/.npm
+ENV PATH $PATH:/home/worker/bin
+
+# TODO Re-enable worker when bug 1093833 lands
+#USER worker
+
+# clean up
+RUN rm -Rf .cache && mkdir -p .cache
+
+# Disable Ubuntu update prompt
+# http://askubuntu.com/questions/515161/ubuntu-12-04-disable-release-notification-of-14-04-in-update-manager
+ADD release-upgrades /etc/update-manager/release-upgrades
+
+# Disable tools with on-login popups that interfere with tests; see bug 1240084 and bug 984944.
+ADD jockey-gtk.desktop deja-dup-monitor.desktop /etc/xdg/autostart/
+
+# In test.sh we accept START_VNC to start a vnc daemon.
+# Exposing this port allows it to work.
+EXPOSE 5900
+
+# This helps not forgetting setting DISPLAY=:0 when running
+# tests outside of test.sh
+ENV DISPLAY :0
+
+# Disable apport (Ubuntu app crash reporter) to avoid stealing focus from test runs
+ADD apport /etc/default/apport
+
+# Disable font antialiasing for now to match releng's setup
+ADD fonts.conf /home/worker/.fonts.conf
+
+# Set up first-run experience for interactive mode
+ADD motd /etc/taskcluster-motd
+ADD taskcluster-interactive-shell /bin/taskcluster-interactive-shell
+RUN chmod +x /bin/taskcluster-interactive-shell
+
+RUN chown -R worker:worker /home/worker
+
+# Set a default command useful for debugging
+CMD ["/bin/bash", "--login"]
diff --git a/testing/docker/desktop-test/apport b/testing/docker/desktop-test/apport
new file mode 100644
index 000000000..42e5f8d3a
--- /dev/null
+++ b/testing/docker/desktop-test/apport
@@ -0,0 +1 @@
+enabled=0
diff --git a/testing/docker/desktop-test/buildprops.json b/testing/docker/desktop-test/buildprops.json
new file mode 100644
index 000000000..f0967b026
--- /dev/null
+++ b/testing/docker/desktop-test/buildprops.json
@@ -0,0 +1,8 @@
+{
+ "properties": {
+ "buildername": ""
+ },
+ "sourcestamp": {
+ "changes": []
+ }
+}
diff --git a/testing/docker/desktop-test/deja-dup-monitor.desktop b/testing/docker/desktop-test/deja-dup-monitor.desktop
new file mode 100644
index 000000000..c3b8a4c67
--- /dev/null
+++ b/testing/docker/desktop-test/deja-dup-monitor.desktop
@@ -0,0 +1,19 @@
+[Desktop Entry]
+Version=1.0
+X-Ubuntu-Gettext-Domain=deja-dup
+
+Name=Backup Monitor
+Comment=Schedules backups at regular intervals
+
+Icon=deja-dup
+TryExec=/usr/lib/deja-dup/deja-dup/deja-dup-monitor
+Exec=/usr/lib/deja-dup/deja-dup/deja-dup-monitor
+
+# Bug 984944/1240084 - It prevents taking screenshots
+X-GNOME-Autostart-Delay=false
+
+StartupNotify=false
+NoDisplay=true
+
+Type=Application
+Categories=System;Utility;Archiving;
diff --git a/testing/docker/desktop-test/dot-files/config/pip/pip.conf b/testing/docker/desktop-test/dot-files/config/pip/pip.conf
new file mode 100644
index 000000000..73c2b2a52
--- /dev/null
+++ b/testing/docker/desktop-test/dot-files/config/pip/pip.conf
@@ -0,0 +1,2 @@
+[global]
+disable-pip-version-check = true
diff --git a/testing/docker/desktop-test/dot-files/config/user-dirs.dirs b/testing/docker/desktop-test/dot-files/config/user-dirs.dirs
new file mode 100644
index 000000000..2db2718d2
--- /dev/null
+++ b/testing/docker/desktop-test/dot-files/config/user-dirs.dirs
@@ -0,0 +1,15 @@
+# This file is written by xdg-user-dirs-update
+# If you want to change or add directories, just edit the line you're
+# interested in. All local changes will be retained on the next run
+# Format is XDG_xxx_DIR="$HOME/yyy", where yyy is a shell-escaped
+# homedir-relative path, or XDG_xxx_DIR="/yyy", where /yyy is an
+# absolute path. No other format is supported.
+
+XDG_DESKTOP_DIR="$HOME/Desktop"
+XDG_DOWNLOAD_DIR="$HOME/Downloads"
+XDG_TEMPLATES_DIR="$HOME/Templates"
+XDG_PUBLICSHARE_DIR="$HOME/Public"
+XDG_DOCUMENTS_DIR="$HOME/Documents"
+XDG_MUSIC_DIR="$HOME/Music"
+XDG_PICTURES_DIR="$HOME/Pictures"
+XDG_VIDEOS_DIR="$HOME/Videos"
diff --git a/testing/docker/desktop-test/dot-files/config/user-dirs.locale b/testing/docker/desktop-test/dot-files/config/user-dirs.locale
new file mode 100644
index 000000000..7741b83a3
--- /dev/null
+++ b/testing/docker/desktop-test/dot-files/config/user-dirs.locale
@@ -0,0 +1 @@
+en_US
diff --git a/testing/docker/desktop-test/dot-files/pulse/default.pa b/testing/docker/desktop-test/dot-files/pulse/default.pa
new file mode 100644
index 000000000..39bb44aa7
--- /dev/null
+++ b/testing/docker/desktop-test/dot-files/pulse/default.pa
@@ -0,0 +1,164 @@
+#!/usr/bin/pulseaudio -nF
+#
+# This file is part of PulseAudio.
+#
+# PulseAudio is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Lesser General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# PulseAudio is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public License
+# along with PulseAudio; if not, write to the Free Software Foundation,
+# Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+
+# This startup script is used only if PulseAudio is started per-user
+# (i.e. not in system mode)
+
+.nofail
+
+### Load something into the sample cache
+#load-sample-lazy x11-bell /usr/share/sounds/gtk-events/activate.wav
+#load-sample-lazy pulse-hotplug /usr/share/sounds/startup3.wav
+#load-sample-lazy pulse-coldplug /usr/share/sounds/startup3.wav
+#load-sample-lazy pulse-access /usr/share/sounds/generic.wav
+
+.fail
+
+### Automatically restore the volume of streams and devices
+load-module module-device-restore
+load-module module-stream-restore
+load-module module-card-restore
+
+### Automatically augment property information from .desktop files
+### stored in /usr/share/application
+load-module module-augment-properties
+
+### Load audio drivers statically
+### (it's probably better to not load these drivers manually, but instead
+### use module-udev-detect -- see below -- for doing this automatically)
+#load-module module-alsa-sink
+#load-module module-alsa-source device=hw:1,0
+#load-module module-oss device="/dev/dsp" sink_name=output source_name=input
+#load-module module-oss-mmap device="/dev/dsp" sink_name=output source_name=input
+#load-module module-null-sink
+#load-module module-pipe-sink
+
+### Automatically load driver modules depending on the hardware available
+.ifexists module-udev-detect.so
+load-module module-udev-detect
+.else
+### Use the static hardware detection module (for systems that lack udev/hal support)
+load-module module-detect
+.endif
+
+### Automatically connect sink and source if JACK server is present
+.ifexists module-jackdbus-detect.so
+.nofail
+load-module module-jackdbus-detect
+.fail
+.endif
+
+### Automatically load driver modules for Bluetooth hardware
+# This module causes a pulseaudio startup failure on "gecko-tester"
+#.ifexists module-bluetooth-discover.so
+#load-module module-bluetooth-discover
+#.endif
+
+### Load several protocols
+.ifexists module-esound-protocol-unix.so
+load-module module-esound-protocol-unix
+.endif
+load-module module-native-protocol-unix
+
+### Network access (may be configured with paprefs, so leave this commented
+### here if you plan to use paprefs)
+#load-module module-esound-protocol-tcp
+#load-module module-native-protocol-tcp
+#load-module module-zeroconf-publish
+
+### Load the RTP receiver module (also configured via paprefs, see above)
+#load-module module-rtp-recv
+
+### Load the RTP sender module (also configured via paprefs, see above)
+#load-module module-null-sink sink_name=rtp format=s16be channels=2 rate=44100 sink_properties="device.description='RTP Multicast Sink'"
+#load-module module-rtp-send source=rtp.monitor
+
+### Load additional modules from GConf settings. This can be configured with the paprefs tool.
+### Please keep in mind that the modules configured by paprefs might conflict with manually
+### loaded modules.
+.ifexists module-gconf.so
+.nofail
+load-module module-gconf
+.fail
+.endif
+
+### Automatically restore the default sink/source when changed by the user
+### during runtime
+### NOTE: This should be loaded as early as possible so that subsequent modules
+### that look up the default sink/source get the right value
+load-module module-default-device-restore
+
+### Automatically move streams to the default sink if the sink they are
+### connected to dies, similar for sources
+load-module module-rescue-streams
+
+### Make sure we always have a sink around, even if it is a null sink.
+load-module module-always-sink
+
+### Honour intended role device property
+load-module module-intended-roles
+
+### Automatically suspend sinks/sources that become idle for too long
+load-module module-suspend-on-idle
+
+### If autoexit on idle is enabled we want to make sure we only quit
+### when no local session needs us anymore.
+# This module causes a pulseaudio startup failure on "gecko-tester"
+#.ifexists module-console-kit.so
+#load-module module-console-kit
+#.endif
+
+### Enable positioned event sounds
+load-module module-position-event-sounds
+
+### Cork music streams when a phone stream is active
+#load-module module-cork-music-on-phone
+
+### Modules to allow autoloading of filters (such as echo cancellation)
+### on demand. module-filter-heuristics tries to determine what filters
+### make sense, and module-filter-apply does the heavy-lifting of
+### loading modules and rerouting streams.
+load-module module-filter-heuristics
+load-module module-filter-apply
+
+### Load DBus protocol
+#.ifexists module-dbus-protocol.so
+#load-module module-dbus-protocol
+#.endif
+
+# X11 modules should not be started from default.pa so that one daemon
+# can be shared by multiple sessions.
+
+### Load X11 bell module
+#load-module module-x11-bell sample=bell-windowing-system
+
+### Register ourselves in the X11 session manager
+#load-module module-x11-xsmp
+
+### Publish connection data in the X11 root window
+#.ifexists module-x11-publish.so
+#.nofail
+#load-module module-x11-publish
+#.fail
+#.endif
+
+load-module module-switch-on-port-available
+
+### Make some devices default
+#set-default-sink output
+#set-default-source input
diff --git a/testing/docker/desktop-test/fonts.conf b/testing/docker/desktop-test/fonts.conf
new file mode 100644
index 000000000..9784fcc98
--- /dev/null
+++ b/testing/docker/desktop-test/fonts.conf
@@ -0,0 +1,5 @@
+<match target="font">
+ <edit name="antialias" mode="assign">
+ <bool>false</bool>
+ </edit>
+</match>
diff --git a/testing/docker/desktop-test/jockey-gtk.desktop b/testing/docker/desktop-test/jockey-gtk.desktop
new file mode 100644
index 000000000..e433ba898
--- /dev/null
+++ b/testing/docker/desktop-test/jockey-gtk.desktop
@@ -0,0 +1,15 @@
+[Desktop Entry]
+Name=Check for new hardware drivers
+Comment=Notify about new hardware drivers available for the system
+Icon=jockey
+Exec=sh -c "test -e /var/cache/jockey/check || exec jockey-gtk --check"
+Terminal=false
+Type=Application
+Categories=System;Settings;GTK;HardwareSettings;
+NotShowIn=KDE;
+X-Ubuntu-Gettext-Domain=jockey
+
+# Bug 984944/1240084 - It prevents taking screenshots
+X-GNOME-Autostart-Delay=false
+
+NoDisplay=true
diff --git a/testing/docker/desktop-test/motd b/testing/docker/desktop-test/motd
new file mode 100644
index 000000000..f958393cd
--- /dev/null
+++ b/testing/docker/desktop-test/motd
@@ -0,0 +1,6 @@
+Welcome to your taskcluster interactive shell! The regularly scheduled task
+has been paused to give you a chance to set up your debugging environment.
+
+For your convenience, the exact mozharness command needed for this task can
+be invoked using the 'run-mozharness' command.
+
diff --git a/testing/docker/desktop-test/release-upgrades b/testing/docker/desktop-test/release-upgrades
new file mode 100644
index 000000000..d714f1d82
--- /dev/null
+++ b/testing/docker/desktop-test/release-upgrades
@@ -0,0 +1,17 @@
+# Default behavior for the release upgrader.
+
+[DEFAULT]
+# Default prompting behavior, valid options:
+#
+# never - Never check for a new release.
+# normal - Check to see if a new release is available. If more than one new
+# release is found, the release upgrader will attempt to upgrade to
+# the release that immediately succeeds the currently-running
+# release.
+# lts - Check to see if a new LTS release is available. The upgrader
+# will attempt to upgrade to the first LTS release available after
+# the currently-running one. Note that this option should not be
+# used if the currently-running release is not itself an LTS
+# release, since in that case the upgrader won't be able to
+# determine if a newer release is available.
+Prompt=never
diff --git a/testing/docker/desktop-test/taskcluster-interactive-shell b/testing/docker/desktop-test/taskcluster-interactive-shell
new file mode 100644
index 000000000..c782c0ea9
--- /dev/null
+++ b/testing/docker/desktop-test/taskcluster-interactive-shell
@@ -0,0 +1,22 @@
+#!/usr/bin/env bash
+
+download() {
+ name=`basename $1`
+ url=${GECKO_HEAD_REPOSITORY}/raw-file/${GECKO_HEAD_REV}/$1
+ if ! curl --fail --silent -o ./$name --retry 10 $url; then
+ fail "failed downloading $1 from ${GECKO_HEAD_REPOSITORY}"
+ fi
+}
+
+cd $HOME/bin;
+download taskcluster/scripts/tester/run-wizard;
+chmod +x run-wizard;
+./run-wizard;
+
+SPAWN="$SHELL";
+if [ "$SHELL" = "bash" ]; then
+ SPAWN="bash -li";
+fi;
+
+cd $HOME;
+exec $SPAWN;
diff --git a/testing/docker/desktop-test/tc-vcs-config.yml b/testing/docker/desktop-test/tc-vcs-config.yml
new file mode 100644
index 000000000..25e13ee40
--- /dev/null
+++ b/testing/docker/desktop-test/tc-vcs-config.yml
@@ -0,0 +1,40 @@
+# Default configuration used by the tc-vs tools these can be overridden by
+# passing the config you wish to use over the command line...
+git: git
+hg: hg
+
+repoCache:
+ # Repo url to clone when running repo init..
+ repoUrl: https://gerrit.googlesource.com/git-repo.git
+ # Version of repo to utilize...
+ repoRevision: master
+ # The root where all downloaded cache files are stored on the local machine...
+ cacheDir: '{{env.HOME}}/.tc-vcs-repo/'
+ # Name/prefixed used as part of the base url.
+ cacheName: sources/{{name}}.tar.gz
+ # Command used to upload the tarball
+ uploadTar: "curl --header 'Content-Type: application/x-tar' --header 'Content-Encoding: gzip' -X PUT --data-binary @'{{source}}' '{{url}}'"
+ # Large http get requests are often slower using nodes built in http layer so
+ # we utilize a subprocess which is responsible for fetching...
+ get: curl --connect-timeout 30 --speed-limit 500000 -L -o {{dest}} {{url}}
+ # Used to create clone tarball
+ compress: tar -czf {{dest}} {{source}}
+ # All cache urls use tar + gz this is the command used to extract those files
+ # downloaded by the "get" command.
+ extract: tar -x -z -C {{dest}} -f {{source}}
+
+cloneCache:
+ # The root where all downloaded cache files are stored on the local machine...
+ cacheDir: '{{env.HOME}}/.tc-vcs/'
+ # Command used to upload the tarball
+ uploadTar: "curl --header 'Content-Type: application/x-tar' --header 'Content-Encoding: gzip' -X PUT --data-binary @'{{source}}' '{{url}}'"
+ # Large http get requests are often slower using nodes built in http layer so
+ # we utilize a subprocess which is responsible for fetching...
+ get: curl --connect-timeout 30 --speed-limit 500000 -L -o {{dest}} {{url}}
+ # Used to create clone tarball
+ compress: tar -czf {{dest}} {{source}}
+ # All cache urls use tar + gz this is the command used to extract those files
+ # downloaded by the "get" command.
+ extract: tar -x -z --strip-components 1 -C {{dest}} -f {{source}}
+ # Name/prefixed used as part of the base url.
+ cacheName: clones/{{name}}.tar.gz
diff --git a/testing/docker/desktop-test/tester.env b/testing/docker/desktop-test/tester.env
new file mode 100644
index 000000000..1bcac6132
--- /dev/null
+++ b/testing/docker/desktop-test/tester.env
@@ -0,0 +1,4 @@
+GAIA_REV=tip
+GAIA_REF=tip
+GAIA_BASE_REPOSITORY=https://hg.mozilla.org/integration/gaia-central
+GAIA_HEAD_REPOSITORY=https://hg.mozilla.org/integration/gaia-central