summaryrefslogtreecommitdiffhomepage
path: root/test
diff options
context:
space:
mode:
authorSebastian Holmin <sebastian.holmin@mullvad.net>2024-08-14 01:02:06 +0200
committerMarkus Pettersson <markus.pettersson@mullvad.net>2024-08-14 15:01:40 +0200
commitb7ebc08236e46f6cb9aca5443d42c01ab7828d55 (patch)
tree1226d0440ab9d37c6a301f65d9b88693857cabc2 /test
parent7781ac5613ca03a0676312b75755774529298876 (diff)
downloadmullvadvpn-b7ebc08236e46f6cb9aca5443d42c01ab7828d55.tar.xz
mullvadvpn-b7ebc08236e46f6cb9aca5443d42c01ab7828d55.zip
Add `--test-runner-dir` flag
Diffstat (limited to 'test')
-rw-r--r--test/test-manager/src/config.rs2
-rw-r--r--test/test-manager/src/main.rs9
-rw-r--r--test/test-manager/src/vm/mod.rs16
-rw-r--r--test/test-manager/src/vm/provision.rs3
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,