diff options
author | Pushpesh Sharma <psharma@redhat.com> | 2013-10-01 12:10:40 +0530 |
---|---|---|
committer | Luis Pabon <lpabon@redhat.com> | 2013-10-01 14:46:34 -0700 |
commit | b27b46ee6ffa3be55393dfa5c4cfc55d24a4ef31 (patch) | |
tree | c810a5e1963f73b8c49111207037b8876a1a88c1 /test/functional | |
parent | 577ccbccd2e2464365ab89e20bd35db60375caf1 (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>
Diffstat (limited to 'test/functional')
-rw-r--r-- | test/functional/conf/container-server.conf | 3 | ||||
-rw-r--r-- | test/functional/tests.py | 47 |
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 |