diff options
| author | David Lönnhager <david.l@mullvad.net> | 2023-09-23 10:57:21 +0200 |
|---|---|---|
| committer | David Lönnhager <david.l@mullvad.net> | 2023-10-20 11:02:56 +0200 |
| commit | 774df1f8cc531c7047818a4d656f456a92f36382 (patch) | |
| tree | 968c5a84fd59f4b559d369132a49140fb160d5fe /test/scripts | |
| parent | ea4002dba40c67184a40c57e8852ac022498f65c (diff) | |
| download | mullvadvpn-774df1f8cc531c7047818a4d656f456a92f36382.tar.xz mullvadvpn-774df1f8cc531c7047818a4d656f456a92f36382.zip | |
Add desktop end-to-end tests
Co-authored-by: Jonathan <jonathan@mullvad.net>
Co-authored-by: Markus Pettersson <markus.pettersson@mullvad.net>
Diffstat (limited to 'test/scripts')
| -rwxr-xr-x | test/scripts/build-runner-image.sh | 64 | ||||
| -rw-r--r-- | test/scripts/ssh-setup.sh | 110 |
2 files changed, 174 insertions, 0 deletions
diff --git a/test/scripts/build-runner-image.sh b/test/scripts/build-runner-image.sh new file mode 100755 index 0000000000..1cb5e6bb26 --- /dev/null +++ b/test/scripts/build-runner-image.sh @@ -0,0 +1,64 @@ +#!/usr/bin/env bash + +# This script produces a virtual disk containing the test runner binaries. + +set -eu + +TEST_RUNNER_IMAGE_SIZE_MB=1000 + +case $TARGET in + "x86_64-unknown-linux-gnu") + TEST_RUNNER_IMAGE_FILENAME=linux-test-runner.img + ;; + "x86_64-pc-windows-gnu") + TEST_RUNNER_IMAGE_FILENAME=windows-test-runner.img + ;; + *) + echo "Unknown target: $TARGET" + exit 1 + ;; +esac + +echo "************************************************************" +echo "* Preparing test runner image: $TARGET" +echo "************************************************************" + +SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" + +mkdir -p "${SCRIPT_DIR}/../testrunner-images/" +TEST_RUNNER_IMAGE_PATH="${SCRIPT_DIR}/../testrunner-images/${TEST_RUNNER_IMAGE_FILENAME}" + +case $TARGET in + + "x86_64-unknown-linux-gnu") + truncate -s "${TEST_RUNNER_IMAGE_SIZE_MB}M" "${TEST_RUNNER_IMAGE_PATH}" + mkfs.ext4 -F "${TEST_RUNNER_IMAGE_PATH}" + e2cp \ + -P 500 \ + "${SCRIPT_DIR}/../target/$TARGET/release/test-runner" \ + "${PACKAGES_DIR}/"app-e2e-* \ + "${TEST_RUNNER_IMAGE_PATH}:/" + e2cp \ + "${PACKAGES_DIR}/"*.deb \ + "${PACKAGES_DIR}/"*.rpm \ + "${SCRIPT_DIR}/../openvpn.ca.crt" \ + "${TEST_RUNNER_IMAGE_PATH}:/" + ;; + + "x86_64-pc-windows-gnu") + truncate -s "${TEST_RUNNER_IMAGE_SIZE_MB}M" "${TEST_RUNNER_IMAGE_PATH}" + mformat -F -i "${TEST_RUNNER_IMAGE_PATH}" "::" + mcopy \ + -i "${TEST_RUNNER_IMAGE_PATH}" \ + "${SCRIPT_DIR}/../target/$TARGET/release/test-runner.exe" \ + "${PACKAGES_DIR}/"*.exe \ + "${SCRIPT_DIR}/../openvpn.ca.crt" \ + "::" + mdir -i "${TEST_RUNNER_IMAGE_PATH}" + ;; + +esac + +echo "************************************************************" +echo "* Success! Built test runner image: $TARGET" +echo "************************************************************" diff --git a/test/scripts/ssh-setup.sh b/test/scripts/ssh-setup.sh new file mode 100644 index 0000000000..4aefcfdeed --- /dev/null +++ b/test/scripts/ssh-setup.sh @@ -0,0 +1,110 @@ +#!/usr/bin/env bash + +set -eu + +SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" +cd $SCRIPT_DIR + +RUNNER_DIR="$1" +CURRENT_APP="$2" +PREVIOUS_APP="$3" +UI_RUNNER="$4" + +# Copy over test runner to correct place + +echo "Copying test-runner to $RUNNER_DIR" + +mkdir -p $RUNNER_DIR + +for file in test-runner $CURRENT_APP $PREVIOUS_APP $UI_RUNNER openvpn.ca.crt; do + echo "Moving $file to $RUNNER_DIR" + cp -f "$SCRIPT_DIR/$file" $RUNNER_DIR +done + +chown -R root "$RUNNER_DIR/" + +# Create service + +function setup_macos { + RUNNER_PLIST_PATH="/Library/LaunchDaemons/net.mullvad.testunner.plist" + + echo "Creating test runner service as $RUNNER_PLIST_PATH" + + cat > $RUNNER_PLIST_PATH << EOF +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> +<plist version="1.0"> +<dict> + <key>Label</key> + <string>net.mullvad.testrunner</string> + + <key>ProgramArguments</key> + <array> + <string>$RUNNER_DIR/test-runner</string> + <string>/dev/tty.virtio</string> + <string>serve</string> + </array> + + <key>UserName</key> + <string>root</string> + + <key>RunAtLoad</key> + <true/> + + <key>KeepAlive</key> + <true/> + + <key>StandardOutPath</key> + <string>/tmp/runner.out</string> + + <key>StandardErrorPath</key> + <string>/tmp/runner.err</string> + + <key>EnvironmentVariables</key> + <dict> + <key>PATH</key> + <string>/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/sbin</string> + </dict> +</dict> +</plist> +EOF + + echo "Starting test runner service" + + launchctl load -w $RUNNER_PLIST_PATH +} + +function setup_systemd { + RUNNER_SERVICE_PATH="/etc/systemd/system/testrunner.service" + + echo "Creating test runner service as $RUNNER_SERVICE_PATH" + + cat > $RUNNER_SERVICE_PATH << EOF +[Unit] +Description=Mullvad Test Runner + +[Service] +ExecStart=$RUNNER_DIR/test-runner /dev/ttyS0 serve + +[Install] +WantedBy=multi-user.target +EOF + + echo "Starting test runner service" + + semanage fcontext -a -t bin_t "$RUNNER_DIR/.*" &> /dev/null || true + + systemctl enable testrunner.service + systemctl start testrunner.service +} + +if [[ "$(uname -s)" == "Darwin" ]]; then + setup_macos + exit 0 +fi + +setup_systemd + +# Install required packages +which apt &>/dev/null && apt install -f xvfb wireguard-tools +which dnf &>/dev/null && dnf install -y xorg-x11-server-Xvfb wireguard-tools |
