Merge "Unit tests for scrubber"
This commit is contained in:
commit
9cd75d0b4a
75
glance/tests/unit/test_scrubber.py
Normal file
75
glance/tests/unit/test_scrubber.py
Normal file
@ -0,0 +1,75 @@
|
|||||||
|
# vim: tabstop=4 shiftwidth=4 softtabstop=4
|
||||||
|
|
||||||
|
# Copyright 2013 Red Hat, Inc.
|
||||||
|
# All Rights Reserved.
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||||
|
# not use this file except in compliance with the License. You may obtain
|
||||||
|
# a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||||
|
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||||
|
# License for the specific language governing permissions and limitations
|
||||||
|
# under the License.
|
||||||
|
|
||||||
|
import os
|
||||||
|
import shutil
|
||||||
|
import time
|
||||||
|
import tempfile
|
||||||
|
|
||||||
|
import mox
|
||||||
|
|
||||||
|
from glance.common import exception
|
||||||
|
from glance.openstack.common import uuidutils
|
||||||
|
import glance.store
|
||||||
|
import glance.store.scrubber
|
||||||
|
from glance.tests import utils as test_utils
|
||||||
|
|
||||||
|
|
||||||
|
class TestScrubber(test_utils.BaseTestCase):
|
||||||
|
|
||||||
|
def setUp(self):
|
||||||
|
self.data_dir = tempfile.mkdtemp()
|
||||||
|
self.config(scrubber_datadir=self.data_dir)
|
||||||
|
self.config(default_store='file')
|
||||||
|
glance.store.create_stores()
|
||||||
|
self.mox = mox.Mox()
|
||||||
|
super(TestScrubber, self).setUp()
|
||||||
|
|
||||||
|
def tearDown(self):
|
||||||
|
self.mox.UnsetStubs()
|
||||||
|
shutil.rmtree(self.data_dir)
|
||||||
|
super(TestScrubber, self).tearDown()
|
||||||
|
|
||||||
|
def _scrubber_cleanup_with_store_delete_exception(self, ex):
|
||||||
|
fname = uuidutils.generate_uuid
|
||||||
|
|
||||||
|
uri = 'file://some/path/%s' % (fname)
|
||||||
|
id = 'helloworldid'
|
||||||
|
now = time.time()
|
||||||
|
scrub = glance.store.scrubber.Scrubber()
|
||||||
|
scrub.registry = self.mox.CreateMockAnything()
|
||||||
|
self.mox.StubOutWithMock(glance.store, "delete_from_backend")
|
||||||
|
|
||||||
|
scrub.registry.update_image(id, {'status': 'deleted'})
|
||||||
|
glance.store.delete_from_backend(
|
||||||
|
mox.IgnoreArg(),
|
||||||
|
uri).AndRaise(ex)
|
||||||
|
|
||||||
|
self.mox.ReplayAll()
|
||||||
|
scrub._delete(id, uri, now)
|
||||||
|
self.mox.VerifyAll()
|
||||||
|
|
||||||
|
q_path = os.path.join(self.data_dir, id)
|
||||||
|
self.assertFalse(os.path.exists(q_path))
|
||||||
|
|
||||||
|
def test_store_delete_unsupported_backend_exception(self):
|
||||||
|
ex = glance.store.UnsupportedBackend()
|
||||||
|
self._scrubber_cleanup_with_store_delete_exception(ex)
|
||||||
|
|
||||||
|
def test_store_delete_notfound_exception(self):
|
||||||
|
ex = exception.NotFound()
|
||||||
|
self._scrubber_cleanup_with_store_delete_exception(ex)
|
Loading…
Reference in New Issue
Block a user