Skip to content

Commit 0697de4

Browse files
committed
add unit tests for add VmFd::{g,s}et_tsc_khz
1 parent 89fea38 commit 0697de4

File tree

2 files changed

+36
-0
lines changed

2 files changed

+36
-0
lines changed

kvm-ioctls/src/ioctls/vcpu.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2999,6 +2999,7 @@ mod tests {
29992999
vcpu.enable_cap(&cap).unwrap();
30003000
}
30013001
}
3002+
30023003
#[cfg(target_arch = "x86_64")]
30033004
#[test]
30043005
fn test_get_tsc_khz() {

kvm-ioctls/src/ioctls/vm.rs

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3094,6 +3094,41 @@ mod tests {
30943094
vm.set_device_attr(&dist_attr).unwrap();
30953095
}
30963096

3097+
#[cfg(target_arch = "x86_64")]
3098+
#[test]
3099+
fn test_get_tsc_khz() {
3100+
let kvm = Kvm::new().unwrap();
3101+
let vm = kvm.create_vm().unwrap();
3102+
3103+
if !kvm.check_extension(Cap::GetTscKhz) {
3104+
vm.get_tsc_khz().unwrap_err();
3105+
} else {
3106+
assert!(vm.get_tsc_khz().unwrap() > 0);
3107+
}
3108+
}
3109+
3110+
#[cfg(target_arch = "x86_64")]
3111+
#[test]
3112+
fn test_set_tsc_khz() {
3113+
let kvm = Kvm::new().unwrap();
3114+
let vm = kvm.create_vm().unwrap();
3115+
let freq = vm.get_tsc_khz().unwrap();
3116+
3117+
if !(kvm.check_extension(Cap::GetTscKhz) && kvm.check_extension(Cap::TscControl)) {
3118+
vm.set_tsc_khz(0).unwrap_err();
3119+
} else {
3120+
vm.set_tsc_khz(freq - 500000).unwrap();
3121+
assert_eq!(vm.get_tsc_khz().unwrap(), freq - 500000);
3122+
let vcpu = vm.create_vcpu(0).unwrap();
3123+
assert_eq!(vcpu.get_tsc_khz().unwrap(), freq - 500000);
3124+
3125+
vm.set_tsc_khz(freq + 500000).unwrap();
3126+
assert_eq!(vm.get_tsc_khz().unwrap(), freq + 500000);
3127+
let vcpu = vm.create_vcpu(1).unwrap();
3128+
assert_eq!(vcpu.get_tsc_khz().unwrap(), freq + 500000);
3129+
}
3130+
}
3131+
30973132
#[test]
30983133
#[cfg(target_arch = "x86_64")]
30993134
fn test_set_msr_filter_unchecked() {

0 commit comments

Comments
 (0)