xref: /aosp_15_r20/external/crosvm/e2e_tests/tests/backcompat.rs (revision bb4ee6a4ae7042d18b07a98463b9c8b875e44b39)
1*bb4ee6a4SAndroid Build Coastguard Worker // Copyright 2022 The ChromiumOS Authors
2*bb4ee6a4SAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be
3*bb4ee6a4SAndroid Build Coastguard Worker // found in the LICENSE file.
4*bb4ee6a4SAndroid Build Coastguard Worker 
5*bb4ee6a4SAndroid Build Coastguard Worker use fixture::vm::Config;
6*bb4ee6a4SAndroid Build Coastguard Worker use fixture::vm::TestVm;
7*bb4ee6a4SAndroid Build Coastguard Worker 
8*bb4ee6a4SAndroid Build Coastguard Worker // Tests for possible backwards compatibility issues.
9*bb4ee6a4SAndroid Build Coastguard Worker //
10*bb4ee6a4SAndroid Build Coastguard Worker // There is no backwards compatibility policy yet, these are just "change detector" tests. If you
11*bb4ee6a4SAndroid Build Coastguard Worker // break a test, make sure the change is intended and then ask in go/crosvm-chat to see if anyone
12*bb4ee6a4SAndroid Build Coastguard Worker // objects to updating the golden file.
13*bb4ee6a4SAndroid Build Coastguard Worker 
14*bb4ee6a4SAndroid Build Coastguard Worker // Many changes to PCI devices can cause issues, e.g. some users depend on crosvm always choosing
15*bb4ee6a4SAndroid Build Coastguard Worker // the same PCI slots for particular devices.
16*bb4ee6a4SAndroid Build Coastguard Worker #[test]
backcompat_test()17*bb4ee6a4SAndroid Build Coastguard Worker fn backcompat_test() {
18*bb4ee6a4SAndroid Build Coastguard Worker     let mut vm = TestVm::new(Config::new()).unwrap();
19*bb4ee6a4SAndroid Build Coastguard Worker     backcompat_test_simple_lspci(&mut vm);
20*bb4ee6a4SAndroid Build Coastguard Worker }
21*bb4ee6a4SAndroid Build Coastguard Worker 
22*bb4ee6a4SAndroid Build Coastguard Worker #[test]
backcompat_test_disable_sandbox()23*bb4ee6a4SAndroid Build Coastguard Worker fn backcompat_test_disable_sandbox() {
24*bb4ee6a4SAndroid Build Coastguard Worker     let mut vm = TestVm::new(Config::new().disable_sandbox()).unwrap();
25*bb4ee6a4SAndroid Build Coastguard Worker     backcompat_test_simple_lspci(&mut vm);
26*bb4ee6a4SAndroid Build Coastguard Worker }
27*bb4ee6a4SAndroid Build Coastguard Worker 
backcompat_test_simple_lspci(vm: &mut TestVm)28*bb4ee6a4SAndroid Build Coastguard Worker fn backcompat_test_simple_lspci(vm: &mut TestVm) {
29*bb4ee6a4SAndroid Build Coastguard Worker     let expected = if cfg!(windows) {
30*bb4ee6a4SAndroid Build Coastguard Worker         include_str!("goldens/backcompat_test_simple_lspci_win.txt").trim()
31*bb4ee6a4SAndroid Build Coastguard Worker     } else {
32*bb4ee6a4SAndroid Build Coastguard Worker         include_str!("goldens/backcompat_test_simple_lspci.txt").trim()
33*bb4ee6a4SAndroid Build Coastguard Worker     };
34*bb4ee6a4SAndroid Build Coastguard Worker     let result = vm
35*bb4ee6a4SAndroid Build Coastguard Worker         .exec_in_guest("lspci -n")
36*bb4ee6a4SAndroid Build Coastguard Worker         .unwrap()
37*bb4ee6a4SAndroid Build Coastguard Worker         .stdout
38*bb4ee6a4SAndroid Build Coastguard Worker         .trim()
39*bb4ee6a4SAndroid Build Coastguard Worker         .replace("\r", "");
40*bb4ee6a4SAndroid Build Coastguard Worker     assert_eq!(
41*bb4ee6a4SAndroid Build Coastguard Worker         expected,
42*bb4ee6a4SAndroid Build Coastguard Worker         result,
43*bb4ee6a4SAndroid Build Coastguard Worker         "PCI Devices changed:\n<<< Expected <<<\n{}\n<<<<<<<<<<<<<<<<\n>>> Got      >>>\n{}\n>>>>>>>>>>>>>>>>\n",
44*bb4ee6a4SAndroid Build Coastguard Worker         expected, result
45*bb4ee6a4SAndroid Build Coastguard Worker     );
46*bb4ee6a4SAndroid Build Coastguard Worker }
47