2022-11-03 21:28:42 +00:00
|
|
|
# Crosvm End to End Tests
|
2020-11-10 17:34:56 +00:00
|
|
|
|
2022-01-25 23:14:43 +00:00
|
|
|
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.
|
2020-11-10 17:34:56 +00:00
|
|
|
|
2023-07-21 10:51:00 +00:00
|
|
|
The e2e_tests can be executed by:
|
|
|
|
|
2023-12-14 18:46:38 +00:00
|
|
|
```sh
|
|
|
|
$ ./tools/run_tests --dut=vm -E 'rdeps(e2e_tests)'
|
|
|
|
```
|
2023-07-21 10:51:00 +00:00
|
|
|
|
2020-11-10 17:34:56 +00:00
|
|
|
## Running with locally built kernel/rootfs
|
|
|
|
|
2023-12-14 18:46:38 +00:00
|
|
|
If you want to make changes to the kernel or rootfs, you have to specify the environment variables
|
2023-12-26 06:09:04 +00:00
|
|
|
`CROSVM_CARGO_TEST_KERNEL_IMAGE` and `CROSVM_CARGO_TEST_ROOTFS_IMAGE` to point to the right files
|
2023-12-14 18:46:38 +00:00
|
|
|
and then run `cargo test`.
|
2020-11-10 17:34:56 +00:00
|
|
|
|
2023-12-26 06:09:04 +00:00
|
|
|
With use_local_build.sh script, e2e_tests can be executed with custom kernel/rootfs as follows:
|
2020-11-10 17:34:56 +00:00
|
|
|
|
2023-12-14 18:46:38 +00:00
|
|
|
```sh
|
2023-12-26 06:09:04 +00:00
|
|
|
$ cd /path/to/crosvm
|
|
|
|
$ cd e2e_tests
|
2023-12-14 18:46:38 +00:00
|
|
|
$ source guest_under_test/use_local_build.sh
|
|
|
|
$ cargo test
|
|
|
|
```
|
|
|
|
|
2023-12-26 06:09:04 +00:00
|
|
|
Unsetting the variables will bring back you to the original behavior.
|
|
|
|
|
|
|
|
```sh
|
|
|
|
unset CROSVM_CARGO_TEST_KERNEL_IMAGE
|
|
|
|
unset CROSVM_CARGO_TEST_ROOTFS_IMAGE
|
|
|
|
```
|
|
|
|
|
2023-12-14 18:46:38 +00:00
|
|
|
Note: The custom images cannot be used with `tools/run_tests`.
|
2020-11-10 17:34:56 +00:00
|
|
|
|
|
|
|
## Uploading prebuilts
|
|
|
|
|
2022-01-25 23:14:43 +00:00
|
|
|
Note: Only Googlers with access to the crosvm-testing cloud storage bin can upload prebuilts.
|
2020-11-10 17:34:56 +00:00
|
|
|
|
2022-01-25 23:14:43 +00:00
|
|
|
To upload the modified rootfs, you will have to uprev the `PREBUILT_VERSION` variable in:
|
2020-11-10 17:34:56 +00:00
|
|
|
|
|
|
|
- `./guest_under_test/PREBUILT_VERSION`
|
|
|
|
|
2022-10-24 06:59:15 +00:00
|
|
|
and [request a permission](http://go/crosvm/infra.md?cl=head#access-on-demand-to-upload-artifacts)
|
2023-09-27 02:02:41 +00:00
|
|
|
to become a member of the `crosvm-policy-uploader` group.
|
|
|
|
|
|
|
|
Then run the upload script to build and upload the new prebuilts.
|
|
|
|
|
|
|
|
```sh
|
|
|
|
# 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.
|