summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPushpesh Sharma <psharma@redhat.com>2013-10-01 12:10:40 +0530
committerLuis Pabon <lpabon@redhat.com>2013-10-01 14:46:34 -0700
commitb27b46ee6ffa3be55393dfa5c4cfc55d24a4ef31 (patch)
treec810a5e1963f73b8c49111207037b8876a1a88c1
parent577ccbccd2e2464365ab89e20bd35db60375caf1 (diff)
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>
-rw-r--r--test/functional/conf/container-server.conf3
-rw-r--r--test/functional/tests.py47
2 files changed, 50 insertions, 0 deletions
diff --git a/test/functional/conf/container-server.conf b/test/functional/conf/container-server.conf
index 7e665f1..122d97e 100644
--- a/test/functional/conf/container-server.conf
+++ b/test/functional/conf/container-server.conf
@@ -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
diff --git a/test/functional/tests.py b/test/functional/tests.py
index 4536d0b..f58e7f3 100644
--- a/test/functional/tests.py
+++ b/test/functional/tests.py
@@ -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