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:
parent
577ccbccd2
commit
b27b46ee6f
@ -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
|
||||
|
@ -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
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user