From 2333700237c1b3c749988eb5dfdfd4449b910fcf Mon Sep 17 00:00:00 2001 From: wllenyj Date: Wed, 18 May 2022 00:19:05 +0800 Subject: [PATCH] dragonball: add test utils. Added some tools for dragonball unit testing. Signed-off-by: wllenyj --- src/dragonball/src/lib.rs | 3 ++ src/dragonball/src/test_utils.rs | 47 ++++++++++++++++++++++++++++++++ 2 files changed, 50 insertions(+) create mode 100644 src/dragonball/src/test_utils.rs diff --git a/src/dragonball/src/lib.rs b/src/dragonball/src/lib.rs index 7371e8213a..5c06853267 100644 --- a/src/dragonball/src/lib.rs +++ b/src/dragonball/src/lib.rs @@ -34,6 +34,9 @@ pub mod vm; mod event_manager; mod io_manager; + +mod test_utils; + mod vmm; pub use self::error::StartMicroVmError; diff --git a/src/dragonball/src/test_utils.rs b/src/dragonball/src/test_utils.rs new file mode 100644 index 0000000000..577b5df86f --- /dev/null +++ b/src/dragonball/src/test_utils.rs @@ -0,0 +1,47 @@ +// Copyright (C) 2022 Alibaba Cloud. All rights reserved. +// +// SPDX-License-Identifier: Apache-2.0 + +#[cfg(test)] +pub mod tests { + use crate::api::v1::InstanceInfo; + use crate::vm::{CpuTopology, KernelConfigInfo, Vm, VmConfigInfo}; + use dbs_utils::epoll_manager::EpollManager; + use linux_loader::cmdline::Cmdline; + use std::sync::{Arc, RwLock}; + use vmm_sys_util::tempfile::TempFile; + + pub fn create_vm_for_test() -> Vm { + // Call for kvm too frequently would cause error in some host kernel. + let instance_info = Arc::new(RwLock::new(InstanceInfo::default())); + let epoll_manager = EpollManager::default(); + let mut vm = Vm::new(None, instance_info, epoll_manager).unwrap(); + let kernel_file = TempFile::new().unwrap(); + let cmd_line = Cmdline::new(64); + vm.set_kernel_config(KernelConfigInfo::new( + kernel_file.into_file(), + None, + cmd_line, + )); + + let vm_config = VmConfigInfo { + vcpu_count: 1, + max_vcpu_count: 1, + cpu_pm: "off".to_string(), + mem_type: "shmem".to_string(), + mem_file_path: "".to_string(), + mem_size_mib: 1, + serial_path: None, + cpu_topology: CpuTopology { + threads_per_core: 1, + cores_per_die: 1, + dies_per_socket: 1, + sockets: 1, + }, + vpmu_feature: 0, + }; + vm.set_vm_config(vm_config); + vm.init_guest_memory().unwrap(); + vm + } +}