kopia lustrzana https://github.com/glidernet/python-ogn-client
Allow client to do sequential connect-disconnect
With introduction of the kill switch it was impossible to restart the consumption of the OGN messages after a .disconnect() method has been called. This commit resets the kill flag after .connect() has been called. Minimal example: ``` client = AprsClient(aprs_user='testuser', aprs_filter='') client.connect() client.run(callback=lambda x: x, autoreconnect=True) ... client.disconnect() client.connect() client.run() ```pull/26/head
rodzic
182f9518a4
commit
13cc75cf03
|
@ -38,6 +38,8 @@ class AprsClient:
|
||||||
self.sock.send(login.encode())
|
self.sock.send(login.encode())
|
||||||
self.sock_file = self.sock.makefile('rw')
|
self.sock_file = self.sock.makefile('rw')
|
||||||
|
|
||||||
|
self._kill = False
|
||||||
|
|
||||||
def disconnect(self):
|
def disconnect(self):
|
||||||
self.logger.info('Disconnect')
|
self.logger.info('Disconnect')
|
||||||
try:
|
try:
|
||||||
|
|
|
@ -44,6 +44,28 @@ class OgnClientTest(unittest.TestCase):
|
||||||
client.sock.close.assert_called_once_with()
|
client.sock.close.assert_called_once_with()
|
||||||
self.assertTrue(client._kill)
|
self.assertTrue(client._kill)
|
||||||
|
|
||||||
|
def test_reset_kill_reconnect(self):
|
||||||
|
client = AprsClient(aprs_user='testuser', aprs_filter='')
|
||||||
|
client.connect()
|
||||||
|
|
||||||
|
# .run() should be allowed to execute after .connect()
|
||||||
|
mock_callback = mock.MagicMock(
|
||||||
|
side_effect=lambda raw_msg: client.disconnect())
|
||||||
|
|
||||||
|
self.assertFalse(client._kill)
|
||||||
|
client.run(callback=mock_callback, autoreconnect=True)
|
||||||
|
|
||||||
|
# After .disconnect(), client._kill should be True
|
||||||
|
self.assertTrue(client._kill)
|
||||||
|
mock_callback.assert_called_once()
|
||||||
|
|
||||||
|
# After we reconnect, .run() should be able to run again
|
||||||
|
mock_callback = mock.MagicMock(
|
||||||
|
side_effect=lambda raw_msg: client.disconnect())
|
||||||
|
client.connect()
|
||||||
|
client.run(callback=mock_callback, autoreconnect=True)
|
||||||
|
mock_callback.assert_called_once()
|
||||||
|
|
||||||
def test_50_live_messages(self):
|
def test_50_live_messages(self):
|
||||||
print("Enter")
|
print("Enter")
|
||||||
self.remaining_messages = 50
|
self.remaining_messages = 50
|
||||||
|
|
Ładowanie…
Reference in New Issue