diff --git a/Cargo.lock b/Cargo.lock index 76624b52d..f1ee8b033 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -234,6 +234,7 @@ dependencies = [ "vhost_user_net", "vmm", "vmm-sys-util", + "wait-timeout", ] [[package]] @@ -1676,6 +1677,15 @@ dependencies = [ "serde_derive", ] +[[package]] +name = "wait-timeout" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f200f5b12eb75f8c1ed65abd4b2db8a6e1b138a20de009dacee265a2498f3f6" +dependencies = [ + "libc", +] + [[package]] name = "wasi" version = "0.9.0+wasi-snapshot-preview1" diff --git a/Cargo.toml b/Cargo.toml index 194947b45..a9fd3a101 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -28,6 +28,7 @@ vhost_user_block = { path = "vhost_user_block"} vhost_user_net = { path = "vhost_user_net"} vmm = { path = "vmm" } vmm-sys-util = "0.6.1" +wait-timeout = "0.2.0" [build-dependencies] clap = { version = "2.33.3", features = ["wrap_help"] } diff --git a/tests/integration.rs b/tests/integration.rs index 9ba33076c..90f41dcfe 100644 --- a/tests/integration.rs +++ b/tests/integration.rs @@ -31,6 +31,7 @@ mod tests { use std::thread; use tempdir::TempDir; use tempfile::NamedTempFile; + use wait_timeout::ChildExt; lazy_static! { static ref NEXT_VM_ID: Mutex = Mutex::new(1); @@ -3513,9 +3514,9 @@ mod tests { ); guest.ssh_command("sudo shutdown -h now").unwrap(); - thread::sleep(std::time::Duration::new(20, 0)); }); + let _ = child.wait_timeout(std::time::Duration::from_secs(20)); let _ = child.kill(); let output = child.wait_with_output().unwrap(); handle_child_output(r, &output); @@ -3607,8 +3608,8 @@ mod tests { thread::sleep(std::time::Duration::new(20, 0)); guest.ssh_command("sudo shutdown -h now").unwrap(); - thread::sleep(std::time::Duration::new(20, 0)); + let _ = child.wait_timeout(std::time::Duration::from_secs(20)); let _ = child.kill(); let output = child.wait_with_output().unwrap(); @@ -3962,9 +3963,9 @@ mod tests { guest .ssh_command("sudo shutdown -h now") .unwrap_or_default(); - thread::sleep(std::time::Duration::new(20, 0)); }); + let _ = child.wait_timeout(std::time::Duration::from_secs(40)); let _ = child.kill(); let output = child.wait_with_output().unwrap(); handle_child_output(r, &output); @@ -4026,9 +4027,9 @@ mod tests { assert_eq!(fd_count_1, fd_count_2); guest.ssh_command("sudo shutdown -h now").unwrap(); - thread::sleep(std::time::Duration::new(20, 0)); }); + let _ = child.wait_timeout(std::time::Duration::from_secs(20)); let _ = child.kill(); let output = child.wait_with_output().unwrap(); handle_child_output(r, &output); @@ -5623,9 +5624,9 @@ mod tests { DEFAULT_SSH_TIMEOUT, ) .unwrap(); - thread::sleep(std::time::Duration::new(40, 0)); }); + let _ = child.wait_timeout(std::time::Duration::from_secs(40)); let _ = child.kill(); let output = child.wait_with_output().unwrap(); @@ -5720,7 +5721,7 @@ mod tests { .unwrap(); }); - thread::sleep(std::time::Duration::new(20, 0)); + let _ = child.wait_timeout(std::time::Duration::from_secs(20)); let _ = child.kill(); let output = child.wait_with_output().unwrap();