def test_purge_orphaned(self, query_manager, association_manager, criteria): repo = mock.Mock() blobs = [ {'blobSum': 'blob-0'}, # manifest => 1 {'blobSum': 'blob-1'}, # manifest => 1 {'blobSum': 'blob-2'}, # manifest => 1 {'blobSum': 'blob-3'}, # manifest => 1, 2, 3 (not orphaned) {'blobSum': 'blob-4'}, # manifest => 1, 2 {'blobSum': 'blob-5'}, # manifest => 2, 4 (not orphaned) {'blobSum': 'blob-6'}, # manifest => 2 ] removed = [ mock.Mock( id='manifest-1', type_id=constants.MANIFEST_TYPE_ID, metadata={'fs_layers': blobs[0:4]}), mock.Mock( id='manifest-2', type_id=constants.MANIFEST_TYPE_ID, metadata={'fs_layers': blobs[2:8]}) ] others = [ mock.Mock( id='manifest-3', type_id=constants.MANIFEST_TYPE_ID, metadata={'fs_layers': blobs[3:4]}), mock.Mock( id='manifest-4', type_id=constants.MANIFEST_TYPE_ID, metadata={'fs_layers': blobs[5:6]}) ] query_manager.return_value.get_units_by_type.return_value = others # test importer = DockerImporter() importer._purge_orphaned_blobs(repo, removed) # validation criteria.assert_called_once_with( type_ids=[constants.BLOB_TYPE_ID], unit_filters={'digest': {'$in': ['blob-0', 'blob-1', 'blob-2', 'blob-4', 'blob-6']}}) query_manager.return_value.get_units_by_type.assert_called_once_with( repo.id, constants.MANIFEST_TYPE_ID) association_manager.return_value.unassociate_by_criteria( repo_id=repo.id, criteria=criteria.return_value, owner_type='', # unused owner_id='', # unused notify_plugins=False)
def test_purge_orphaned_all_adopted(self, query_manager, association_manager, criteria): repo = mock.Mock() blobs = [ { 'blobSum': 'blob-0' }, # manifest => 1, 3 (not orphaned) { 'blobSum': 'blob-1' }, # manifest => 1, 3 (not orphaned) { 'blobSum': 'blob-2' }, # manifest => 1, 3 (not orphaned) { 'blobSum': 'blob-3' }, # manifest => 1, 2, 3 (not orphaned) { 'blobSum': 'blob-4' }, # manifest => 1, 2, 3 (not orphaned) { 'blobSum': 'blob-5' }, # manifest => 2, 4, 3 (not orphaned) { 'blobSum': 'blob-6' }, # manifest => 2, 3 (not orphaned) ] removed = [ mock.Mock(id='manifest-1', type_id=constants.MANIFEST_TYPE_ID, metadata={'fs_layers': blobs[0:4]}), mock.Mock(id='manifest-2', type_id=constants.MANIFEST_TYPE_ID, metadata={'fs_layers': blobs[2:8]}) ] others = [ mock.Mock(id='manifest-3', type_id=constants.MANIFEST_TYPE_ID, metadata={'fs_layers': blobs}), ] query_manager.return_value.get_units_by_type.return_value = others # test importer = DockerImporter() importer._purge_orphaned_blobs(repo, removed) # validation self.assertFalse(criteria.called) self.assertFalse(association_manager.called)
def test_purge_not_manifests(self, query_manager, association_manager, criteria): repo = mock.Mock() removed = [ mock.Mock(type_id=constants.IMAGE_TYPE_ID), mock.Mock(type_id=constants.IMAGE_TYPE_ID), ] # test importer = DockerImporter() importer._purge_orphaned_blobs(repo, removed) # validation self.assertFalse(query_manager.called) self.assertFalse(criteria.called) self.assertFalse(association_manager.called)
def test_purge_not_manifests(self, query_manager, association_manager, criteria): repo = mock.Mock() removed = [ mock.Mock(type_id=constants.IMAGE_TYPE_ID), mock.Mock(type_id=constants.IMAGE_TYPE_ID), ] # test importer = DockerImporter() importer._purge_orphaned_blobs(repo, removed) # validation self.assertFalse(query_manager.called) self.assertFalse(criteria.called) self.assertFalse(association_manager.called)
def test_purge_orphaned_nothing_orphaned(self, query_manager, association_manager, criteria): repo = mock.Mock() removed = [ mock.Mock(id='manifest-1', type_id=constants.MANIFEST_TYPE_ID, metadata={'fs_layers': []}), mock.Mock(id='manifest-2', type_id=constants.MANIFEST_TYPE_ID, metadata={'fs_layers': []}) ] # test importer = DockerImporter() importer._purge_orphaned_blobs(repo, removed) # validation self.assertFalse(query_manager.called) self.assertFalse(criteria.called) self.assertFalse(association_manager.called)
def test_purge_orphaned_nothing_orphaned(self, query_manager, association_manager, criteria): repo = mock.Mock() removed = [ mock.Mock( id='manifest-1', type_id=constants.MANIFEST_TYPE_ID, metadata={'fs_layers': []}), mock.Mock( id='manifest-2', type_id=constants.MANIFEST_TYPE_ID, metadata={'fs_layers': []}) ] # test importer = DockerImporter() importer._purge_orphaned_blobs(repo, removed) # validation self.assertFalse(query_manager.called) self.assertFalse(criteria.called) self.assertFalse(association_manager.called)
def test_purge_orphaned_all_adopted(self, query_manager, association_manager, criteria): repo = mock.Mock() blobs = [ {'blobSum': 'blob-0'}, # manifest => 1, 3 (not orphaned) {'blobSum': 'blob-1'}, # manifest => 1, 3 (not orphaned) {'blobSum': 'blob-2'}, # manifest => 1, 3 (not orphaned) {'blobSum': 'blob-3'}, # manifest => 1, 2, 3 (not orphaned) {'blobSum': 'blob-4'}, # manifest => 1, 2, 3 (not orphaned) {'blobSum': 'blob-5'}, # manifest => 2, 4, 3 (not orphaned) {'blobSum': 'blob-6'}, # manifest => 2, 3 (not orphaned) ] removed = [ mock.Mock( id='manifest-1', type_id=constants.MANIFEST_TYPE_ID, metadata={'fs_layers': blobs[0:4]}), mock.Mock( id='manifest-2', type_id=constants.MANIFEST_TYPE_ID, metadata={'fs_layers': blobs[2:8]}) ] others = [ mock.Mock( id='manifest-3', type_id=constants.MANIFEST_TYPE_ID, metadata={'fs_layers': blobs}), ] query_manager.return_value.get_units_by_type.return_value = others # test importer = DockerImporter() importer._purge_orphaned_blobs(repo, removed) # validation self.assertFalse(criteria.called) self.assertFalse(association_manager.called)
def test_purge_orphaned(self, query_manager, association_manager, criteria): repo = mock.Mock() blobs = [ { 'blobSum': 'blob-0' }, # manifest => 1 { 'blobSum': 'blob-1' }, # manifest => 1 { 'blobSum': 'blob-2' }, # manifest => 1 { 'blobSum': 'blob-3' }, # manifest => 1, 2, 3 (not orphaned) { 'blobSum': 'blob-4' }, # manifest => 1, 2 { 'blobSum': 'blob-5' }, # manifest => 2, 4 (not orphaned) { 'blobSum': 'blob-6' }, # manifest => 2 ] removed = [ mock.Mock(id='manifest-1', type_id=constants.MANIFEST_TYPE_ID, metadata={'fs_layers': blobs[0:4]}), mock.Mock(id='manifest-2', type_id=constants.MANIFEST_TYPE_ID, metadata={'fs_layers': blobs[2:8]}) ] others = [ mock.Mock(id='manifest-3', type_id=constants.MANIFEST_TYPE_ID, metadata={'fs_layers': blobs[3:4]}), mock.Mock(id='manifest-4', type_id=constants.MANIFEST_TYPE_ID, metadata={'fs_layers': blobs[5:6]}) ] query_manager.return_value.get_units_by_type.return_value = others # test importer = DockerImporter() importer._purge_orphaned_blobs(repo, removed) # validation criteria.assert_called_once_with( type_ids=[constants.BLOB_TYPE_ID], unit_filters={ 'digest': { '$in': ['blob-0', 'blob-1', 'blob-2', 'blob-4', 'blob-6'] } }) query_manager.return_value.get_units_by_type.assert_called_once_with( repo.id, constants.MANIFEST_TYPE_ID) association_manager.return_value.unassociate_by_criteria( repo_id=repo.id, criteria=criteria.return_value, owner_type='', # unused owner_id='', # unused notify_plugins=False)