Files
deb-tempest/tempest/api/object_storage/test_object_version.py
Daisuke Morita d206d3bc9c Check HTTP response headers of Swift middleware API in detail
All HTTP response headers of APIs for each Swift middleware are checked
their existence and format as those of Swift 'standard' API are.

Change-Id: I45005861873af66a126a3ebe0b04dd84c9a26eda
Closes-Bug: #1240856
2013-12-06 15:28:32 +09:00

93 lines
4.1 KiB
Python

# vim: tabstop=4 shiftwidth=4 softtabstop=4
# Copyright 2012 OpenStack Foundation
# 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.
from tempest.api.object_storage import base
from tempest.common.utils import data_utils
from tempest.test import attr
class ContainerTest(base.BaseObjectTest):
@classmethod
def setUpClass(cls):
super(ContainerTest, cls).setUpClass()
cls.containers = []
@classmethod
def tearDownClass(cls):
cls.delete_containers(cls.containers)
super(ContainerTest, cls).tearDownClass()
def assertContainer(self, container, count, byte, versioned):
resp, _ = self.container_client.list_container_metadata(container)
self.assertEqual(resp['status'], ('204'))
self.assertHeaders(resp, 'Container', 'HEAD')
header_value = resp.get('x-container-object-count', 'Missing Header')
self.assertEqual(header_value, count)
header_value = resp.get('x-container-bytes-used', 'Missing Header')
self.assertEqual(header_value, byte)
header_value = resp.get('x-versions-location', 'Missing Header')
self.assertEqual(header_value, versioned)
@attr(type='smoke')
def test_versioned_container(self):
# create container
vers_container_name = data_utils.rand_name(name='TestVersionContainer')
resp, body = self.container_client.create_container(
vers_container_name)
self.containers.append(vers_container_name)
self.assertIn(resp['status'], ('202', '201'))
self.assertHeaders(resp, 'Container', 'PUT')
self.assertContainer(vers_container_name, '0', '0', 'Missing Header')
base_container_name = data_utils.rand_name(name='TestBaseContainer')
headers = {'X-versions-Location': vers_container_name}
resp, body = self.container_client.create_container(
base_container_name,
metadata=headers,
metadata_prefix='')
self.containers.append(base_container_name)
self.assertIn(resp['status'], ('202', '201'))
self.assertHeaders(resp, 'Container', 'PUT')
self.assertContainer(base_container_name, '0', '0',
vers_container_name)
object_name = data_utils.rand_name(name='TestObject')
# create object
resp, _ = self.object_client.create_object(base_container_name,
object_name, '1')
# create 2nd version of object
resp, _ = self.object_client.create_object(base_container_name,
object_name, '2')
resp, body = self.object_client.get_object(base_container_name,
object_name)
self.assertEqual(body, '2')
# delete object version 2
resp, _ = self.object_client.delete_object(base_container_name,
object_name)
self.assertContainer(base_container_name, '1', '1',
vers_container_name)
resp, body = self.object_client.get_object(base_container_name,
object_name)
self.assertEqual(body, '1')
# delete object version 1
resp, _ = self.object_client.delete_object(base_container_name,
object_name)
# containers should be empty
self.assertContainer(base_container_name, '0', '0',
vers_container_name)
self.assertContainer(vers_container_name, '0', '0',
'Missing Header')