Commit graph

50 commits

Author SHA1 Message Date
Dylan Reid
1ae4e549e5 tests: Add riscv imports where needed
In working towards enabling unit tests, import the correct arch defines
for riscv64 where needed.

TEST=from dev container run:
```
cargo nextest run --workspace --no-default-features \
--exclude tpm2 \
--exclude tpm2-sys \
--exclude libvda \
--exclude libva \
--exclude ffmpeg \
--exclude vmm_vhost \
--exclude system_api \
--exclude gpu_display \
--color=always \
--no-run \
--target riscv64gc-unknown-linux-gnu
```

Change-Id: Ia7853de8ee0a11a5fdb716546a146f892229b0cb
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4501091
Commit-Queue: Dennis Kempin <denniskempin@google.com>
Reviewed-by: Dennis Kempin <denniskempin@google.com>
2023-05-03 16:50:25 +00:00
Daniel Verkamp
0bea3a3376 Cargo.toml: remove crosvm-direct binary
Remove the extra [[bin]] from Cargo.toml, as it is no longer used by the
chromeos-base/crosvm ebuild.

The "direct" feature is kept for now, since some of the functionality
behind that flag may still be useful (and should be moved to separate
features rather than "direct" eventually).

BUG=b:276993009
TEST=cargo build
TEST=tools/dev_container tools/presubmit

Change-Id: I78269d94913a216ebfb7f22ddc58d9cfdb6a6791
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4436629
Reviewed-by: Dennis Kempin <denniskempin@google.com>
Reviewed-by: Junichi Uekawa <uekawa@chromium.org>
Commit-Queue: Daniel Verkamp <dverkamp@chromium.org>
2023-04-17 23:54:48 +00:00
Elie Kheirallah
c2d0e8506b e2e_tests: Specify e2e_tests package for nextest run
currently running e2e_tests/run will run tests from root, and not
e2e_tests. This change specifies the package e2e_tests.

BUG=N/A
TEST=./tools/dev_container e2e_tests/run

Change-Id: I7a11d43045ab5809c9034b948c6a00db4b81ac84
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4416066
Auto-Submit: Elie Kheirallah <khei@google.com>
Commit-Queue: Dennis Kempin <denniskempin@google.com>
Reviewed-by: Dennis Kempin <denniskempin@google.com>
2023-04-11 23:53:01 +00:00
Daniel Verkamp
2855eaecb5 e2e_tests: remove unnecessary reference
Fixes clippy warning in Rust 1.68.

BUG=b:276487055
TEST=tools/clippy # with rust 1.68

Change-Id: I4482f26ac58de31931b82da5962899afc90f5377
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4391105
Commit-Queue: Daniel Verkamp <dverkamp@chromium.org>
Reviewed-by: Dennis Kempin <denniskempin@google.com>
2023-04-11 20:44:34 +00:00
Norman Bintang
8bbe844ef7 e2e_tests: snd: Increase aplay buffer size in do_playback
Change buffer size from 2048 to 48000 bytes, and period size from
1024 to 12000 bytes. 12000 is taken from 1/4 * 48000. By default,
aplay use period size equals to 1/4 of buffer size.

There are failures that result from underruns. As the objective of this
test is to ensure correctness, using a larger buffer size to avoid
underruns is acceptable.

BUG=b:233542268
TEST=./tools/run_tests2 --dut=host

Change-Id: I5e921f7c7528d11aabd3c998575ade4c3a9a7fb9
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4411220
Reviewed-by: Daniel Verkamp <dverkamp@chromium.org>
Reviewed-by: Chih-Yang Hsia <paulhsia@chromium.org>
Commit-Queue: Norman Bintang <normanbt@chromium.org>
2023-04-11 02:57:25 +00:00
Changyuan Lyu
757e70339c device: fs/9p: add options to specify uid and gid
New options uid and gid are added to the virtiofs/virito9p device to
allow specifying the uid/gid of the virtiofs/virito9p process in its
own user namespace created by minijail.

With these options:
* An identity mapping of the current host UID/GID can be set up
  between the host and the VM.
* The crosvm process does not need CAP_SETUID/CAP_SETGID.

Background: go/crosvm-virtiofs-transparent.
If the crosvm process has no CAP_SETGID/CAP_SETUID, the
uid_map/gid_map for the virtiofs process is limited by the kernel
function new_idmap_permitted() in linux/kernel/user_namespace.c.
Say the crosvm process UID is 5000, the uid_map has to be of the form
`<uid inside> 5000 1`. Currently crosvm requires `<uid inside>` to be
0.

These two options are useful when
* crosvm cannot get capabilities,
* there is only one user in the VM accessing the shared files so
  changing uid/gid would not happen,
* Only files owned by the current host user (say 5000) are shared to
  the VM, and these files need to be owned by the same uid (5000)
  in the VM.

If a user use "uid=5000" and "uidmap=5000 5000 1", the device
process changes its uid to 5000 before starting serving requests.
Now we have an identity mapping of user 5000 inside and outside the
device's minijail sandbox, and also inside and outside the VM.

If multiple users want to access the shared
file, gid/uid options are useless. It's be better to create a new
user namespace and give CAP_SETUID/CAP_SETGID to the crosvm.

TEST=cargo test; cargo test -p devices
TEST=cargo test --package e2e_tests --test fs
BUG=b:273346109

Change-Id: I1c59530e1e8bc968a54f40633c444eb64c700e55
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4299943
Reviewed-by: Keiichi Watanabe <keiichiw@chromium.org>
Commit-Queue: Changyuan Lyu <changyuanl@google.com>
Reviewed-by: Vikram Auradkar <auradkar@google.com>
2023-04-10 18:47:41 +00:00
Daniel Verkamp
083dcf75f4 tree-wide: apply nightly rustfmt
BUG=None
TEST=tools/fmt --nightly

Change-Id: Ifb08dd55ccf2a74ef739d7517a64970d24a82405
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4375640
Auto-Submit: Daniel Verkamp <dverkamp@chromium.org>
Reviewed-by: Dennis Kempin <denniskempin@google.com>
Commit-Queue: Dennis Kempin <denniskempin@google.com>
Commit-Queue: Daniel Verkamp <dverkamp@chromium.org>
2023-03-27 21:30:45 +00:00
Alexandre Courbot
23fa0fe784 e2e_tests: add "crosvm devices --vsock" integration tests
Now that the devices command supports the vsock device, add integration
tests for it.

BUG=b:217480043
TEST=cargo test -p e2e_tests --test vsock

Change-Id: I21e300b24c3fdec3a0770ff321456168ed1434b8
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4337341
Reviewed-by: Keiichi Watanabe <keiichiw@chromium.org>
Commit-Queue: Alexandre Courbot <acourbot@chromium.org>
Reviewed-by: Ryuichiro Chiba <chibar@chromium.org>
2023-03-22 09:23:13 +00:00
Norman Bintang
ceb7064647 e2e_tests: Add virtio-snd test
BUG=b:233542268
TEST=./tools/run_tests2 --dut=host

Change-Id: Icf429168c5bc470fa1f8cc5b6ea396f2d0b79563
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4306261
Reviewed-by: Chih-Yang Hsia <paulhsia@chromium.org>
Commit-Queue: Norman Bintang <normanbt@chromium.org>
2023-03-21 07:46:05 +00:00
Alexandre Courbot
e03fcd0bef e2e_tests: add vhost-user vsock tests
Since we are going to refactor the vhost-user vsock device, add some
integration tests to make sure we don't break anything.

BUG=b:217480043
TEST=cargo test -p e2e_tests --test vsock

Change-Id: I2a8eaa6c74f8d86aa164ebd92543fe280bc7906c
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4337340
Reviewed-by: Ryuichiro Chiba <chibar@chromium.org>
Reviewed-by: Keiichi Watanabe <keiichiw@chromium.org>
Commit-Queue: Alexandre Courbot <acourbot@chromium.org>
2023-03-16 05:14:34 +00:00
Dennis Kempin
b96ba4c8be e2e_tests: Switch to custom kernel config and debian rootfs
We switch from the chromeos-5.10 kernel with crostini configs
to a stripped down config building the mainline 6.1 branch.

This allows us more control over the guest kernel for testing
and significantly speeds up e2e tests (~4s -> 1.2s for all
tests run with nextest).

The rootfs is switched to Debian as that's what we use elsewhere
which makes this easier to maintain.

BUG=b:256652981
TEST=presubmit

Change-Id: Ib3897b8dbf3391eefdb1eedb69ec7555f4c77344
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4326888
Reviewed-by: Zihan Chen <zihanchen@google.com>
Commit-Queue: Dennis Kempin <denniskempin@google.com>
2023-03-15 21:09:39 +00:00
Dennis Kempin
6392b09a21 e2e_tests: Use virtio-console to speed up tests
Running all tests on a local workstation would take ~4-5s currently,
switching to virtio-console will significantly speed up the VM boot
and reduces the runtime to ~2-3s.

BUG=b:256652981
TEST=presubmit

Change-Id: I4ee87c9be4955d9dd89f30a72c91a1af96edf862
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4312801
Commit-Queue: Dennis Kempin <denniskempin@google.com>
Reviewed-by: Daniel Verkamp <dverkamp@chromium.org>
2023-03-08 23:16:38 +00:00
Dennis Kempin
2bc7c926cc e2e_tests: retry instead of thread::sleep in vhost tests
Adds a few utilities to that allow us to retry closures and
wait for child processes with timeouts.
These are used to repeatedly try reading from vsocks instead of
sleeping to wait for them to be available.
This is faster and more reliable.

BUG=b:256652981
TEST=presubmit

Change-Id: I2a4c74e8c1f9b8413f7afa22cce8248e74d07092
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4316911
Reviewed-by: Daniel Verkamp <dverkamp@chromium.org>
Reviewed-by: Ryuichiro Chiba <chibar@chromium.org>
Commit-Queue: Dennis Kempin <denniskempin@google.com>
2023-03-08 23:10:06 +00:00
Zihan Chen
9c9fbdc24c e2e_tests: Add strace and log settings to fixture
This allowes fixture to read these settings from env and thus allow
scripts to pass in desired testing configs without requiring a
custom-built rust test harness.
Test command below run in dev container with strace package installed
can produce debug level logs and separate per-process strace results
in designated files.

TEST=CROSVM_CARGO_TEST_E2E_WRAPPER_CMD="strace -ff --output=/workspace/stracetest" CROSVM_CARGO_TEST_LOG_LEVEL_DEBUG=1 CROSVM_CARGO_TEST_LOG_FILE=/workspace/logtest.log ./tools/bench boot

BUG=b:258316090

Change-Id: I5b0eb373802722075242e33027585d702da77e59
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4297485
Auto-Submit: Zihan Chen <zihanchen@google.com>
Reviewed-by: Dennis Kempin <denniskempin@google.com>
Commit-Queue: Dennis Kempin <denniskempin@google.com>
2023-03-02 22:07:33 +00:00
Zihan Chen
2524a185b6 e2e_tests: Restructure for initial benchmark support
- Restructured to share fixture between tests and benches
- Add bench script to run benchmark target

BUG=b:257303497
BUG=b:258316090
TEST=cargo clean && ./tools/build_release && ./tools/bench boot

Change-Id: I0ea3295839889e570032e03eec033d99b7b8e553
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4064114
Commit-Queue: Zihan Chen <zihanchen@google.com>
Auto-Submit: Zihan Chen <zihanchen@google.com>
Commit-Queue: Dennis Kempin <denniskempin@google.com>
Reviewed-by: Dennis Kempin <denniskempin@google.com>
2023-02-23 22:11:48 +00:00
Dennis Kempin
a54a5bc81a e2e_tests: Make prebuilt version part of the file name
This prevents us from using an older version of the image if a newer
version is specified.

BUG=b:269137600
TEST=run_tests

Change-Id: I9962feebb13c69b9fb9c5fb0fba64f265d46d08e
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4277626
Commit-Queue: Dennis Kempin <denniskempin@google.com>
Auto-Submit: Dennis Kempin <denniskempin@google.com>
Reviewed-by: Daniel Verkamp <dverkamp@chromium.org>
Commit-Queue: Daniel Verkamp <dverkamp@chromium.org>
2023-02-21 23:21:45 +00:00
Dennis Kempin
2b30441772 e2e_tests: Add sleep after creating vhost user backend
If crosvm launches quickly after starting the backend, it may
find that the device socket does not exist yet. This causes
occasional test failures.

Adding a sleep stabilizes the test a little, but should be replaced
with a proper wait loop while checking for the device socket to
become available.

BUG=b:269174700
TEST=./tools/run_tests --dut=host -E"package(e2e_tests)" \
  --no-unit-tests --repetitions 10

Change-Id: Ifaba81a5fb3628d07793b1310229de4a43d2a7b6
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4258306
Reviewed-by: Keiichi Watanabe <keiichiw@chromium.org>
Commit-Queue: Dennis Kempin <denniskempin@google.com>
Reviewed-by: Alexandre Courbot <acourbot@chromium.org>
2023-02-21 22:54:30 +00:00
Dennis Kempin
b2ec37b33f e2e_tests: Do not capture crosvm stdout
This was useful since the libtest harness could not capture stdout
for subprocesses and we would get very noisy test results.

However, with nextest, each test is run in a separate process and
will be hidden unless the test fails.

The test log will then contain an host and guest messages interleaved,
which greatly helps debugging.

Also switches the main serial output from syslog (which prints to
stderr) to stdout.

BUG=None
TEST=None

Change-Id: Ie3b377aeaef3ef575f9232430ac7392c83060d98
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4256511
Reviewed-by: Daniel Verkamp <dverkamp@chromium.org>
2023-02-21 22:54:30 +00:00
Dennis Kempin
a5312895e7 e2e_tests: Extend exec_in_guest functionality
This is a refactoring that adds the following functionality to
exec_in_guest:

- Receive exit codes from executed commands and by default check
  if they are zero.
- Add timeouts to all communication with the guest
- Allow commands to be executed asynchronously, to allow the test
  code to perform actions while the guest command is running.
- Add anyhow error handling with contexts for more helpful error
  messages

BUG=b:269137600
BUG=b:268539201

Change-Id: Ic069c3ccae363790a124db10a0db76e4ad4384c3
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4251717
Reviewed-by: Keiichi Watanabe <keiichiw@chromium.org>
Reviewed-by: Zihan Chen <zihanchen@google.com>
2023-02-21 22:54:30 +00:00
Frederick Mayle
3379ab7e92 e2e: disable suspend_resume tests
They are flaky and that is expected since the feature is incomplete.

BUG=b:269174979

Change-Id: I929e822b7f81742a5dba0fef637d6143f18302b1
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4256510
Reviewed-by: Dennis Kempin <denniskempin@google.com>
Reviewed-by: Elie Kheirallah <khei@google.com>
Commit-Queue: Frederick Mayle <fmayle@google.com>
2023-02-15 19:23:01 +00:00
Keiichi Watanabe
60f7474799 e2e_tests: Add virtiofs test
BUG=b:269068100
TEST=./run in e2e_tests

Change-Id: I637a6362ebc846e773fbbc0fe8223044f9e0839d
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4040654
Reviewed-by: Dennis Kempin <denniskempin@google.com>
Commit-Queue: Keiichi Watanabe <keiichiw@chromium.org>
2023-02-14 02:09:35 +00:00
Daniel Verkamp
c5bcdf29af cmdline: move restore command under snapshot
The previous command line interface had two top-level commands related
to snapshots, each with only one subcommand:

- crosvm snapshot take <snapshot-path> <control-socket>
- crosvm restore apply <snapshot-path> <control-socket>

This patch moves the `restore apply` command under `snapshot` to make it
easier to find and less redundant to have two levels of commands:

- crosvm snapshot take <snapshot-path> <control-socket>
- crosvm snapshot restore <snapshot-path> <control-socket>

The restore command is also more discoverable since it is listed in the
help for the snapshot command.

BUG=b:232437513
TEST=crosvm snapshot take /tmp/snapshot /tmp/crosvm
TEST=crosvm snapshot restore /tmp/snapshot /tmp/crosvm
TEST=cargo test -p e2e_tests suspend_resume -- --test-threads=1

Change-Id: I9c3c8662fba7631327829a118f6b53b297b2d806
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4227254
Commit-Queue: Daniel Verkamp <dverkamp@chromium.org>
Reviewed-by: Elie Kheirallah <khei@google.com>
Reviewed-by: Dennis Kempin <denniskempin@google.com>
2023-02-09 01:52:36 +00:00
Zihan Chen
28ce4e5423 crosvm: Uprev rust toolchain and dev container
- Rust toolchain is updated to 1.65.0
- Catapult dashboard upload tool is added to dev_container
- Bindgen is updated to latest version to support custom derive
- Derive Eq when PartialEq is derived as required by new Clippy

TEST=CQ, bindgen-all-the-things

FIXED=b:260784028
BUG=b:257303497

Change-Id: I2034cd09e0aed84d4e9b30f2e85d84d94a442ea4
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4228427
Auto-Submit: Zihan Chen <zihanchen@google.com>
Reviewed-by: Dennis Kempin <denniskempin@google.com>
Commit-Queue: Zihan Chen <zihanchen@google.com>
2023-02-08 20:26:30 +00:00
Dennis Kempin
c2ec26d7e8 e2e_tests: Clarify prebuilt download logs
This helps identify a potential deadlock by the NamedLock.

BUG=None
TEST=CQ

Change-Id: I0ef9606b6b5e36a1564ff3fee7720ae013365cc7
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4228215
Reviewed-by: Vikram Auradkar <auradkar@google.com>
Commit-Queue: Dennis Kempin <denniskempin@google.com>
2023-02-07 20:17:23 +00:00
Frederick Mayle
19f4b1243c devices: snapshot and restore for guest memory
`crosvm snapshot take ...` will write the contents of guest memory to a
file and `crosvm restore apply ...` will read that file to overwrite
guest memory.

To start with, the file is chosen by adding a ".mem" extension to the
snapshot file path. We should consider a better approach in the future,
maybe put them both in a tar file or have the user supply a directory
instead of a file path.

BUG=b:266514791

Change-Id: Ic05f94223fb74674bd57dcd2f848055b31eb5fdc
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4215313
Reviewed-by: Elie Kheirallah <khei@google.com>
Reviewed-by: Daniel Verkamp <dverkamp@chromium.org>
Reviewed-by: Noah Gold <nkgold@google.com>
Commit-Queue: Frederick Mayle <fmayle@google.com>
2023-02-06 22:44:17 +00:00
Frederick Mayle
1afdc4d908 e2e_tests: suspend_resume: consume exec_command_async response
Without this, subsequent commands would fail.

BUG=b:232437513

Change-Id: Ibbe105e0e80b317cc3cd32ddd184892e1a9ab613
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4214944
Reviewed-by: Elie Kheirallah <khei@google.com>
Reviewed-by: Dennis Kempin <denniskempin@google.com>
2023-02-02 20:38:30 +00:00
Elie Kheirallah
c3a170e926 e2e_tests: Add Suspend/Resume related tests.
Add snapshot/restore tests for the VM.
This test currently suspends the VM, then sends a command to it.
This command is stored in the buffer of the serial device.
A snapshot is taken with the command stored.
The device is resumed, which then runs the command.
A restore is triggered using the image taken earlier, which then runs
the image again.

This test will be developed to include more VM changes as more devices
get snapshot.

Bug=b:232437513
Test=./tools/dev_container e2e_tests/run

Change-Id: If6b39bd9b0f1d2962748cf089959f57f65407ced
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/3949685
Reviewed-by: Dennis Kempin <denniskempin@google.com>
Commit-Queue: Elie Kheirallah <khei@google.com>
Reviewed-by: Frederick Mayle <fmayle@google.com>
2023-01-20 23:31:00 +00:00
Elie Kheirallah
b335b9565d e2e_tests: add disable-sandbox to e2e_tests
Add disable_sandbox function to add `disable-sandbox` argument to the
config.
Add disable-sandbox test to all existing e2e_tests.

BUG=None
TEST=./tools/presubmit --all

Change-Id: I4ee00402c7220dffbce57a68670b6ae3c2b95d5f
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4165873
Reviewed-by: Dennis Kempin <denniskempin@google.com>
Commit-Queue: Elie Kheirallah <khei@google.com>
2023-01-19 21:41:26 +00:00
Vikram Auradkar
69429106d0 tools: add script to setup rust toolchain and other dependencies
BUG=b:264555939
TEST= ran the script on a non-crop windows machine

Change-Id: Ib615b45137f5da73be511d29f6655946d78455fe
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4149727
Reviewed-by: Dennis Kempin <denniskempin@google.com>
Commit-Queue: Vikram Auradkar <auradkar@google.com>
2023-01-12 23:25:39 +00:00
Daniel Verkamp
ac0fc378a3 Fix remaining Chrome/Chromium OS instances
These should be written as ChromeOS and ChromiumOS (without the space)
to match the updated branding. The copyright headers were already
migrated to the new style (https://crrev.com/c/3894243), but there were
some more instances left over.

BUG=None
TEST=tools/cargo-doc

Change-Id: I8c76aea2eb33b2e370ab71ee9b5cc0a4cfd00585
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4129934
Reviewed-by: Dennis Kempin <denniskempin@google.com>
Commit-Queue: Daniel Verkamp <dverkamp@chromium.org>
2023-01-03 22:14:30 +00:00
Daniel Verkamp
000e65339e e2e_tests: fix direct feature check
Two small tweaks:
- The original check had a typo ('features' vs. 'feature').
- Use the cfg! macro to simplify the code (cfg_if! is not needed here).

BUG=None
TEST=tools/presubmit --all
TEST=crosvm CQ

Change-Id: Icf84c24cb7f34bf4629e99ee1d7d33676e7ae8c1
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4126555
Auto-Submit: Daniel Verkamp <dverkamp@chromium.org>
Commit-Queue: Alexandre Courbot <acourbot@chromium.org>
Reviewed-by: Alexandre Courbot <acourbot@chromium.org>
2022-12-28 01:47:49 +00:00
Vikram Auradkar
13f8029329 e2e_tests: Add windows tests
The windows code is build only for now because
- crosvm upstream windows code needs some changes to be runnable
- LUCI windows infra is not ready for nested vm

BUG=b:253498690
TEST=ran `cargo t --features all-msvc64 -p e2e_tests` downstream

Change-Id: I318f6f17fc91bc76cfd28741a526193362ab4e50
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4096606
Commit-Queue: Vikram Auradkar <auradkar@google.com>
Reviewed-by: Daniel Verkamp <dverkamp@chromium.org>
2022-12-14 14:21:51 +00:00
Vikram Auradkar
5aa1ada5f8 e2e_test: Move unix specific code into their module
BUG=b:253498690
TEST=NONE

Change-Id: I3cc1d3c79261a21f9f67c35d05a26b52d3310f59
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4090590
Reviewed-by: Dennis Kempin <denniskempin@google.com>
Commit-Queue: Vikram Auradkar <auradkar@google.com>
Reviewed-by: Daniel Verkamp <dverkamp@chromium.org>
2022-12-09 19:00:43 +00:00
Vikram Auradkar
ccd5d89462 e2e_test: Refactor to separate platform dependent code
BUG=b:253498690
TEST=NONE

Change-Id: Ib5c7c07820deaa9f3b3cd49e5a6715fb03696e23
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4090589
Commit-Queue: Daniel Verkamp <dverkamp@chromium.org>
Auto-Submit: Vikram Auradkar <auradkar@google.com>
Reviewed-by: Daniel Verkamp <dverkamp@chromium.org>
2022-12-09 00:15:34 +00:00
Vikram Auradkar
b086012a07 e2e_tests: Use platform independent function to download prebuilts
BUG=b:253498690
TEST=NONE

Change-Id: I8a12cd226e5442a0f280e59b6041cde326063794
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4090588
Reviewed-by: Daniel Verkamp <dverkamp@chromium.org>
Auto-Submit: Vikram Auradkar <auradkar@google.com>
Commit-Queue: Daniel Verkamp <dverkamp@chromium.org>
2022-12-09 00:08:39 +00:00
Daniel Verkamp
a506de7ee6 Reformat with nightly rustfmt
BUG=None
TEST=tools/fmt --nightly

Change-Id: I7c74b9190bf28e3d7e3ac4401a2b79800a9e4b76
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4087003
Commit-Queue: Daniel Verkamp <dverkamp@chromium.org>
Reviewed-by: Dennis Kempin <denniskempin@google.com>
2022-12-07 19:33:09 +00:00
Vikram Auradkar
6e46da68ba e2e_tests: stay in the current directory
BUG=NONE
TEST=`source e2e_tests/guest_under_test/use_local_build.sh`

Change-Id: Ife81553ba2bdc2b37e079191c3d13d86d08c5136
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4072946
Reviewed-by: Daniel Verkamp <dverkamp@chromium.org>
Commit-Queue: Vikram Auradkar <auradkar@google.com>
2022-12-02 00:16:50 +00:00
Daniel Verkamp
dfe9869d6c Rust 1.65: Fix clippy borrow_deref_ref, needless_borrow, and explicit_auto_deref lints
BUG=b:260784028
TEST=tools/clippy

Change-Id: I85cd5e096bc7b977fe1d9b231c08338b65e71780
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4064714
Reviewed-by: Alexandre Courbot <acourbot@chromium.org>
Commit-Queue: Daniel Verkamp <dverkamp@chromium.org>
2022-11-30 19:33:31 +00:00
Keiichi Watanabe
e060d6c639 e2e_tests: Add vhost-user block with devices command
BUG=b:243127910
TEST=./e2e_tests/run

Change-Id: I22dfc4e1d75ff0b310a5f624568b390d2dba6c1e
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4054811
Reviewed-by: Alexandre Courbot <acourbot@chromium.org>
Commit-Queue: Keiichi Watanabe <keiichiw@chromium.org>
2022-11-24 09:16:00 +00:00
Keiichi Watanabe
d9d74da342 e2e_tests: Add vhost-user block test
BUG=b:243127910
TEST=./e2e_tests/run

Change-Id: Iae16498f79f1395a6aa7ab834addc3e30d767164
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/3820966
Reviewed-by: Daniel Verkamp <dverkamp@chromium.org>
Reviewed-by: Alexandre Courbot <acourbot@chromium.org>
Commit-Queue: Keiichi Watanabe <keiichiw@chromium.org>
2022-11-24 08:49:34 +00:00
Keiichi Watanabe
6ec82a2305 e2e_tests: fixture: Move VM-specific logic to a separate module
To prepare adding more fixtures such as logic for vhost-user device,
move the existing code to create a VM to a separate module.
Specifically, move the all code in e2e_tests/tests/fixture/mod.rs into
e2e_tests/tests/fixture/vm.rs.

BUG=b:243127910
TEST=./e2e_tests/run

Change-Id: I23e6e5db35ce09b5003f37a9a44f9fda8f502809
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4028760
Reviewed-by: Daniel Verkamp <dverkamp@chromium.org>
Reviewed-by: Alexandre Courbot <acourbot@chromium.org>
Commit-Queue: Keiichi Watanabe <keiichiw@chromium.org>
2022-11-24 08:14:05 +00:00
Alexandre Courbot
e8cbbb457c crosvm: rename executable_path positional argument to kernel
This is a shorter and more explicit name, and is also what qemu uses for
the same parameter.

Since this is a positional argument, it doesn't affect command-line
argument handling, only the (currently unused) configuration files.

BUG=b:255223604
TEST=None

Change-Id: Ice01335a690550e5afd05b93c6c968b0d0859f32
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4044726
Reviewed-by: Daniel Verkamp <dverkamp@chromium.org>
Reviewed-by: Keiichi Watanabe <keiichiw@chromium.org>
Commit-Queue: Alexandre Courbot <acourbot@chromium.org>
2022-11-23 01:58:23 +00:00
Alexandre Courbot
07fc7dbecd crosvm: use kebab-case for disk options
The rule for crosvm options is that they should be specified in
kebab-case. Switch the disk options to that format, while also keeping
camel_case aliases for compatibility.

BUG=b:255223604
TEST=--block option works with both block-size and block_size
parameters.
TEST=cargo test -p devices block::tests::params_from_key_values
TEST=cargo test -p e2e_tests boot_test_vm

Change-Id: Ie095565ca4b27d59ed86ddc0613419e45749b3fa
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4040818
Reviewed-by: Daniel Verkamp <dverkamp@chromium.org>
Commit-Queue: Alexandre Courbot <acourbot@chromium.org>
2022-11-23 01:57:04 +00:00
Alexandre Courbot
884ea737c3 e2e_tests: add test for booting a VM from a configuration file
Add `boot_test_vm_config_file`, which boots a VM similar to
`boot_test_vm`, but using a configuration file instead of command-line
options wherever possible.

BUG=b:218223240
TEST=cargo test -p e2e_tests boot_test_vm

Change-Id: I45f82bfa8201776081e18c50011d928d8c7be0f0
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4022749
Reviewed-by: Keiichi Watanabe <keiichiw@chromium.org>
Commit-Queue: Alexandre Courbot <acourbot@chromium.org>
Reviewed-by: Dennis Kempin <denniskempin@google.com>
2022-11-21 12:00:39 +00:00
Zihan Chen
23e3de8afb e2e_tests: Uprev kernel to 5.10
Block resize failed in my cloudtop after uprev, it works fine
when tested manually (with same kernel and rootfs). Adding a delay
fixed it.

TEST=./e2e_tests/run
FIXED=b:259160336

Change-Id: I2cfb4fbc491b39b721b0358181cad2ee75398adc
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4026591
Reviewed-by: Daniel Verkamp <dverkamp@chromium.org>
Auto-Submit: Zihan Chen <zihanchen@google.com>
Commit-Queue: Zihan Chen <zihanchen@google.com>
2022-11-15 21:06:40 +00:00
Ryuichiro Chiba
4db19f1baa e2e_tests: vsock: use a random cid for a guest
Using a fixed CID may cause conflict with another guest easily.
Change to use a random CID for a test VM.

BUG=b:258072662
TEST=`./tools/presubmit`

Change-Id: I1f3bab8bd64664b1b2feb480a6d0e285ea4099bb
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4012278
Commit-Queue: Ryuichiro Chiba <chibar@chromium.org>
Reviewed-by: Keiichi Watanabe <keiichiw@chromium.org>
2022-11-08 04:26:47 +00:00
Ryuichiro Chiba
9406b788c3 e2e_tests: Add vsock tests
Add vsock tests to confirm the vsock device works at crosvm upstream

BUG=b:254375643
TEST=`./tools/presubmit`

Change-Id: I24137e00dc449c97be8ee7e9101906541ea843d1
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/3998914
Reviewed-by: Takaya Saeki <takayas@chromium.org>
Commit-Queue: Ryuichiro Chiba <chibar@chromium.org>
Reviewed-by: Keiichi Watanabe <keiichiw@chromium.org>
2022-11-07 05:54:34 +00:00
Ryuichiro Chiba
df7a2e51bf e2e_tests: Add a tool to dev_container and guest rootfs
Add a tool used in vsock tests to dev_container and guest rootfs

BUG=b:254375643
TEST=`./tools/presubmit` with the new guest rootfs on the new
dev_container

Change-Id: I135e6d2d413bedffef0fd69edd4ab14080429e3a
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/3974349
Reviewed-by: Dennis Kempin <denniskempin@google.com>
Reviewed-by: Takaya Saeki <takayas@chromium.org>
Commit-Queue: Ryuichiro Chiba <chibar@chromium.org>
Reviewed-by: Keiichi Watanabe <keiichiw@chromium.org>
2022-11-07 04:00:40 +00:00
Dennis Kempin
004417152f e2e_tests: Update prebuild URL to crosvm-infra
We no longer need to use the ChromeOS infra for storing the prebuilts
and have updated all other references already. This one was missed.

BUG=None
TEST=run_tests

Change-Id: Ie8ee25d731591c78e3b49ad0dadbed87aaafdf49
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4005658
Reviewed-by: Daniel Verkamp <dverkamp@chromium.org>
Auto-Submit: Dennis Kempin <denniskempin@google.com>
Commit-Queue: Daniel Verkamp <dverkamp@chromium.org>
2022-11-04 19:06:20 +00:00
Dennis Kempin
009cb53c76 Rename integration_tests to e2e_tests
Cargo already uses the term 'integration test' for tests living
in the tests/ directory of a crate.

To prevent confusion, rename our 'integration_tests' crate to
'e2e_tests'.

BUG=None
TEST=presubmit

Change-Id: Icfa819eaed08be54ab0f36092f1ba367f3f1ce88
Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/4004977
Commit-Queue: Dennis Kempin <denniskempin@google.com>
Reviewed-by: Zihan Chen <zihanchen@google.com>
2022-11-03 22:49:39 +00:00