diff --git a/src/dragonball/src/kvm_context.rs b/src/dragonball/src/kvm_context.rs index f4a840860..ce4583458 100644 --- a/src/dragonball/src/kvm_context.rs +++ b/src/dragonball/src/kvm_context.rs @@ -228,7 +228,7 @@ mod tests { assert!(c.max_memslots >= 32); let kvm = Kvm::new().unwrap(); - let f = unsafe { File::from_raw_fd(kvm.as_raw_fd()) }; + let f = std::mem::ManuallyDrop::new(unsafe { File::from_raw_fd(kvm.as_raw_fd()) }); let m1 = f.metadata().unwrap(); let m2 = File::open("/dev/kvm").unwrap().metadata().unwrap(); diff --git a/src/dragonball/src/vcpu/vcpu_impl.rs b/src/dragonball/src/vcpu/vcpu_impl.rs index ff3f9e44f..f6c1c2d4c 100644 --- a/src/dragonball/src/vcpu/vcpu_impl.rs +++ b/src/dragonball/src/vcpu/vcpu_impl.rs @@ -758,13 +758,11 @@ impl Drop for Vcpu { #[cfg(test)] pub mod tests { - use std::os::unix::io::AsRawFd; use std::sync::mpsc::{channel, Receiver}; use std::sync::Mutex; use arc_swap::ArcSwap; use dbs_device::device_manager::IoManager; - use kvm_ioctls::Kvm; use lazy_static::lazy_static; use test_utils::skip_if_not_root; @@ -812,12 +810,8 @@ pub mod tests { #[cfg(target_arch = "x86_64")] fn create_vcpu() -> (Vcpu, Receiver) { - // Call for kvm too frequently would cause error in some host kernel. - std::thread::sleep(std::time::Duration::from_millis(5)); - - let kvm = Kvm::new().unwrap(); - let vm = Arc::new(kvm.create_vm().unwrap()); - let kvm_context = KvmContext::new(Some(kvm.as_raw_fd())).unwrap(); + let kvm_context = KvmContext::new(None).unwrap(); + let vm = kvm_context.kvm().create_vm().unwrap(); let vcpu_fd = Arc::new(vm.create_vcpu(0).unwrap()); let io_manager = IoManagerCached::new(Arc::new(ArcSwap::new(Arc::new(IoManager::new())))); let supported_cpuid = kvm_context diff --git a/src/dragonball/src/vcpu/vcpu_manager.rs b/src/dragonball/src/vcpu/vcpu_manager.rs index 22c90f2e2..2b076cd5b 100644 --- a/src/dragonball/src/vcpu/vcpu_manager.rs +++ b/src/dragonball/src/vcpu/vcpu_manager.rs @@ -1062,7 +1062,6 @@ mod tests { fn get_vm() -> Vm { let instance_info = Arc::new(RwLock::new(InstanceInfo::default())); let epoll_manager = EpollManager::default(); - std::thread::sleep(std::time::Duration::from_millis(200)); let mut vm = Vm::new(None, instance_info, epoll_manager).unwrap(); let vm_config = VmConfigInfo { vcpu_count: 1, @@ -1111,7 +1110,6 @@ mod tests { skip_if_not_root!(); let instance_info = Arc::new(RwLock::new(InstanceInfo::default())); let epoll_manager = EpollManager::default(); - std::thread::sleep(std::time::Duration::from_millis(200)); let mut vm = Vm::new(None, instance_info, epoll_manager).unwrap(); let vm_config = VmConfigInfo { vcpu_count: 1,