Continuing our RelEng Blogging Blitz, I'm going to be discussing how and when tests get triggered in our build automation systems.
We've got two basic classes of tests right now: unit tests, and performance tests, a.k.a. Talos. The unit tests are run on the same pool of machines that the builds are done on, while the performance tests are run on a separate pool of around 100 Mac Minis. Both kinds of tests are triggered in similar ways.
For refcounting ("unittest") builds, once the compile step is complete, the binaries are packaged up with
make package, the tests are packaged up with
make package-tests, the symbols are packaged up with
make buildsymbols, and then the whole lot is uploaded to stage.mozilla.org using
make upload. Once they're uploaded, we have valid URLs that refer to the builds, tests, and symbols. We then trigger the relevant unit test runs on that build. When a slave is assigned this test run, it then downloads the build, tests, and symbols from stage and starts running the tests.
On mozilla-central, we've also recently started to run unittests on optimized and debug builds. We're hoping to bring this functionality to mozilla-1.9.2 once all the kinks are worked out.
For regular optimized builds, in addition to unittests, we also trigger performance tests on the freshly minted build. OSX builds are currently tested on Tiger and Leopard for mozilla-1.9.1 and mozilla-1.9.2, and on Leopard only for mozilla-central and project branches. Windows builds are tested on XP and Vista, and Linux builds are tested on Ubuntu.
In addition to having tests triggered automatically by builds, the Release Engineering Sheriff can re-run unittests or performance tests on request!