133 lines
4 KiB
Markdown
133 lines
4 KiB
Markdown
# 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 isn’t
|
||
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
|
||
```
|