| Christopher Wiley | 191e10c | 2016-02-01 14:56:56 -0800 | [diff] [blame^] | 1 | ## Introduction |
| 2 | |
| 3 | `test_that` is the supported mechanism to run autotests against Chrome OS |
| 4 | devices at your desk. `test_that` replaces an older script, `run_remote_tests`. |
| 5 | |
| 6 | Features: |
| 7 | - CTRL+C kills `test_that` and all its autoserv children. Orphaned processes |
| 8 | are no longer left behind. |
| 9 | - Tests that require binary autotest dependencies will just work, because |
| 10 | test_that always runs from the sysroot location. |
| 11 | - Running emerge after python-only test changes is no longer necessary. |
| 12 | test_that uses autotest_quickmerge to copy your python changes to the |
| 13 | sysroot. |
| 14 | - Tests are generally specified to `test_that` by the NAME field of their |
| 15 | control file. Matching tests by filename is supported using f:[file |
| 16 | pattern] |
| 17 | |
| 18 | ### Example uses (inside the chroot) |
| 19 | |
| 20 | Run the test(s) named dummy\_Pass: |
| 21 | |
| 22 | ``` |
| 23 | $ test_that -b ${board} ${host} dummy_Pass |
| 24 | ``` |
| 25 | |
| 26 | Run the test(s) named dummy\_Pass.suspend: |
| 27 | |
| 28 | ``` |
| 29 | $ test_that -b ${board} ${host} dummy_Pass.suspend |
| 30 | ``` |
| 31 | |
| 32 | Run the smoke suite against dut: |
| 33 | |
| 34 | ``` |
| 35 | $ test_that -b ${board} ${host} suite:smoke |
| 36 | ``` |
| 37 | |
| 38 | Run all tests whose names match the regular expression `^login_.*$`. Note that |
| 39 | even though these tests have binary dependencies, there is no longer a need to |
| 40 | specify extra flags. |
| 41 | |
| 42 | ``` |
| 43 | $ test_that -b ${board} ${host} e:login_.* |
| 44 | ``` |
| 45 | |
| 46 | Run all tests whose control file filename matches the regular expression |
| 47 | `^.*control.dummy$`: |
| 48 | |
| 49 | ``` |
| 50 | $ test_that -b ${board} ${host} f:.*control.dummy |
| 51 | ``` |
| 52 | |
| 53 | ### Running jobs in the lab |
| 54 | |
| 55 | `test_that` now allows you to run jobs in the test lab. The usage is similar to |
| 56 | running tests against a specified host. The keyword :lab: is used as |
| 57 | test\_that's REMOTE argument, and the -i/--build argument is required, and takes |
| 58 | a trybot, paladin, or canary build number. To learn how to build a trybot image |
| 59 | with a new test that you're iterating on, see "dynamic suite" codelab. |
| 60 | |
| 61 | For instance: |
| 62 | |
| 63 | ``` |
| 64 | $ test_that -b lumpy -i lumpy-paladin/R38-6009.0.0-rc4 :lab: dummy_Pass |
| 65 | ``` |
| 66 | |
| 67 | This will kick off a suite in the lab that consists of just 1 job, dummy\_Pass, |
| 68 | to run in this case on board lumpy using the image |
| 69 | lumpy-paladin/R38-6009.0.0-rc4. The lab's scheduler will take responsibility |
| 70 | for finding a suitable set of hosts, provisioning them to the correct image, |
| 71 | and running the tests. `test_that` will return after the suite finishes running, |
| 72 | with a suite run report. |
| 73 | |
| 74 | You can specify multiple tests or test-matching expressions in the same way as |
| 75 | before: |
| 76 | |
| 77 | ``` |
| 78 | $ test_that -b lumpy -i ${latest_image} :lab: dummy_Pass dummy_Fail |
| 79 | $ test_that -b lumpy -i ${latest_image} :lab: e:login_.* |
| 80 | ``` |
| 81 | |
| 82 | Kicking off a run in the lab should be useful whenever you need to run a |
| 83 | particular test on a board or image that you do not have readily available |
| 84 | locally.For occasional runs of ad-hoc suites in the lab, this will also avoid |
| 85 | the need to create a suite control file and wait for it to end up in an image. |
| 86 | |
| 87 | You can also kick off a suite, for example with: |
| 88 | |
| 89 | ``` |
| 90 | test_that -b peach_pit :lab: suite:pyauto_perf -i 'peach_pit-release/R32-4763.0.0' |
| 91 | ``` |
| 92 | |
| 93 | That told me that my job ID was 5196037. I could follow along by going to |
| 94 | http://cautotest/afe/#tab_id=view_job&object_id=5195962. |
| 95 | |
| 96 | ### Things to note: |
| 97 | |
| 98 | This will only work with images newer than Sept 20, 2013 (specifically, builds |
| 99 | that contain Ifa73d7de7aac9c6efebd5f559708623804ad3691). Jobs will be scheduled |
| 100 | in the pool:try-bot machine pool. |