Merge "Fix ValueError in ssync_receiver"
This commit is contained in:
commit
6247508ae9
@ -134,10 +134,10 @@ class Sender(object):
|
|||||||
# will be rebuilding them
|
# will be rebuilding them
|
||||||
self.connection.putheader(
|
self.connection.putheader(
|
||||||
'X-Backend-Ssync-Frag-Index', self.node.get(
|
'X-Backend-Ssync-Frag-Index', self.node.get(
|
||||||
'index', self.job.get('frag_index')))
|
'index', self.job.get('frag_index', '')))
|
||||||
# a revert job to a handoff will not have a node index
|
# a revert job to a handoff will not have a node index
|
||||||
self.connection.putheader('X-Backend-Ssync-Node-Index',
|
self.connection.putheader('X-Backend-Ssync-Node-Index',
|
||||||
self.node.get('index'))
|
self.node.get('index', ''))
|
||||||
self.connection.endheaders()
|
self.connection.endheaders()
|
||||||
with exceptions.MessageTimeout(
|
with exceptions.MessageTimeout(
|
||||||
self.daemon.node_timeout, 'connect receive'):
|
self.daemon.node_timeout, 'connect receive'):
|
||||||
|
@ -272,6 +272,75 @@ class TestSender(BaseTestSender):
|
|||||||
method_name, mock_method.mock_calls,
|
method_name, mock_method.mock_calls,
|
||||||
expected_calls))
|
expected_calls))
|
||||||
|
|
||||||
|
def test_connect_handoff(self):
|
||||||
|
node = dict(replication_ip='1.2.3.4', replication_port=5678,
|
||||||
|
device='sda1')
|
||||||
|
job = dict(partition='9', policy=POLICIES[1], frag_index=9)
|
||||||
|
self.sender = ssync_sender.Sender(self.daemon, node, job, None)
|
||||||
|
self.sender.suffixes = ['abc']
|
||||||
|
with mock.patch(
|
||||||
|
'swift.obj.ssync_sender.bufferedhttp.BufferedHTTPConnection'
|
||||||
|
) as mock_conn_class:
|
||||||
|
mock_conn = mock_conn_class.return_value
|
||||||
|
mock_resp = mock.MagicMock()
|
||||||
|
mock_resp.status = 200
|
||||||
|
mock_conn.getresponse.return_value = mock_resp
|
||||||
|
self.sender.connect()
|
||||||
|
mock_conn_class.assert_called_once_with('1.2.3.4:5678')
|
||||||
|
expectations = {
|
||||||
|
'putrequest': [
|
||||||
|
mock.call('SSYNC', '/sda1/9'),
|
||||||
|
],
|
||||||
|
'putheader': [
|
||||||
|
mock.call('Transfer-Encoding', 'chunked'),
|
||||||
|
mock.call('X-Backend-Storage-Policy-Index', 1),
|
||||||
|
mock.call('X-Backend-Ssync-Frag-Index', 9),
|
||||||
|
mock.call('X-Backend-Ssync-Node-Index', ''),
|
||||||
|
],
|
||||||
|
'endheaders': [mock.call()],
|
||||||
|
}
|
||||||
|
for method_name, expected_calls in expectations.items():
|
||||||
|
mock_method = getattr(mock_conn, method_name)
|
||||||
|
self.assertEquals(expected_calls, mock_method.mock_calls,
|
||||||
|
'connection method "%s" got %r not %r' % (
|
||||||
|
method_name, mock_method.mock_calls,
|
||||||
|
expected_calls))
|
||||||
|
|
||||||
|
def test_connect_handoff_replicated(self):
|
||||||
|
node = dict(replication_ip='1.2.3.4', replication_port=5678,
|
||||||
|
device='sda1')
|
||||||
|
# no frag_index in rsync job
|
||||||
|
job = dict(partition='9', policy=POLICIES[1])
|
||||||
|
self.sender = ssync_sender.Sender(self.daemon, node, job, None)
|
||||||
|
self.sender.suffixes = ['abc']
|
||||||
|
with mock.patch(
|
||||||
|
'swift.obj.ssync_sender.bufferedhttp.BufferedHTTPConnection'
|
||||||
|
) as mock_conn_class:
|
||||||
|
mock_conn = mock_conn_class.return_value
|
||||||
|
mock_resp = mock.MagicMock()
|
||||||
|
mock_resp.status = 200
|
||||||
|
mock_conn.getresponse.return_value = mock_resp
|
||||||
|
self.sender.connect()
|
||||||
|
mock_conn_class.assert_called_once_with('1.2.3.4:5678')
|
||||||
|
expectations = {
|
||||||
|
'putrequest': [
|
||||||
|
mock.call('SSYNC', '/sda1/9'),
|
||||||
|
],
|
||||||
|
'putheader': [
|
||||||
|
mock.call('Transfer-Encoding', 'chunked'),
|
||||||
|
mock.call('X-Backend-Storage-Policy-Index', 1),
|
||||||
|
mock.call('X-Backend-Ssync-Frag-Index', ''),
|
||||||
|
mock.call('X-Backend-Ssync-Node-Index', ''),
|
||||||
|
],
|
||||||
|
'endheaders': [mock.call()],
|
||||||
|
}
|
||||||
|
for method_name, expected_calls in expectations.items():
|
||||||
|
mock_method = getattr(mock_conn, method_name)
|
||||||
|
self.assertEquals(expected_calls, mock_method.mock_calls,
|
||||||
|
'connection method "%s" got %r not %r' % (
|
||||||
|
method_name, mock_method.mock_calls,
|
||||||
|
expected_calls))
|
||||||
|
|
||||||
def test_call(self):
|
def test_call(self):
|
||||||
def patch_sender(sender):
|
def patch_sender(sender):
|
||||||
sender.connect = mock.MagicMock()
|
sender.connect = mock.MagicMock()
|
||||||
|
Loading…
Reference in New Issue
Block a user