This CL expands the existing boot.rs test to not just boot a kernel but also provide a debian-based rootfs and a special init binary that is used to communicate between test code and the guest VM. The delegate binary listens for commands on /dev/ttyS1 and returns the stdout of the executed command. This allows the test code to setup pipes for the serial device to issue commands in the client and receive the command output, which provides a good foundation for tests of basic functionality without the need to pass test binary code into the guest. The integration tests will pull a prebuilt kernel and rootfs image from cloud storage unless local files are specified via ENV variables. The integration_tests/guest_under_test directory contains the files needed to build and upload those prebuilts. BUG=b:172926609 TEST=This is a test. Cq-Depend: chromium:2551073 Change-Id: Iffb88a146a13d1b6ed7250df1b487bd87a5599d0 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/2536831 Tested-by: kokoro <noreply+kokoro@google.com> Reviewed-by: Zach Reizner <zachr@chromium.org> Commit-Queue: Dennis Kempin <denniskempin@google.com> Auto-Submit: Dennis Kempin <denniskempin@google.com>
1 KiB
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.