Esempio n. 1
0
    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
Esempio n. 2
0
    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
Esempio n. 3
0
    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
Esempio n. 4
0
    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
Esempio n. 5
0
    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)
Esempio n. 6
0
 def test_remove_index_tree_not_in_scheduler(self):
     fake_tree = object()
     scheduler = SyncScheduler()
     scheduler.remove_index_tree(fake_tree)
Esempio n. 7
0
 def test_get_node_without_tree(self):
     scheduler = SyncScheduler()
     assert scheduler.get_node() is None