Skip to content

Commit 1d5c768

Browse files
vmm: refactored lib.rs tests
In all tests we were initializing in the same way the kernel. Addded a method in the test implementation of Vmm called default_kernel_config. Signed-off-by: Andreea Florescu <[email protected]>
1 parent 38a5829 commit 1d5c768

File tree

1 file changed

+39
-54
lines changed

1 file changed

+39
-54
lines changed

vmm/src/lib.rs

Lines changed: 39 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -1554,7 +1554,7 @@ mod tests {
15541554
use net_util::MacAddr;
15551555

15561556
impl Vmm {
1557-
fn get_kernel_cmdline(&self) -> &str {
1557+
fn get_kernel_cmdline_str(&self) -> &str {
15581558
if let Some(ref k) = self.kernel_config {
15591559
k.cmdline.as_str()
15601560
} else {
@@ -1568,6 +1568,22 @@ mod tests {
15681568
.unwrap()
15691569
.remove_address(id);
15701570
}
1571+
1572+
fn default_kernel_config(&mut self) {
1573+
let kernel_file_temp =
1574+
NamedTempFile::new().expect("Failed to create temporary kernel file.");
1575+
let kernel_path = String::from(kernel_file_temp.path().to_path_buf().to_str().unwrap());
1576+
let kernel_file = File::open(kernel_path).unwrap();
1577+
1578+
let mut cmdline = kernel_cmdline::Cmdline::new(x86_64::layout::CMDLINE_MAX_SIZE);
1579+
assert!(cmdline.insert_str(DEFAULT_KERNEL_CMDLINE).is_ok());
1580+
let kernel_cfg = KernelConfig {
1581+
cmdline,
1582+
kernel_file,
1583+
cmdline_addr: GuestAddress(x86_64::layout::CMDLINE_START),
1584+
};
1585+
self.configure_kernel(kernel_cfg);
1586+
}
15711587
}
15721588

15731589
struct DummyEpollHandler {
@@ -2031,10 +2047,6 @@ mod tests {
20312047
fn test_attach_block_devices() {
20322048
let mut vmm = create_vmm_object(InstanceState::Uninitialized);
20332049
let block_file = NamedTempFile::new().unwrap();
2034-
let kernel_file_temp =
2035-
NamedTempFile::new().expect("Failed to create temporary kernel file.");
2036-
let kernel_path = String::from(kernel_file_temp.path().to_path_buf().to_str().unwrap());
2037-
let kernel_file = File::open(kernel_path).unwrap();
20382050

20392051
// Use Case 1: Root Block Device is not specified through PARTUUID.
20402052
let root_block_device = BlockDeviceConfig {
@@ -2052,19 +2064,14 @@ mod tests {
20522064
};
20532065
assert!(vmm.init_guest_memory().is_ok());
20542066
assert!(vmm.guest_memory.is_some());
2055-
let mut cmdline = kernel_cmdline::Cmdline::new(x86_64::layout::CMDLINE_MAX_SIZE);
2056-
assert!(cmdline.insert_str(DEFAULT_KERNEL_CMDLINE).is_ok());
2057-
let kernel_cfg = KernelConfig {
2058-
cmdline,
2059-
kernel_file,
2060-
cmdline_addr: GuestAddress(x86_64::layout::CMDLINE_START),
2061-
};
2062-
vmm.configure_kernel(kernel_cfg);
2067+
2068+
vmm.default_kernel_config();
2069+
20632070
let guest_mem = vmm.guest_memory.clone().unwrap();
20642071
let mut device_manager =
20652072
MMIODeviceManager::new(guest_mem.clone(), x86_64::get_32bit_gap_start() as u64);
20662073
assert!(vmm.attach_block_devices(&mut device_manager).is_ok());
2067-
assert!(vmm.get_kernel_cmdline().contains("root=/dev/vda"));
2074+
assert!(vmm.get_kernel_cmdline_str().contains("root=/dev/vda"));
20682075

20692076
// Use Case 2: Root Block Device is specified through PARTUUID.
20702077
let mut vmm = create_vmm_object(InstanceState::Uninitialized);
@@ -2076,10 +2083,6 @@ mod tests {
20762083
is_read_only: false,
20772084
rate_limiter: None,
20782085
};
2079-
let kernel_file_temp =
2080-
NamedTempFile::new().expect("Failed to create temporary kernel file.");
2081-
let kernel_path = String::from(kernel_file_temp.path().to_path_buf().to_str().unwrap());
2082-
let kernel_file = File::open(kernel_path).unwrap();
20832086

20842087
// Test that creating a new block device returns the correct output.
20852088
match vmm.put_block_device(root_block_device.clone()) {
@@ -2088,20 +2091,15 @@ mod tests {
20882091
};
20892092
assert!(vmm.init_guest_memory().is_ok());
20902093
assert!(vmm.guest_memory.is_some());
2091-
let mut cmdline = kernel_cmdline::Cmdline::new(x86_64::layout::CMDLINE_MAX_SIZE);
2092-
assert!(cmdline.insert_str(DEFAULT_KERNEL_CMDLINE).is_ok());
2093-
let kernel_cfg = KernelConfig {
2094-
cmdline,
2095-
kernel_file,
2096-
cmdline_addr: GuestAddress(x86_64::layout::CMDLINE_START),
2097-
};
2098-
vmm.configure_kernel(kernel_cfg);
2094+
2095+
vmm.default_kernel_config();
2096+
20992097
let guest_mem = vmm.guest_memory.clone().unwrap();
21002098
let mut device_manager =
21012099
MMIODeviceManager::new(guest_mem.clone(), x86_64::get_32bit_gap_start() as u64);
21022100
assert!(vmm.attach_block_devices(&mut device_manager).is_ok());
21032101
assert!(
2104-
vmm.get_kernel_cmdline()
2102+
vmm.get_kernel_cmdline_str()
21052103
.contains("root=PARTUUID=0eaa91a0-01")
21062104
);
21072105

@@ -2115,10 +2113,6 @@ mod tests {
21152113
is_read_only: false,
21162114
rate_limiter: None,
21172115
};
2118-
let kernel_file_temp =
2119-
NamedTempFile::new().expect("Failed to create temporary kernel file.");
2120-
let kernel_path = String::from(kernel_file_temp.path().to_path_buf().to_str().unwrap());
2121-
let kernel_file = File::open(kernel_path).unwrap();
21222116

21232117
// Test that creating a new block device returns the correct output.
21242118
match vmm.put_block_device(non_root_block_device.clone()) {
@@ -2127,21 +2121,16 @@ mod tests {
21272121
};
21282122
assert!(vmm.init_guest_memory().is_ok());
21292123
assert!(vmm.guest_memory.is_some());
2130-
let mut cmdline = kernel_cmdline::Cmdline::new(x86_64::layout::CMDLINE_MAX_SIZE);
2131-
assert!(cmdline.insert_str(DEFAULT_KERNEL_CMDLINE).is_ok());
2132-
let kernel_cfg = KernelConfig {
2133-
cmdline,
2134-
kernel_file,
2135-
cmdline_addr: GuestAddress(x86_64::layout::CMDLINE_START),
2136-
};
2137-
vmm.configure_kernel(kernel_cfg);
2124+
2125+
vmm.default_kernel_config();
2126+
21382127
let guest_mem = vmm.guest_memory.clone().unwrap();
21392128
let mut device_manager =
21402129
MMIODeviceManager::new(guest_mem.clone(), x86_64::get_32bit_gap_start() as u64);
21412130
assert!(vmm.attach_block_devices(&mut device_manager).is_ok());
21422131
// Test that kernel commandline does not contain either /dev/vda or PARTUUID.
2143-
assert!(!vmm.get_kernel_cmdline().contains("root=PARTUUID="));
2144-
assert!(!vmm.get_kernel_cmdline().contains("root=/dev/vda"));
2132+
assert!(!vmm.get_kernel_cmdline_str().contains("root=PARTUUID="));
2133+
assert!(!vmm.get_kernel_cmdline_str().contains("root=/dev/vda"));
21452134

21462135
// Test that the non root device is attached.
21472136
assert!(
@@ -2186,11 +2175,10 @@ mod tests {
21862175
#[test]
21872176
fn test_rescan() {
21882177
let mut vmm = create_vmm_object(InstanceState::Uninitialized);
2178+
vmm.default_kernel_config();
2179+
21892180
let root_file = NamedTempFile::new().unwrap();
21902181
let scratch_file = NamedTempFile::new().unwrap();
2191-
let kernel_file_temp = NamedTempFile::new().unwrap();
2192-
let kernel_path = String::from(kernel_file_temp.path().to_path_buf().to_str().unwrap());
2193-
let kernel_file = File::open(kernel_path).unwrap();
21942182

21952183
let root_block_device = BlockDeviceConfig {
21962184
drive_id: String::from("root"),
@@ -2214,22 +2202,19 @@ mod tests {
22142202

22152203
assert!(vmm.init_guest_memory().is_ok());
22162204
assert!(vmm.guest_memory.is_some());
2217-
let mut cmdline = kernel_cmdline::Cmdline::new(x86_64::layout::CMDLINE_MAX_SIZE);
2218-
assert!(cmdline.insert_str(DEFAULT_KERNEL_CMDLINE).is_ok());
2219-
let kernel_cfg = KernelConfig {
2220-
cmdline: cmdline.clone(),
2221-
kernel_file: kernel_file,
2222-
cmdline_addr: GuestAddress(x86_64::layout::CMDLINE_START),
2223-
};
2224-
vmm.configure_kernel(kernel_cfg);
2205+
22252206
let guest_mem = vmm.guest_memory.clone().unwrap();
22262207
let mut device_manager =
22272208
MMIODeviceManager::new(guest_mem.clone(), x86_64::get_32bit_gap_start() as u64);
22282209

22292210
let dummy_box = Box::new(DummyDevice { dummy: 0 });
2211+
// use a dummy command line as it is not used in this test.
22302212
let _addr = device_manager
2231-
.register_device(dummy_box, &mut cmdline, Some(String::from("not_root")))
2232-
.unwrap();
2213+
.register_device(
2214+
dummy_box,
2215+
&mut kernel_cmdline::Cmdline::new(x86_64::layout::CMDLINE_MAX_SIZE),
2216+
Some(String::from("not_root")),
2217+
).unwrap();
22332218

22342219
vmm.mmio_device_manager = Some(device_manager);
22352220

0 commit comments

Comments
 (0)