Merge pull request #51 from chmouel/sync-container-meta
Refactor test_containers.
This commit is contained in:
		@@ -25,9 +25,9 @@ import tests.units.base as test_base
 | 
			
		||||
import tests.units.fakes as fakes
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class TestContainers(test_base.TestCase):
 | 
			
		||||
class TestContainersBase(test_base.TestCase):
 | 
			
		||||
    def setUp(self):
 | 
			
		||||
        super(TestContainers, self).setUp()
 | 
			
		||||
        super(TestContainersBase, self).setUp()
 | 
			
		||||
        self.container_cls = swsync.containers.Containers()
 | 
			
		||||
 | 
			
		||||
        self.tenant_name = 'foo1'
 | 
			
		||||
@@ -41,6 +41,146 @@ class TestContainers(test_base.TestCase):
 | 
			
		||||
        self.dest_storage_cnx = (urlparse.urlparse(self.dest_storage_url),
 | 
			
		||||
                                 None)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class TestContainersSyncMetadata(TestContainersBase):
 | 
			
		||||
 | 
			
		||||
    def _base_sync_metadata(self, orig_dict={},
 | 
			
		||||
                            dest_dict={},
 | 
			
		||||
                            get_called=[],
 | 
			
		||||
                            post_called=[],
 | 
			
		||||
                            info_called=[],
 | 
			
		||||
                            raise_post_container=False):
 | 
			
		||||
 | 
			
		||||
        def fake_info(msg):
 | 
			
		||||
            info_called.append(msg)
 | 
			
		||||
 | 
			
		||||
        def get_container(*args, **kwargs):
 | 
			
		||||
            if len(get_called) == 0:
 | 
			
		||||
                get_called.append("TESTED")
 | 
			
		||||
                return orig_dict
 | 
			
		||||
            else:
 | 
			
		||||
                get_called.append("TESTED2")
 | 
			
		||||
                return dest_dict
 | 
			
		||||
        self.stubs.Set(swiftclient, 'get_container', get_container)
 | 
			
		||||
 | 
			
		||||
        def post_container(url, token, container, headers, **kwargs):
 | 
			
		||||
            post_called.append(headers)
 | 
			
		||||
 | 
			
		||||
            if raise_post_container:
 | 
			
		||||
                raise swiftclient.client.ClientException("Error in testing")
 | 
			
		||||
        self.stubs.Set(swiftclient, 'post_container', post_container)
 | 
			
		||||
 | 
			
		||||
        def head_container(*args, **kwargs):
 | 
			
		||||
            pass
 | 
			
		||||
 | 
			
		||||
        self.stubs.Set(swiftclient, 'head_container', head_container)
 | 
			
		||||
        self.stubs.Set(logging, 'info', fake_info)
 | 
			
		||||
 | 
			
		||||
        self.container_cls.sync(self.orig_storage_cnx,
 | 
			
		||||
                                self.orig_storage_url,
 | 
			
		||||
                                'token',
 | 
			
		||||
                                self.dest_storage_cnx,
 | 
			
		||||
                                self.dest_storage_url,
 | 
			
		||||
                                'token', 'cont1')
 | 
			
		||||
 | 
			
		||||
    def test_sync_containers_metada_added_on_dest(self):
 | 
			
		||||
        get_called = []
 | 
			
		||||
        post_called = []
 | 
			
		||||
        info_called = []
 | 
			
		||||
 | 
			
		||||
        orig_dict = ({'x-container-meta-om': 'enkl',
 | 
			
		||||
                      'x-trans-id': 'ffs',
 | 
			
		||||
                      'x-container-bytes-used': '100',
 | 
			
		||||
                      'x-container-object-count': '2'},
 | 
			
		||||
                     [{'last_modified': '2010', 'name': 'foo'}])
 | 
			
		||||
        dest_dict = ({'x-container-meta-om': 'enkl',
 | 
			
		||||
                      'x-container-meta-psg': 'magique',
 | 
			
		||||
                      'x-trans-id': 'ffs',
 | 
			
		||||
                      'x-container-bytes-used': '200',
 | 
			
		||||
                      'x-container-object-count': '2'},
 | 
			
		||||
                     [{'last_modified': '2010', 'name': 'foo'}])
 | 
			
		||||
 | 
			
		||||
        self._base_sync_metadata(orig_dict, dest_dict, get_called,
 | 
			
		||||
                                 post_called, info_called)
 | 
			
		||||
        self.assertEqual(len(get_called), 2)
 | 
			
		||||
        self.assertEqual(len(post_called), 1)
 | 
			
		||||
        self.assertEquals(post_called[0]['x-container-meta-psg'], '')
 | 
			
		||||
        self.assertEquals(post_called[0]['x-container-meta-om'], 'enkl')
 | 
			
		||||
        self.assertIn('HEADER: sync headers: cont1', info_called)
 | 
			
		||||
 | 
			
		||||
    def test_sync_containers_metada_added_on_orig(self):
 | 
			
		||||
        get_called = []
 | 
			
		||||
        post_called = []
 | 
			
		||||
        info_called = []
 | 
			
		||||
 | 
			
		||||
        orig_dict = ({'x-container-meta-om': 'enkl',
 | 
			
		||||
                      'x-trans-id': 'ffs',
 | 
			
		||||
                      'x-container-bytes-used': '100',
 | 
			
		||||
                      'x-container-object-count': '2'},
 | 
			
		||||
                     [{'last_modified': '2010', 'name': 'foo'}])
 | 
			
		||||
 | 
			
		||||
        dest_dict = ({'x-trans-id': 'ffs',
 | 
			
		||||
                      'x-container-bytes-used': '200',
 | 
			
		||||
                      'x-container-object-count': '2'},
 | 
			
		||||
                     [{'last_modified': '2010', 'name': 'foo'}])
 | 
			
		||||
 | 
			
		||||
        self._base_sync_metadata(orig_dict, dest_dict, get_called,
 | 
			
		||||
                                 post_called, info_called)
 | 
			
		||||
 | 
			
		||||
        self.assertIn('HEADER: sync headers: cont1', info_called)
 | 
			
		||||
        self.assertEqual(len(get_called), 2)
 | 
			
		||||
        self.assertEqual(len(post_called), 1)
 | 
			
		||||
        self.assertEquals(post_called[0]['x-container-meta-om'], 'enkl')
 | 
			
		||||
 | 
			
		||||
    def test_sync_containers_metada_changed(self):
 | 
			
		||||
        get_called = []
 | 
			
		||||
        post_called = []
 | 
			
		||||
        info_called = []
 | 
			
		||||
 | 
			
		||||
        orig_dict = ({'x-container-meta-psg': 'magic',
 | 
			
		||||
                      'x-trans-id': 'ffs',
 | 
			
		||||
                      'x-container-bytes-used': '100',
 | 
			
		||||
                      'x-container-object-count': '2'},
 | 
			
		||||
                     [{'last_modified': '2010', 'name': 'foo'}])
 | 
			
		||||
 | 
			
		||||
        dest_dict = ({'x-container-meta-psg': 'marseille',
 | 
			
		||||
                      'x-trans-id': 'ffs',
 | 
			
		||||
                      'x-container-bytes-used': '200',
 | 
			
		||||
                      'x-container-object-count': '2'},
 | 
			
		||||
                     [{'last_modified': '2010', 'name': 'foo'}])
 | 
			
		||||
 | 
			
		||||
        self._base_sync_metadata(orig_dict, dest_dict, get_called,
 | 
			
		||||
                                 post_called, info_called)
 | 
			
		||||
        self.assertEqual(len(get_called), 2)
 | 
			
		||||
        self.assertEqual(len(post_called), 1)
 | 
			
		||||
        self.assertEquals(post_called[0]['x-container-meta-psg'], 'magic')
 | 
			
		||||
        self.assertIn('HEADER: sync headers: cont1', info_called)
 | 
			
		||||
 | 
			
		||||
    def test_sync_containers_metadata_raise_client(self):
 | 
			
		||||
        get_called = []
 | 
			
		||||
        post_called = []
 | 
			
		||||
        info_called = []
 | 
			
		||||
 | 
			
		||||
        orig_dict = ({'x-container-meta-psg': 'magic',
 | 
			
		||||
                      'x-trans-id': 'ffs',
 | 
			
		||||
                      'x-container-bytes-used': '100',
 | 
			
		||||
                      'x-container-object-count': '2'},
 | 
			
		||||
                     [{'last_modified': '2010', 'name': 'foo'}])
 | 
			
		||||
 | 
			
		||||
        dest_dict = ({'x-container-meta-psg': 'marseille',
 | 
			
		||||
                      'x-trans-id': 'ffs',
 | 
			
		||||
                      'x-container-bytes-used': '200',
 | 
			
		||||
                      'x-container-object-count': '2'},
 | 
			
		||||
                     [{'last_modified': '2010', 'name': 'foo'}])
 | 
			
		||||
 | 
			
		||||
        self._base_sync_metadata(orig_dict, dest_dict,
 | 
			
		||||
                                 get_called, post_called,
 | 
			
		||||
                                 info_called, raise_post_container=True)
 | 
			
		||||
        self.assertIn('ERROR: updating container metadata: cont1, ',
 | 
			
		||||
                      info_called)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class TestContainers(TestContainersBase):
 | 
			
		||||
    def test_sync_when_container_nothere(self):
 | 
			
		||||
        get_cnt_called = []
 | 
			
		||||
 | 
			
		||||
@@ -270,193 +410,3 @@ class TestContainers(test_base.TestCase):
 | 
			
		||||
            "cnx1", "token1", orig_containers, dest_containers)
 | 
			
		||||
 | 
			
		||||
        self.assertEqual(len(called), 1)
 | 
			
		||||
 | 
			
		||||
    def test_sync_containers_metada_added_on_dest(self):
 | 
			
		||||
        get_called = []
 | 
			
		||||
        post_called = []
 | 
			
		||||
 | 
			
		||||
        def get_container(*args, **kwargs):
 | 
			
		||||
            if len(get_called) == 0:
 | 
			
		||||
                get_called.append("TESTED")
 | 
			
		||||
                return ({
 | 
			
		||||
                    'x-container-meta-om': 'enkl',
 | 
			
		||||
                    'x-trans-id': 'ffs',
 | 
			
		||||
                    'x-container-bytes-used': '100',
 | 
			
		||||
                    'x-container-object-count': '2'},
 | 
			
		||||
                    [{'last_modified': '2010', 'name': 'foo'}])
 | 
			
		||||
            else:
 | 
			
		||||
                get_called.append("TESTED2")
 | 
			
		||||
                return ({
 | 
			
		||||
                    'x-container-meta-om': 'enkl',
 | 
			
		||||
                    'x-container-meta-psg': 'magique',
 | 
			
		||||
                    'x-trans-id': 'ffs',
 | 
			
		||||
                    'x-container-bytes-used': '200',
 | 
			
		||||
                    'x-container-object-count': '2'},
 | 
			
		||||
                    [{'last_modified': '2010', 'name': 'foo'}])
 | 
			
		||||
            self.stubs.Set(swiftclient, 'get_container', get_container)
 | 
			
		||||
 | 
			
		||||
        self.stubs.Set(swiftclient, 'get_container', get_container)
 | 
			
		||||
 | 
			
		||||
        def post_container(url, token, container, headers, **kwargs):
 | 
			
		||||
            post_called.append(headers)
 | 
			
		||||
        self.stubs.Set(swiftclient, 'post_container', post_container)
 | 
			
		||||
 | 
			
		||||
        def head_container(*args, **kwargs):
 | 
			
		||||
            pass
 | 
			
		||||
        self.stubs.Set(swiftclient, 'head_container', head_container)
 | 
			
		||||
 | 
			
		||||
        self.container_cls.sync(
 | 
			
		||||
            self.orig_storage_cnx,
 | 
			
		||||
            self.orig_storage_url,
 | 
			
		||||
            'token',
 | 
			
		||||
            self.dest_storage_cnx,
 | 
			
		||||
            self.dest_storage_url,
 | 
			
		||||
            'token',
 | 
			
		||||
            'cont1')
 | 
			
		||||
 | 
			
		||||
        self.assertEqual(len(get_called), 2)
 | 
			
		||||
        self.assertEqual(len(post_called), 1)
 | 
			
		||||
        self.assertEquals(post_called[0]['x-container-meta-psg'], '')
 | 
			
		||||
        self.assertEquals(post_called[0]['x-container-meta-om'], 'enkl')
 | 
			
		||||
 | 
			
		||||
    def test_sync_containers_metada_added_on_orig(self):
 | 
			
		||||
        get_called = []
 | 
			
		||||
        post_called = []
 | 
			
		||||
 | 
			
		||||
        def get_container(*args, **kwargs):
 | 
			
		||||
            if len(get_called) == 0:
 | 
			
		||||
                get_called.append("TESTED")
 | 
			
		||||
                return ({
 | 
			
		||||
                    'x-container-meta-om': 'enkl',
 | 
			
		||||
                    'x-trans-id': 'ffs',
 | 
			
		||||
                    'x-container-bytes-used': '100',
 | 
			
		||||
                    'x-container-object-count': '2'},
 | 
			
		||||
                    [{'last_modified': '2010', 'name': 'foo'}])
 | 
			
		||||
            else:
 | 
			
		||||
                get_called.append("TESTED2")
 | 
			
		||||
                return ({
 | 
			
		||||
                    'x-trans-id': 'ffs',
 | 
			
		||||
                    'x-container-bytes-used': '200',
 | 
			
		||||
                    'x-container-object-count': '2'},
 | 
			
		||||
                    [{'last_modified': '2010', 'name': 'foo'}])
 | 
			
		||||
            self.stubs.Set(swiftclient, 'get_container', get_container)
 | 
			
		||||
 | 
			
		||||
        self.stubs.Set(swiftclient, 'get_container', get_container)
 | 
			
		||||
 | 
			
		||||
        def post_container(url, token, container, headers, **kwargs):
 | 
			
		||||
            post_called.append(headers)
 | 
			
		||||
        self.stubs.Set(swiftclient, 'post_container', post_container)
 | 
			
		||||
 | 
			
		||||
        def head_container(*args, **kwargs):
 | 
			
		||||
            pass
 | 
			
		||||
        self.stubs.Set(swiftclient, 'head_container', head_container)
 | 
			
		||||
 | 
			
		||||
        self.container_cls.sync(
 | 
			
		||||
            self.orig_storage_cnx,
 | 
			
		||||
            self.orig_storage_url,
 | 
			
		||||
            'token',
 | 
			
		||||
            self.dest_storage_cnx,
 | 
			
		||||
            self.dest_storage_url,
 | 
			
		||||
            'token',
 | 
			
		||||
            'cont1')
 | 
			
		||||
 | 
			
		||||
        self.assertEqual(len(get_called), 2)
 | 
			
		||||
        self.assertEqual(len(post_called), 1)
 | 
			
		||||
        self.assertEquals(post_called[0]['x-container-meta-om'], 'enkl')
 | 
			
		||||
 | 
			
		||||
    def test_sync_containers_metada_changed(self):
 | 
			
		||||
        get_called = []
 | 
			
		||||
        post_called = []
 | 
			
		||||
 | 
			
		||||
        def get_container(*args, **kwargs):
 | 
			
		||||
            if len(get_called) == 0:
 | 
			
		||||
                get_called.append("TESTED")
 | 
			
		||||
                return ({
 | 
			
		||||
                    'x-container-meta-psg': 'magic',
 | 
			
		||||
                    'x-trans-id': 'ffs',
 | 
			
		||||
                    'x-container-bytes-used': '100',
 | 
			
		||||
                    'x-container-object-count': '2'},
 | 
			
		||||
                    [{'last_modified': '2010', 'name': 'foo'}])
 | 
			
		||||
            else:
 | 
			
		||||
                get_called.append("TESTED2")
 | 
			
		||||
                return ({
 | 
			
		||||
                    'x-container-meta-psg': 'marseille',
 | 
			
		||||
                    'x-trans-id': 'ffs',
 | 
			
		||||
                    'x-container-bytes-used': '200',
 | 
			
		||||
                    'x-container-object-count': '2'},
 | 
			
		||||
                    [{'last_modified': '2010', 'name': 'foo'}])
 | 
			
		||||
            self.stubs.Set(swiftclient, 'get_container', get_container)
 | 
			
		||||
 | 
			
		||||
        self.stubs.Set(swiftclient, 'get_container', get_container)
 | 
			
		||||
 | 
			
		||||
        def post_container(url, token, container, headers, **kwargs):
 | 
			
		||||
            post_called.append(headers)
 | 
			
		||||
        self.stubs.Set(swiftclient, 'post_container', post_container)
 | 
			
		||||
 | 
			
		||||
        def head_container(*args, **kwargs):
 | 
			
		||||
            pass
 | 
			
		||||
        self.stubs.Set(swiftclient, 'head_container', head_container)
 | 
			
		||||
 | 
			
		||||
        self.container_cls.sync(
 | 
			
		||||
            self.orig_storage_cnx,
 | 
			
		||||
            self.orig_storage_url,
 | 
			
		||||
            'token',
 | 
			
		||||
            self.dest_storage_cnx,
 | 
			
		||||
            self.dest_storage_url,
 | 
			
		||||
            'token',
 | 
			
		||||
            'cont1')
 | 
			
		||||
 | 
			
		||||
        self.assertEqual(len(get_called), 2)
 | 
			
		||||
        self.assertEqual(len(post_called), 1)
 | 
			
		||||
        self.assertEquals(post_called[0]['x-container-meta-psg'], 'magic')
 | 
			
		||||
 | 
			
		||||
    def test_sync_containers_raise_client(self):
 | 
			
		||||
        get_called = []
 | 
			
		||||
        post_called = []
 | 
			
		||||
        called_info = []
 | 
			
		||||
 | 
			
		||||
        def fake_info(msg):
 | 
			
		||||
            called_info.append(msg)
 | 
			
		||||
        self.stubs.Set(logging, 'info', fake_info)
 | 
			
		||||
 | 
			
		||||
        def get_container(*args, **kwargs):
 | 
			
		||||
            if len(get_called) == 0:
 | 
			
		||||
                get_called.append("TESTED")
 | 
			
		||||
                return ({
 | 
			
		||||
                    'x-container-meta-psg': 'magic',
 | 
			
		||||
                    'x-trans-id': 'ffs',
 | 
			
		||||
                    'x-container-bytes-used': '100',
 | 
			
		||||
                    'x-container-object-count': '2'},
 | 
			
		||||
                    [{'last_modified': '2010', 'name': 'foo'}])
 | 
			
		||||
            else:
 | 
			
		||||
                get_called.append("TESTED2")
 | 
			
		||||
                return ({
 | 
			
		||||
                    'x-container-meta-psg': 'marseille',
 | 
			
		||||
                    'x-trans-id': 'ffs',
 | 
			
		||||
                    'x-container-bytes-used': '200',
 | 
			
		||||
                    'x-container-object-count': '2'},
 | 
			
		||||
                    [{'last_modified': '2010', 'name': 'foo'}])
 | 
			
		||||
            self.stubs.Set(swiftclient, 'get_container', get_container)
 | 
			
		||||
 | 
			
		||||
        self.stubs.Set(swiftclient, 'get_container', get_container)
 | 
			
		||||
 | 
			
		||||
        def post_container(url, token, container, headers, **kwargs):
 | 
			
		||||
            post_called.append(headers)
 | 
			
		||||
            raise swiftclient.client.ClientException("TEST")
 | 
			
		||||
        self.stubs.Set(swiftclient, 'post_container', post_container)
 | 
			
		||||
 | 
			
		||||
        def head_container(*args, **kwargs):
 | 
			
		||||
            pass
 | 
			
		||||
        self.stubs.Set(swiftclient, 'head_container', head_container)
 | 
			
		||||
 | 
			
		||||
        self.container_cls.sync(
 | 
			
		||||
            self.orig_storage_cnx,
 | 
			
		||||
            self.orig_storage_url,
 | 
			
		||||
            'token',
 | 
			
		||||
            self.dest_storage_cnx,
 | 
			
		||||
            self.dest_storage_url,
 | 
			
		||||
            'token',
 | 
			
		||||
            'cont1')
 | 
			
		||||
 | 
			
		||||
        self.assertIn('ERROR: updating container metadata: cont1, ',
 | 
			
		||||
                      called_info)
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user