Skip to content
This repository has been archived by the owner on Nov 23, 2023. It is now read-only.

AMQP support #16

Merged
merged 5 commits into from
Nov 3, 2011
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
fixed a typo in piped.log and slightly improved test coverage
  • Loading branch information
nkvoll committed Nov 3, 2011
commit 5594eee1523f04ea444af6bbf5a2a613a45ddf9e
32 changes: 28 additions & 4 deletions contrib/amqp/piped/contrib/amqp/test/test_providers.py
Original file line number Diff line number Diff line change
Expand Up @@ -183,16 +183,21 @@ def test_reconnect_if_connect_fails(self):
connection.setServiceParent(self.service)

endpoints = list()
connect_return_values = [error.ConnectError('test_error'), error.DNSLookupError('test_error'), error.ConnectionDone('test_error')]
expected_errors = list(connect_return_values)
connect_return_values = [error.ConnectError('test_error'), error.DNSLookupError('test_error'), error.ConnectionDone('test_error'), Exception('test_exception'), defer.Deferred()]
expected_errors = list(connect_return_values[:-1])

disconnects = list()
connection.on_disconnected += disconnects.append

with patch.object(connection, '_connect') as mocked_connect:
def verify(endpoint):
endpoints.append(dict(host=endpoint._host, port=endpoint._port))
raise connect_return_values.pop(0)

return_value = connect_return_values.pop(0)
if isinstance(return_value, Exception):
raise return_value
return return_value


mocked_connect.side_effect = verify

Expand All @@ -206,12 +211,31 @@ def verify(endpoint):
# the servers should be attempted in a round-robin fashion:
server_1 = dict(host='server_1', port=5672)
server_2 = dict(host='server_2', port=5673)
self.assertEquals(endpoints, [server_1, server_2, server_1])
self.assertEquals(endpoints, [server_1, server_2, server_1, server_2, server_1])

# all our expected errors should be seen as reasons for disconnects:
errors = [disconnect.value for disconnect in disconnects]
self.assertEquals(errors, expected_errors)

@defer.inlineCallbacks
def test_stopping_service_cancels_pending_connections(self):
connection = providers.AMQPConnection('test_name', servers=['tcp:host=server_1:port=5672', 'tcp:host=server_2:port=5673'], reconnect_interval=0)
connection.setServiceParent(self.service)

with patch.object(providers, 'endpoints') as mocked_endpoints:
mocked_endpoints.clientFromString.return_value.connect.return_value = defer.Deferred()
connection.startService()

self.assertEquals(mocked_endpoints.clientFromString.return_value.connect.call_count, 1)

self.assertIsInstance(connection._reconnecting, defer.Deferred)
self.assertIsInstance(connection._connecting, defer.Deferred)

yield connection.stopService()

self.assertEquals(connection._reconnecting, None)
self.assertEquals(connection._connecting, None)

def test_reconnect_on_connection_lost(self):
connection = providers.AMQPConnection('test_name', servers=['tcp:host=server_1:port=5672'])
connection.setServiceParent(self.service)
Expand Down
2 changes: 1 addition & 1 deletion piped/log.py
Original file line number Diff line number Diff line change
Expand Up @@ -195,7 +195,7 @@ def _set_global_logger(logger):

# default to using an non-configured DefaultLogger until something else is configured.
# the reason this is defined in-line instead of using _set_global_logger is to assist
# IDEs in recognizig the logging functions
# IDEs in recognizing the logging functions

_logger = DefaultLogger()
debug = _logger.debug
Expand Down