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 Workerfn 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 Workerfn 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 Workerfn 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