tests: Make the GuestCommand take a reference to the guest

This will be used fill out default parts of the guest command.

Signed-off-by: Rob Bradford <robert.bradford@intel.com>
This commit is contained in:
Rob Bradford 2020-02-26 15:52:17 +00:00
parent 49e70c6203
commit 9f1ac24bed

View File

@ -713,19 +713,24 @@ mod tests {
}
}
struct GuestCommand {
struct GuestCommand<'a> {
command: Command,
guest: &'a Guest<'a>,
}
impl GuestCommand {
fn new() -> Self {
impl<'a> GuestCommand<'a> {
fn new(guest: &'a Guest) -> Self {
Self {
command: Command::new("target/release/cloud-hypervisor"),
guest,
}
}
fn spawn(&mut self) -> io::Result<Child> {
self.command.stderr(Stdio::piped()).stdout(Stdio::piped()).spawn()
self.command
.stderr(Stdio::piped())
.stdout(Stdio::piped())
.spawn()
}
fn args<I, S>(&mut self, args: I) -> &mut Self
@ -754,7 +759,7 @@ mod tests {
.for_each(|disk_config| {
let guest = Guest::new(*disk_config);
let mut child = GuestCommand::new()
let mut child = GuestCommand::new(&guest)
.args(&["--cpus", "boot=1"])
.args(&["--memory", "size=512M"])
.args(&["--kernel", guest.fw_path.as_str()])
@ -804,7 +809,7 @@ mod tests {
test_block!(tb, "", {
let mut bionic = UbuntuDiskConfig::new(BIONIC_IMAGE_NAME.to_string());
let guest = Guest::new(&mut bionic);
let mut child = GuestCommand::new()
let mut child = GuestCommand::new(&guest)
.args(&["--cpus", "boot=2,max=4"])
.args(&["--memory", "size=512M"])
.args(&["--kernel", guest.fw_path.as_str()])
@ -850,7 +855,7 @@ mod tests {
test_block!(tb, "", {
let mut clear = ClearDiskConfig::new();
let guest = Guest::new(&mut clear);
let mut child = GuestCommand::new()
let mut child = GuestCommand::new(&guest)
.args(&["--cpus", "boot=1"])
.args(&["--memory", "size=5120M"])
.args(&["--kernel", guest.fw_path.as_str()])
@ -888,7 +893,7 @@ mod tests {
test_block!(tb, "", {
let mut clear = ClearDiskConfig::new();
let guest = Guest::new(&mut clear);
let mut child = GuestCommand::new()
let mut child = GuestCommand::new(&guest)
.args(&["--cpus", "boot=1"])
.args(&["--memory", "size=128G"])
.args(&["--kernel", guest.fw_path.as_str()])
@ -929,7 +934,7 @@ mod tests {
test_block!(tb, "", {
let mut clear = ClearDiskConfig::new();
let guest = Guest::new(&mut clear);
let mut child = GuestCommand::new()
let mut child = GuestCommand::new(&guest)
.args(&["--cpus", "boot=1"])
.args(&["--memory", "size=512M"])
.args(&["--kernel", guest.fw_path.as_str()])
@ -982,7 +987,7 @@ mod tests {
let mut kernel_path = workload_path;
kernel_path.push("vmlinux");
let mut child = GuestCommand::new()
let mut child = GuestCommand::new(&guest)
.args(&["--cpus","boot=1"])
.args(&["--memory", "size=512M"])
.args(&["--kernel", kernel_path.to_str().unwrap()])
@ -1041,7 +1046,7 @@ mod tests {
let mut kernel_path = workload_path;
kernel_path.push("bzImage");
let mut child = GuestCommand::new()
let mut child = GuestCommand::new(&guest)
.args(&["--cpus","boot=1"])
.args(&["--memory", "size=512M"])
.args(&["--kernel", kernel_path.to_str().unwrap()])
@ -1098,7 +1103,7 @@ mod tests {
blk_file_path.push("workloads");
blk_file_path.push("blk.img");
let mut cloud_child = GuestCommand::new()
let mut cloud_child = GuestCommand::new(&guest)
.args(&["--cpus", "boot=4"])
.args(&["--memory", "size=512M,file=/dev/shm"])
.args(&["--kernel", guest.fw_path.as_str()])
@ -1191,7 +1196,7 @@ mod tests {
.unwrap();
thread::sleep(std::time::Duration::new(10, 0));
let mut cloud_child = GuestCommand::new()
let mut cloud_child = GuestCommand::new(&guest)
.args(&["--cpus", "boot=4"])
.args(&["--memory", "size=512M,file=/dev/shm"])
.args(&["--kernel", guest.fw_path.as_str()])
@ -1279,7 +1284,7 @@ mod tests {
let mut clear = ClearDiskConfig::new();
let guest = Guest::new(&mut clear);
let mut cloud_child = GuestCommand::new()
let mut cloud_child = GuestCommand::new(&guest)
.args(&["--cpus", "boot=4"])
.args(&["--memory", "size=512M,file=/dev/shm"])
.args(&["--kernel", guest.fw_path.as_str()])
@ -1362,7 +1367,7 @@ mod tests {
let (mut daemon_child, vubd_socket_path) =
prepare_vubd(&guest.tmp_dir, "blk.img", 2, false, false);
let mut cloud_child = GuestCommand::new()
let mut cloud_child = GuestCommand::new(&guest)
.args(&["--cpus", "boot=2"])
.args(&["--memory", "size=512M,file=/dev/shm"])
.args(&["--kernel", guest.fw_path.as_str()])
@ -1453,7 +1458,7 @@ mod tests {
let mut clear = ClearDiskConfig::new();
let guest = Guest::new(&mut clear);
let mut cloud_child = GuestCommand::new()
let mut cloud_child = GuestCommand::new(&guest)
.args(&["--cpus", "boot=2"])
.args(&["--memory", "size=512M,file=/dev/shm"])
.args(&["--kernel", guest.fw_path.as_str()])
@ -1494,7 +1499,7 @@ mod tests {
let (mut daemon_child, vubd_socket_path) =
prepare_vubd(&guest.tmp_dir, "blk.img", 1, true, false);
let mut cloud_child = GuestCommand::new()
let mut cloud_child = GuestCommand::new(&guest)
.args(&["--cpus", "boot=1"])
.args(&["--memory", "size=512M,file=/dev/shm"])
.args(&["--kernel", guest.fw_path.as_str()])
@ -1568,7 +1573,7 @@ mod tests {
let (mut daemon_child, vubd_socket_path) =
prepare_vubd(&guest.tmp_dir, "blk.img", 1, false, true);
let mut cloud_child = GuestCommand::new()
let mut cloud_child = GuestCommand::new(&guest)
.args(&["--cpus", "boot=1"])
.args(&["--memory", "size=512M,file=/dev/shm"])
.args(&["--kernel", guest.fw_path.as_str()])
@ -1639,7 +1644,7 @@ mod tests {
false,
);
let mut cloud_child = GuestCommand::new()
let mut cloud_child = GuestCommand::new(&guest)
.args(&["--cpus", "boot=1"])
.args(&["--memory", "size=512M,file=/dev/shm"])
.args(&["--kernel", guest.fw_path.as_str()])
@ -1686,7 +1691,7 @@ mod tests {
let mut clear = ClearDiskConfig::new();
let guest = Guest::new(&mut clear);
let mut child = GuestCommand::new()
let mut child = GuestCommand::new(&guest)
.args(&["--cpus", "boot=1"])
.args(&["--memory", "size=512M"])
.args(&["--kernel", guest.fw_path.as_str()])
@ -1770,7 +1775,7 @@ mod tests {
virtiofsd_cache,
);
let mut child = GuestCommand::new()
let mut child = GuestCommand::new(&guest)
.args(&["--cpus", "boot=1"])
.args(&["--memory", "size=512M,file=/dev/shm"])
.args(&["--kernel", kernel_path.to_str().unwrap()])
@ -1914,7 +1919,7 @@ mod tests {
let mut kernel_path = workload_path;
kernel_path.push("vmlinux");
let mut child = GuestCommand::new()
let mut child = GuestCommand::new(&guest)
.args(&["--cpus","boot=1"])
.args(&["--memory", "size=512M"])
.args(&["--kernel", kernel_path.to_str().unwrap()])
@ -1977,7 +1982,7 @@ mod tests {
let mut kernel_path = workload_path;
kernel_path.push("vmlinux");
let mut child = GuestCommand::new()
let mut child = GuestCommand::new(&guest)
.args(&["--cpus","boot=1"])
.args(&["--memory", "size=512M"])
.args(&["--kernel", kernel_path.to_str().unwrap()])
@ -2021,7 +2026,7 @@ mod tests {
test_block!(tb, "", {
let mut clear = ClearDiskConfig::new();
let guest = Guest::new(&mut clear);
let mut child = GuestCommand::new()
let mut child = GuestCommand::new(&guest)
.args(&["--cpus", "boot=1"])
.args(&["--memory", "size=512M"])
.args(&["--kernel", guest.fw_path.as_str()])
@ -2074,7 +2079,7 @@ mod tests {
test_block!(tb, "", {
let mut clear = ClearDiskConfig::new();
let guest = Guest::new(&mut clear);
let mut child = GuestCommand::new()
let mut child = GuestCommand::new(&guest)
.args(&["--cpus", "boot=1"])
.args(&["--memory", "size=512M"])
.args(&["--kernel", guest.fw_path.as_str()])
@ -2123,7 +2128,7 @@ mod tests {
test_block!(tb, "", {
let mut clear = ClearDiskConfig::new();
let guest = Guest::new(&mut clear);
let mut child = GuestCommand::new()
let mut child = GuestCommand::new(&guest)
.args(&["--cpus", "boot=1"])
.args(&["--memory", "size=512M"])
.args(&["--kernel", guest.fw_path.as_str()])
@ -2182,7 +2187,7 @@ mod tests {
test_block!(tb, "", {
let mut clear = ClearDiskConfig::new();
let guest = Guest::new(&mut clear);
let mut child = GuestCommand::new()
let mut child = GuestCommand::new(&guest)
.args(&["--cpus", "boot=1"])
.args(&["--memory", "size=512M"])
.args(&["--kernel", guest.fw_path.as_str()])
@ -2243,7 +2248,7 @@ mod tests {
let guest = Guest::new(&mut clear);
let serial_path = guest.tmp_dir.path().join("/tmp/serial-output");
let mut child = GuestCommand::new()
let mut child = GuestCommand::new(&guest)
.args(&["--cpus", "boot=1"])
.args(&["--memory", "size=512M"])
.args(&["--kernel", guest.fw_path.as_str()])
@ -2306,7 +2311,7 @@ mod tests {
let mut clear = ClearDiskConfig::new();
let guest = Guest::new(&mut clear);
let mut child = GuestCommand::new()
let mut child = GuestCommand::new(&guest)
.args(&["--cpus", "boot=1"])
.args(&["--memory", "size=512M"])
.args(&["--kernel", guest.fw_path.as_str()])
@ -2364,7 +2369,7 @@ mod tests {
let guest = Guest::new(&mut clear);
let console_path = guest.tmp_dir.path().join("/tmp/console-output");
let mut child = GuestCommand::new()
let mut child = GuestCommand::new(&guest)
.args(&["--cpus", "boot=1"])
.args(&["--memory", "size=512M"])
.args(&["--kernel", guest.fw_path.as_str()])
@ -2452,7 +2457,7 @@ mod tests {
let (mut daemon_child, virtiofsd_socket_path) =
prepare_virtiofsd(&guest.tmp_dir, vfio_path.to_str().unwrap(), "none");
let mut child = GuestCommand::new()
let mut child = GuestCommand::new(&guest)
.args(&["--cpus", "boot=4"])
.args(&["--memory", "size=1G,file=/dev/hugepages"])
.args(&["--kernel", kernel_path.to_str().unwrap()])
@ -2556,7 +2561,7 @@ mod tests {
let mut kernel_path = workload_path;
kernel_path.push("vmlinux");
let mut child = GuestCommand::new()
let mut child = GuestCommand::new(&guest)
.args(&["--cpus","boot=1"])
.args(&["--memory", "size=512M"])
.args(&["--kernel", kernel_path.to_str().unwrap()])
@ -2618,7 +2623,7 @@ mod tests {
.for_each(|disk_config| {
let guest = Guest::new(*disk_config);
let mut child = GuestCommand::new()
let mut child = GuestCommand::new(&guest)
.args(&["--cpus", "boot=1"])
.args(&["--memory", "size=512M"])
.args(&["--kernel", guest.fw_path.as_str()])
@ -2689,7 +2694,7 @@ mod tests {
let mut kernel_path = workload_path;
kernel_path.push("bzImage");
let mut child = GuestCommand::new()
let mut child = GuestCommand::new(&guest)
.args(&["--cpus","boot=1"])
.args(&["--memory", "size=512M"])
.args(&["--kernel", kernel_path.to_str().unwrap()])
@ -2755,7 +2760,7 @@ mod tests {
let sock = temp_vsock_path(&guest.tmp_dir);
let mut child = GuestCommand::new()
let mut child = GuestCommand::new(&guest)
.args(&["--cpus", "boot=1"])
.args(&["--memory", "size=512M"])
.args(&["--kernel", guest.fw_path.as_str()])
@ -2831,7 +2836,7 @@ mod tests {
let api_socket = temp_api_path(&guest.tmp_dir);
let mut child = GuestCommand::new()
let mut child = GuestCommand::new(&guest)
.args(&["--api-socket", &api_socket])
.spawn()
.unwrap();
@ -2890,7 +2895,7 @@ mod tests {
let api_socket = temp_api_path(&guest.tmp_dir);
let mut child = GuestCommand::new()
let mut child = GuestCommand::new(&guest)
.args(&["--api-socket", &api_socket])
.spawn()
.unwrap();
@ -2984,7 +2989,7 @@ mod tests {
let mut kernel_path = workload_path;
kernel_path.push("bzImage");
let mut child = GuestCommand::new()
let mut child = GuestCommand::new(&guest)
.args(&["--cpus","boot=1"])
.args(&["--memory", "size=512M"])
.args(&["--kernel", kernel_path.to_str().unwrap()])
@ -3070,7 +3075,7 @@ mod tests {
test_block!(tb, "", {
let mut clear = ClearDiskConfig::new();
let guest = Guest::new(&mut clear);
let mut child = GuestCommand::new()
let mut child = GuestCommand::new(&guest)
.args(&["--cpus", "boot=1"])
.args(&["--memory", "size=512M"])
.args(&["--kernel", guest.fw_path.as_str()])
@ -3189,7 +3194,7 @@ mod tests {
let guest1 = Guest::new(&mut clear1 as &mut dyn DiskConfig);
let mut child1 = GuestCommand::new()
let mut child1 = GuestCommand::new(&guest1)
.args(&["--cpus", "boot=1"])
.args(&["--memory", format!("size=512M,{}", memory_param).as_str()])
.args(&["--kernel", guest1.fw_path.as_str()])
@ -3220,7 +3225,7 @@ mod tests {
let guest2 = Guest::new(&mut clear2 as &mut dyn DiskConfig);
let mut child2 = GuestCommand::new()
let mut child2 = GuestCommand::new(&guest2)
.args(&["--cpus", "boot=1"])
.args(&["--memory", format!("size=512M,{}", memory_param).as_str()])
.args(&["--kernel", guest2.fw_path.as_str()])
@ -3296,7 +3301,7 @@ mod tests {
let mut kernel_path = workload_path;
kernel_path.push("vmlinux");
let mut child = GuestCommand::new()
let mut child = GuestCommand::new(&guest)
.args(&["--cpus", "boot=2,max=4"])
.args(&["--memory", "size=512M"])
.args(&["--kernel", kernel_path.to_str().unwrap()])
@ -3402,7 +3407,7 @@ mod tests {
let mut kernel_path = workload_path;
kernel_path.push("vmlinux");
let mut child = GuestCommand::new()
let mut child = GuestCommand::new(&guest)
.args(&["--cpus", "boot=2,max=4"])
.args(&["--memory", "size=512M,hotplug_size=8192M"])
.args(&["--kernel", kernel_path.to_str().unwrap()])
@ -3528,7 +3533,7 @@ mod tests {
let mut kernel_path = workload_path;
kernel_path.push("vmlinux");
let mut child = GuestCommand::new()
let mut child = GuestCommand::new(&guest)
.args(&["--cpus", "boot=2,max=4"])
.args(&["--memory", "size=512M,hotplug_size=8192M"])
.args(&["--kernel", kernel_path.to_str().unwrap()])
@ -3637,7 +3642,7 @@ mod tests {
let guest_memory_size_kb = 512 * 1024;
let mut child = GuestCommand::new()
let mut child = GuestCommand::new(&guest)
.args(&["--cpus","boot=1"])
.args(&["--memory", format!("size={}K", guest_memory_size_kb).as_str()])
.args(&["--kernel", kernel_path.to_str().unwrap()])