diff options
| author | Sebastian Holmin <sebastian.holmin@mullvad.net> | 2024-08-14 01:02:06 +0200 |
|---|---|---|
| committer | Markus Pettersson <markus.pettersson@mullvad.net> | 2024-08-14 15:01:40 +0200 |
| commit | b7ebc08236e46f6cb9aca5443d42c01ab7828d55 (patch) | |
| tree | 1226d0440ab9d37c6a301f65d9b88693857cabc2 /test | |
| parent | 7781ac5613ca03a0676312b75755774529298876 (diff) | |
| download | mullvadvpn-b7ebc08236e46f6cb9aca5443d42c01ab7828d55.tar.xz mullvadvpn-b7ebc08236e46f6cb9aca5443d42c01ab7828d55.zip | |
Add `--test-runner-dir` flag
Diffstat (limited to 'test')
| -rw-r--r-- | test/test-manager/src/config.rs | 2 | ||||
| -rw-r--r-- | test/test-manager/src/main.rs | 9 | ||||
| -rw-r--r-- | test/test-manager/src/vm/mod.rs | 16 | ||||
| -rw-r--r-- | test/test-manager/src/vm/provision.rs | 3 |
4 files changed, 12 insertions, 18 deletions
diff --git a/test/test-manager/src/config.rs b/test/test-manager/src/config.rs index 7b74c48dcf..7379bd5ec6 100644 --- a/test/test-manager/src/config.rs +++ b/test/test-manager/src/config.rs @@ -200,7 +200,7 @@ impl VmConfig { Some((self.ssh_user.as_ref()?, self.ssh_password.as_ref()?)) } - pub fn get_runner_dir(&self) -> PathBuf { + pub fn get_default_runner_dir(&self) -> PathBuf { let target_dir = self.get_target_dir(); let subdir = match self.architecture { None | Some(Architecture::X64) => self.get_x64_runner_subdir(), diff --git a/test/test-manager/src/main.rs b/test/test-manager/src/main.rs index b26fa02fe9..b36d94ab7e 100644 --- a/test/test-manager/src/main.rs +++ b/test/test-manager/src/main.rs @@ -13,6 +13,7 @@ use std::{net::SocketAddr, path::PathBuf}; use anyhow::{Context, Result}; use clap::Parser; +use vm::provision; use crate::tests::config::OpenVPNCertificate; @@ -126,6 +127,10 @@ enum Commands { /// Path to output test results in a structured format #[arg(long, value_name = "PATH")] test_report: Option<PathBuf>, + + /// Path to the directory containing the test runner + #[arg(long, value_name = "DIR")] + runner_dir: Option<PathBuf>, }, /// Output an HTML-formatted summary of one or more reports @@ -238,6 +243,7 @@ async fn main() -> Result<()> { test_filters, verbose, test_report, + runner_dir, } => { let mut config = config.clone(); config.runtime_opts.display = match (display, vnc.is_some()) { @@ -282,7 +288,8 @@ async fn main() -> Result<()> { .unwrap_or_default(); let mut instance = vm::run(&config, &vm).await.context("Failed to start VM")?; - let artifacts_dir = vm::provision(&config, &vm, &*instance, &manifest) + let runner_dir = runner_dir.unwrap_or_else(|| vm_config.get_default_runner_dir()); + let artifacts_dir = provision::provision(vm_config, &*instance, &manifest, runner_dir) .await .context("Failed to run provisioning for VM")?; diff --git a/test/test-manager/src/vm/mod.rs b/test/test-manager/src/vm/mod.rs index 6cb18c9c5f..49c09da6f9 100644 --- a/test/test-manager/src/vm/mod.rs +++ b/test/test-manager/src/vm/mod.rs @@ -1,10 +1,7 @@ use anyhow::{Context, Result}; use std::net::IpAddr; -use crate::{ - config::{Config, ConfigFile, VmConfig, VmType}, - package, -}; +use crate::config::{Config, ConfigFile, VmConfig, VmType}; mod logging; pub mod network; @@ -63,17 +60,6 @@ pub async fn run(config: &Config, name: &str) -> Result<Box<dyn VmInstance>> { Ok(instance) } -/// Returns the directory in the test runner where the test-runner binary is installed. -pub async fn provision( - config: &Config, - name: &str, - instance: &dyn VmInstance, - app_manifest: &package::Manifest, -) -> Result<String> { - let vm_config = get_vm_config(config, name)?; - provision::provision(vm_config, instance, app_manifest).await -} - pub async fn update_packages( config: VmConfig, instance: &dyn VmInstance, diff --git a/test/test-manager/src/vm/provision.rs b/test/test-manager/src/vm/provision.rs index 067a4dd900..e5786b54d7 100644 --- a/test/test-manager/src/vm/provision.rs +++ b/test/test-manager/src/vm/provision.rs @@ -16,6 +16,7 @@ pub async fn provision( config: &VmConfig, instance: &dyn super::VmInstance, app_manifest: &package::Manifest, + runner_dir: PathBuf, ) -> Result<String> { match config.provisioner { Provisioner::Ssh => { @@ -25,7 +26,7 @@ pub async fn provision( provision_ssh( instance, config.os_type, - &config.get_runner_dir(), + &runner_dir, app_manifest, user, password, |
