crosvm/e2e_tests
Shintaro Kawamura b83a5989d9 e2e_tests: abort testing as soon as crosvm exits on booting
If crosvm fails at the early stage of setup, opening to_guest fifo
blocks forever and it takes 20 seconds to timeout.

Opening to_guest fifo should be wrapped by timeout as well as
from_guest.

Check the crosvm process status periodically to abort testing earlier.

With this change, the total e2etest execution for failure case is
reduced to 0.2s from 20s.

There is better way without panicking on timeout; interrupt the blocked
open(2) for fifo by pthread_kill(). However it is too much since this is
just a test. panicking is welcome.

BUG=b:293383846
TEST=./tools/run_tests2 --dut=vm -E 'rdeps(e2e_tests)'

Change-Id: I8735a77201f930162113efa98d655f77be8d259d
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4721027
Reviewed-by: Dennis Kempin <denniskempin@google.com>
Reviewed-by: Daniel Verkamp <dverkamp@chromium.org>
Commit-Queue: Shin Kawamura <kawasin@google.com>
2023-07-28 04:27:26 +00:00
..
benches
fixture e2e_tests: abort testing as soon as crosvm exits on booting 2023-07-28 04:27:26 +00:00
guest_under_test e2e_tests: Add test to verify booting custom artifacts work 2023-07-21 00:24:28 +00:00
tests base: handle EINTR in Tube recv methods 2023-07-28 01:30:27 +00:00
Cargo.toml crosvm: virtio-net device hotplug 2023-07-27 04:35:26 +00:00
README.md e2e_tests: Remove redundant run script 2023-07-27 04:35:26 +00:00

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. Never try to modify an existing prebuilt as the new images may break tests in older versions.