]> git-server-git.apps.pok.os.sepia.ceph.com Git - s3-tests.git/commitdiff
s3tests: add test_versioning_obj_create_read_remove()
authorYehuda Sadeh <yehuda@inktank.com>
Wed, 29 Oct 2014 22:26:57 +0000 (15:26 -0700)
committerYehuda Sadeh <yehuda@inktank.com>
Mon, 19 Jan 2015 23:07:53 +0000 (15:07 -0800)
Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
s3tests/functional/__init__.py
s3tests/functional/test_s3.py

index 0b0561f21f902897fd3a3519c137b853c9ce4d37..6d0d680a897735937aa3c16785649af00295743a 100644 (file)
@@ -72,7 +72,7 @@ def nuke_prefixed_buckets_on_conn(prefix, name, conn):
                         key=key,
                         )
                     # key.set_canned_acl('private')
-                    key.delete()
+                    bucket.delete_key(key.name, version_id = key.version_id)
                 bucket.delete()
             except boto.exception.S3ResponseError as e:
                 if e.error_code != 'AccessDenied':
index 8eb278933921c04556277da730360eff2f68781c..f82c5b270364f76657480a325afa4b001432009c 100644 (file)
@@ -5188,7 +5188,6 @@ def check_versioning(bucket, status):
 @attr('versioning')
 def test_versioning_bucket_create_suspend():
     bucket = get_new_bucket()
-    print bucket.get_versioning_status()
     check_versioning(bucket, None)
 
     bucket.configure_versioning(False)
@@ -5203,3 +5202,60 @@ def test_versioning_bucket_create_suspend():
     bucket.configure_versioning(False)
     check_versioning(bucket, "Suspended")
 
+@attr(resource='object')
+@attr(method='create')
+@attr(operation='create versioned object')
+@attr(assertion='can create access and remove appropriate versions')
+@attr('versioning')
+def test_versioning_obj_create_read_remove():
+    bucket = get_new_bucket()
+    objname = 'testobj'
+
+    total = 5
+
+    c = []
+    for i in xrange(total):
+        c.append('content-{i}'.format(i=i))
+
+        key = bucket.new_key(objname)
+        key.set_contents_from_string(c[i])
+
+        if i == 0:
+            bucket.configure_versioning(True)
+            check_versioning(bucket, "Enabled")
+
+    # check to see if object is pointing at correct version
+    key = bucket.get_key(objname)
+    eq(key.get_contents_as_string(), c[-1])
+    print 'total', total
+
+    k = []
+    for o in bucket.list_versions():
+        k.insert(0, o)
+
+    for j in xrange(total):
+        print j, k[j], k[j].version_id
+
+    for j in xrange(total):
+        # check by versioned key
+        rmkey = k.pop(-1)
+        eq(rmkey.get_contents_as_string(), c[-1])
+
+        # remove version
+        print 'removing version_id=', rmkey.version_id
+        bucket.delete_key(rmkey.name, version_id = rmkey.version_id)
+        c.pop(-1)
+
+        # check to see if object is pointing at correct version
+        key = bucket.get_key(objname)
+
+        if len(c) > 0:
+            print c[-1]
+            eq(key.get_contents_as_string(), c[-1])
+            i = len(c)
+            for key in bucket.list_versions():
+                i -= 1
+                eq(key.get_contents_as_string(), c[i])
+        else:
+            eq(key, None)
+