34ed5bc4d8
Add unit tests for vhost-user-fs device mount, verifying successful mounting of vhost-user fs device with sandbox abled. Test without sandbox is not prepared, since the vhost-user-fs device need to run as root. A new test scenario(mount_rw) has been added to e2e test. This scenario mounts virtiofs in the guest, then verifies data by reading from the host's shared directory. It also creates a file in the guest, writes data to it, and has the host verify the written data. This scenario is tested using both in-process virtiofs and vhost-user-fs devices. Additionally, the copy_file functionality has been refactored into a separate scenario that runs on both virtio-fs and vhost-user-fs devices. BUG=b:355159487 TEST=tools/dev_container tools/presubmit Change-Id: Icc09355fee1aae464b98fa153a98cbdd4a9e117d Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/5746575 Reviewed-by: Keiichi Watanabe <keiichiw@chromium.org> Commit-Queue: Yuan Yao <yuanyaogoog@chromium.org> |
||
---|---|---|
.. | ||
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_tests --dut=vm -E 'rdeps(e2e_tests)'
Running with locally built kernel/rootfs
If you want to make changes to the kernel or rootfs, you have to specify the environment variables
CROSVM_CARGO_TEST_KERNEL_IMAGE
and CROSVM_CARGO_TEST_ROOTFS_IMAGE
to point to the right files
and then run cargo test
.
With use_local_build.sh script, e2e_tests can be executed with custom kernel/rootfs as follows:
$ cd /path/to/crosvm
$ cd e2e_tests
$ source guest_under_test/use_local_build.sh
$ cargo test
Unsetting the variables will bring back you to the original behavior.
unset CROSVM_CARGO_TEST_KERNEL_IMAGE
unset CROSVM_CARGO_TEST_ROOTFS_IMAGE
Note: The custom images cannot be used with tools/run_tests
.
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.