Add BrokerConnection.disconnected() method; update tests

This commit is contained in:
Dana Powers
2016-04-07 16:11:25 -07:00
parent 2527ff30ce
commit 9c8cb7dea1
3 changed files with 16 additions and 8 deletions

View File

@@ -139,6 +139,10 @@ class BrokerConnection(object):
"""Return True iff socket is in intermediate connecting state."""
return self.state is ConnectionStates.CONNECTING
def disconnected(self):
"""Return True iff socket is closed"""
return self.state is ConnectionStates.DISCONNECTED
def close(self, error=None):
"""Close socket and fail all in-flight-requests.

View File

@@ -46,7 +46,12 @@ def conn(mocker):
[(0, 'foo', 12), (1, 'bar', 34)], # brokers
[])) # topics
conn.blacked_out.return_value = False
def _set_conn_state(state):
conn.state = state
return state
conn._set_conn_state = _set_conn_state
conn.connect.side_effect = lambda: conn.state
conn.connecting = lambda: conn.connect() is ConnectionStates.CONNECTING
conn.connected = lambda: conn.connect() is ConnectionStates.CONNECTED
conn.connecting = lambda: conn.state is ConnectionStates.CONNECTING
conn.connected = lambda: conn.state is ConnectionStates.CONNECTED
conn.disconnected = lambda: conn.state is ConnectionStates.DISCONNECTED
return conn

View File

@@ -85,21 +85,20 @@ def test_maybe_connect(conn):
assert 0 not in cli._conns
conn.state = ConnectionStates.DISCONNECTED
conn.connect.side_effect = lambda: ConnectionStates.CONNECTING
conn.connect.side_effect = lambda: conn._set_conn_state(ConnectionStates.CONNECTING)
assert cli._maybe_connect(0) is False
assert cli._conns[0] is conn
assert 0 in cli._connecting
conn.state = ConnectionStates.CONNECTING
conn.connect.side_effect = lambda: ConnectionStates.CONNECTED
conn.connect.side_effect = lambda: conn._set_conn_state(ConnectionStates.CONNECTED)
assert cli._maybe_connect(0) is True
assert 0 not in cli._connecting
# Failure to connect should trigger metadata update
assert cli.cluster._need_update is False
cli._connecting.add(0)
conn.state = ConnectionStates.CONNECTING
conn.connect.side_effect = lambda: ConnectionStates.DISCONNECTED
cli._connecting.add(0)
conn.connect.side_effect = lambda: conn._set_conn_state(ConnectionStates.DISCONNECTED)
assert cli._maybe_connect(0) is False
assert 0 not in cli._connecting
assert cli.cluster._need_update is True
@@ -155,7 +154,7 @@ def test_ready(conn):
# connecting node connects
cli._connecting.add(0)
conn.state = ConnectionStates.CONNECTING
conn.connect.side_effect = lambda: ConnectionStates.CONNECTED
conn.connect.side_effect = lambda: conn._set_conn_state(ConnectionStates.CONNECTED)
cli.ready(0)
assert 0 not in cli._connecting
assert cli._conns[0].connect.called_with()