mirror of
https://github.com/ceph/s3-tests.git
synced 2024-11-21 23:29:47 +00:00
test_s3: add versioned multipart upload test
Signed-off-by: Yehuda Sadeh <yehuda@inktank.com>
This commit is contained in:
parent
3c297038f6
commit
b4d406bcf7
1 changed files with 51 additions and 11 deletions
|
@ -4380,26 +4380,36 @@ def test_multipart_upload_size_too_small():
|
||||||
eq(e.status, 400)
|
eq(e.status, 400)
|
||||||
eq(e.error_code, u'EntityTooSmall')
|
eq(e.error_code, u'EntityTooSmall')
|
||||||
|
|
||||||
@attr(resource='object')
|
def gen_rand_string(size, chars=string.ascii_uppercase + string.digits):
|
||||||
@attr(method='put')
|
return ''.join(random.choice(chars) for _ in range(size))
|
||||||
@attr(operation='check contents of multi-part upload')
|
|
||||||
@attr(assertion='successful')
|
def do_test_multipart_upload_contents(bucket, key_name, num_parts):
|
||||||
def test_multipart_upload_contents():
|
payload=gen_rand_string(5)*1024*1024
|
||||||
bucket = get_new_bucket()
|
|
||||||
key_name="mymultipart"
|
|
||||||
num_parts=3
|
|
||||||
payload='12345'*1024*1024
|
|
||||||
mp=bucket.initiate_multipart_upload(key_name)
|
mp=bucket.initiate_multipart_upload(key_name)
|
||||||
for i in range(0, num_parts):
|
for i in range(0, num_parts):
|
||||||
mp.upload_part_from_file(StringIO(payload), i+1)
|
mp.upload_part_from_file(StringIO(payload), i+1)
|
||||||
|
|
||||||
last_payload='123'*1024*1024
|
last_payload='123'*1024*1024
|
||||||
mp.upload_part_from_file(StringIO(last_payload), 4)
|
mp.upload_part_from_file(StringIO(last_payload), num_parts + 1)
|
||||||
|
|
||||||
mp.complete_upload()
|
mp.complete_upload()
|
||||||
key=bucket.get_key(key_name)
|
key=bucket.get_key(key_name)
|
||||||
test_string=key.get_contents_as_string()
|
test_string=key.get_contents_as_string()
|
||||||
assert test_string == payload*num_parts+last_payload
|
|
||||||
|
all_payload = payload*num_parts + last_payload
|
||||||
|
print 'JJJ', key_name, len(all_payload), len(test_string)
|
||||||
|
|
||||||
|
assert test_string == all_payload
|
||||||
|
|
||||||
|
return all_payload
|
||||||
|
|
||||||
|
|
||||||
|
@attr(resource='object')
|
||||||
|
@attr(method='put')
|
||||||
|
@attr(operation='check contents of multi-part upload')
|
||||||
|
@attr(assertion='successful')
|
||||||
|
def test_multipart_upload_contents():
|
||||||
|
do_test_multipart_upload_contents(get_new_bucket(), 'mymultipart', 3)
|
||||||
|
|
||||||
|
|
||||||
@attr(resource='object')
|
@attr(resource='object')
|
||||||
|
@ -5494,3 +5504,33 @@ def test_versioning_obj_create_versions_remove_all():
|
||||||
eq(len(k), 0)
|
eq(len(k), 0)
|
||||||
eq(len(k), len(c))
|
eq(len(k), len(c))
|
||||||
|
|
||||||
|
@attr(resource='object')
|
||||||
|
@attr(method='multipart')
|
||||||
|
@attr(operation='create and test multipart object')
|
||||||
|
@attr(assertion='everything works')
|
||||||
|
@attr('versioning')
|
||||||
|
def test_versioning_obj_create_overwrite_multipart():
|
||||||
|
bucket = get_new_bucket()
|
||||||
|
check_configure_versioning_retry(bucket, True, "Enabled")
|
||||||
|
|
||||||
|
objname = 'testobj'
|
||||||
|
|
||||||
|
c = []
|
||||||
|
|
||||||
|
num_vers = 3
|
||||||
|
|
||||||
|
for i in xrange(num_vers):
|
||||||
|
c.append(do_test_multipart_upload_contents(bucket, objname, 3))
|
||||||
|
|
||||||
|
k = []
|
||||||
|
for key in bucket.list_versions():
|
||||||
|
k.insert(0, key)
|
||||||
|
|
||||||
|
eq(len(k), num_vers)
|
||||||
|
check_obj_versions(bucket, objname, k, c)
|
||||||
|
|
||||||
|
do_remove_versions(bucket, objname, 0, 3, 0.5, k, c)
|
||||||
|
do_remove_versions(bucket, objname, 0, 3, 0, k, c)
|
||||||
|
|
||||||
|
eq(len(k), 0)
|
||||||
|
eq(len(k), len(c))
|
||||||
|
|
Loading…
Reference in a new issue