Compare commits

..

4 Commits

Author SHA1 Message Date
Bruno Oliveira
bea2467712 Release 1.23.0 2018-08-23 16:33:06 -03:00
Bruno Oliveira
c4a793de38 Merge pull request #332 from nicoddemus/optimize-report-data
Optimize collection performance
2018-08-23 16:31:09 -03:00
Bruno Oliveira
9bcd0e4352 Optimize collection performance
Only send failed collection reports, as master is only interested in failed
reports.

Fix #330
2018-08-18 23:09:00 -03:00
Bruno Oliveira
96af694bf3 Merge pull request #321 from nicoddemus/release-1.22.5
Revert dropped support to old pytest versions
2018-07-28 09:50:50 -03:00
4 changed files with 20 additions and 7 deletions

View File

@@ -1,3 +1,12 @@
pytest-xdist 1.23.0 (2018-08-23)
================================
Features
--------
- `#330 <https://github.com/pytest-dev/pytest-xdist/issues/330>`_: Improve collection performance by reducing the number of events sent to ``master`` node.
pytest-xdist 1.22.5 (2018-07-27) pytest-xdist 1.22.5 (2018-07-27)
================================ ================================

View File

@@ -321,8 +321,6 @@ class TestWorkerInteractor:
assert not ev.kwargs assert not ev.kwargs
ev = worker.popevent() ev = worker.popevent()
assert ev.name == "collectreport" assert ev.name == "collectreport"
ev = worker.popevent()
assert ev.name == "collectreport"
rep = unserialize_report(ev.name, ev.kwargs["data"]) rep = unserialize_report(ev.name, ev.kwargs["data"])
assert rep.failed assert rep.failed
ev = worker.popevent("collectionfinish") ev = worker.popevent("collectionfinish")

View File

@@ -257,8 +257,12 @@ class DSession(object):
self.sched.mark_test_complete(node, item_index, duration) self.sched.mark_test_complete(node, item_index, duration)
def worker_collectreport(self, node, rep): def worker_collectreport(self, node, rep):
"""Emitted when a node calls the pytest_collectreport hook.""" """Emitted when a node calls the pytest_collectreport hook.
if rep.failed:
Because we only need the report when there's a failure, as optimization
we only expect to receive failed reports from workers (#330).
"""
assert rep.failed
self._failed_worker_collectreport(node, rep) self._failed_worker_collectreport(node, rep)
def worker_logwarning(self, message, code, nodeid, fslocation): def worker_logwarning(self, message, code, nodeid, fslocation):

View File

@@ -109,6 +109,8 @@ class WorkerInteractor(object):
self.sendevent("testreport", data=data) self.sendevent("testreport", data=data)
def pytest_collectreport(self, report): def pytest_collectreport(self, report):
# master only needs reports that failed, as optimization send only them instead (#330)
if report.failed:
data = serialize_report(report) data = serialize_report(report)
self.sendevent("collectreport", data=data) self.sendevent("collectreport", data=data)