crosvm/integration_tests/tests/backcompat.rs

32 lines
1.1 KiB
Rust
Raw Normal View History

integration_tests: Simple backwards compatibility test 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>
2022-07-30 00:56:36 +00:00
// Copyright 2022 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;
// Tests for possible backwards compatibility issues.
//
// There is no backwards compatibility policy yet, these are just "change detector" tests. If you
// break a test, make sure the change is intended and then ask in go/crosvm-chat to see if anyone
// objects to updating the golden file.
// Many changes to PCI devices can cause issues, e.g. some users depend on crosvm always choosing
// the same PCI slots for particular devices.
#[test]
fn backcompat_test_simple_lspci() {
let mut vm = TestVm::new(Config::new()).unwrap();
let expected = include_str!("goldens/backcompat_test_simple_lspci.txt").trim();
let result = vm
.exec_in_guest("lspci -n")
.unwrap()
.trim()
.replace("\r", "");
assert_eq!(
expected,
result,
"PCI Devices changed:\n<<< Expected <<<\n{}\n<<<<<<<<<<<<<<<<\n>>> Got >>>\n{}\n>>>>>>>>>>>>>>>>\n",
expected, result
);
}