mirror of
https://chromium.googlesource.com/crosvm/crosvm
synced 2025-02-05 18:20:34 +00:00
bc927456ad
The goal is to detect (possibly backwards imcompatible) changes to the virtual hardware exposed to guests. To start with, it only checks the PCI devices. Example failure output when the iommu is removed: thread 'backcompat_test_simple_lspci' panicked at 'assertion failed: `(left == right)` left: `"00:00.0 0600: 8086:1237\n00:01.0 00ff: 1af4:1057 (rev 01)\n00:02.0 00ff: 1af4:1042 (rev 01)\n00:03.0 00ff: 1af4:1044 (rev 01)\n00:04.0 00ff: 1af4:1045 (rev 01)\n00:05.0 0c03: 1b73 :1000\n00:06.0 ffff: 1b36:0011 (rev 01)\n00:07.0 0604: 8086:3420"`, right: `"00:00.0 0600: 8086:1237\n00:01.0 00ff: 1af4:1042 (rev 01)\n00:02.0 00ff: 1af4:1044 (rev 01)\n00:03.0 00ff: 1af4:1045 (rev 01)\n00:04.0 0c03: 1b73:1000\n00:05.0 ffff: 1b36:0011 (re v 01)\n00:06.0 0604: 8086:3420"`: PCI Devices changed: <<< Expected <<< 00:00.0 0600: 8086:1237 00:01.0 00ff: 1af4:1057 (rev 01) 00:02.0 00ff: 1af4:1042 (rev 01) 00:03.0 00ff: 1af4:1044 (rev 01) 00:04.0 00ff: 1af4:1045 (rev 01) 00:05.0 0c03: 1b73:1000 00:06.0 ffff: 1b36:0011 (rev 01) 00:07.0 0604: 8086:3420 <<<<<<<<<<<<<<<< >>> Got >>> 00:00.0 0600: 8086:1237 00:01.0 00ff: 1af4:1042 (rev 01) 00:02.0 00ff: 1af4:1044 (rev 01) 00:03.0 00ff: 1af4:1045 (rev 01) 00:04.0 0c03: 1b73:1000 00:05.0 ffff: 1b36:0011 (rev 01) 00:06.0 0604: 8086:3420 >>>>>>>>>>>>>>>> ', integration_tests/tests/backcompat.rs:21:5 ... vm serial output ... `pub mod` is used to avoid deadcode warnings. Changed boot.rs to do the same for consistency and future proofing. BUG=b:231365736 TEST=./integration_tests/run Change-Id: Ia33d6631e3385ce3633cadff552a6253bb486f93 Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/3795888 Auto-Submit: Frederick Mayle <fmayle@google.com> Reviewed-by: Daniel Verkamp <dverkamp@chromium.org> Reviewed-by: David Stevens <stevensd@chromium.org> Reviewed-by: Dennis Kempin <denniskempin@google.com> Commit-Queue: Daniel Verkamp <dverkamp@chromium.org> Tested-by: Frederick Mayle <fmayle@google.com>
28 lines
888 B
Rust
28 lines
888 B
Rust
// 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.
|
|
pub mod fixture;
|
|
use fixture::Config;
|
|
use fixture::TestVm;
|
|
|
|
#[test]
|
|
fn boot_test_vm() {
|
|
let mut vm = TestVm::new(Config::new()).unwrap();
|
|
assert_eq!(vm.exec_in_guest("echo 42").unwrap().trim(), "42");
|
|
}
|
|
|
|
#[test]
|
|
fn boot_test_vm_odirect() {
|
|
let mut vm = TestVm::new(Config::new().o_direct()).unwrap();
|
|
assert_eq!(vm.exec_in_guest("echo 42").unwrap().trim(), "42");
|
|
}
|
|
|
|
#[test]
|
|
fn boot_test_suspend_resume() {
|
|
// There is no easy way for us to check if the VM is actually suspended. But at
|
|
// least exercise the code-path.
|
|
let mut vm = TestVm::new(Config::new()).unwrap();
|
|
vm.suspend().unwrap();
|
|
vm.resume().unwrap();
|
|
assert_eq!(vm.exec_in_guest("echo 42").unwrap().trim(), "42");
|
|
}
|