summary refs log tree commit diff
path: root/kvm_sys/tests/sanity.rs
diff options
context:
space:
mode:
Diffstat (limited to 'kvm_sys/tests/sanity.rs')
-rw-r--r--kvm_sys/tests/sanity.rs39
1 files changed, 39 insertions, 0 deletions
diff --git a/kvm_sys/tests/sanity.rs b/kvm_sys/tests/sanity.rs
new file mode 100644
index 0000000..f9d0144
--- /dev/null
+++ b/kvm_sys/tests/sanity.rs
@@ -0,0 +1,39 @@
+// Copyright 2017 The Chromium OS Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+extern crate kvm_sys;
+extern crate libc;
+
+use libc::{ioctl, open, c_char, O_RDWR};
+
+use kvm_sys::*;
+
+const KVM_PATH: &'static str = "/dev/kvm\0";
+
+#[test]
+fn get_version() {
+    let sys_fd = unsafe { open(KVM_PATH.as_ptr() as *const c_char, O_RDWR) };
+    assert!(sys_fd >= 0);
+
+    let ret = unsafe { ioctl(sys_fd, KVM_GET_API_VERSION(), 0) };
+    assert_eq!(ret as u32, KVM_API_VERSION);
+}
+
+#[test]
+fn create_vm_fd() {
+    let sys_fd = unsafe { open(KVM_PATH.as_ptr() as *const c_char, O_RDWR) };
+    assert!(sys_fd >= 0);
+
+    let vm_fd = unsafe { ioctl(sys_fd, KVM_CREATE_VM(), 0) };
+    assert!(vm_fd >= 0);
+}
+
+#[test]
+fn check_vm_extension() {
+    let sys_fd = unsafe { open(KVM_PATH.as_ptr() as *const c_char, O_RDWR) };
+    assert!(sys_fd >= 0);
+
+    let has_user_memory = unsafe { ioctl(sys_fd, KVM_CHECK_EXTENSION(), KVM_CAP_USER_MEMORY) };
+    assert_eq!(has_user_memory, 1);
+}