diff --git a/testing/test_dsession.py b/testing/test_dsession.py index 28f1586..a5ec76f 100644 --- a/testing/test_dsession.py +++ b/testing/test_dsession.py @@ -65,13 +65,13 @@ class TestEachScheduling: assert sched.node2collection[node1] == collection assert sched.node2collection[node2] == collection sched.schedule() - assert sched.tests_finished() + assert sched.tests_finished assert node1.sent == ['ALL'] assert node2.sent == ['ALL'] sched.remove_item(node1, 0) - assert sched.tests_finished() + assert sched.tests_finished sched.remove_item(node2, 0) - assert sched.tests_finished() + assert sched.tests_finished def test_schedule_remove_node(self, testdir): node1 = MockNode() @@ -84,11 +84,11 @@ class TestEachScheduling: assert sched.collection_is_completed assert sched.node2collection[node1] == collection sched.schedule() - assert sched.tests_finished() + assert sched.tests_finished crashitem = sched.remove_node(node1) assert crashitem - assert sched.tests_finished() - assert not sched.has_nodes() + assert sched.tests_finished + assert not sched.nodes class TestLoadScheduling: @@ -108,13 +108,13 @@ class TestLoadScheduling: assert sched.node2collection[node2] == collection sched.schedule() assert not sched.pending - assert sched.tests_finished() + assert sched.tests_finished assert len(node1.sent) == 1 assert len(node2.sent) == 1 assert node1.sent == [0] assert node2.sent == [1] sched.remove_item(node1, node1.sent[0]) - assert sched.tests_finished() + assert sched.tests_finished def test_schedule_batch_size(self, testdir): config = testdir.parseconfig("--tx=2*popen") @@ -126,7 +126,7 @@ class TestLoadScheduling: sched.add_node_collection(node1, col) sched.add_node_collection(node2, col) sched.schedule() - # assert not sched.tests_finished() + # assert not sched.tests_finished sent1 = node1.sent sent2 = node2.sent assert sent1 == [0, 2] @@ -154,7 +154,7 @@ class TestLoadScheduling: sched.add_node_collection(node1, col) sched.add_node_collection(node2, col) sched.schedule() - # assert not sched.tests_finished() + # assert not sched.tests_finished sent1 = node1.sent sent2 = node2.sent sent3 = node3.sent @@ -174,7 +174,7 @@ class TestLoadScheduling: sched.add_node_collection(node1, col) sched.add_node_collection(node2, col) sched.schedule() - # assert not sched.tests_finished() + # assert not sched.tests_finished sent1 = node1.sent sent2 = node2.sent sent3 = node3.sent diff --git a/xdist/dsession.py b/xdist/dsession.py index 4b5eb4f..6c3dd70 100644 --- a/xdist/dsession.py +++ b/xdist/dsession.py @@ -42,9 +42,18 @@ class EachScheduling: """A list of all nodes in the scheduler.""" return list(self.node2pending.keys()) - def has_nodes(self): - return bool(self.node2pending) + @property + def tests_finished(self): + if not self.collection_is_completed: + return False + if self._removed2pending: + return False + for pending in self.node2pending.values(): + if len(pending) >= 2: + return False + return True + @property def has_pending(self): """Return True if there are pending test items @@ -61,16 +70,6 @@ class EachScheduling: assert node not in self.node2pending self.node2pending[node] = [] - def tests_finished(self): - if not self.collection_is_completed: - return False - if self._removed2pending: - return False - for pending in self.node2pending.values(): - if len(pending) >= 2: - return False - return True - def add_node_collection(self, node, collection): """Add the collected test items from a node @@ -209,6 +208,19 @@ class LoadScheduling: """ return len(self.node2collection) >= self.numnodes + @property + def tests_finished(self): + """Return True if all tests have been executed by the nodes.""" + if not self.collection_is_completed: + return False + if self.pending: + return False + for pending in self.node2pending.values(): + if len(pending) >= 2: + return False + return True + + @property def has_pending(self): """Return True if there are pending test items @@ -223,10 +235,6 @@ class LoadScheduling: return True return False - def has_nodes(self): - """Return True if nodes exist in the scheduler.""" - return bool(self.node2pending) - def add_node(self, node): """Add a new node to the scheduler. @@ -239,17 +247,6 @@ class LoadScheduling: assert node not in self.node2pending self.node2pending[node] = [] - def tests_finished(self): - """Return True if all tests have been executed by the nodes.""" - if not self.collection_is_completed: - return False - if self.pending: - return False - for pending in self.node2pending.values(): - if len(pending) >= 2: - return False - return True - def add_node_collection(self, node, collection): """Add the collected test items from a node @@ -559,7 +556,7 @@ class DSession: call = getattr(self, method) self.log("calling method", method, kwargs) call(**kwargs) - if self.sched.tests_finished(): + if self.sched.tests_finished: self.triggershutdown() # @@ -645,7 +642,7 @@ class DSession: if self.terminal: self.trdist.setstatus(node.gateway.spec, "[%d]" % (len(ids))) if self.sched.collection_is_completed: - if self.terminal and not self.sched.has_pending(): + if self.terminal and not self.sched.has_pending: self.trdist.ensure_show_status() self.terminal.write_line("") self.terminal.write_line("scheduling tests via %s" % (