From b81a7187941b7f5b18c0ddf0729768ccd5ab4dde Mon Sep 17 00:00:00 2001 From: Andrew Gaul Date: Tue, 12 Aug 2014 12:25:56 -0700 Subject: [PATCH] Test half-open range requests --- s3tests/functional/test_s3.py | 44 +++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/s3tests/functional/test_s3.py b/s3tests/functional/test_s3.py index 44db1f1..741cd62 100644 --- a/s3tests/functional/test_s3.py +++ b/s3tests/functional/test_s3.py @@ -4747,6 +4747,50 @@ def test_ranged_request_response_code(): eq(fetched_content, content[4:8]) eq(status, 206) +@attr(resource='object') +@attr(method='get') +@attr(operation='range') +@attr(assertion='returns correct data, 206') +def test_ranged_request_skip_leading_bytes_response_code(): + content = 'testcontent' + + bucket = get_new_bucket() + key = bucket.new_key('testobj') + key.set_contents_from_string(content) + + # test trailing bytes + key.open('r', headers={'Range': 'bytes=4-'}) + status = key.resp.status + fetched_content = '' + for data in key: + fetched_content += data; + key.close() + + eq(fetched_content, content[4:]) + eq(status, 206) + +@attr(resource='object') +@attr(method='get') +@attr(operation='range') +@attr(assertion='returns correct data, 206') +def test_ranged_request_return_trailing_bytes_response_code(): + content = 'testcontent' + + bucket = get_new_bucket() + key = bucket.new_key('testobj') + key.set_contents_from_string(content) + + # test leading bytes + key.open('r', headers={'Range': 'bytes=-7'}) + status = key.resp.status + fetched_content = '' + for data in key: + fetched_content += data; + key.close() + + eq(fetched_content, content[-7:]) + eq(status, 206) + def check_can_test_multiregion(): if not targets.main.master or len(targets.main.secondaries) == 0: raise SkipTest