75 lines
2.3 KiB
Markdown
75 lines
2.3 KiB
Markdown
|
|
# ART chroot-based testing on a Linux VM
|
||
|
|
|
||
|
|
This doc describes how to set up a Linux VM and how to run ART tests on it.
|
||
|
|
|
||
|
|
## Set up the VM
|
||
|
|
|
||
|
|
Use script art/build/buildbot-vm.sh. It has various commands (actions) described
|
||
|
|
below. First, set up some environment variables used by the script (change as
|
||
|
|
you see fit):
|
||
|
|
```
|
||
|
|
export ART_TEST_SSH_USER=ubuntu
|
||
|
|
export ART_TEST_SSH_HOST=localhost
|
||
|
|
export ART_TEST_SSH_PORT=10001
|
||
|
|
```
|
||
|
|
Create the VM (download it and do some initial setup):
|
||
|
|
```
|
||
|
|
art/tools/buildbot-vm.sh create
|
||
|
|
```
|
||
|
|
Boot the VM (login is `$ART_TEST_SSH_USER`, password is `ubuntu`):
|
||
|
|
```
|
||
|
|
art/tools/buildbot-vm.sh boot
|
||
|
|
```
|
||
|
|
Configure SSH (enter `yes` to add VM to `known_hosts` and then the password):
|
||
|
|
```
|
||
|
|
art/tools/buildbot-vm.sh setup-ssh
|
||
|
|
```
|
||
|
|
Now you have the shell (no need to enter password every time):
|
||
|
|
```
|
||
|
|
art/tools/buildbot-vm.sh connect
|
||
|
|
```
|
||
|
|
To power off the VM, do:
|
||
|
|
```
|
||
|
|
art/tools/buildbot-vm.sh quit
|
||
|
|
```
|
||
|
|
To speed up SSH access, set `UseDNS no` in /etc/ssh/sshd_config on the VM (and
|
||
|
|
apply other tweaks described in https://jrs-s.net/2017/07/01/slow-ssh-logins).
|
||
|
|
|
||
|
|
# Run ART tests
|
||
|
|
```
|
||
|
|
This is done in the same way as you would run tests in chroot on device (except
|
||
|
|
for a few extra environment variables):
|
||
|
|
|
||
|
|
export ANDROID_SERIAL=nonexistent
|
||
|
|
export ART_TEST_SSH_USER=ubuntu
|
||
|
|
export ART_TEST_SSH_HOST=localhost
|
||
|
|
export ART_TEST_SSH_PORT=10001
|
||
|
|
export ART_TEST_ON_VM=true
|
||
|
|
|
||
|
|
. ./build/envsetup.sh
|
||
|
|
lunch armv8-eng # or aosp_riscv64-userdebug, etc.
|
||
|
|
art/tools/buildbot-build.sh --target # --installclean
|
||
|
|
|
||
|
|
art/tools/buildbot-cleanup-device.sh
|
||
|
|
|
||
|
|
# The following two steps can be skipped for faster iteration, but it doesn't
|
||
|
|
# always track and update dependencies correctly (e.g. if only an assembly file
|
||
|
|
# has been modified).
|
||
|
|
art/tools/buildbot-setup-device.sh
|
||
|
|
art/tools/buildbot-sync.sh
|
||
|
|
|
||
|
|
art/test/run-test --chroot $ART_TEST_CHROOT --64 --interpreter -O 001-HelloWorld
|
||
|
|
art/test.py --target -r --ndebug --no-image --64 --interpreter # specify tests
|
||
|
|
art/tools/run-gtests.sh
|
||
|
|
|
||
|
|
art/tools/buildbot-cleanup-device.sh
|
||
|
|
```
|
||
|
|
Both test.py and run-test scripts can be used. Tweak options as necessary.
|
||
|
|
|
||
|
|
# Limitations
|
||
|
|
|
||
|
|
Limitations are mostly related to the absence of system properties on the Linux.
|
||
|
|
They are not really needed for ART tests, but they are used for test-related
|
||
|
|
things, e.g. to find out if the tests should run in debug configuration (option
|
||
|
|
`ro.debuggable`). Therefore debug configuration is currently broken.
|