summaryrefslogtreecommitdiffhomepage
path: root/test/scripts
diff options
context:
space:
mode:
authorDavid Lönnhager <david.l@mullvad.net>2023-09-23 10:57:21 +0200
committerDavid Lönnhager <david.l@mullvad.net>2023-10-20 11:02:56 +0200
commit774df1f8cc531c7047818a4d656f456a92f36382 (patch)
tree968c5a84fd59f4b559d369132a49140fb160d5fe /test/scripts
parentea4002dba40c67184a40c57e8852ac022498f65c (diff)
downloadmullvadvpn-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-xtest/scripts/build-runner-image.sh64
-rw-r--r--test/scripts/ssh-setup.sh110
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