This moves the shutdown monitor for the Firefox process from
geckodriver to mozrunner, which is a more suitable home for it.
We will likely need specialised versions of this in the future with
products such as GeckoView and Fennec.
In addition to the move it also cleans up the polling loop by
employing std::time::SystemTime which lets us match on the elapsed
time since its construction. This seems nicer than having to perform
division operations on integers, which in Rust are inherently unsafe
(there is no guard against SIGFPE).
This change should be functionally equivalent to the existing code.
MozReview-Commit-ID: 1asnFbixhcY
--HG--
extra : rebase_source : f21f734862bfbbc1ed665dc9c9f611c5968d662f
This renames RunnerProcess::status() to ::try_wait() for symmetry
with std::process::Child::try_wait() in the standard library.
The patch also makes an attempt at cleaning up its usage in geckodriver,
however this can be further improved.
MozReview-Commit-ID: 14ihT7MpM7l
--HG--
extra : rebase_source : 4e96c79c6ebbb256c4a08cb4dd86c99aacaa13ac
We can pick up std::io::Result and std::io::Error directly from
the std::io namespace without having to rename them.
MozReview-Commit-ID: 9Xz92HvcFpO
--HG--
extra : rebase_source : 89a006c40e11d9e7fc5706d3a6612f916e00f919
This renames RunnerProcess::stop() to ::kill() for symmetry with
the standard library's std::process::Child.
MozReview-Commit-ID: 20vSni9bA0X
--HG--
extra : rebase_source : 112b29249563154b50d9a72c141034e5cdf7f19b
The ideom for getters in Rust is to not prefix them with "is_".
Setters should, however, have the "set_" prefix.
MozReview-Commit-ID: 9kXHBYGK7aL
--HG--
extra : rebase_source : 6c2591771646c8b7c5b0e6b1af5427455938b4cf
Without returncode and wait() being overridden the default
implementation of the Runner class takes precedence and will
run the check for the adb command but not the remote process.
This always returns 0 because adb runs or forks itself as daemon.
Instead the remote process has to be checked for existence.
MozReview-Commit-ID: GvuAaMSxBT2
--HG--
extra : rebase_source : e84b52fdc9ce48617102650d6d0ae73e90899538
The output formatters provided by mozlog are well-documented in the
online help guide, but this information is not available to users in the
CLI. The `add_logging_group` method extends the consuming project's
command-line interface without referencing mozlog itself. This means
consumers may not have a means to discover the additional information,
and even in cases where they can infer this connection, there is no
indication of the stability of the behavior.
Extend the description of the built-in output formatters to explain
their origin and reference the relevant documentation.
--HG--
extra : histedit_source : 9069af86efc67232e059176f99a877c513644ce2
This implements a chunk_by_manifest algorithm. It is similar to chunk_by_slice
in that it tries to make an even number of tests run in each chunk. However,
unlike chunk_by_slice it will guarantee that tests in the same manifest will
all run in the same chunk. This makes it suitable to use with run-by-manifest.
This means the chunks won't be perfect (as manifests are differnet sizes). It
is also prone to more randomization, similar to chunk-by-runtime.
In fact, this algorithm is nearly identical to the chunk-by-runtime one, so it
was refactored out to a base class.
MozReview-Commit-ID: HI2ByxW0i8V
--HG--
extra : rebase_source : e066c034b85222d26bafe6873a80366d5bd9df9e
Pass --appname org.mozilla.geckoview.test to 'mach mochitest' or
'mach reftest'. This runs the tests without e10s currently.
MozReview-Commit-ID: 7TIvA3zRCw2
The output formatters provided by mozlog are well-documented in the
online help guide, but this information is not available to users in the
CLI. The `add_logging_group` method extends the consuming project's
command-line interface without referencing mozlog itself. This means
consumers may not have a means to discover the additional information,
and even in cases where they can infer this connection, there is no
indication of the stability of the behavior.
Extend the description of the built-in output formatters to explain
their origin and reference the relevant documentation.
--HG--
extra : rebase_source : 5e7420f8d1589dccc335b0a48c8967d4928f959f
Since we're adding specific 'task_regexes' for each new suite definition,
this will allow us to schedule tests of these subsuites with
|mach try fuzzy <path>|.
MozReview-Commit-ID: 2mDSneV95lG
--HG--
extra : rebase_source : 467b9d885e92c1c855ed547f2a7496b1062f2dc2
The end goal here is to be able to use |mach try fuzzy <path>| with tests that
belong to a subsuite. To do this, we need a unique 'task_regex' value for each
subsuite so that we can map a test path back to a set of tasks.
This removes the TEST_FLAVORS dict (which was mostly just a redefinition of the
data in TEST_SUITES), and instead provides two new private mappings:
<flavor> -> suite definition
(<flavor>, <subsuite>) -> suite definition
To retrieve a suite definition given a flavor/subsuite, consumers can now call
get_suite_definition.
MozReview-Commit-ID: 2pe1v1IHUVy
--HG--
extra : rebase_source : 6fff947ba214112ccf16c894174a6a0e2487111a
This removes a lot of redundant alias definitions by calling lower() on the
user input. It also adds a couple of new aliases that look like they might
be useful.
MozReview-Commit-ID: 3Aix4LPB8wg
--HG--
extra : rebase_source : c4bdc327bd737a18f03952bb360af35608d091f1
In contrast to Posix the returncodes on Windows have positive
and not negative numbers.
MozReview-Commit-ID: 4foHWf9RR0B
--HG--
extra : rebase_source : 8e06cbb3e669fea7abe46cd8b53386b56030574d
Currently the returncode gets set immediately after the process
has been terminated via TerminateJobObject() or TerminateProcess().
Given that in both cases the process has not been quit yet, but
still waits for all streams to be closed, the returncode has to
be set by via wait().
Also in case of TerminateJobObject() the _cleanup method is never
called if an exception occurs.
MozReview-Commit-ID: 4NEyqafN0DD
--HG--
extra : rebase_source : ae176d5e052785cc77865e1bf220013e87d7a3f0
The psutil package has only been used to check for the existence
of a given pid. Given the troubles with getting psutil compiled
on Windows, or by supplying the correct wheel, it has been decided
to get rid of this dependency.
Instead the ProcessHandler class itself now got the feature to
determine the existence of a pid by using ctypes to do the
necessary Windows API calls.
MozReview-Commit-ID: KAiSv0AH8HZ
--HG--
extra : rebase_source : 55e9ecac6ce12b0abcbaceb9aa385100744b16dd
Upgrading to rust-ini 0.10.2 has the benefit that it no longers
depends on a too specific version of the log crate. We currently
compile two different versions of log as part of the geckodriver
build, and it will marginally increase compile performance not to
compile that twice.
MozReview-Commit-ID: HAwa4Kg8Lyn
--HG--
extra : rebase_source : d81b3450934f011663b508271c8c6a0f92997490
Add ACCESS_COARSE_LOCATION to the Fennec and GeckoView list of
permissions. For completeness, also add ACCESS_COARSE_LOCATION to JS
modules that handle runtime permissions.
MozReview-Commit-ID: 8UHaiJcRnq
--HG--
extra : rebase_source : 5a74d4138d6d7b4bf6cf70724f695ff06201c38c
The third_party/rust/mozprofile has not been deleted because mozrunner
also depends on it. We will have to run "./mach vendor rust" again
once both these changes have landed in order to remove the third-party
dependency from crates.io. This work is tracked in bug 1430158.
MozReview-Commit-ID: 5Q3PdTS03wm
--HG--
extra : rebase_source : a3b52bcb4c2047ddd81b830e4e2f349d8396ee79
This moves the Rust crate mozprofile into central from GitHub.
The old repository will be graveyarded:
https://github.com/jgraham/mozprofile
The git history is not considered important, hence this does not
overlay that onto central like we did for testing/geckodriver and
testing/webdriver.
MozReview-Commit-ID: 5SKlss6uAZ4
--HG--
extra : rebase_source : f19efa20d3eadfbe478b47699512dd22f369dd95
The suite_end action ostensibly supports an extra key, however that extra data never
gets forwarded to the _log_data function.
MozReview-Commit-ID: AfUBmQpx3Zz
--HG--
extra : rebase_source : 5f10746a8384f89ce9fffc28db49b764f6e279ff
Only test_mozprocess.py was still using the C implementation but is
disabled since ages.
Given that the proclaunch script as written in Python replaced the
C implemenation lets remove all the old unused code.
MozReview-Commit-ID: J4izHz5ljtO
--HG--
extra : rebase_source : e33720aa3a6734fa3dd5fc082441ef54d515e75f
The suite_end action ostensibly supports an extra key, however that extra data never
gets forwarded to the _log_data function.
MozReview-Commit-ID: AfUBmQpx3Zz
--HG--
extra : rebase_source : 187fba189deec77b914d455cb55fe21e140bb3c8
We should use posixpath's normpath for calculating the remote
(i.e. device path) with these methods.
MozReview-Commit-ID: zwfsRvCxoe
--HG--
extra : rebase_source : 9635de305db90d0bd99ab080d96d28fcf29cec96
This is a new issue that gets linted with flake8 3.5.0. Basically you should
never use a blank except: statement.
This will catch all exceptions, including KeyboardInterrupt and SystemExit
(which is likely not intended). If a catch all is needed, use
`except: Exception`. If you *really* mean to also catch KeyboardInterrupt et
al, use `except: BaseException`.
Of course, being specific is often better than a catch all.
MozReview-Commit-ID: FKx80MLO4RN
--HG--
extra : rebase_source : 7c74a7d0d81f2c984b47aff3a0ee3448b791177b
This is a major API revision to replace the Python-like API with
something more idiomatically Rust. In particular you now create a
FirefoxRunner object and then call start() and end up with a
FirefoxProcess. This is pretty similar to the Command builder in std.
MozReview-Commit-ID: DmEfIfKSukA
--HG--
extra : rebase_source : 30fba6b2d9584a8a4128b641747beda1d264f7c5