| ## Introduction |
| |
| `test_that` is the supported mechanism to run autotests against Chrome OS |
| devices at your desk. `test_that` replaces an older script, `run_remote_tests`. |
| |
| Features for testing a local device: |
| - CTRL+C kills `test_that` and all its autoserv children. Orphaned processes |
| are no longer left behind. |
| - Tests that require binary autotest dependencies will just work, because |
| test_that always runs from the sysroot location. |
| - Running emerge after python-only test changes is no longer necessary. |
| test_that uses autotest_quickmerge to copy your python changes to the |
| sysroot. |
| - Tests are generally specified to `test_that` by the NAME field of their |
| control file. Matching tests by filename is supported using f:[file |
| pattern] |
| |
| In addition to running tests against local device, `test_that` can be used to |
| launch jobs in the ChromeOS Hardware Lab (or against a local Autotest instance |
| or a Moblab). This feature is only supported for infrastructure-produced builds |
| that were uploaded to google storage. |
| |
| ### Example uses (inside the chroot) |
| |
| Run the test(s) named dummy\_Pass: |
| |
| ``` |
| $ test_that -b ${board} ${host} dummy_Pass |
| ``` |
| |
| Run the test(s) named dummy\_Pass.suspend: |
| |
| ``` |
| $ test_that -b ${board} ${host} dummy_Pass.suspend |
| ``` |
| |
| Run the bvt-inline suite against dut: |
| |
| ``` |
| $ test_that -b ${board} ${host} suite:bvt-inline |
| ``` |
| |
| Run all tests whose names match the regular expression `^login_.*$`. Note that |
| even though these tests have binary dependencies, there is no longer a need to |
| specify extra flags. |
| |
| ``` |
| $ test_that -b ${board} ${host} e:login_.* |
| ``` |
| |
| Run all tests whose control file filename matches the regular expression |
| `^.*control.dummy$`: |
| |
| ``` |
| $ test_that -b ${board} ${host} f:.*control.dummy |
| ``` |
| |
| ### Running jobs in the lab |
| |
| `test_that` now allows you to run jobs in the test lab. The usage is similar to |
| running tests against a specified host. The keyword :lab: is used as |
| test\_that's REMOTE argument, and the -i/--build argument is required, and takes |
| a trybot, paladin, or canary build number. To learn how to build a trybot image |
| with a new test that you're iterating on, see "dynamic suite" codelab or the |
| [Chromium OS Remote |
| Trybots](https://sites.google.com/a/chromium.org/dev/chromium-os/build/using-remote-trybots) |
| guide. |
| |
| For instance: |
| |
| ``` |
| $ test_that -b lumpy -i lumpy-paladin/R38-6009.0.0-rc4 :lab: dummy_Pass |
| ``` |
| |
| This will kick off a suite in the lab that consists of just 1 job, dummy\_Pass, |
| to run in this case on board lumpy using the image |
| lumpy-paladin/R38-6009.0.0-rc4. The lab's scheduler will take responsibility |
| for finding a suitable set of hosts, provisioning them to the correct image, |
| and running the tests. `test_that` will return after the suite finishes running, |
| with a suite run report. |
| |
| You can specify multiple tests or test-matching expressions in the same way as |
| before: |
| |
| ``` |
| $ test_that -b lumpy -i ${latest_image} :lab: dummy_Pass dummy_Fail |
| $ test_that -b lumpy -i ${latest_image} :lab: e:login_.* |
| ``` |
| |
| Kicking off a run in the lab should be useful whenever you need to run a |
| particular test on a board or image that you do not have readily available |
| locally.For occasional runs of ad-hoc suites in the lab, this will also avoid |
| the need to create a suite control file and wait for it to end up in an image. |
| |
| You can also kick off a suite, for example with: |
| |
| ``` |
| test_that -b peach_pit :lab: suite:pyauto_perf -i 'peach_pit-release/R32-4763.0.0' |
| ``` |
| |
| That told me that my job ID was 5196037. I could follow along by going to |
| http://cautotest/afe/#tab_id=view_job&object_id=5195962. |
| |
| Things to note about running in the lab: |
| |
| - This feature will only work on builds that produced autotest test artifacts. |
| If your build doesn't have such artifacts, you will see a |
| [confusing error](https://crbug.com/354556). The easiest way today to |
| guarantee that hwtest artifacts are produced is to make sure that your tryjob |
| is launched with the --hwtest flag. Once [this bug](https://crbug.com/299838) |
| is fixed that will no longer be the case. |
| - By default, jobs will be scheduled in the `suites` machine pool. That can be |
| overridden with the `-p` flag. |
| - This will only work with images newer than Sept 20, 2013 (specifically, builds |
| that contain Ifa73d7de7aac9c6efebd5f559708623804ad3691). |
| |
| |
| ### Running jobs against a local Autotest setup or MobLab |
| |
| `test_that` allows you to run jobs against a local Autotest setup or a |
| MobLab instance. This usage is similar to running tests in the lab. The argument |
| --web allows you to specify the web address of the Autotest instance you want to |
| run tests within. |
| |
| For instance: |
| ``` |
| $ test_that -b lumpy -i lumpy-paladin/R38-6009.0.0-rc4 --web 100.96.51.136 :lab: |
| dummy_Pass |
| ``` |
| |
| This will kick off the dummy_Pass test on a lumpy device on the Autotest |
| instance located at 100.96.51.136 |