790bfedf7d
Snapshot was doing a `from_slice`, which deserializes the result of another snapshot. However, not all vhost-user devices live in crosvm and, and those devices won't necessarily return a similar struct. Switching to `to_value` will require a Vec<u8> as a return, and not a `JSON`, which should be easier to adopt for other devices. This error was encountered in AOSP when testing Mac80211_hwsim. Snapshot returns a Vec<u8>, however the snapshot would fail, unable to snapshot the slice. The fix was tested in AOSP and was confirmed working. Encoutered as part of b/295028005 Bug: N/A Test: Tested in AOSP && presubmit Change-Id: I17dd0befa7ae95be5b014eed5ae27413ebf338b8 Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4897963 Reviewed-by: Richard Zhang <rizhang@google.com> Reviewed-by: Frederick Mayle <fmayle@google.com> Commit-Queue: Elie Kheirallah <khei@google.com> |
||
---|---|---|
.. | ||
benches | ||
fixture | ||
guest_under_test | ||
tests | ||
Cargo.toml | ||
README.md |
Crosvm End to End 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.
The e2e_tests can be executed by:
$ ./tools/run_tests2 --dut=vm -E 'rdeps(e2e_tests)'
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
and request a permission
to become a member of the crosvm-policy-uploader
group.
Then run the upload script to build and upload the new prebuilts.
# Install QEMU-user-static to build aarch64 images
$ sudo apt install binfmt-support qemu-user-static
# Register binfmt_misc entries
$ docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
# Build and upload the new artifacts
$ ./guest_under_test/upload_prebuilts.sh
Never try to modify an existing prebuilt as the new images may break tests in older versions.