def test_get_node_then_remove_index_tree(self): fake_tree = FakeTree(FakeNode.make_list(5)) scheduler = SyncScheduler() scheduler.add_index_tree(fake_tree) assert scheduler.get_node() assert scheduler.get_node() scheduler.remove_index_tree(fake_tree) assert scheduler.get_node() is None
def test_get_node_return_none_when_all_trees_are_blocked(self): scheduler = SyncScheduler() scheduler.add_index_tree(FakeTree([FakeNode(), IndexTree.WAIT_FOR_TASK])) scheduler.add_index_tree(FakeTree([FakeNode(), IndexTree.WAIT_FOR_TASK])) assert isinstance(scheduler.get_node(), FakeNode) assert isinstance(scheduler.get_node(), FakeNode) assert scheduler.get_node() is None
def test_add_node_and_get_node(self): scheduler = SyncScheduler() nodes = FakeNode.make_list(3) scheduler.add_index_tree(FakeTree(nodes)) list_nodes = [] node = scheduler.get_node() while node is not None: list_nodes.append(node) node = scheduler.get_node() assert list_nodes == nodes
def test_get_node_must_avoid_bloqued_trees(self): # first tree is blocked; only the second will be used. scheduler = SyncScheduler() scheduler.add_index_tree(FakeTree([IndexTree.WAIT_FOR_TASK])) scheduler.add_index_tree(FakeTree(FakeNode.make_list(3))) for i in range(3): node = scheduler.get_node() assert isinstance(node, FakeNode) # second tree is blocked; only the first will be used. scheduler = SyncScheduler() scheduler.add_index_tree(FakeTree(FakeNode.make_list(3))) scheduler.add_index_tree(FakeTree([IndexTree.WAIT_FOR_TASK])) for i in range(3): node = scheduler.get_node() assert isinstance(node, FakeNode)
def test_get_node_from_two_trees(self): scheduler = SyncScheduler() scheduler.add_index_tree(FakeTree(FakeNode.make_list(3))) scheduler.add_index_tree(FakeTree(FakeNode.make_list(4))) nb_nodes = 0 while scheduler.get_node() is not None: nb_nodes += 1 assert nb_nodes is 7
def test_get_node_without_tree(self): scheduler = SyncScheduler() assert scheduler.get_node() is None