code: def schedule(self):
          
          assert self.collection_is_completed
          for node, pending in self.node2pending.items():
              if node in self._started:
                  continue
              if not pending:
                  pending[:] = range(len(self.node2collection[node]))
                  node.send_runtest_all()
                  node.shutdown()
              else:
                  node.send_runtest_some(pending)
              self._started.append(node)
docs: Schedule the test items on the nodes
  
          If the node's pending list is empty it is a new node which
          needs to run all the tests.  If the pending list is already
          populated (by ``.add_node_collection()``) then it replaces a
          dead node and we only need to run those tests.