summaryrefslogtreecommitdiffhomepage
path: root/test
diff options
context:
space:
mode:
authorDavid Lönnhager <david.l@mullvad.net>2025-08-05 14:24:31 +0200
committerDavid Lönnhager <david.l@mullvad.net>2025-08-05 14:24:31 +0200
commitd29d5e06e936311d52e593b887b07712fd91d301 (patch)
tree5b11a3d758932198d6ca15d04e576b45e905d5d7 /test
parent232f7eee33f1b2def4c534497a68034acb6361c1 (diff)
parent2482c3cbaa81ca127f6d4ecf61ad1279733a0e5e (diff)
downloadmullvadvpn-d29d5e06e936311d52e593b887b07712fd91d301.tar.xz
mullvadvpn-d29d5e06e936311d52e593b887b07712fd91d301.zip
Merge branch 'add-test-macos-tahoe'
Diffstat (limited to 'test')
-rw-r--r--test/test-manager/src/vm/provision.rs28
1 files changed, 20 insertions, 8 deletions
diff --git a/test/test-manager/src/vm/provision.rs b/test/test-manager/src/vm/provision.rs
index ef1347ba62..818393cd33 100644
--- a/test/test-manager/src/vm/provision.rs
+++ b/test/test-manager/src/vm/provision.rs
@@ -9,6 +9,8 @@ use std::{
io::{self, Read},
net::{IpAddr, SocketAddr, TcpStream},
path::{Path, PathBuf},
+ time::Duration,
+ time::Instant,
};
use test_rpc::UNPRIVILEGED_USER;
@@ -63,14 +65,24 @@ async fn provision_ssh(
let local_app_manifest = local_app_manifest.to_owned();
let remote_dir = tokio::task::spawn_blocking(move || {
- blocking_ssh(
- user,
- password,
- guest_ip,
- os_type,
- &local_runner_dir,
- local_app_manifest,
- )
+ const SSH_TIMEOUT: Duration = Duration::from_secs(120);
+ let started = Instant::now();
+ loop {
+ let last_result = blocking_ssh(
+ user.clone(),
+ password.clone(),
+ guest_ip,
+ os_type,
+ &local_runner_dir,
+ local_app_manifest.clone(),
+ );
+ if last_result.is_err() && started.elapsed() < SSH_TIMEOUT {
+ log::warn!("Failed to provision over SSH, retrying...");
+ std::thread::sleep(Duration::from_secs(1));
+ continue;
+ }
+ break last_result;
+ }
})
.await
.context("Failed to join SSH task")??;