diff options
Diffstat (limited to 'hypervisor/tests/test_concrete.rs')
-rw-r--r-- | hypervisor/tests/test_concrete.rs | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/hypervisor/tests/test_concrete.rs b/hypervisor/tests/test_concrete.rs new file mode 100644 index 0000000..fd6b89f --- /dev/null +++ b/hypervisor/tests/test_concrete.rs @@ -0,0 +1,51 @@ +// Copyright 2020 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. + +// TODO: Delete these tests soon, once we start getting real implementations in place. + +#[cfg(any(target_arch = "arm", target_arch = "aarch64"))] +mod test_concrete_aarch64; +#[cfg(any(target_arch = "x86", target_arch = "x86_64"))] +mod test_concrete_x86_64; + +use sys_util::GuestMemory; + +use hypervisor::*; +#[cfg(any(target_arch = "arm", target_arch = "aarch64"))] +use test_concrete_aarch64::*; +#[cfg(any(target_arch = "x86", target_arch = "x86_64"))] +use test_concrete_x86_64::*; + +fn run_vcpu<T, U, V>(_hypervm: &HyperVm<T, U, V>, _linux: &RunnableLinuxVm, vcpu: impl Vcpu) +where + T: Hypervisor, + U: Vm, + V: Vcpu, +{ + let vcpu = vcpu.to_runnable().unwrap(); + vcpu.run().unwrap(); + vcpu.request_interrupt_window().unwrap(); +} + +#[test] +fn test_concrete_types() { + let cfg_use_kvm = true; + if cfg_use_kvm { + let hypervisor = kvm::Kvm::new().unwrap(); + let mem = GuestMemory::new(&[]).unwrap(); + let vm = kvm::KvmVm::new(&hypervisor, mem).unwrap(); + let vcpu = vm.create_vcpu(0).unwrap(); + let mut vcpus = vec![vcpu]; + let mut hypervm = HyperVm { + hypervisor, + vm, + vcpus, + }; + let linux = configure_vm(&hypervm); + vcpus = hypervm.vcpus.split_off(0); + for vcpu in vcpus.into_iter() { + run_vcpu(&hypervm, &linux, vcpu); + } + } +} |