| name | crosvm-testing |
| description | Skill to assist with running tests and managing test VMs in the crosvm repository. |
Crosvm Testing (tools/run_tests & tools/testvm)
This skill covers running the crosvm test suite and managing the virtual machines used for
integration testing.
[!TIP] When you have completed your code changes and are ready to commit or upload, please run the
overall presubmit checks according to the crosvm-contribution-workflow
SKILL.md.
Running Tests (tools/run_tests)
The tools/run_tests script is the primary test runner. It supports unit tests (running on the host
or via emulators) and integration tests (running on a test VM or the host).
1. Unit Tests
2. Integration Tests
Integration tests require a Device Under Test (DUT).
3. Test Filtering
The runner supports nextest filter expressions using the -E or --filter-expr flag. See
nextest documentation for details.
- Run tests for a specific package:
./tools/run_tests -E 'package(devices)'
- Run a specific test by name:
./tools/run_tests -E 'test(test_send_cmd_not_ready)'
- Run tests for a package and its dependencies:
./tools/run_tests -E 'deps(vm_control)'
4. Useful Flags
--no-unit-tests: Skip unit tests and only run integration tests.
--no-integration-tests: Skip integration tests.
--run-root-tests: Enable integration tests that require root privileges.
--retries <N>: Retry failed tests N times.
--repetitions <N>: Repeat all tests N times (useful for detecting flakiness).
Managing Test VMs (tools/testvm, tools/x86vm, tools/aarch64vm)
For integration testing (--dut=vm), crosvm uses test VMs. You can manage these VMs using
tools/x86vm (for x86_64) or tools/aarch64vm (for ARM64). These are wrappers around
tools/testvm.
Replace x86vm with aarch64vm in the commands below depending on the architecture you are
testing.
- Start the VM:
./tools/x86vm up
- Open an interactive SSH shell into the VM:
./tools/x86vm shell
(This will start the VM if it is not already running).
- Stop the VM gracefully:
./tools/x86vm stop
- Force kill the VM:
./tools/x86vm kill
- View VM console logs:
./tools/x86vm logs
- Clean/Reset the VM (deletes images):
./tools/x86vm clean