diff options
Diffstat (limited to 'cucumber/bin')
-rwxr-xr-x | cucumber/bin/run_test_suite | 283 |
1 files changed, 0 insertions, 283 deletions
diff --git a/cucumber/bin/run_test_suite b/cucumber/bin/run_test_suite deleted file mode 100755 index fe05e69d..00000000 --- a/cucumber/bin/run_test_suite +++ /dev/null @@ -1,283 +0,0 @@ -#!/bin/bash - -set -e -set -u -set -o pipefail - -NAME=$(basename ${0}) - -GENERAL_DEPENDENCIES=" -cucumber -devscripts -dnsmasq-base -gawk -git -i18nspector -libav-tools -libcap2-bin -libsikuli-script-java -libvirt-clients -libvirt-daemon-system -libvirt-dev -libvirt0 -openssh-server -ovmf -pry -python-jabberbot -python-potr -qemu-kvm -qemu-system-x86 -redir -ruby-guestfs -ruby-json -ruby-libvirt -ruby-net-irc -ruby-packetfu -ruby-rb-inotify -ruby-rjb -ruby-rspec -ruby-test-unit -seabios -tcpdump -unclutter -virt-viewer -xvfb -" - -usage() { - echo "Usage: $NAME [OPTION]... [--] [CUCUMBER_ARGS]... -Sets up an appropriate environment and invokes cucumber. Note that this script -must be run from the Tails source directory root. - -Options for '@product' features: - --artifacts-base-uri URI - Pretend that the artifact is located at URI when printing - its location during a scenario failure. This is useful if - you intend to serve the artifacts via the web, for - instance. - --capture Captures failed scenarios into videos stored in the - temporary directory (see --tmpdir below) using x264 - encoding. Requires x264. - --capture-all Keep videos for all scenarios, including those that - succeed (implies --capture). - --interactive-debugging - On failure, pause test suite until pressing Enter. Also - offer the option to open an interactive Ruby shell (pry) - in the Cucumber world's context. - --keep-snapshots Don't ever delete any snapshots (including ones marked as - temporary). This can be a big time saver when debugging new - features. - --retry-find Print a warning whenever Sikuli fails to find an image - and allow *one* retry after pressing ENTER. This is useful - for updating outdated images. - --tmpdir Directory where various temporary files are written - during a test, e.g. VM snapshots and memory dumps, - failure screenshots, pcap files and disk images - (default is TMPDIR in the environment, and if unset, - /tmp/DebianToaster). - --view Shows the test session in a windows. Requires x11vnc - and tigervnc-viewer. - --vnc-server-only Starts a VNC server for the test session. Requires x11vnc. - --iso IMAGE Test '@product' features using IMAGE. - --old-iso IMAGE For some '@product' features (e.g. usb_install) we need - an older version of Tails, which this options sets to - IMAGE. If none is given, it defaults to the same IMAGE - given by --iso, which will be good enough for most testing - purposes. - -Note that '@source' features has no relevant options. - -CUCUMBER_ARGS can be used to specify which features to be run, but also any -cucumber option, although then you must pass \`--\` first to let this wrapper -script know that we're done with *its* options. For debugging purposes, a -'debug' formatter has been added so pretty debugging can be enabled with -\`--format debug\`. You could even combine the default (pretty) formatter with -pretty debugging printed to a file with \`--format pretty --format debug ---out debug.log\`. -" -} - -error() { - echo "${NAME}: error: ${*}" >&2 - usage - exit 1 -} - -package_installed() { - local ret - set +o pipefail - if dpkg -s "${1}" 2>/dev/null | grep -q "^Status:.*installed"; then - ret=0 - else - ret=1 - fi - set -o pipefail - return ${ret} -} - -check_dependencies() { - while [ -n "${1:-}" ]; do - if ! which "${1}" >/dev/null && ! package_installed "${1}" ; then - error "'${1}' is missing, please install it and run again." - fi - shift - done -} - -display_in_use() { - [ -e "/tmp/.X${1#:}-lock" ] || [ -e "/tmp/.X11-unix/X${1#:}" ] -} - -next_free_display() { - display_nr=0 - while display_in_use ":${display_nr}"; do - display_nr=$((display_nr+1)) - done - echo ":${display_nr}" -} - -test_suite_cleanup() { - (kill -0 ${XVFB_PID} 2>/dev/null && kill ${XVFB_PID}) || /bin/true -} - -start_xvfb() { - Xvfb $TARGET_DISPLAY -screen 0 1024x768x24+32 >/dev/null 2>&1 & - XVFB_PID=$! - # Wait for Xvfb to run on TARGET_DISPLAY - until display_in_use $TARGET_DISPLAY; do - sleep 1 - done - echo "Virtual X framebuffer started on display ${TARGET_DISPLAY}" - # Hide the mouse cursor so it won't mess up Sikuli's screen scanning - unclutter -display $TARGET_DISPLAY -root -idle 0 >/dev/null 2>&1 & -} - -start_vnc_server() { - check_dependencies x11vnc - VNC_SERVER_PORT="$(x11vnc -listen localhost -display ${TARGET_DISPLAY} \ - -bg -nopw -forever 2>&1 | \ - grep -m 1 "^PORT=[0-9]\+" | sed 's/^PORT=//')" - echo "VNC server running on: localhost:${VNC_SERVER_PORT}" -} - -start_vnc_viewer() { - check_dependencies tigervnc-viewer - xtigervncviewer -nojpeg -viewonly localhost:${VNC_SERVER_PORT} 1>/dev/null 2>&1 & -} - -capture_session() { - check_dependencies libvpx1 - echo "Capturing guest display into ${CAPTURE_FILE}" - avconv -f x11grab -s 1024x768 -r 5 -i ${TARGET_DISPLAY}.0 -an \ - -vcodec libvpx -y "${CAPTURE_FILE}" >/dev/null 2>&1 & -} - -# main script - -# Unset all environment variables used by this script to pass options -# to cucumber, except TMPDIR since we explicitly want to support -# setting it that way. -ARTIFACTS_BASE_URI= -CAPTURE= -CAPTURE_ALL= -LOG_FILE= -VNC_VIEWER= -VNC_SERVER= -INTERACTIVE_DEBUGGING= -KEEP_SNAPSHOTS= -SIKULI_RETRY_FINDFAILED= -ISO= -OLD_ISO= - -LONGOPTS="artifacts-base-uri:,view,vnc-server-only,capture,capture-all,help,tmpdir:,keep-snapshots,retry-find,iso:,old-iso:,interactive-debugging" -OPTS=$(getopt -o "" --longoptions $LONGOPTS -n "${NAME}" -- "$@") -eval set -- "$OPTS" -while [ $# -gt 0 ]; do - case $1 in - --artifacts-base-uri) - shift - export ARTIFACTS_BASE_URI="${1}" - ;; - --view) - VNC_VIEWER=yes - VNC_SERVER=yes - ;; - --vnc-server-only) - VNC_VIEWER= - VNC_SERVER=yes - ;; - --capture) - check_dependencies x264 - export CAPTURE="yes" - ;; - --capture-all) - check_dependencies x264 - export CAPTURE="yes" - export CAPTURE_ALL="yes" - ;; - --interactive-debugging) - export INTERACTIVE_DEBUGGING="yes" - ;; - --keep-snapshots) - export KEEP_SNAPSHOTS="yes" - ;; - --retry-find) - export SIKULI_RETRY_FINDFAILED="yes" - ;; - --tmpdir) - shift - export TMPDIR="$(readlink -f $1)" - ;; - --iso) - shift - export ISO="$(readlink -f $1)" - ;; - --old-iso) - shift - export OLD_ISO="$(readlink -f $1)" - ;; - --help) - usage - exit 0 - ;; - --) - shift - break - ;; - esac - shift -done - -trap "test_suite_cleanup" EXIT HUP INT QUIT TERM - -check_dependencies ${GENERAL_DEPENDENCIES} - -TARGET_DISPLAY=$(next_free_display) - -start_xvfb - -if [ -n "${VNC_SERVER:-}" ]; then - start_vnc_server -fi -if [ -n "${VNC_VIEWER:-}" ]; then - start_vnc_viewer -fi - -export SIKULI_HOME="/usr/share/java" -export SIKULI_IMAGE_PATH="/srv/jenkins/cucumber/features/images/" -export RUBYLIB="/srv/jenkins" -export VM_XML_PATH="/srv/jenkins/cucumber/features/domains" -export DISPLAY=${TARGET_DISPLAY} -check_dependencies cucumber - -# cludge ruby to stop buffering output -RUBY_STDOUT_SYNC=$TMPDIR/.stdout-sync.rb -echo STDOUT.sync = true > $RUBY_STDOUT_SYNC -export RUBYOPT="-r $RUBY_STDOUT_SYNC" - -unset http_proxy - -echo "PWD = $(pwd)" -[ -e features ] || ln -s /srv/jenkins/cucumber/features - -cucumber ${@} |