Uses the jstests/concurrency/fsm_libs/resmoke_runner.js file to run an
individual FSM workload directly via resmoke.py.
These changes expose internals of jstests/concurrency/fsm_libs/runner.js
so that both versions of how the concurrency tests are executed by
resmoke.py remain possible for other suite configurations.
For test_failures.py:
* Replaces HistoryReport with a TestHistory class that has
get_history_by_revision() and get_history_by_date() methods. They
both return a list of ReportEntry tuples that can be used to
construct a Report instance.
* Adds Python unit test cases for the Report and ReportEntry classes.
* Creates Wildcard class as separate concept from Missing class.
* Enables --sinceDate and --untilDate with a warning that the script
may not return a complete result set.
* Adds support for running the script with Python 3.
For update_test_lifecycle.py:
* Introduces Config namedtuple to represent the test lifecycle model.
* Adds Python unit tests cases for the update_tags() function.
* Takes advantage of the partial grouping so that computing summaries
for (test, task, variant), (test, task), and (test,) combinations do
not require re-processing the entire result set.
Each tag argument can also be specified more than once and in both the
YAML suite definition and on the command line.
Tag argments will be agnostic to ordering, with each argument narrowing
down test files to be run. No tag is allowed to override another tag.
Split out the passthrough tests into separate suites. The MongoDB
deployment is started up by resmoke.py so that we can record the
success/failure of each individual test in MCI.
Added support for parallel execution of tests by dispatching to
multiple MongoDB deployments.
Added support for grouping different kinds of tests (e.g. C++ unit
tests, dbtests, and jstests) so that they can be run together. This
allows for customizability in specifying what tests to execute when
changes are made to a particular part of the code.