android_mt6572_jiabo/external/autotest/docs/test-droid.md
2025-09-05 16:56:03 +08:00

133 lines
4 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# test\_droid: Quick Primer
## References
[Autotest Developer Guide](https://www.chromium.org/chromium-os/testing/autotest-user-doc)
[test\_that Basic Usage](docs/test-that.md)
## Objective
This document contains instructions for Brillo/Android developers interested in
running basic automated integration tests at their desk. Developers can run
existing autotest tests as well as write their own. Testing on Brillo/Android
is currently limited to server-side tests, which run on an autotest server and
control a Brillo/Android DUT (device under test) via remote command execution.
Running client-side autotest tests requires Python on the DUT and isnt
currently supported. `test_droid` does not support the autoupdate end-to-end
test, for instructions on how to run this test please refer to the Running
Brillo/Android Autoupdate End-to-End Test doc.
## Usage
The autotest repository is checked out in both AOSP and internal manifests at
external/autotest.
### Running tests against a single local device under test
Once you have a local copy of the autotest source, you can easily run tests
against a DUT connected directly to your workstation via a USB cable. Please
note your first time running `test_droid` it will download and install a number
of required packages locally into your autotest checkout.
First lookup the device serial number:
```
$ adb devices
* daemon started successfully *
List of devices attached
7d52318 device
```
Run site\_utils/test\_droid.py from your autotest checkout to launch a test
against a given DUT:
```
$ ./site_utils/test_droid.py <DUT Serial Number> <Test Name>
```
For example, to run the brillo\_WhitelistedGtests test:
```
$ ./site_utils/test_droid.py 7d52318 brillo_WhitelistedGtests
```
`test_droid` can run multiple tests at once:
```
$ ./site_utils/test_droid.py 7d52318 \
brillo_WhitelistedGtests brillo_KernelVersionTest
```
As well as test suites:
```
$ ./site_utils/test_droid.py 7d52318 suite:brillo-bvt
```
### Running tests that require multiple devices under test
Autotest now supports the concept of testbeds, which are multiple devices being
controlled by a single test. `test_droid` supports running these tests
by specifying a comma separated list of serials as the test device:
```
$ adb devices
List of devices attached
emulator-5554 device
7d52318 device
$ ./site_utils/test_droid.py emulator-5554,7d52318 testbed_DummyTest
```
### Running tests against a remote device under test
`test_droid` can run tests against devices connected to a remote server. This
requires passwordless SSH access from the workstation to the remote server.
If no username is specified, `test_droid` will try the root and adb users.
If using the adb user, make sure it has passwordless sudo
rights to run the adb and fastboot commands. You can specify a
different user in the remote host name (the same passwordless requirement
applies).
The easiest way to set this up is to use the
[Chrome OS testing keys](https://www.chromium.org/chromium-os/testing/autotest-developer-faq/ssh-test-keys-setup).
Add to your SSH config an entry that looks like the following:
```
HostName <Remote Server IP or Hostname>
Port 9222
User root
CheckHostIP no
StrictHostKeyChecking no
IdentityFile ~/.ssh/testing_rsa
Protocol 2
```
To run the test:
```
$ ./site_utils/test_droid.py \
-r <Remote Server IP or Hostname> <Serial Number> \
<Test Name>
$ ./site_utils/test_droid.py \
-r <User>@<Remote Server IP or Hostname> \
<Serial Number> <Test Name>
$ ./site_utils/test_droid.py -r 100.96.48.119 7d52318 suite:brillo-bvt
```
### Advanced: Uploading Commits for Review
Currently Autotest in AOSP is read-only, so you cannot use repo upload to
upload code changes. If you do edit or add a new test, make a commit and upload
it to https://chromium-review.googlesource.com.
Be sure to run pylint on every file you touch:
```
$ ./utils/run_pylint.py <file name>
```
Then upload your commit for review:
```
$ git push https://chromium.googlesource.com/chromiumos/third_party/autotest \
<local branch name>:refs/for/master
```