[lldb/test] Make it possible to run the mock gdb server on a single thread

This is a preparatory commit to enable mocking of qemu startup. That
will involve running the mock server in a separate process, so there's
no need for multithreading.

Initialization is moved from the start function into the constructor
(which can then take an actual socket instead of a class), and the run
method is made public.

Depends on D114156.

Differential Revision: https://reviews.llvm.org/D114157
This commit is contained in:
Pavel Labath 2021-11-18 13:52:44 +01:00
parent 247a1a55eb
commit 7c8ae65f2c
2 changed files with 5 additions and 7 deletions

View File

@ -461,18 +461,16 @@ class MockGDBServer:
_receivedDataOffset = None
_shouldSendAck = True
def __init__(self, socket_class):
self._socket_class = socket_class
def __init__(self, socket):
self._socket = socket
self.responder = MockGDBServerResponder()
def start(self):
self._socket = self._socket_class()
# Start a thread that waits for a client connection.
self._thread = threading.Thread(target=self._run)
self._thread = threading.Thread(target=self.run)
self._thread.start()
def stop(self):
self._socket.close_server()
self._thread.join()
self._thread = None
@ -482,7 +480,7 @@ class MockGDBServer:
def get_connect_url(self):
return self._socket.get_connect_url()
def _run(self):
def run(self):
# For testing purposes, we only need to worry about one client
# connecting just one time.
try:

View File

@ -19,7 +19,7 @@ class GDBRemoteTestBase(TestBase):
def setUp(self):
TestBase.setUp(self)
self.server = MockGDBServer(socket_class=self.server_socket_class)
self.server = MockGDBServer(self.server_socket_class())
self.server.start()
def tearDown(self):