diff options
Diffstat (limited to 'test')
| -rw-r--r-- | test/scripts/Dockerfile | 19 | ||||
| -rwxr-xr-x | test/scripts/build-manager.sh | 27 | ||||
| -rwxr-xr-x | test/scripts/build.sh | 24 | ||||
| -rw-r--r-- | test/test-manager/build.rs | 9 |
4 files changed, 78 insertions, 1 deletions
diff --git a/test/scripts/Dockerfile b/test/scripts/Dockerfile index 9e6fe20f80..4501dd279e 100644 --- a/test/scripts/Dockerfile +++ b/test/scripts/Dockerfile @@ -1,7 +1,24 @@ ARG IMAGE=ghcr.io/mullvad/mullvadvpn-app-build:latest FROM $IMAGE +ENV OPENSSL_STATIC=1 \ + OPENSSL_LIB_DIR=/usr/lib/x86_64-linux-gnu \ + OPENSSL_INCLUDE_DIR=/usr/include/openssl \ + TEST_MANAGER_STATIC=1 + RUN rustup target add x86_64-pc-windows-gnu RUN apt-get update && apt-get install -y \ - mtools pkg-config libssl-dev libpcap-dev + mtools pkg-config libssl-dev + +RUN git clone https://github.com/the-tcpdump-group/libpcap.git +RUN apt-get install -y autoconf flex bison + +RUN cd libpcap \ + && ./autogen.sh \ + && ./configure --enable-remote=yes --enable-dbus=no --enable-shared=no \ + && make \ + && make install + +RUN rm -rf libpcap +RUN apt-get remove -y autoconf flex bison diff --git a/test/scripts/build-manager.sh b/test/scripts/build-manager.sh new file mode 100755 index 0000000000..60cf5da98c --- /dev/null +++ b/test/scripts/build-manager.sh @@ -0,0 +1,27 @@ +#!/usr/bin/env bash + +set -eu + +# Build `test-manager` +SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" +TEST_FRAMEWORK_ROOT="$SCRIPT_DIR/.." +REPO_DIR="$TEST_FRAMEWORK_ROOT/.." + +# shellcheck disable=SC1091 +source "$REPO_DIR/scripts/utils/log" + +build_linux() { + cd "$TEST_FRAMEWORK_ROOT" + # Build the test manager + cargo build -p test-manager --release +} + +case ${1-:""} in + linux) + build_linux + shift + ;; + *) + log_error "Invalid platform. Specify a valid platform as first argument" + exit 1 +esac diff --git a/test/scripts/build.sh b/test/scripts/build.sh new file mode 100755 index 0000000000..be06dd8eb9 --- /dev/null +++ b/test/scripts/build.sh @@ -0,0 +1,24 @@ +#!/usr/bin/env bash + +set -eu + +# Build distributable binaries for the test framework. +# TODO: Support macOS + +SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" +TEST_FRAMEWORK_ROOT="$SCRIPT_DIR/.." + +# Build +build_linux() { + mkdir -p "$TEST_FRAMEWORK_ROOT/dist" + # Build the test manager + "$SCRIPT_DIR/build-manager.sh" linux + cp "$TEST_FRAMEWORK_ROOT/target/release/test-manager" "$TEST_FRAMEWORK_ROOT/dist/" + + # Build the test runner + "$SCRIPT_DIR/build-runner.sh" linux + cp "$TEST_FRAMEWORK_ROOT/target/x86_64-unknown-linux-gnu/release/test-runner" "$TEST_FRAMEWORK_ROOT/dist/" + cp "$TEST_FRAMEWORK_ROOT/target/x86_64-unknown-linux-gnu/release/connection-checker" "$TEST_FRAMEWORK_ROOT/dist/" +} + +build_linux diff --git a/test/test-manager/build.rs b/test/test-manager/build.rs index 37d4cac43b..45ceffea0f 100644 --- a/test/test-manager/build.rs +++ b/test/test-manager/build.rs @@ -1,4 +1,13 @@ +use std::env::var; + fn main() { // Rebuild if SSH provision script changes println!("cargo::rerun-if-changed=../scripts/ssh-setup.sh"); + + let link_statically = var("TEST_MANAGER_STATIC").is_ok_and(|x| x != "0"); + + if link_statically { + println!("cargo::rustc-link-search=native=/usr/lib/x86_64-linux-gnu"); + println!("cargo::rustc-link-lib=static=pcap"); + } } |
