use super::*;
#[test]
fn test_vmm_creation() {
let config = VmmConfig {
guest_cid: Some(3),
..Default::default()
};
let vmm = Vmm::new(config).unwrap();
assert_eq!(vmm.state(), VmmState::Created);
}
#[test]
fn test_vmm_invalid_config() {
let config = VmmConfig {
vcpu_count: 0,
guest_cid: Some(3),
..Default::default()
};
assert!(Vmm::new(config).is_err());
let config = VmmConfig {
memory_size: 1024, guest_cid: Some(3),
..Default::default()
};
assert!(Vmm::new(config).is_err());
}
#[test]
fn test_vmm_requires_guest_cid_when_vsock_enabled() {
let config = VmmConfig {
guest_cid: None,
..Default::default()
};
assert!(Vmm::new(config).is_err());
let config = VmmConfig {
vsock: false,
guest_cid: None,
..Default::default()
};
assert!(Vmm::new(config).is_ok());
}
#[test]
fn test_vmm_state_transitions() {
let config = VmmConfig {
guest_cid: Some(3),
..Default::default()
};
let mut vmm = Vmm::new(config).unwrap();
assert!(vmm.pause().is_err());
assert!(vmm.resume().is_err());
}
#[cfg(target_os = "macos")]
#[test]
fn test_hv_snapshot_returns_unsupported() {
let config = VmmConfig {
guest_cid: Some(3),
backend: VmBackend::Hv,
..Default::default()
};
let mut vmm = Vmm::new(config).unwrap();
vmm.state = VmmState::Running;
match vmm.capture_snapshot_context() {
Err(VmmError::Unsupported(msg)) => assert!(msg.contains("HV backend")),
Err(other) => panic!("expected Unsupported for HV capture, got Err({other:?})"),
Ok(_) => panic!("expected Unsupported for HV capture, got Ok"),
}
}