Пример #1
0
    def test_import_all_manifests(self):
        units = [
            mock.Mock(
                type_id=constants.MANIFEST_TYPE_ID,
                unit_key={'digest': 'A1234'},
                metadata={'fs_layers': []}),
            mock.Mock(
                type_id=constants.MANIFEST_TYPE_ID,
                unit_key={'digest': 'B1234'},
                metadata={'fs_layers': []}),
        ]
        conduit = mock.Mock()
        conduit.get_source_units.side_effect = [units, []]

        # test
        importer = DockerImporter()
        importer._import_manifests(conduit, None)

        # validation
        self.assertEqual(
            conduit.associate_unit.call_args_list,
            [
                mock.call(units[0]),
                mock.call(units[1]),
            ])
Пример #2
0
    def test_import_manifests(self, criteria):
        layers = [
            {'blobSum': 'b2244'},
            {'blobSum': 'b2245'},
            {'blobSum': 'b2246'}
        ]
        units = [
            # ignored
            mock.Mock(type_id=constants.IMAGE_TYPE_ID),
            # manifests
            mock.Mock(
                type_id=constants.MANIFEST_TYPE_ID,
                unit_key={'digest': 'A1234'},
                metadata={'fs_layers': []}
            ),
            mock.Mock(
                type_id=constants.MANIFEST_TYPE_ID,
                unit_key={'digest': 'B1234'},
                metadata={'fs_layers': layers}
            ),
            mock.Mock(
                type_id=constants.MANIFEST_TYPE_ID,
                unit_key={'digest': 'C1234'},
                metadata={'fs_layers': layers}
            ),
        ]

        conduit = mock.Mock()
        blobs = [dict(digest=l.values()[0]) for l in layers]
        conduit.get_source_units.return_value = blobs

        # test
        importer = DockerImporter()
        units_added = importer._import_manifests(conduit, units)

        # validation
        blob_filter = {
            'digest': {
                '$in': [l.values()[0] for l in layers]
            }
        }
        self.assertEqual(units_added, units[1:] + blobs)
        self.assertEqual(
            criteria.call_args_list,
            [
                mock.call(type_ids=[constants.BLOB_TYPE_ID], unit_filters=blob_filter),
            ])
        self.assertEqual(
            conduit.associate_unit.call_args_list,
            [
                mock.call(units[1]),
                mock.call(units[2]),
                mock.call(units[3]),
                mock.call(blobs[0]),
                mock.call(blobs[1]),
                mock.call(blobs[2]),
            ])
Пример #3
0
    def test_import_all_manifests(self):
        units = [
            mock.Mock(type_id=constants.MANIFEST_TYPE_ID,
                      unit_key={'digest': 'A1234'},
                      metadata={'fs_layers': []}),
            mock.Mock(type_id=constants.MANIFEST_TYPE_ID,
                      unit_key={'digest': 'B1234'},
                      metadata={'fs_layers': []}),
        ]
        conduit = mock.Mock()
        conduit.get_source_units.side_effect = [units, []]

        # test
        importer = DockerImporter()
        importer._import_manifests(conduit, None)

        # validation
        self.assertEqual(conduit.associate_unit.call_args_list, [
            mock.call(units[0]),
            mock.call(units[1]),
        ])
Пример #4
0
    def test_import_manifests(self, criteria):
        layers = [{
            'blobSum': 'b2244'
        }, {
            'blobSum': 'b2245'
        }, {
            'blobSum': 'b2246'
        }]
        units = [
            # ignored
            mock.Mock(type_id=constants.IMAGE_TYPE_ID),
            # manifests
            mock.Mock(type_id=constants.MANIFEST_TYPE_ID,
                      unit_key={'digest': 'A1234'},
                      metadata={'fs_layers': []}),
            mock.Mock(type_id=constants.MANIFEST_TYPE_ID,
                      unit_key={'digest': 'B1234'},
                      metadata={'fs_layers': layers}),
            mock.Mock(type_id=constants.MANIFEST_TYPE_ID,
                      unit_key={'digest': 'C1234'},
                      metadata={'fs_layers': layers}),
        ]

        conduit = mock.Mock()
        blobs = [dict(digest=l.values()[0]) for l in layers]
        conduit.get_source_units.return_value = blobs

        # test
        importer = DockerImporter()
        units_added = importer._import_manifests(conduit, units)

        # validation
        blob_filter = {'digest': {'$in': [l.values()[0] for l in layers]}}
        self.assertEqual(units_added, units[1:] + blobs)
        self.assertEqual(criteria.call_args_list, [
            mock.call(type_ids=[constants.BLOB_TYPE_ID],
                      unit_filters=blob_filter),
        ])
        self.assertEqual(conduit.associate_unit.call_args_list, [
            mock.call(units[1]),
            mock.call(units[2]),
            mock.call(units[3]),
            mock.call(blobs[0]),
            mock.call(blobs[1]),
            mock.call(blobs[2]),
        ])