def test_remove_should_acquire_lock_on_parent_nodes(self):
        parent1 = Node((1, 2))
        parent2 = Node((2, 3))
        node = Node((3, 4), parents=set([(1, 2), (2, 3)]))
        parent1.children = set([(3, 4)])
        parent2.children = set([(3, 4)])
        leaf_queue = Mock()

        parent1.lock = Mock()
        parent1.lock.aquire.side_effect = lambda: self.assertTrue(node in parent1.children)
        parent1.lock.release.side_effect = lambda: self.assertFalse(node in parent1.children)

        parent2.lock = Mock()
        parent2.lock.aquire.side_effect = lambda: self.assertTrue(node in parent2.children)
        parent2.lock.release.side_effect = lambda: self.assertFalse(node in parent2.children)

        node.remove_from_parents([parent1, parent2], leaf_queue)

        self.assertTrue(parent1.lock.acquire.called)
        self.assertTrue(parent1.lock.release.called)
        self.assertTrue(parent2.lock.acquire.called)
        self.assertTrue(parent2.lock.release.called)

        self.assertEquals(
            leaf_queue.put.call_args_list,
            [call((1, 2)), call((2, 3))]
        )
Пример #2
0
    def test_remove_should_acquire_lock_on_parent_nodes(self):
        parent1 = Node((1, 2))
        parent2 = Node((2, 3))
        node = Node((3, 4), parents=set([(1, 2), (2, 3)]))
        parent1.children = set([(3, 4)])
        parent2.children = set([(3, 4)])
        leaf_queue = Mock()

        parent1.lock = Mock()
        parent1.lock.aquire.side_effect = lambda: self.assertTrue(
            node in parent1.children)
        parent1.lock.release.side_effect = lambda: self.assertFalse(
            node in parent1.children)

        parent2.lock = Mock()
        parent2.lock.aquire.side_effect = lambda: self.assertTrue(
            node in parent2.children)
        parent2.lock.release.side_effect = lambda: self.assertFalse(
            node in parent2.children)

        node.remove_from_parents([parent1, parent2], leaf_queue)

        self.assertTrue(parent1.lock.acquire.called)
        self.assertTrue(parent1.lock.release.called)
        self.assertTrue(parent2.lock.acquire.called)
        self.assertTrue(parent2.lock.release.called)

        self.assertEquals(leaf_queue.put.call_args_list,
                          [call((1, 2)), call((2, 3))])
    def test_remove_should_add_new_leaves_to_queue(self):
        parent = Node((1, 2))
        child1 = Node((2, 3), parents=set([parent.location]))
        child2 = Node((3, 4), parents=set([parent.location]))
        parent.children = set([child1.location, child2.location])
        leaf_queue = Mock()

        child1.remove_from_parents([parent], leaf_queue)

        self.assertFalse(leaf_queue.put.called)

        child2.remove_from_parents([parent], leaf_queue)

        self.assertEquals(leaf_queue.put.call_args, ((parent.location,), {}))
Пример #4
0
    def test_remove_should_add_new_leaves_to_queue(self):
        parent = Node((1, 2))
        child1 = Node((2, 3), parents=set([parent.location]))
        child2 = Node((3, 4), parents=set([parent.location]))
        parent.children = set([child1.location, child2.location])
        leaf_queue = Mock()

        child1.remove_from_parents([parent], leaf_queue)

        self.assertFalse(leaf_queue.put.called)

        child2.remove_from_parents([parent], leaf_queue)

        self.assertEquals(leaf_queue.put.call_args, ((parent.location, ), {}))