Added Object Versioning Functional TC

Changed container-server.conf to allow object versioning.
Added object versioning testcase which does following:
  a. Setup method to create two containers
     object,versions
  b. Set 'X-Versions-Location':'versions' for
     'object' container
  c. test method:
     1. Write random data to a object named 'object'
        in 'object' container for random number of times
     2. Match the current version of object with last
        data written
     3. Delete the current version
     4. Repeat steps 2-3 till list of data written exhausted

Change-Id: I6b36008b9c4d967383169290c8fd3adf3c3446a8
Signed-off-by: Pushpesh Sharma <psharma@redhat.com>
Reviewed-on: http://review.gluster.org/6018
Reviewed-by: Luis Pabon <lpabon@redhat.com>
Tested-by: Luis Pabon <lpabon@redhat.com>
This commit is contained in:
Pushpesh Sharma 2013-10-01 12:10:40 +05:30 committed by Luis Pabon
parent 577ccbccd2
commit b27b46ee6f
2 changed files with 50 additions and 0 deletions

View File

@ -30,3 +30,6 @@ log_level = WARN
# normal request logging for the container server to unclutter the log
# files. Warnings and errors will still be logged.
log_requests = off
#enable object versioning for functional test
allow_versions = on

View File

@ -1682,6 +1682,53 @@ class TestFileComparison(Base):
self.assert_status(412)
class TestObjectVersioningEnv:
@classmethod
def setUp(cls):
cls.conn = Connection(config)
cls.conn.authenticate()
cls.account = Account(cls.conn, config.get('account',
config['username']))
cls.account.delete_containers()
cls.containers = {}
#create two containers one for object other for versions of objects
for i in range(2):
hdrs={}
if i==0:
hdrs={'X-Versions-Location':'versions'}
cont = cls.containers['object'] = cls.account.container('object')
else:
cont = cls.containers['versions'] = cls.account.container('versions')
if not cont.create(hdrs=hdrs):
raise ResponseError(cls.conn.response)
cls.containers.append(cont)
class TestObjectVersioning(Base):
env = TestObjectVersioningEnv
set_up = False
def testObjectVersioning(self):
versions = random.randrange(2,10)
dataArr=[]
#create versions
for i in range(versions):
data = File.random_data(10000*(i+1))
file = self.env.containers['object'].file('object')
self.assertTrue(file.write(data))
dataArr.append(data)
cont = self.env.containers['versions']
info = cont.info()
self.assertEquals(info['object_count'], versions-1)
#match the current version of object with data in arr and delete it
for i in range(versions):
data = dataArr[-(i+1)]
file = self.env.containers['object'].file('object')
self.assertEquals(data,file.read())
self.assert_(file.delete())
self.assert_status(204)
class TestFileComparisonUTF8(Base2, TestFileComparison):
set_up = False