Example #1
0
    def test_blockers(self):
        class FakeItem1(object):
            BLOCK_CONCURRENT = []
            ITEM_TYPE_NAME = 'type1'

        class FakeItem2(object):
            BLOCK_CONCURRENT = ['type3']
            ITEM_TYPE_NAME = 'type2'

        class FakeItem3(object):
            BLOCK_CONCURRENT = []
            ITEM_TYPE_NAME = 'type3'


        def make_item(cls, item_id):
            item = cls()
            item._deps = []
            item._flattened_deps = []
            item.id = item_id
            return item

        item11 = make_item(FakeItem1, "type1:name1")
        item12 = make_item(FakeItem1, "type1:name2")
        item21 = make_item(FakeItem2, "type2:name1")
        item22 = make_item(FakeItem2, "type2:name2")
        item23 = make_item(FakeItem2, "type2:name3")
        item31 = make_item(FakeItem3, "type3:name1")
        item32 = make_item(FakeItem3, "type3:name2")

        items = [item11, item32, item22, item12, item21, item23, item31]
        injected = deps._inject_concurrency_blockers(items)

        deps_should = {
            item11: [],
            item32: [],
            item22: ["type3:name2"],
            item12: [],
            item21: ["type2:name2"],
            item23: ["type2:name1"],
            item31: ["type2:name3"],
        }

        self.assertEqual(len(injected), len(items))

        for item in injected:
            self.assertEqual(item._deps, deps_should[item])
Example #2
0
    def test_noop(self):
        class FakeItem(object):
            pass

        def make_item(item_id):
            item = FakeItem()
            item._deps = []
            item.BLOCK_CONCURRENT = []
            item.ITEM_TYPE_NAME = item_id.split(":")[0]
            item.id = item_id
            return item

        item11 = make_item("type1:name1")
        item12 = make_item("type1:name2")
        item21 = make_item("type2:name1")
        item22 = make_item("type2:name2")
        item23 = make_item("type2:name3")
        item31 = make_item("type3:name1")
        item32 = make_item("type3:name2")

        items = [item11, item32, item22, item12, item21, item23, item31]
        injected = deps._inject_concurrency_blockers(items)

        deps_should = {
            item11: [],
            item32: [],
            item22: [],
            item12: [],
            item21: [],
            item23: [],
            item31: [],
        }

        self.assertEqual(len(injected), len(items))

        for item in injected:
            self.assertEqual(item._deps, deps_should[item])