xref: /aosp_15_r20/external/crosvm/e2e_tests/README.md (revision bb4ee6a4ae7042d18b07a98463b9c8b875e44b39)
1*bb4ee6a4SAndroid Build Coastguard Worker# Crosvm End to End Tests
2*bb4ee6a4SAndroid Build Coastguard Worker
3*bb4ee6a4SAndroid Build Coastguard WorkerThese tests run a crosvm VM on the host to verify end to end behavior. They use a prebuilt guest
4*bb4ee6a4SAndroid Build Coastguard Workerkernel and rootfs, which is downloaded from google cloud storage.
5*bb4ee6a4SAndroid Build Coastguard Worker
6*bb4ee6a4SAndroid Build Coastguard WorkerThe e2e_tests can be executed by:
7*bb4ee6a4SAndroid Build Coastguard Worker
8*bb4ee6a4SAndroid Build Coastguard Worker```sh
9*bb4ee6a4SAndroid Build Coastguard Worker$ ./tools/run_tests --dut=vm -E 'rdeps(e2e_tests)'
10*bb4ee6a4SAndroid Build Coastguard Worker```
11*bb4ee6a4SAndroid Build Coastguard Worker
12*bb4ee6a4SAndroid Build Coastguard Worker## Running with locally built kernel/rootfs
13*bb4ee6a4SAndroid Build Coastguard Worker
14*bb4ee6a4SAndroid Build Coastguard WorkerIf you want to make changes to the kernel or rootfs, you have to specify the environment variables
15*bb4ee6a4SAndroid Build Coastguard Worker`CROSVM_CARGO_TEST_KERNEL_IMAGE` and `CROSVM_CARGO_TEST_ROOTFS_IMAGE` to point to the right files
16*bb4ee6a4SAndroid Build Coastguard Workerand then run `cargo test`.
17*bb4ee6a4SAndroid Build Coastguard Worker
18*bb4ee6a4SAndroid Build Coastguard WorkerWith use_local_build.sh script, e2e_tests can be executed with custom kernel/rootfs as follows:
19*bb4ee6a4SAndroid Build Coastguard Worker
20*bb4ee6a4SAndroid Build Coastguard Worker```sh
21*bb4ee6a4SAndroid Build Coastguard Worker$ cd /path/to/crosvm
22*bb4ee6a4SAndroid Build Coastguard Worker$ cd e2e_tests
23*bb4ee6a4SAndroid Build Coastguard Worker$ source guest_under_test/use_local_build.sh
24*bb4ee6a4SAndroid Build Coastguard Worker$ cargo test
25*bb4ee6a4SAndroid Build Coastguard Worker```
26*bb4ee6a4SAndroid Build Coastguard Worker
27*bb4ee6a4SAndroid Build Coastguard WorkerUnsetting the variables will bring back you to the original behavior.
28*bb4ee6a4SAndroid Build Coastguard Worker
29*bb4ee6a4SAndroid Build Coastguard Worker```sh
30*bb4ee6a4SAndroid Build Coastguard Workerunset CROSVM_CARGO_TEST_KERNEL_IMAGE
31*bb4ee6a4SAndroid Build Coastguard Workerunset CROSVM_CARGO_TEST_ROOTFS_IMAGE
32*bb4ee6a4SAndroid Build Coastguard Worker```
33*bb4ee6a4SAndroid Build Coastguard Worker
34*bb4ee6a4SAndroid Build Coastguard WorkerNote: The custom images cannot be used with `tools/run_tests`.
35*bb4ee6a4SAndroid Build Coastguard Worker
36*bb4ee6a4SAndroid Build Coastguard Worker## Uploading prebuilts
37*bb4ee6a4SAndroid Build Coastguard Worker
38*bb4ee6a4SAndroid Build Coastguard WorkerNote: Only Googlers with access to the crosvm-testing cloud storage bin can upload prebuilts.
39*bb4ee6a4SAndroid Build Coastguard Worker
40*bb4ee6a4SAndroid Build Coastguard WorkerTo upload the modified rootfs, you will have to uprev the `PREBUILT_VERSION` variable in:
41*bb4ee6a4SAndroid Build Coastguard Worker
42*bb4ee6a4SAndroid Build Coastguard Worker- `./guest_under_test/PREBUILT_VERSION`
43*bb4ee6a4SAndroid Build Coastguard Worker
44*bb4ee6a4SAndroid Build Coastguard Workerand [request a permission](http://go/crosvm/infra.md?cl=head#access-on-demand-to-upload-artifacts)
45*bb4ee6a4SAndroid Build Coastguard Workerto become a member of the `crosvm-policy-uploader` group.
46*bb4ee6a4SAndroid Build Coastguard Worker
47*bb4ee6a4SAndroid Build Coastguard WorkerThen run the upload script to build and upload the new prebuilts.
48*bb4ee6a4SAndroid Build Coastguard Worker
49*bb4ee6a4SAndroid Build Coastguard Worker```sh
50*bb4ee6a4SAndroid Build Coastguard Worker# Install QEMU-user-static to build aarch64 images
51*bb4ee6a4SAndroid Build Coastguard Worker$ sudo apt install binfmt-support qemu-user-static
52*bb4ee6a4SAndroid Build Coastguard Worker# Register binfmt_misc entries
53*bb4ee6a4SAndroid Build Coastguard Worker$ docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
54*bb4ee6a4SAndroid Build Coastguard Worker# Build and upload the new artifacts
55*bb4ee6a4SAndroid Build Coastguard Worker$ ./guest_under_test/upload_prebuilts.sh
56*bb4ee6a4SAndroid Build Coastguard Worker```
57*bb4ee6a4SAndroid Build Coastguard Worker
58*bb4ee6a4SAndroid Build Coastguard Worker**Never** try to modify an existing prebuilt as the new images may break tests in older versions.
59