diff options
Diffstat (limited to 'lab_control/test/mock_sds1000xe_server.py')
-rw-r--r-- | lab_control/test/mock_sds1000xe_server.py | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/lab_control/test/mock_sds1000xe_server.py b/lab_control/test/mock_sds1000xe_server.py new file mode 100644 index 0000000..7da90c9 --- /dev/null +++ b/lab_control/test/mock_sds1000xe_server.py @@ -0,0 +1,43 @@ +import socket +import threading + +class MockSDS1000XEServer: + IP = "0.0.0.0" + PORT = 5025 + + MOTD = "Hello".encode() + + def __init__(self): + self.serverSocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + self.serverSocket.bind((MockSDS1000XEServer.IP, MockSDS1000XEServer.PORT)) + self.serverSocket.listen(1) + print("server socket is bound") + + self.main = threading.Thread(target=self._mainLoop) + self.main.start() + + def _mainLoop(self) -> None: + clientSocket, _ = self.serverSocket.accept() + clientSocket.settimeout(0.1) + clientSocket.send(MockSDS1000XEServer.MOTD) + + try: + while True: + request = clientSocket.recv(4096).decode() + if request != "": + print(f"** Received request: {request}") + response = self._handleRequest(request) + clientSocket.send(response.encode()) + except Exception as e: + print("Exception caught in main server loop") + print(e) + + def _handleRequest(self, request: str) -> str: + return "NOP" + + def stop(self): + print("Closing server socket") + self.serverSocket.close() + print("joining main") + self.main.join() + print("stopped") |