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
Anze Kolar 2017-07-20 15:28:01 +02:00
rodzic 182f9518a4
commit 13cc75cf03
2 zmienionych plików z 24 dodań i 0 usunięć

Wyświetl plik

@ -38,6 +38,8 @@ class AprsClient:
self.sock.send(login.encode())
self.sock_file = self.sock.makefile('rw')
self._kill = False
def disconnect(self):
self.logger.info('Disconnect')
try:

Wyświetl plik

@ -44,6 +44,28 @@ class OgnClientTest(unittest.TestCase):
client.sock.close.assert_called_once_with()
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):
print("Enter")
self.remaining_messages = 50