This eliminates a 2 minute timeout seen at the end of Android mochitests
and reftests. Attempts to shutdown the web server were failing because
they were directed at IP 10.0.2.2 -- the loopback address for the
Android emulator.
The devicemanager killProcess() is updated to use force-stop first, then
use kill if force-stop does not work.
Browser test harnesses are updated to check if killProcess() worked, and
warn if it failed.
sutagent is no longer built or used; devicemanagerSUT is completely
unused. After this change, devicemanagerADB is the only implementation of
devicemanager, and test harness options like --dm_trans are eliminated.
When using an interactive loaner, we compute an explicit path to the adb binary. Passing it in
directly to mozdevice seems a bit cleaner than modifying the $PATH. This also does a minor
refactor around how the DM instances are instantiated.
MozReview-Commit-ID: 5HMfm64wmK2
Reftests hackily create a second argument parser and set defaults on it to get around the fact
that the mach command sends the harness a dict rather than a Namespace object. This is bad because:
1. It's much less hacky to just create a Namespace object directly (rather than making a second parser)
2. Most other mach commands actually *do* return a Namespace object, reftest is the odd one out here.
So this patch makes the reftest mach commands convert to the Namespace object, which allows us to get
rid of the hacks in the reftest harness. This also does some light refactoring of the entry points to
the reftest harness so make it more consistent with mochitest and xpcshell.
MozReview-Commit-ID: 5HMfm64wmK2
There is an ImportError on Android, as well as a log related
regression from the structured log patch once that is fixed.
MozReview-Commit-ID: KxSEotr38qO
Structured logs bring many benefits. We can stop parsing the logs for magic strings, we
can modify the format without breaking things, and we can stream results into systems like
ActiveData. The structured logs originate primarily in reftest.js. StructuredLog.jsm is
used to generate the JSON-based log stream. Finally OutputHandler in the python harness
reads structured output from stdout, and formats it into human readable form.
MozReview-Commit-ID: G3ZLkMRl6p7
Structured logs bring many benefits. We can stop parsing the logs for magic strings, we
can modify the format without breaking things, and we can stream results into systems like
ActiveData. The structured logs originate primarily in reftest.js. StructuredLog.jsm is
used to generate the JSON-based log stream. Finally OutputHandler in the python harness
reads structured output from stdout, and formats it into human readable form.
This makes reftest command line arguments behave more like other test suites,
so we can use a simple unified syntax for e.g. |mach try|. The patch also
reworks the command line argument parsing to use argparse rather than optparse,
and causes mach to reuse the same parser as the suite.
Instead of grabbing attributes off options at every call site, pass
in the options object to processLeakLog, and attempt to get the attributes
there. If not present, use a restrictive default value.
This will prevent silent harness failures if one of the many ways to invoke
processLeakLog fails to set up these options, and makes it so they
don't have to set it up if they don't care.