Skip to content

Commit 77e469c

Browse files
committed
ch: Add vm crashed/killed detection test
1 parent 6d371a6 commit 77e469c

File tree

1 file changed

+54
-0
lines changed

1 file changed

+54
-0
lines changed

ch_integration_tests/tests/integration.rs

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -511,6 +511,60 @@ mod tests {
511511
assert!(r.is_ok());
512512
}
513513

514+
#[test]
515+
fn test_track_vm_killed_state() {
516+
cleanup_libvirt_state();
517+
let mut libvirtd = spawn_libvirtd().unwrap();
518+
thread::sleep(std::time::Duration::new(5, 0));
519+
520+
let mut disk = UbuntuDiskConfig::new(FOCAL_IMAGE_NAME.to_owned());
521+
let guest = Guest::new(&mut disk);
522+
523+
let domain_path = guest.create_domain(VcpuConfig::default(), DEFAULT_RAM_SIZE);
524+
525+
let r = std::panic::catch_unwind(|| {
526+
spawn_virsh(&["create", domain_path.to_str().unwrap()])
527+
.unwrap()
528+
.wait_with_output()
529+
.unwrap();
530+
531+
guest.wait_vm_boot(None).unwrap();
532+
533+
let pid = std::fs::read_to_string(format!("/var/run/libvirt/ch/{}.pid", guest.vm_name))
534+
.unwrap()
535+
.parse::<libc::pid_t>()
536+
.unwrap();
537+
unsafe {
538+
libc::kill(pid, libc::SIGKILL);
539+
}
540+
thread::sleep(std::time::Duration::new(2, 0));
541+
542+
let list_output = spawn_virsh(&["list", "--all"])
543+
.unwrap()
544+
.wait_with_output()
545+
.unwrap();
546+
547+
let re = Regex::new(&format!(r"\s+-\s+{}\s+shut off", guest.vm_name)).unwrap();
548+
assert!(re.is_match(std::str::from_utf8(&list_output.stdout).unwrap().trim()));
549+
});
550+
551+
spawn_virsh(&["destroy", &guest.vm_name])
552+
.unwrap()
553+
.wait()
554+
.unwrap();
555+
556+
libvirtd.kill().unwrap();
557+
let libvirtd_output = libvirtd.wait_with_output().unwrap();
558+
559+
eprintln!(
560+
"libvirtd stdout\n\n{}\n\nlibvirtd stderr\n\n{}",
561+
std::str::from_utf8(&libvirtd_output.stdout).unwrap(),
562+
std::str::from_utf8(&libvirtd_output.stderr).unwrap()
563+
);
564+
565+
assert!(r.is_ok());
566+
}
567+
514568
#[test]
515569
fn test_uri() {
516570
cleanup_libvirt_state();

0 commit comments

Comments
 (0)