Support for content-length in the upload object method for
internal client. Internal client uses 'chunked' transfer encoding in it's upload_object method. If content-length is known in advance, internal_client should allowed to use content length in the upload_object method and not the chunked method. Change-Id: I68d2ebde78e01fa16b7187a2f045ea20f4310722
This commit is contained in:
parent
48a2848785
commit
b67a4b9938
@ -678,7 +678,8 @@ class InternalClient(object):
|
||||
"""
|
||||
|
||||
headers = dict(headers or {})
|
||||
headers['Transfer-Encoding'] = 'chunked'
|
||||
if 'Content-Length' not in headers:
|
||||
headers['Transfer-Encoding'] = 'chunked'
|
||||
path = self.make_path(account, container, obj)
|
||||
self.make_request('PUT', path, headers, (2,), fobj)
|
||||
|
||||
|
@ -922,6 +922,33 @@ class TestInternalClient(unittest.TestCase):
|
||||
client.upload_object(fobj, account, container, obj, headers)
|
||||
self.assertEquals(1, client.make_request_called)
|
||||
|
||||
def test_upload_object_not_chunked(self):
|
||||
class InternalClient(internal_client.InternalClient):
|
||||
def __init__(self, test, path, headers, fobj):
|
||||
self.test = test
|
||||
self.path = path
|
||||
self.headers = headers
|
||||
self.fobj = fobj
|
||||
self.make_request_called = 0
|
||||
|
||||
def make_request(
|
||||
self, method, path, headers, acceptable_statuses,
|
||||
body_file=None):
|
||||
self.make_request_called += 1
|
||||
self.test.assertEquals(self.path, path)
|
||||
exp_headers = dict(self.headers)
|
||||
self.test.assertEquals(exp_headers, headers)
|
||||
self.test.assertEquals(self.fobj, fobj)
|
||||
|
||||
fobj = 'some_fobj'
|
||||
account, container, obj = path_parts()
|
||||
path = make_path(account, container, obj)
|
||||
headers = {'key': 'value', 'Content-Length': len(fobj)}
|
||||
|
||||
client = InternalClient(self, path, headers, fobj)
|
||||
client.upload_object(fobj, account, container, obj, headers)
|
||||
self.assertEquals(1, client.make_request_called)
|
||||
|
||||
|
||||
class TestGetAuth(unittest.TestCase):
|
||||
@mock.patch('eventlet.green.urllib2.urlopen')
|
||||
|
Loading…
x
Reference in New Issue
Block a user