tests: Don't swallow SSH errors

When an SSH command fails we want to be able to see, via a panic() why
and where it failed. Replace use of .unwrap_or_default() from SSH
command calls to ensure that we can see the location of the panic.

Also enhance the existing SSH output code to show the error if there is
one.

Signed-off-by: Rob Bradford <robert.bradford@intel.com>
This commit is contained in:
Rob Bradford 2021-01-06 10:56:20 +00:00 committed by Sebastien Boeuf
parent 315a730128
commit c91d25ea64

View File

@ -612,8 +612,9 @@ mod tests {
auth=\"{:#?}\"\n\ auth=\"{:#?}\"\n\
ip=\"{}\"\n\ ip=\"{}\"\n\
output=\"{}\"\n\ output=\"{}\"\n\
error=\"{}\"\n\
\n==== End ssh command outout ====\n\n", \n==== End ssh command outout ====\n\n",
command, auth, ip, s command, auth, ip, s, e
); );
return Err(e); return Err(e);
@ -866,7 +867,7 @@ mod tests {
let mut events = vec![epoll::Event::new(epoll::Events::empty(), 0); 1]; let mut events = vec![epoll::Event::new(epoll::Events::empty(), 0); 1];
loop { loop {
let num_events = let num_events =
match epoll::wait(epoll_fd, timeout * 1000 as i32, &mut events[..]) { match epoll::wait(epoll_fd, timeout * 1000_i32, &mut events[..]) {
Ok(num_events) => Ok(num_events), Ok(num_events) => Ok(num_events),
Err(e) => match e.raw_os_error() { Err(e) => match e.raw_os_error() {
Some(libc::EAGAIN) | Some(libc::EINTR) => continue, Some(libc::EAGAIN) | Some(libc::EINTR) => continue,
@ -923,9 +924,10 @@ mod tests {
duration =\"{:?}, timeout = {}s\"\n\ duration =\"{:?}, timeout = {}s\"\n\
listen_addr=\"{}\"\n\ listen_addr=\"{}\"\n\
expected_guest_addr=\"{}\"\n\ expected_guest_addr=\"{}\"\n\
message =\"{}\"\n\ message=\"{}\"\n\
error=\"{}\"\n\
\n==== End 'wait_vm_boot' outout ====\n\n", \n==== End 'wait_vm_boot' outout ====\n\n",
duration, timeout, listen_addr, expected_guest_addr, s, duration, timeout, listen_addr, expected_guest_addr, s, e
); );
Err(e) Err(e)
@ -1271,7 +1273,7 @@ mod tests {
assert_eq!( assert_eq!(
guest guest
.ssh_command("lscpu | grep \"per core\" | cut -f 2 -d \":\" | sed \"s# *##\"") .ssh_command("lscpu | grep \"per core\" | cut -f 2 -d \":\" | sed \"s# *##\"")
.unwrap_or_default() .unwrap()
.trim() .trim()
.parse::<u8>() .parse::<u8>()
.unwrap_or(0), .unwrap_or(0),
@ -1281,7 +1283,7 @@ mod tests {
assert_eq!( assert_eq!(
guest guest
.ssh_command("lscpu | grep \"per socket\" | cut -f 2 -d \":\" | sed \"s# *##\"") .ssh_command("lscpu | grep \"per socket\" | cut -f 2 -d \":\" | sed \"s# *##\"")
.unwrap_or_default() .unwrap()
.trim() .trim()
.parse::<u8>() .parse::<u8>()
.unwrap_or(0), .unwrap_or(0),
@ -1291,7 +1293,7 @@ mod tests {
assert_eq!( assert_eq!(
guest guest
.ssh_command("lscpu | grep \"Socket\" | cut -f 2 -d \":\" | sed \"s# *##\"") .ssh_command("lscpu | grep \"Socket\" | cut -f 2 -d \":\" | sed \"s# *##\"")
.unwrap_or_default() .unwrap()
.trim() .trim()
.parse::<u8>() .parse::<u8>()
.unwrap_or(0), .unwrap_or(0),
@ -1393,7 +1395,7 @@ mod tests {
assert_eq!( assert_eq!(
guest guest
.ssh_command("ip -o link | wc -l") .ssh_command("ip -o link | wc -l")
.unwrap_or_default() .unwrap()
.trim() .trim()
.parse::<u32>() .parse::<u32>()
.unwrap_or_default(), .unwrap_or_default(),
@ -1416,7 +1418,7 @@ mod tests {
assert_eq!( assert_eq!(
guest guest
.ssh_command(grep_cmd) .ssh_command(grep_cmd)
.unwrap_or_default() .unwrap()
.trim() .trim()
.parse::<u32>() .parse::<u32>()
.unwrap_or_default(), .unwrap_or_default(),
@ -1430,7 +1432,7 @@ mod tests {
.ssh_command( .ssh_command(
"echo online | sudo tee /sys/devices/system/memory/auto_online_blocks", "echo online | sudo tee /sys/devices/system/memory/auto_online_blocks",
) )
.unwrap_or_default(); .unwrap();
// Add RAM to the VM // Add RAM to the VM
let desired_ram = 1024 << 20; let desired_ram = 1024 << 20;
@ -1522,7 +1524,7 @@ mod tests {
assert_eq!( assert_eq!(
guest guest
.ssh_command("lsblk | grep vdc | grep -c 16M") .ssh_command("lsblk | grep vdc | grep -c 16M")
.unwrap_or_default() .unwrap()
.trim() .trim()
.parse::<u32>() .parse::<u32>()
.unwrap_or_default(), .unwrap_or_default(),
@ -1533,7 +1535,7 @@ mod tests {
assert_eq!( assert_eq!(
guest guest
.ssh_command("lsblk | grep vdc | awk '{print $5}'") .ssh_command("lsblk | grep vdc | awk '{print $5}'")
.unwrap_or_default() .unwrap()
.trim() .trim()
.parse::<u32>() .parse::<u32>()
.unwrap_or_default(), .unwrap_or_default(),
@ -1545,7 +1547,7 @@ mod tests {
assert_eq!( assert_eq!(
guest guest
.ssh_command("ls -ll /sys/block/vdc/mq | grep ^d | wc -l") .ssh_command("ls -ll /sys/block/vdc/mq | grep ^d | wc -l")
.unwrap_or_default() .unwrap()
.trim() .trim()
.parse::<u32>() .parse::<u32>()
.unwrap_or_default(), .unwrap_or_default(),
@ -1568,10 +1570,7 @@ mod tests {
// Check the content of the block device. The file "foo" should // Check the content of the block device. The file "foo" should
// contain "bar". // contain "bar".
assert_eq!( assert_eq!(
guest guest.ssh_command("cat mount_image/foo").unwrap().trim(),
.ssh_command("cat mount_image/foo")
.unwrap_or_default()
.trim(),
"bar" "bar"
); );
@ -1582,7 +1581,7 @@ mod tests {
.ssh_command( .ssh_command(
"echo online | sudo tee /sys/devices/system/memory/auto_online_blocks", "echo online | sudo tee /sys/devices/system/memory/auto_online_blocks",
) )
.unwrap_or_default(); .unwrap();
// Add RAM to the VM // Add RAM to the VM
let desired_ram = 1024 << 20; let desired_ram = 1024 << 20;
@ -1595,10 +1594,7 @@ mod tests {
// Check again the content of the block device after the resize // Check again the content of the block device after the resize
// has been performed. // has been performed.
assert_eq!( assert_eq!(
guest guest.ssh_command("cat mount_image/foo").unwrap().trim(),
.ssh_command("cat mount_image/foo")
.unwrap_or_default()
.trim(),
"bar" "bar"
); );
} }
@ -1771,10 +1767,7 @@ mod tests {
echo ok", echo ok",
dax_mount_param dax_mount_param
); );
assert_eq!( assert_eq!(guest.ssh_command(&mount_cmd).unwrap().trim(), "ok");
guest.ssh_command(&mount_cmd).unwrap_or_default().trim(),
"ok"
);
assert_eq!( assert_eq!(
guest guest
@ -1784,26 +1777,17 @@ mod tests {
); );
// Check file1 exists and its content is "foo" // Check file1 exists and its content is "foo"
assert_eq!( assert_eq!(
guest guest.ssh_command("cat mount_dir/file1").unwrap().trim(),
.ssh_command("cat mount_dir/file1")
.unwrap_or_default()
.trim(),
"foo" "foo"
); );
// Check file2 does not exist // Check file2 does not exist
assert_ne!( assert_ne!(
guest guest.ssh_command("ls mount_dir/file2").unwrap().trim(),
.ssh_command("ls mount_dir/file2")
.unwrap_or_default()
.trim(),
"mount_dir/file2" "mount_dir/file2"
); );
// Check file3 exists and its content is "bar" // Check file3 exists and its content is "bar"
assert_eq!( assert_eq!(
guest guest.ssh_command("cat mount_dir/file3").unwrap().trim(),
.ssh_command("cat mount_dir/file3")
.unwrap_or_default()
.trim(),
"bar" "bar"
); );
@ -1814,7 +1798,7 @@ mod tests {
.ssh_command( .ssh_command(
"echo online | sudo tee /sys/devices/system/memory/auto_online_blocks", "echo online | sudo tee /sys/devices/system/memory/auto_online_blocks",
) )
.unwrap_or_default(); .unwrap();
// Add RAM to the VM // Add RAM to the VM
let desired_ram = 1024 << 20; let desired_ram = 1024 << 20;
@ -1826,10 +1810,7 @@ mod tests {
// After the resize, check again that file1 exists and its // After the resize, check again that file1 exists and its
// content is "foo". // content is "foo".
assert_eq!( assert_eq!(
guest guest.ssh_command("cat mount_dir/file1").unwrap().trim(),
.ssh_command("cat mount_dir/file1")
.unwrap_or_default()
.trim(),
"foo" "foo"
); );
} }
@ -1839,7 +1820,7 @@ mod tests {
assert_eq!( assert_eq!(
guest guest
.ssh_command("sudo umount mount_dir && echo ok") .ssh_command("sudo umount mount_dir && echo ok")
.unwrap_or_default() .unwrap()
.trim(), .trim(),
"ok" "ok"
); );
@ -1876,16 +1857,10 @@ mod tests {
echo ok", echo ok",
dax_mount_param dax_mount_param
); );
assert_eq!( assert_eq!(guest.ssh_command(&mount_cmd).unwrap().trim(), "ok");
guest.ssh_command(&mount_cmd).unwrap_or_default().trim(),
"ok"
);
// Check file1 exists and its content is "foo" // Check file1 exists and its content is "foo"
assert_eq!( assert_eq!(
guest guest.ssh_command("cat mount_dir/file1").unwrap().trim(),
.ssh_command("cat mount_dir/file1")
.unwrap_or_default()
.trim(),
"foo" "foo"
); );
}); });
@ -1956,10 +1931,7 @@ mod tests {
// Check for the presence of /dev/pmem0 // Check for the presence of /dev/pmem0
assert_eq!( assert_eq!(
guest guest.ssh_command("ls /dev/pmem0").unwrap().trim(),
.ssh_command("ls /dev/pmem0")
.unwrap_or_default()
.trim(),
"/dev/pmem0" "/dev/pmem0"
); );
@ -1976,17 +1948,14 @@ mod tests {
guest.wait_vm_boot(None).unwrap(); guest.wait_vm_boot(None).unwrap();
let reboot_count = guest let reboot_count = guest
.ssh_command("sudo journalctl | grep -c -- \"-- Reboot --\"") .ssh_command("sudo journalctl | grep -c -- \"-- Reboot --\"")
.unwrap_or_default() .unwrap()
.trim() .trim()
.parse::<u32>() .parse::<u32>()
.unwrap_or_default(); .unwrap_or_default();
assert_eq!(reboot_count, 1); assert_eq!(reboot_count, 1);
assert_eq!(guest.ssh_command("sudo mount /dev/pmem0 /mnt").unwrap(), ""); assert_eq!(guest.ssh_command("sudo mount /dev/pmem0 /mnt").unwrap(), "");
assert_eq!( assert_eq!(
guest guest.ssh_command("sudo cat /mnt/test").unwrap().trim(),
.ssh_command("sudo cat /mnt/test")
.unwrap_or_default()
.trim(),
if discard_writes { "" } else { "test123" } if discard_writes { "" } else { "test123" }
); );
}); });
@ -2058,18 +2027,18 @@ mod tests {
{ {
let reboot_count = guest let reboot_count = guest
.ssh_command("sudo journalctl | grep -c -- \"-- Reboot --\"") .ssh_command("sudo journalctl | grep -c -- \"-- Reboot --\"")
.unwrap_or_default() .unwrap()
.trim() .trim()
.parse::<u32>() .parse::<u32>()
.unwrap_or(1); .unwrap_or(1);
assert_eq!(reboot_count, 0); assert_eq!(reboot_count, 0);
guest.ssh_command("sudo reboot").unwrap_or_default(); guest.ssh_command("sudo reboot").unwrap();
guest.wait_vm_boot(None).unwrap(); guest.wait_vm_boot(None).unwrap();
let reboot_count = guest let reboot_count = guest
.ssh_command("sudo journalctl | grep -c -- \"-- Reboot --\"") .ssh_command("sudo journalctl | grep -c -- \"-- Reboot --\"")
.unwrap_or_default() .unwrap()
.trim() .trim()
.parse::<u32>() .parse::<u32>()
.unwrap_or_default(); .unwrap_or_default();
@ -2351,7 +2320,7 @@ mod tests {
.ssh_command( .ssh_command(
r#"dmesg | grep "smpboot: Allowing" | sed "s/\[\ *[0-9.]*\] //""# r#"dmesg | grep "smpboot: Allowing" | sed "s/\[\ *[0-9.]*\] //""#
) )
.unwrap_or_default() .unwrap()
.trim(), .trim(),
"smpboot: Allowing 4 CPUs, 2 hotplug CPUs" "smpboot: Allowing 4 CPUs, 2 hotplug CPUs"
); );
@ -2361,7 +2330,7 @@ mod tests {
.ssh_command( .ssh_command(
r#"dmesg | grep "smp: Brought up" | sed "s/\[\ *[0-9.]*\] //""# r#"dmesg | grep "smp: Brought up" | sed "s/\[\ *[0-9.]*\] //""#
) )
.unwrap_or_default() .unwrap()
.trim(), .trim(),
"smp: Brought up 1 node, 2 CPUs" "smp: Brought up 1 node, 2 CPUs"
); );
@ -2417,7 +2386,7 @@ mod tests {
assert!( assert!(
guest guest
.ssh_command("lscpu | grep \"Address sizes:\" | cut -f 2 -d \":\" | sed \"s# *##\" | cut -f 1 -d \" \"") .ssh_command("lscpu | grep \"Address sizes:\" | cut -f 2 -d \":\" | sed \"s# *##\" | cut -f 1 -d \" \"")
.unwrap_or_default() .unwrap()
.trim() .trim()
.parse::<u8>() .parse::<u8>()
.unwrap_or(max_phys_bits + 1) <= max_phys_bits, .unwrap_or(max_phys_bits + 1) <= max_phys_bits,
@ -2532,7 +2501,7 @@ mod tests {
.ssh_command( .ssh_command(
"echo online | sudo tee /sys/devices/system/memory/auto_online_blocks", "echo online | sudo tee /sys/devices/system/memory/auto_online_blocks",
) )
.unwrap_or_default(); .unwrap();
resize_zone_command(&api_socket, "mem0", "3G"); resize_zone_command(&api_socket, "mem0", "3G");
thread::sleep(std::time::Duration::new(5, 0)); thread::sleep(std::time::Duration::new(5, 0));
@ -2551,7 +2520,7 @@ mod tests {
guest.wait_vm_boot(None).unwrap(); guest.wait_vm_boot(None).unwrap();
let reboot_count = guest let reboot_count = guest
.ssh_command("sudo journalctl | grep -c -- \"-- Reboot --\"") .ssh_command("sudo journalctl | grep -c -- \"-- Reboot --\"")
.unwrap_or_default() .unwrap()
.trim() .trim()
.parse::<u32>() .parse::<u32>()
.unwrap_or_default(); .unwrap_or_default();
@ -2636,7 +2605,7 @@ mod tests {
.ssh_command( .ssh_command(
"echo online | sudo tee /sys/devices/system/memory/auto_online_blocks", "echo online | sudo tee /sys/devices/system/memory/auto_online_blocks",
) )
.unwrap_or_default(); .unwrap();
// Resize every memory zone and check each associated NUMA node // Resize every memory zone and check each associated NUMA node
// has been assigned the right amount of memory. // has been assigned the right amount of memory.
@ -2686,7 +2655,7 @@ mod tests {
assert_eq!( assert_eq!(
guest guest
.ssh_command(grep_cmd) .ssh_command(grep_cmd)
.unwrap_or_default() .unwrap()
.trim() .trim()
.parse::<u32>() .parse::<u32>()
.unwrap_or_default(), .unwrap_or_default(),
@ -2731,7 +2700,7 @@ mod tests {
assert_eq!( assert_eq!(
guest guest
.ssh_command("grep -c PCI-MSI /proc/interrupts") .ssh_command("grep -c PCI-MSI /proc/interrupts")
.unwrap_or_default() .unwrap()
.trim() .trim()
.parse::<u32>() .parse::<u32>()
.unwrap_or_default(), .unwrap_or_default(),
@ -2823,7 +2792,7 @@ mod tests {
assert_eq!( assert_eq!(
guest guest
.ssh_command("grep -c PCI-MSI /proc/interrupts") .ssh_command("grep -c PCI-MSI /proc/interrupts")
.unwrap_or_default() .unwrap()
.trim() .trim()
.parse::<u32>() .parse::<u32>()
.unwrap_or_default(), .unwrap_or_default(),
@ -2869,7 +2838,7 @@ mod tests {
assert_eq!( assert_eq!(
guest guest
.ssh_command("grep -c PCI-MSI /proc/interrupts") .ssh_command("grep -c PCI-MSI /proc/interrupts")
.unwrap_or_default() .unwrap()
.trim() .trim()
.parse::<u32>() .parse::<u32>()
.unwrap_or_default(), .unwrap_or_default(),
@ -2931,7 +2900,7 @@ mod tests {
assert_eq!( assert_eq!(
guest guest
.ssh_command("lsblk | grep vdc | grep -c 16M") .ssh_command("lsblk | grep vdc | grep -c 16M")
.unwrap_or_default() .unwrap()
.trim() .trim()
.parse::<u32>() .parse::<u32>()
.unwrap_or_default(), .unwrap_or_default(),
@ -2942,7 +2911,7 @@ mod tests {
assert_eq!( assert_eq!(
guest guest
.ssh_command("lsblk | grep vdc | awk '{print $5}'") .ssh_command("lsblk | grep vdc | awk '{print $5}'")
.unwrap_or_default() .unwrap()
.trim() .trim()
.parse::<u32>() .parse::<u32>()
.unwrap_or_default(), .unwrap_or_default(),
@ -2953,7 +2922,7 @@ mod tests {
assert_eq!( assert_eq!(
guest guest
.ssh_command("ls -ll /sys/block/vdc/mq | grep ^d | wc -l") .ssh_command("ls -ll /sys/block/vdc/mq | grep ^d | wc -l")
.unwrap_or_default() .unwrap()
.trim() .trim()
.parse::<u32>() .parse::<u32>()
.unwrap_or_default(), .unwrap_or_default(),
@ -3073,7 +3042,7 @@ mod tests {
assert_eq!( assert_eq!(
guest guest
.ssh_command("cat /proc/interrupts | grep 'IO-APIC' | grep -c 'timer'") .ssh_command("cat /proc/interrupts | grep 'IO-APIC' | grep -c 'timer'")
.unwrap_or_default() .unwrap()
.trim() .trim()
.parse::<u32>() .parse::<u32>()
.unwrap_or(1), .unwrap_or(1),
@ -3082,7 +3051,7 @@ mod tests {
assert_eq!( assert_eq!(
guest guest
.ssh_command("cat /proc/interrupts | grep 'IO-APIC' | grep -c 'cascade'") .ssh_command("cat /proc/interrupts | grep 'IO-APIC' | grep -c 'cascade'")
.unwrap_or_default() .unwrap()
.trim() .trim()
.parse::<u32>() .parse::<u32>()
.unwrap_or(1), .unwrap_or(1),
@ -3279,7 +3248,7 @@ mod tests {
assert_eq!( assert_eq!(
guest guest
.ssh_command("ip -o link | wc -l") .ssh_command("ip -o link | wc -l")
.unwrap_or_default() .unwrap()
.trim() .trim()
.parse::<u32>() .parse::<u32>()
.unwrap_or_default(), .unwrap_or_default(),
@ -3323,7 +3292,7 @@ mod tests {
assert_eq!( assert_eq!(
guest guest
.ssh_command("cat /proc/interrupts | grep 'IO-APIC' | grep -c 'ttyS0'") .ssh_command("cat /proc/interrupts | grep 'IO-APIC' | grep -c 'ttyS0'")
.unwrap_or_default() .unwrap()
.trim() .trim()
.parse::<u32>() .parse::<u32>()
.unwrap_or(1), .unwrap_or(1),
@ -3370,7 +3339,7 @@ mod tests {
assert_eq!( assert_eq!(
guest guest
.ssh_command("cat /proc/interrupts | grep 'IO-APIC' | grep -c 'ttyS0'") .ssh_command("cat /proc/interrupts | grep 'IO-APIC' | grep -c 'ttyS0'")
.unwrap_or_default() .unwrap()
.trim() .trim()
.parse::<u32>() .parse::<u32>()
.unwrap_or_default(), .unwrap_or_default(),
@ -3425,7 +3394,7 @@ mod tests {
assert_eq!( assert_eq!(
guest guest
.ssh_command("cat /proc/interrupts | grep 'IO-APIC' | grep -c 'ttyS0'") .ssh_command("cat /proc/interrupts | grep 'IO-APIC' | grep -c 'ttyS0'")
.unwrap_or_default() .unwrap()
.trim() .trim()
.parse::<u32>() .parse::<u32>()
.unwrap_or_default(), .unwrap_or_default(),
@ -3484,7 +3453,7 @@ mod tests {
assert_eq!( assert_eq!(
guest guest
.ssh_command("cat /proc/interrupts | grep 'IO-APIC' | grep -c 'ttyS0'") .ssh_command("cat /proc/interrupts | grep 'IO-APIC' | grep -c 'ttyS0'")
.unwrap_or_default() .unwrap()
.trim() .trim()
.parse::<u32>() .parse::<u32>()
.unwrap_or_default(), .unwrap_or_default(),
@ -3728,7 +3697,7 @@ mod tests {
assert_eq!( assert_eq!(
guest guest
.ssh_command_l2_1("grep -c VFIOTAG /proc/cmdline") .ssh_command_l2_1("grep -c VFIOTAG /proc/cmdline")
.unwrap_or_default() .unwrap()
.trim() .trim()
.parse::<u32>() .parse::<u32>()
.unwrap_or_default(), .unwrap_or_default(),
@ -3740,7 +3709,7 @@ mod tests {
assert_eq!( assert_eq!(
guest guest
.ssh_command_l2_2("grep -c VFIOTAG /proc/cmdline") .ssh_command_l2_2("grep -c VFIOTAG /proc/cmdline")
.unwrap_or_default() .unwrap()
.trim() .trim()
.parse::<u32>() .parse::<u32>()
.unwrap_or_default(), .unwrap_or_default(),
@ -3751,7 +3720,7 @@ mod tests {
assert_eq!( assert_eq!(
guest guest
.ssh_command_l2_1("ls /sys/bus/pci/devices | wc -l") .ssh_command_l2_1("ls /sys/bus/pci/devices | wc -l")
.unwrap_or_default() .unwrap()
.trim() .trim()
.parse::<u32>() .parse::<u32>()
.unwrap_or_default(), .unwrap_or_default(),
@ -3786,7 +3755,7 @@ mod tests {
assert_eq!( assert_eq!(
guest guest
.ssh_command_l2_3("grep -c VFIOTAG /proc/cmdline") .ssh_command_l2_3("grep -c VFIOTAG /proc/cmdline")
.unwrap_or_default() .unwrap()
.trim() .trim()
.parse::<u32>() .parse::<u32>()
.unwrap_or_default(), .unwrap_or_default(),
@ -3799,7 +3768,7 @@ mod tests {
assert_eq!( assert_eq!(
guest guest
.ssh_command_l2_1("ls /sys/bus/pci/devices | wc -l") .ssh_command_l2_1("ls /sys/bus/pci/devices | wc -l")
.unwrap_or_default() .unwrap()
.trim() .trim()
.parse::<u32>() .parse::<u32>()
.unwrap_or_default(), .unwrap_or_default(),
@ -3823,7 +3792,7 @@ mod tests {
assert_eq!( assert_eq!(
guest guest
.ssh_command_l2_1("ls /sys/bus/pci/devices | wc -l") .ssh_command_l2_1("ls /sys/bus/pci/devices | wc -l")
.unwrap_or_default() .unwrap()
.trim() .trim()
.parse::<u32>() .parse::<u32>()
.unwrap_or_default(), .unwrap_or_default(),
@ -3924,20 +3893,20 @@ mod tests {
let reboot_count = guest let reboot_count = guest
.ssh_command("sudo journalctl | grep -c -- \"-- Reboot --\"") .ssh_command("sudo journalctl | grep -c -- \"-- Reboot --\"")
.unwrap_or_default() .unwrap()
.trim() .trim()
.parse::<u32>() .parse::<u32>()
.unwrap_or(1); .unwrap_or(1);
let fd_count_1 = get_fd_count(child.id()); let fd_count_1 = get_fd_count(child.id());
assert_eq!(reboot_count, 0); assert_eq!(reboot_count, 0);
guest.ssh_command("sudo reboot").unwrap_or_default(); guest.ssh_command("sudo reboot").unwrap();
guest.wait_vm_boot(Some(120)).unwrap(); guest.wait_vm_boot(Some(120)).unwrap();
let reboot_count = guest let reboot_count = guest
.ssh_command("sudo journalctl | grep -c -- \"-- Reboot --\"") .ssh_command("sudo journalctl | grep -c -- \"-- Reboot --\"")
.unwrap_or_default() .unwrap()
.trim() .trim()
.parse::<u32>() .parse::<u32>()
.unwrap_or_default(); .unwrap_or_default();
@ -3945,9 +3914,7 @@ mod tests {
assert_eq!(reboot_count, 1); assert_eq!(reboot_count, 1);
assert_eq!(fd_count_1, fd_count_2); assert_eq!(fd_count_1, fd_count_2);
guest guest.ssh_command("sudo shutdown -h now").unwrap();
.ssh_command("sudo shutdown -h now")
.unwrap_or_default();
}); });
let _ = child.wait_timeout(std::time::Duration::from_secs(40)); let _ = child.wait_timeout(std::time::Duration::from_secs(40));
@ -3991,7 +3958,7 @@ mod tests {
let reboot_count = guest let reboot_count = guest
.ssh_command("journalctl | grep -c -- \"-- Reboot --\"") .ssh_command("journalctl | grep -c -- \"-- Reboot --\"")
.unwrap_or_default() .unwrap()
.trim() .trim()
.parse::<u32>() .parse::<u32>()
.unwrap_or(1); .unwrap_or(1);
@ -4004,7 +3971,7 @@ mod tests {
let reboot_count = guest let reboot_count = guest
.ssh_command("sudo journalctl | grep -c -- \"-- Reboot --\"") .ssh_command("sudo journalctl | grep -c -- \"-- Reboot --\"")
.unwrap_or_default() .unwrap()
.trim() .trim()
.parse::<u32>() .parse::<u32>()
.unwrap_or_default(); .unwrap_or_default();
@ -4290,7 +4257,7 @@ mod tests {
assert_eq!( assert_eq!(
guest guest
.ssh_command("ip -o link | wc -l") .ssh_command("ip -o link | wc -l")
.unwrap_or_default() .unwrap()
.trim() .trim()
.parse::<u32>() .parse::<u32>()
.unwrap_or_default(), .unwrap_or_default(),
@ -4310,7 +4277,7 @@ mod tests {
assert_eq!( assert_eq!(
guest guest
.ssh_command("ip -o link | wc -l") .ssh_command("ip -o link | wc -l")
.unwrap_or_default() .unwrap()
.trim() .trim()
.parse::<u32>() .parse::<u32>()
.unwrap_or_default(), .unwrap_or_default(),
@ -4326,7 +4293,7 @@ mod tests {
assert_eq!( assert_eq!(
guest guest
.ssh_command("ip -o link | wc -l") .ssh_command("ip -o link | wc -l")
.unwrap_or_default() .unwrap()
.trim() .trim()
.parse::<u32>() .parse::<u32>()
.unwrap_or_default(), .unwrap_or_default(),
@ -4400,18 +4367,18 @@ mod tests {
let reboot_count = guest let reboot_count = guest
.ssh_command("sudo journalctl | grep -c -- \"-- Reboot --\"") .ssh_command("sudo journalctl | grep -c -- \"-- Reboot --\"")
.unwrap_or_default() .unwrap()
.trim() .trim()
.parse::<u32>() .parse::<u32>()
.unwrap_or(1); .unwrap_or(1);
assert_eq!(reboot_count, 0); assert_eq!(reboot_count, 0);
guest.ssh_command("sudo reboot").unwrap_or_default(); guest.ssh_command("sudo reboot").unwrap();
guest.wait_vm_boot(None).unwrap(); guest.wait_vm_boot(None).unwrap();
let reboot_count = guest let reboot_count = guest
.ssh_command("sudo journalctl | grep -c -- \"-- Reboot --\"") .ssh_command("sudo journalctl | grep -c -- \"-- Reboot --\"")
.unwrap_or_default() .unwrap()
.trim() .trim()
.parse::<u32>() .parse::<u32>()
.unwrap_or_default(); .unwrap_or_default();
@ -4488,7 +4455,7 @@ mod tests {
.ssh_command( .ssh_command(
"echo online | sudo tee /sys/devices/system/memory/auto_online_blocks", "echo online | sudo tee /sys/devices/system/memory/auto_online_blocks",
) )
.unwrap_or_default(); .unwrap();
// Add RAM to the VM // Add RAM to the VM
let desired_ram = 1024 << 20; let desired_ram = 1024 << 20;
@ -4507,18 +4474,18 @@ mod tests {
let reboot_count = guest let reboot_count = guest
.ssh_command("sudo journalctl | grep -c -- \"-- Reboot --\"") .ssh_command("sudo journalctl | grep -c -- \"-- Reboot --\"")
.unwrap_or_default() .unwrap()
.trim() .trim()
.parse::<u32>() .parse::<u32>()
.unwrap_or(1); .unwrap_or(1);
assert_eq!(reboot_count, 0); assert_eq!(reboot_count, 0);
guest.ssh_command("sudo reboot").unwrap_or_default(); guest.ssh_command("sudo reboot").unwrap();
guest.wait_vm_boot(None).unwrap(); guest.wait_vm_boot(None).unwrap();
let reboot_count = guest let reboot_count = guest
.ssh_command("sudo journalctl | grep -c -- \"-- Reboot --\"") .ssh_command("sudo journalctl | grep -c -- \"-- Reboot --\"")
.unwrap_or_default() .unwrap()
.trim() .trim()
.parse::<u32>() .parse::<u32>()
.unwrap_or_default(); .unwrap_or_default();
@ -4538,7 +4505,7 @@ mod tests {
.ssh_command( .ssh_command(
"echo online | sudo tee /sys/devices/system/memory/auto_online_blocks", "echo online | sudo tee /sys/devices/system/memory/auto_online_blocks",
) )
.unwrap_or_default(); .unwrap();
// Add RAM to the VM // Add RAM to the VM
let desired_ram = 2048 << 20; let desired_ram = 2048 << 20;
@ -4551,12 +4518,12 @@ mod tests {
let desired_ram = 1024 << 20; let desired_ram = 1024 << 20;
resize_command(&api_socket, None, Some(desired_ram), None); resize_command(&api_socket, None, Some(desired_ram), None);
guest.ssh_command("sudo reboot").unwrap_or_default(); guest.ssh_command("sudo reboot").unwrap();
guest.wait_vm_boot(None).unwrap(); guest.wait_vm_boot(None).unwrap();
let reboot_count = guest let reboot_count = guest
.ssh_command("sudo journalctl | grep -c -- \"-- Reboot --\"") .ssh_command("sudo journalctl | grep -c -- \"-- Reboot --\"")
.unwrap_or_default() .unwrap()
.trim() .trim()
.parse::<u32>() .parse::<u32>()
.unwrap_or_default(); .unwrap_or_default();
@ -4607,7 +4574,7 @@ mod tests {
.ssh_command( .ssh_command(
"echo online | sudo tee /sys/devices/system/memory/auto_online_blocks", "echo online | sudo tee /sys/devices/system/memory/auto_online_blocks",
) )
.unwrap_or_default(); .unwrap();
// Add RAM to the VM // Add RAM to the VM
let desired_ram = 1024 << 20; let desired_ram = 1024 << 20;
@ -4635,7 +4602,7 @@ mod tests {
guest.wait_vm_boot(None).unwrap(); guest.wait_vm_boot(None).unwrap();
let reboot_count = guest let reboot_count = guest
.ssh_command("sudo journalctl | grep -c -- \"-- Reboot --\"") .ssh_command("sudo journalctl | grep -c -- \"-- Reboot --\"")
.unwrap_or_default() .unwrap()
.trim() .trim()
.parse::<u32>() .parse::<u32>()
.unwrap_or_default(); .unwrap_or_default();
@ -4693,7 +4660,7 @@ mod tests {
.ssh_command( .ssh_command(
"echo online | sudo tee /sys/devices/system/memory/auto_online_blocks", "echo online | sudo tee /sys/devices/system/memory/auto_online_blocks",
) )
.unwrap_or_default(); .unwrap();
// Resize the VM // Resize the VM
let desired_vcpus = 4; let desired_vcpus = 4;
@ -4794,7 +4761,7 @@ mod tests {
assert_eq!( assert_eq!(
guest guest
.ssh_command("lsblk | grep vdc | grep -c 16M") .ssh_command("lsblk | grep vdc | grep -c 16M")
.unwrap_or_default() .unwrap()
.trim() .trim()
.parse::<u32>() .parse::<u32>()
.unwrap_or(1), .unwrap_or(1),
@ -4820,7 +4787,7 @@ mod tests {
assert_eq!( assert_eq!(
guest guest
.ssh_command("lsblk | grep vdc | grep -c 16M") .ssh_command("lsblk | grep vdc | grep -c 16M")
.unwrap_or_default() .unwrap()
.trim() .trim()
.parse::<u32>() .parse::<u32>()
.unwrap_or_default(), .unwrap_or_default(),
@ -4838,7 +4805,7 @@ mod tests {
assert_eq!( assert_eq!(
guest guest
.ssh_command("lsblk | grep vdc | grep -c 16M") .ssh_command("lsblk | grep vdc | grep -c 16M")
.unwrap_or_default() .unwrap()
.trim() .trim()
.parse::<u32>() .parse::<u32>()
.unwrap_or(1), .unwrap_or(1),
@ -4861,7 +4828,7 @@ mod tests {
assert_eq!( assert_eq!(
guest guest
.ssh_command("lsblk | grep vdc | grep -c 16M") .ssh_command("lsblk | grep vdc | grep -c 16M")
.unwrap_or_default() .unwrap()
.trim() .trim()
.parse::<u32>() .parse::<u32>()
.unwrap_or_default(), .unwrap_or_default(),
@ -4873,13 +4840,13 @@ mod tests {
.is_ok()); .is_ok());
// Reboot the VM. // Reboot the VM.
guest.ssh_command("sudo reboot").unwrap_or_default(); guest.ssh_command("sudo reboot").unwrap();
guest.wait_vm_boot(None).unwrap(); guest.wait_vm_boot(None).unwrap();
let reboot_count = guest let reboot_count = guest
.ssh_command("sudo journalctl | grep -c -- \"-- Reboot --\"") .ssh_command("sudo journalctl | grep -c -- \"-- Reboot --\"")
.unwrap_or_default() .unwrap()
.trim() .trim()
.parse::<u32>() .parse::<u32>()
.unwrap_or_default(); .unwrap_or_default();
@ -4889,7 +4856,7 @@ mod tests {
assert_eq!( assert_eq!(
guest guest
.ssh_command("lsblk | grep vdc | grep -c 16M") .ssh_command("lsblk | grep vdc | grep -c 16M")
.unwrap_or_default() .unwrap()
.trim() .trim()
.parse::<u32>() .parse::<u32>()
.unwrap_or_default(), .unwrap_or_default(),
@ -4904,20 +4871,20 @@ mod tests {
assert_eq!( assert_eq!(
guest guest
.ssh_command("lsblk | grep vdc | grep -c 16M") .ssh_command("lsblk | grep vdc | grep -c 16M")
.unwrap_or_default() .unwrap()
.trim() .trim()
.parse::<u32>() .parse::<u32>()
.unwrap_or(1), .unwrap_or(1),
0 0
); );
guest.ssh_command("sudo reboot").unwrap_or_default(); guest.ssh_command("sudo reboot").unwrap();
guest.wait_vm_boot(None).unwrap(); guest.wait_vm_boot(None).unwrap();
let reboot_count = guest let reboot_count = guest
.ssh_command("sudo journalctl | grep -c -- \"-- Reboot --\"") .ssh_command("sudo journalctl | grep -c -- \"-- Reboot --\"")
.unwrap_or_default() .unwrap()
.trim() .trim()
.parse::<u32>() .parse::<u32>()
.unwrap_or_default(); .unwrap_or_default();
@ -4927,7 +4894,7 @@ mod tests {
assert_eq!( assert_eq!(
guest guest
.ssh_command("lsblk | grep vdc | grep -c 16M") .ssh_command("lsblk | grep vdc | grep -c 16M")
.unwrap_or_default() .unwrap()
.trim() .trim()
.parse::<u32>() .parse::<u32>()
.unwrap_or(1), .unwrap_or(1),
@ -4973,7 +4940,7 @@ mod tests {
assert_eq!( assert_eq!(
guest guest
.ssh_command("lsblk | grep -c pmem0") .ssh_command("lsblk | grep -c pmem0")
.unwrap_or_default() .unwrap()
.trim() .trim()
.parse::<u32>() .parse::<u32>()
.unwrap_or(1), .unwrap_or(1),
@ -4998,20 +4965,20 @@ mod tests {
assert_eq!( assert_eq!(
guest guest
.ssh_command("lsblk | grep pmem0 | grep -c 128M") .ssh_command("lsblk | grep pmem0 | grep -c 128M")
.unwrap_or_default() .unwrap()
.trim() .trim()
.parse::<u32>() .parse::<u32>()
.unwrap_or_default(), .unwrap_or_default(),
1 1
); );
guest.ssh_command("sudo reboot").unwrap_or_default(); guest.ssh_command("sudo reboot").unwrap();
guest.wait_vm_boot(None).unwrap(); guest.wait_vm_boot(None).unwrap();
let reboot_count = guest let reboot_count = guest
.ssh_command("sudo journalctl | grep -c -- \"-- Reboot --\"") .ssh_command("sudo journalctl | grep -c -- \"-- Reboot --\"")
.unwrap_or_default() .unwrap()
.trim() .trim()
.parse::<u32>() .parse::<u32>()
.unwrap_or_default(); .unwrap_or_default();
@ -5021,7 +4988,7 @@ mod tests {
assert_eq!( assert_eq!(
guest guest
.ssh_command("lsblk | grep pmem0 | grep -c 128M") .ssh_command("lsblk | grep pmem0 | grep -c 128M")
.unwrap_or_default() .unwrap()
.trim() .trim()
.parse::<u32>() .parse::<u32>()
.unwrap_or_default(), .unwrap_or_default(),
@ -5036,20 +5003,20 @@ mod tests {
assert_eq!( assert_eq!(
guest guest
.ssh_command("lsblk | grep pmem0 | grep -c 128M") .ssh_command("lsblk | grep pmem0 | grep -c 128M")
.unwrap_or_default() .unwrap()
.trim() .trim()
.parse::<u32>() .parse::<u32>()
.unwrap_or(1), .unwrap_or(1),
0 0
); );
guest.ssh_command("sudo reboot").unwrap_or_default(); guest.ssh_command("sudo reboot").unwrap();
guest.wait_vm_boot(None).unwrap(); guest.wait_vm_boot(None).unwrap();
let reboot_count = guest let reboot_count = guest
.ssh_command("sudo journalctl | grep -c -- \"-- Reboot --\"") .ssh_command("sudo journalctl | grep -c -- \"-- Reboot --\"")
.unwrap_or_default() .unwrap()
.trim() .trim()
.parse::<u32>() .parse::<u32>()
.unwrap_or_default(); .unwrap_or_default();
@ -5059,7 +5026,7 @@ mod tests {
assert_eq!( assert_eq!(
guest guest
.ssh_command("lsblk | grep pmem0 | grep -c 128M") .ssh_command("lsblk | grep pmem0 | grep -c 128M")
.unwrap_or_default() .unwrap()
.trim() .trim()
.parse::<u32>() .parse::<u32>()
.unwrap_or(1), .unwrap_or(1),
@ -5117,7 +5084,7 @@ mod tests {
assert_eq!( assert_eq!(
guest guest
.ssh_command("ip -o link | wc -l") .ssh_command("ip -o link | wc -l")
.unwrap_or_default() .unwrap()
.trim() .trim()
.parse::<u32>() .parse::<u32>()
.unwrap_or_default(), .unwrap_or_default(),
@ -5144,20 +5111,20 @@ mod tests {
assert_eq!( assert_eq!(
guest guest
.ssh_command("ip -o link | wc -l") .ssh_command("ip -o link | wc -l")
.unwrap_or_default() .unwrap()
.trim() .trim()
.parse::<u32>() .parse::<u32>()
.unwrap_or_default(), .unwrap_or_default(),
2 2
); );
guest.ssh_command("sudo reboot").unwrap_or_default(); guest.ssh_command("sudo reboot").unwrap();
guest.wait_vm_boot(None).unwrap(); guest.wait_vm_boot(None).unwrap();
let reboot_count = guest let reboot_count = guest
.ssh_command("sudo journalctl | grep -c -- \"-- Reboot --\"") .ssh_command("sudo journalctl | grep -c -- \"-- Reboot --\"")
.unwrap_or_default() .unwrap()
.trim() .trim()
.parse::<u32>() .parse::<u32>()
.unwrap_or_default(); .unwrap_or_default();
@ -5168,7 +5135,7 @@ mod tests {
assert_eq!( assert_eq!(
guest guest
.ssh_command("ip -o link | wc -l") .ssh_command("ip -o link | wc -l")
.unwrap_or_default() .unwrap()
.trim() .trim()
.parse::<u32>() .parse::<u32>()
.unwrap_or_default(), .unwrap_or_default(),
@ -5487,7 +5454,7 @@ mod tests {
assert_eq!( assert_eq!(
guest guest
.ssh_command("sudo journalctl | grep -c -- \"Watchdog started\"") .ssh_command("sudo journalctl | grep -c -- \"Watchdog started\"")
.unwrap_or_default() .unwrap()
.trim() .trim()
.parse::<u32>() .parse::<u32>()
.unwrap_or_default(), .unwrap_or_default(),
@ -5499,7 +5466,7 @@ mod tests {
let boot_count = guest let boot_count = guest
.ssh_command("sudo journalctl --list-boots | wc -l") .ssh_command("sudo journalctl --list-boots | wc -l")
.unwrap_or_default() .unwrap()
.trim() .trim()
.parse::<u32>() .parse::<u32>()
.unwrap_or_default(); .unwrap_or_default();
@ -5510,7 +5477,7 @@ mod tests {
// Check no reboot // Check no reboot
let boot_count = guest let boot_count = guest
.ssh_command("sudo journalctl --list-boots | wc -l") .ssh_command("sudo journalctl --list-boots | wc -l")
.unwrap_or_default() .unwrap()
.trim() .trim()
.parse::<u32>() .parse::<u32>()
.unwrap_or_default(); .unwrap_or_default();
@ -5528,7 +5495,7 @@ mod tests {
// Check that watchdog triggered reboot // Check that watchdog triggered reboot
let boot_count = guest let boot_count = guest
.ssh_command("sudo journalctl --list-boots | wc -l") .ssh_command("sudo journalctl --list-boots | wc -l")
.unwrap_or_default() .unwrap()
.trim() .trim()
.parse::<u32>() .parse::<u32>()
.unwrap_or_default(); .unwrap_or_default();
@ -5544,7 +5511,7 @@ mod tests {
// Check no reboot // Check no reboot
let boot_count = guest let boot_count = guest
.ssh_command("sudo journalctl --list-boots | wc -l") .ssh_command("sudo journalctl --list-boots | wc -l")
.unwrap_or_default() .unwrap()
.trim() .trim()
.parse::<u32>() .parse::<u32>()
.unwrap_or_default(); .unwrap_or_default();
@ -5610,7 +5577,7 @@ mod tests {
assert_eq!( assert_eq!(
guest guest
.ssh_command("ip -o link | wc -l") .ssh_command("ip -o link | wc -l")
.unwrap_or_default() .unwrap()
.trim() .trim()
.parse::<u32>() .parse::<u32>()
.unwrap_or_default(), .unwrap_or_default(),
@ -5832,7 +5799,7 @@ mod tests {
assert_eq!( assert_eq!(
guest guest
.ssh_command("cpuid -l 0x12 -s 2 | grep 'section size' | cut -d '=' -f 2") .ssh_command("cpuid -l 0x12 -s 2 | grep 'section size' | cut -d '=' -f 2")
.unwrap_or_default() .unwrap()
.trim(), .trim(),
"0x0000000004000000" "0x0000000004000000"
); );
@ -5841,7 +5808,7 @@ mod tests {
// successfully. // successfully.
assert!(guest assert!(guest
.ssh_command("cd /linux-sgx/SampleCode/LocalAttestation/bin/ && sudo ./app") .ssh_command("cd /linux-sgx/SampleCode/LocalAttestation/bin/ && sudo ./app")
.unwrap_or_default() .unwrap()
.trim() .trim()
.contains( .contains(
"succeed to load enclaves.\nsucceed to \ "succeed to load enclaves.\nsucceed to \