Skip to content

Commit a423fde

Browse files
committed
HTTP server init, run and stop basic test
1 parent 0ab2d2e commit a423fde

File tree

7 files changed

+123
-647
lines changed

7 files changed

+123
-647
lines changed

.github/workflows/test-dev.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ jobs:
8888
- name: Run unit tests and generate coverage report
8989
run: |
9090
pip install coverage
91-
coverage run -m unittest discover -s tests -p 'test_*.py'
91+
coverage run -m unittest
9292
coverage report -m
9393
9494

hololinked/core/zmq/brokers.py

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -780,6 +780,7 @@ def __init__(self, *,
780780
self.socket: zmq.Socket | zmq.asyncio.Socket
781781
self.poller: zmq.Poller | zmq.asyncio.Poller
782782
self._poll_timeout = kwargs.get('poll_timeout', 1000) # default to 1000 ms
783+
self._stop = False # in general, stop any loop with this variaböe
783784

784785
@property
785786
def poll_timeout(self) -> int:
@@ -849,6 +850,13 @@ def handled_default_message_types(self, response_message: RequestMessage) -> boo
849850
if response_message.type == HANDSHAKE:
850851
return True
851852
return False
853+
854+
855+
def stop(self) -> None:
856+
"""
857+
stop the client.
858+
"""
859+
self._stop = True
852860

853861

854862

@@ -955,7 +963,8 @@ def recv_response(self, message_id: bytes) -> ResponseMessage:
955963
if True, any exceptions raised during execution inside ``Thing`` instance will be raised on the client.
956964
See docs of ``raise_local_exception()`` for info on exception
957965
"""
958-
while True:
966+
self._stop = False
967+
while not self._stop:
959968
if message_id in self._response_cache:
960969
return self._response_cache.pop(message_id)
961970
sockets = self.poller.poll(self.poll_timeout)
@@ -1027,8 +1036,9 @@ def handshake(self, timeout: typing.Union[float, int] = 60000) -> None:
10271036
"""
10281037
hanshake with server before sending first message
10291038
"""
1039+
self._stop = False
10301040
start_time = time.time_ns()
1031-
while True:
1041+
while not self._stop:
10321042
if timeout is not None and (time.time_ns() - start_time)/1e6 > timeout:
10331043
raise ConnectionError(f"Unable to contact server '{self.server_id}' from client '{self.id}'")
10341044
self.socket.send_multipart(RequestMessage.craft_with_message_type(self.id, self.server_id, HANDSHAKE).byte_array)
@@ -1123,11 +1133,12 @@ async def _handshake(self, timeout: float | int | None = 60000) -> None:
11231133
"""
11241134
hanshake with server before sending first message
11251135
"""
1136+
self._stop = False
11261137
if self._monitor_socket is not None and self._monitor_socket in self.poller:
11271138
self.poller.unregister(self._monitor_socket)
11281139
self._handshake_event.clear()
11291140
start_time = time.time_ns()
1130-
while True:
1141+
while not self._stop:
11311142
if timeout is not None and (time.time_ns() - start_time)/1e6 > timeout:
11321143
raise ConnectionError(f"Unable to contact server '{self.server_id}' from client '{self.id}'")
11331144
await self.socket.send_multipart(RequestMessage.craft_with_message_type(self.id, self.server_id, HANDSHAKE).byte_array)
@@ -1237,7 +1248,8 @@ async def async_recv_response(self, message_id: str) -> typing.List[ResponseMess
12371248
deserialize_response: bool
12381249
deserializes the data field of the message
12391250
"""
1240-
while True:
1251+
self._stop = False
1252+
while not self._stop:
12411253
if message_id in self._response_cache:
12421254
return self._response_cache.pop(message_id)
12431255
sockets = await self.poller.poll(self._poll_timeout)
@@ -1700,6 +1712,8 @@ def stop_polling(self):
17001712
stop polling for replies from server
17011713
"""
17021714
self.stop_poll = True
1715+
for client in self.pool.values():
1716+
client.stop()
17031717

17041718
async def async_execute_in_all(self,
17051719
objekt: str,

0 commit comments

Comments
 (0)