MCPcopy Create free account
hub / github.com/pytest-dev/pytest-xdist / test_stealing

Method test_stealing

testing/test_dsession.py:322–351  ·  view source on GitHub ↗
(self, pytester: pytest.Pytester)

Source from the content-addressed store, hash-verified

320 assert node2.stolen == []
321
322 def test_stealing(self, pytester: pytest.Pytester) -> None:
323 config = pytester.parseconfig("--tx=2*popen")
324 sched = WorkStealingScheduling(config)
325 node1, node2 = MockNode(), MockNode()
326 sched.add_node(node1)
327 sched.add_node(node2)
328 collection = [f"test_workstealing.py::test_{i}" for i in range(16)]
329 sched.add_node_collection(node1, collection)
330 sched.add_node_collection(node2, collection)
331 assert sched.collection_is_completed
332 sched.schedule()
333 assert node1.sent == list(range(8))
334 assert node2.sent == list(range(8, 16))
335 for i in range(8):
336 sent = node1.sent[i]
337 assert isinstance(sent, int)
338 sched.mark_test_complete(node1, sent)
339 assert node2.stolen == list(range(12, 16))
340 sched.remove_pending_tests_from_node(node2, node2.stolen)
341 for i in range(4):
342 sent = node2.sent[i]
343 assert isinstance(sent, int)
344 sched.mark_test_complete(node2, sent)
345 assert node1.stolen == [14, 15]
346 sched.remove_pending_tests_from_node(node1, node1.stolen)
347 sched.mark_test_complete(node1, 12)
348 sched.mark_test_complete(node2, 14)
349 assert node2.stolen == list(range(12, 16))
350 assert node1.stolen == [14, 15]
351 assert sched.tests_finished
352
353 def test_steal_on_add_node(self, pytester: pytest.Pytester) -> None:
354 node = MockNode()

Callers

nothing calls this directly

Calls 7

add_nodeMethod · 0.95
add_node_collectionMethod · 0.95
scheduleMethod · 0.95
mark_test_completeMethod · 0.95
MockNodeClass · 0.85

Tested by

no test coverage detected