Moved swift container cleanup to a class method.
The same piece of code was used in almost every tearDownClass method, moved it
into a separate method to remove code redundancy.
Change-Id: I173af3f46fc2f6771237ab29b472249b00a9ed2d
diff --git a/tempest/api/object_storage/base.py b/tempest/api/object_storage/base.py
index 745de22..bf013ec 100644
--- a/tempest/api/object_storage/base.py
+++ b/tempest/api/object_storage/base.py
@@ -47,3 +47,31 @@
except exceptions.EndpointNotFound:
skip_msg = "No OpenStack Object Storage API endpoint"
raise cls.skipException(skip_msg)
+
+ @classmethod
+ def delete_containers(cls, containers, container_client=None,
+ object_client=None):
+ """Remove given containers and all objects in them.
+
+ The containers should be visible from the container_client given.
+ Will not throw any error if the containers don't exist.
+
+ :param containers: list of container names to remove
+ :param container_client: if None, use cls.container_client, this means
+ that the default testing user will be used (see 'username' in
+ 'etc/tempest.conf')
+ :param object_client: if None, use cls.object_client
+ """
+ if container_client is None:
+ container_client = cls.container_client
+ if object_client is None:
+ object_client = cls.object_client
+ for cont in containers:
+ try:
+ objlist = container_client.list_all_container_objects(cont)
+ # delete every object in the container
+ for obj in objlist:
+ object_client.delete_object(cont, obj['name'])
+ container_client.delete_container(cont)
+ except exceptions.NotFound:
+ pass
diff --git a/tempest/api/object_storage/test_container_services.py b/tempest/api/object_storage/test_container_services.py
index 0b4b57b..70f704f 100644
--- a/tempest/api/object_storage/test_container_services.py
+++ b/tempest/api/object_storage/test_container_services.py
@@ -29,15 +29,7 @@
@classmethod
def tearDownClass(cls):
- for container in cls.containers:
- objlist = \
- cls.container_client.list_all_container_objects(container)
- # delete every object in the container
- for obj in objlist:
- resp, _ = \
- cls.object_client.delete_object(container, obj['name'])
- # delete the container
- resp, _ = cls.container_client.delete_container(container)
+ cls.delete_containers(cls.containers)
@attr(type='smoke')
def test_create_container(self):
@@ -125,8 +117,3 @@
self.assertEqual(resp['status'], '204')
self.assertNotIn('x-container-meta-name', resp)
self.assertNotIn('x-container-meta-description', resp)
-
- # delete container
- resp, _ = self.container_client.delete_container(container_name)
- self.assertEqual(resp['status'], '204')
- self.containers.remove(container_name)
diff --git a/tempest/api/object_storage/test_container_sync.py b/tempest/api/object_storage/test_container_sync.py
index 3243990..64f227c 100644
--- a/tempest/api/object_storage/test_container_sync.py
+++ b/tempest/api/object_storage/test_container_sync.py
@@ -48,14 +48,8 @@
@classmethod
def tearDownClass(cls):
- for cont_name, client in cls.clients.items():
- objlist = client[0].list_all_container_objects(cont_name)
- # delete every object in the container
- if objlist:
- for obj in objlist:
- resp, _ = client[1].delete_object(cont_name, obj['name'])
- # delete the container
- resp, _ = client[0].delete_container(cont_name)
+ for client in cls.clients.values():
+ cls.delete_containers(cls.containers, client[0], client[1])
@testtools.skip('Until Bug #1093743 is resolved.')
@attr(type='positive')
diff --git a/tempest/api/object_storage/test_object_expiry.py b/tempest/api/object_storage/test_object_expiry.py
index 1fe47ea..837c085 100644
--- a/tempest/api/object_storage/test_object_expiry.py
+++ b/tempest/api/object_storage/test_object_expiry.py
@@ -39,15 +39,7 @@
But delete action for the expired object is raising
NotFound exception and also non empty container cannot be deleted.
"""
- objlist = \
- cls.container_client.list_all_container_objects(cls.container_name)
- # delete every object in the container
- if objlist:
- for obj in objlist:
- resp, _ = cls.object_client.delete_object(cls.container_name,
- obj['name'])
- # delete the container
- resp, _ = cls.container_client.delete_container(cls.container_name)
+ cls.delete_containers([cls.container_name])
@testtools.skip('Until Bug #1069849 is resolved.')
def test_get_object_after_expiry_time(self):
diff --git a/tempest/api/object_storage/test_object_services.py b/tempest/api/object_storage/test_object_services.py
index 4d7ee74..5c9f59e 100644
--- a/tempest/api/object_storage/test_object_services.py
+++ b/tempest/api/object_storage/test_object_services.py
@@ -32,6 +32,7 @@
super(ObjectTest, cls).setUpClass()
cls.container_name = rand_name(name='TestContainer')
cls.container_client.create_container(cls.container_name)
+ cls.containers = [cls.container_name]
cls.data.setup_test_user()
resp, body = cls.token_client.auth(cls.data.test_user,
@@ -44,14 +45,7 @@
@classmethod
def tearDownClass(cls):
- objlist = cls.container_client.list_all_container_objects(
- cls.container_name)
- # delete every object in the container
- for obj in objlist:
- resp, _ = cls.object_client.delete_object(cls.container_name,
- obj['name'])
- # delete the container
- resp, _ = cls.container_client.delete_container(cls.container_name)
+ cls.delete_containers(cls.containers)
# delete the user setup created
cls.data.teardown_all()
@@ -198,9 +192,11 @@
# create a container to use as asource container
src_container_name = rand_name(name='TestSourceContainer')
self.container_client.create_container(src_container_name)
+ self.containers.append(src_container_name)
# create a container to use as a destination container
dst_container_name = rand_name(name='TestDestinationContainer')
self.container_client.create_container(dst_container_name)
+ self.containers.append(dst_container_name)
# create object in source container
object_name = rand_name(name='Object')
data = arbitrary_string(size=len(object_name) * 2,
@@ -233,17 +229,6 @@
except Exception as e:
self.fail("Got exception :%s ; while copying"
" object across containers" % e)
- finally:
- # delete objects from respective containers
- resp, _ = self.object_client.delete_object(dst_container_name,
- object_name)
- resp, _ = self.object_client.delete_object(src_container_name,
- object_name)
- # delete containers created in this method
- resp, _ = self.container_client.delete_container(
- src_container_name)
- resp, _ = self.container_client.delete_container(
- dst_container_name)
@attr(type='negative')
def test_write_object_without_using_creds(self):
@@ -389,14 +374,7 @@
self.container_client.create_container(self.container_name)
def tearDown(self):
- objlist = self.container_client.list_all_container_objects(
- self.container_name)
- # delete every object in the container
- for obj in objlist:
- resp, _ = self.object_client.delete_object(
- self.container_name, obj['name'])
- # delete the container
- resp, _ = self.container_client.delete_container(self.container_name)
+ self.delete_containers([self.container_name])
super(PublicObjectTest, self).tearDown()
@attr(type='smoke')
diff --git a/tempest/api/object_storage/test_object_version.py b/tempest/api/object_storage/test_object_version.py
index d449c0a..cda3e4f 100644
--- a/tempest/api/object_storage/test_object_version.py
+++ b/tempest/api/object_storage/test_object_version.py
@@ -28,15 +28,7 @@
@classmethod
def tearDownClass(cls):
- for container in cls.containers:
- objlist = \
- cls.container_client.list_all_container_objects(container)
- # delete every object in the container
- for obj in objlist:
- resp, _ = \
- cls.object_client.delete_object(container, obj['name'])
- # delete the container
- resp, _ = cls.container_client.delete_container(container)
+ cls.delete_containers(cls.containers)
def assertContainer(self, container, count, byte, versioned):
resp, _ = self.container_client.list_container_metadata(container)
@@ -94,10 +86,3 @@
vers_container_name)
self.assertContainer(vers_container_name, '0', '0',
'Missing Header')
- # delete containers
- resp, _ = self.container_client.delete_container(base_container_name)
- self.assertEqual(resp['status'], '204')
- self.containers.remove(base_container_name)
- resp, _ = self.container_client.delete_container(vers_container_name)
- self.assertEqual(resp['status'], '204')
- self.containers.remove(vers_container_name)