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