From f3d8389f1fccbf6119986fbea8c2990ce883891f Mon Sep 17 00:00:00 2001 From: Jelmer Neeven <19648598+jneeven@users.noreply.github.com> Date: Sun, 21 Mar 2021 13:02:50 +0100 Subject: [PATCH 1/6] Add websocket disconnect --- src/mattermostdriver/websocket.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/mattermostdriver/websocket.py b/src/mattermostdriver/websocket.py index db011c6..264ec3a 100644 --- a/src/mattermostdriver/websocket.py +++ b/src/mattermostdriver/websocket.py @@ -14,6 +14,7 @@ def __init__(self, options, token): if options['debug']: log.setLevel(logging.DEBUG) self._token = token + self._alive = False async def connect(self, event_handler): """ @@ -56,7 +57,8 @@ async def _start_loop(self, websocket, event_handler): forcing us to reconnect. """ log.debug('Starting websocket loop') - while True: + self._alive = True + while self._alive: try: await asyncio.wait_for( self._wait_for_message(websocket, event_handler), @@ -66,6 +68,11 @@ async def _start_loop(self, websocket, event_handler): await websocket.pong() log.debug("Sending heartbeat...") continue + + def disconnect(self): + """Sets `self._alive` to False so the loop in `self._start_loop` will finish.""" + log.debug("Stopping websocket loop") + self._alive = False async def _authenticate_websocket(self, websocket, event_handler): """ From b4f530e7a87579cc0eb5b4068d8e8e4060940df1 Mon Sep 17 00:00:00 2001 From: Jelmer Neeven <19648598+jneeven@users.noreply.github.com> Date: Sun, 21 Mar 2021 13:04:44 +0100 Subject: [PATCH 2/6] Add driver.disconnect() --- src/mattermostdriver/driver.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/mattermostdriver/driver.py b/src/mattermostdriver/driver.py index b0e146e..7b17620 100644 --- a/src/mattermostdriver/driver.py +++ b/src/mattermostdriver/driver.py @@ -147,6 +147,10 @@ async def my_event_handler(message): loop = asyncio.get_event_loop() loop.run_until_complete(self.websocket.connect(event_handler)) return loop + + def disconnect(self): + """Disconnects the driver from the server, stopping the websocket event loop.""" + self.websocket.disconnect() def login(self): """ From 02e8ed3d446b6db607982d0ed80b5ce0bf081f11 Mon Sep 17 00:00:00 2001 From: Jelmer Neeven <19648598+jneeven@users.noreply.github.com> Date: Sun, 21 Mar 2021 13:07:47 +0100 Subject: [PATCH 3/6] Update websocket.py --- src/mattermostdriver/websocket.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mattermostdriver/websocket.py b/src/mattermostdriver/websocket.py index 264ec3a..c6b8e1b 100644 --- a/src/mattermostdriver/websocket.py +++ b/src/mattermostdriver/websocket.py @@ -71,7 +71,7 @@ async def _start_loop(self, websocket, event_handler): def disconnect(self): """Sets `self._alive` to False so the loop in `self._start_loop` will finish.""" - log.debug("Stopping websocket loop") + log.info("Disconnecting websocket") self._alive = False async def _authenticate_websocket(self, websocket, event_handler): From 91b986cbe3ab1c35b3431e5563a20ecc3136e818 Mon Sep 17 00:00:00 2001 From: Jelmer Neeven <19648598+jneeven@users.noreply.github.com> Date: Sun, 21 Mar 2021 13:15:00 +0100 Subject: [PATCH 4/6] Remove double newline at end of file --- src/mattermostdriver/driver.py | 1 - 1 file changed, 1 deletion(-) diff --git a/src/mattermostdriver/driver.py b/src/mattermostdriver/driver.py index 7b17620..9dd5133 100644 --- a/src/mattermostdriver/driver.py +++ b/src/mattermostdriver/driver.py @@ -422,4 +422,3 @@ def integration_actions(self): :return: Instance of :class:`~endpoints.integration_actions.IntegrationActions` """ return IntegrationActions(self.client) - From cf7d46eec2ebc7dee9fa3b245791feea4f8fa5ab Mon Sep 17 00:00:00 2001 From: Jelmer Neeven <19648598+jneeven@users.noreply.github.com> Date: Sun, 21 Mar 2021 13:15:54 +0100 Subject: [PATCH 5/6] Remove trailing whitespace --- src/mattermostdriver/websocket.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mattermostdriver/websocket.py b/src/mattermostdriver/websocket.py index c6b8e1b..5394bda 100644 --- a/src/mattermostdriver/websocket.py +++ b/src/mattermostdriver/websocket.py @@ -68,7 +68,7 @@ async def _start_loop(self, websocket, event_handler): await websocket.pong() log.debug("Sending heartbeat...") continue - + def disconnect(self): """Sets `self._alive` to False so the loop in `self._start_loop` will finish.""" log.info("Disconnecting websocket") From 6d5cf753b89e011930b654531298b177f094245f Mon Sep 17 00:00:00 2001 From: Jelmer Neeven <19648598+jneeven@users.noreply.github.com> Date: Sun, 21 Mar 2021 13:16:14 +0100 Subject: [PATCH 6/6] Remove trailing whitespace --- src/mattermostdriver/driver.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mattermostdriver/driver.py b/src/mattermostdriver/driver.py index 9dd5133..2f34de7 100644 --- a/src/mattermostdriver/driver.py +++ b/src/mattermostdriver/driver.py @@ -147,7 +147,7 @@ async def my_event_handler(message): loop = asyncio.get_event_loop() loop.run_until_complete(self.websocket.connect(event_handler)) return loop - + def disconnect(self): """Disconnects the driver from the server, stopping the websocket event loop.""" self.websocket.disconnect()