mirror of
https://chromium.googlesource.com/crosvm/crosvm
synced 2025-02-06 10:32:10 +00:00
767e094fb8
Updates run_tests to use cargo style target triples for specifying build targets. A simple 'aarch64' or 'armhf' was nice while we just had linux builds. We now are looking at windows and possibly different toolchain options (e.g. msvc vs gnu), so our old system was getting confusing and inconsistent. We used to have some special handling for adding wrappers to test runs for emulation (e.g. wine, qemu). That logic has been moved into TestTarget which now contains not just where to run the test but also how. Supported are armhf/aarch64 qemu as well as wine64. The CLI has been updated to match and now uses the build-target argument instead of arch. The following combinations have been tested (though not all combinations actually pass all tests, which is a separate issue). ./tools/run_tests ./tools/run_tests --target=host --build-target=x86_64-unknown-linux-gnu ./tools/run_tests --target=host --build-target=armhf ./tools/run_tests --target=host --build-target=aarch64 ./tools/run_tests --target=host --build-target=mingw64 ./tools/run_tests --target=vm:aarch64 ./tools/run_tests --target=vm:aarch64 --build-target=armhf BUG=b:233914170 TEST=See above Change-Id: Ic6dbb5b39788e2573714606d3bb0e7c712032d91 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/3739240 Tested-by: kokoro <noreply+kokoro@google.com> Commit-Queue: Dennis Kempin <denniskempin@google.com> Reviewed-by: Daniel Verkamp <dverkamp@chromium.org>
118 lines
2.9 KiB
Bash
Executable file
118 lines
2.9 KiB
Bash
Executable file
#!/bin/bash
|
|
# Copyright 2021 The Chromium OS Authors. All rights reserved.
|
|
# Use of this source code is governed by a BSD-style license that can be
|
|
# found in the LICENSE file.
|
|
set -e
|
|
|
|
cd "$(dirname $0)/.."
|
|
|
|
HELP="This will run presubmit checks for crosvm.
|
|
|
|
To run all checks just run
|
|
|
|
$ ./tools/presubmit
|
|
|
|
The checks can be run in parallel for faster execution:
|
|
|
|
$ ./tools/presubmit --tmux
|
|
|
|
This will open a tmux session to run all presubmit builds in parallel. It will
|
|
create a nested tmux session if you are already using it.
|
|
|
|
All tests are executed in the local development environment. If your host is not
|
|
set up for aarch64 builds, it will use './tools/dev_container' to build run
|
|
those.
|
|
|
|
There are three levels of presubmit tests that can be run:
|
|
|
|
$ ./tools/presubmit --quick
|
|
$ ./tools/presubmit
|
|
$ ./tools/presubmit --all
|
|
|
|
The quick mode will only cover x86 and does not require a dev_container. The
|
|
default mode will add aarch64 tests, and the all mode will test everything that
|
|
is also tested on Kokoro.
|
|
"
|
|
|
|
while [[ $# -gt 0 ]]; do
|
|
case "$1" in
|
|
-q | --quick)
|
|
QUICK=true
|
|
shift
|
|
;;
|
|
-a | --all)
|
|
ALL=true
|
|
shift
|
|
;;
|
|
--tmux)
|
|
RUN_IN_TMUX=true
|
|
shift
|
|
;;
|
|
-h | --help)
|
|
echo "$HELP"
|
|
exit 0
|
|
shift
|
|
;;
|
|
*)
|
|
echo "unknown argument $1"
|
|
exit 1
|
|
;;
|
|
esac
|
|
done
|
|
|
|
run_commands_in_tmux() {
|
|
local tmux_commands=(
|
|
set-option -g default-shell /bin/bash \;
|
|
new-session "$1; read -p 'Press enter to close.'" \;
|
|
)
|
|
for cmd in "${@:2}"; do
|
|
tmux_commands+=(
|
|
split-window -h "$cmd; read -p 'Press enter to close.'" \;
|
|
)
|
|
done
|
|
tmux_commands+=(
|
|
select-layout even-horizontal \;
|
|
)
|
|
TMUX="" tmux "${tmux_commands[@]}"
|
|
}
|
|
|
|
run_commands() {
|
|
for cmd in "$@"; do
|
|
echo "$ ${cmd}"
|
|
bash -c "$cmd"
|
|
echo
|
|
done
|
|
}
|
|
|
|
aarch64_wrapper() {
|
|
if ! (rustup target list --installed | grep -q aarch64 &&
|
|
dpkg --print-foreign-architectures | grep -q arm64); then
|
|
echo "./tools/dev_container"
|
|
fi
|
|
}
|
|
|
|
commands=(
|
|
"./tools/health-check"
|
|
"./tools/run_tests --target=host"
|
|
)
|
|
|
|
if [ "$ALL" == true ]; then
|
|
commands+=(
|
|
"$(aarch64_wrapper) ./tools/run_tests --target=vm:aarch64"
|
|
"$(aarch64_wrapper) ./tools/run_tests --target=vm:aarch64 --build-target=armhf"
|
|
"./tools/run_tests --target=host --build-target=mingw64 --build-only"
|
|
"cargo build --verbose --no-default-features"
|
|
)
|
|
elif [ "$QUICK" != true ]; then
|
|
commands+=(
|
|
# Test via user-space emulation for faster, but less complete results.
|
|
"$(aarch64_wrapper) ./tools/run_tests --target=host --build-target=aarch64"
|
|
"./tools/run_tests --target=host --build-target=mingw64 --build-only"
|
|
)
|
|
fi
|
|
|
|
if [ "$RUN_IN_TMUX" = true ]; then
|
|
run_commands_in_tmux "${commands[@]}"
|
|
else
|
|
run_commands "${commands[@]}"
|
|
fi
|