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> |
||
---|---|---|
.. | ||
guest_under_test | ||
tests | ||
Cargo.toml | ||
README.md | ||
run |
Crosvm Integration Tests
These tests run a crosvm VM on the host to verify end to end behavior. They use a prebuilt guest kernel and rootfs, which is downloaded from google cloud storage.
Running with locally built kernel/rootfs
If the test needs to run offline, or you want to make changes to the kernel or rootfs, you have to
specify the environment variables CROSVM_CARGO_TEST_KERNEL_BINARY
and
CROSVM_CARGO_TEST_ROOTFS_IMAGE
to point to the right files.
The use_local_build.sh script does this for you:
$ source guest_under_test/use_local_build.sh
Uploading prebuilts
Note: Only Googlers with access to the crosvm-testing cloud storage bin can upload prebuilts.
To upload the modified rootfs, you will have to uprev the PREBUILT_VERSION
variable in:
./guest_under_test/PREBUILT_VERSION
src/third_party/chromiumos-overlay/chromeos-base/crosvm/crosvm-9999.ebuild
Then run the upload script to build and upload the new prebuilts. Never try to modify an existing prebuilt as the new images may break tests in older versions.