Add socket IDs to ipc debug messages.

This commit is contained in:
Florian Bruhin 2016-01-08 12:02:36 +01:00
parent 60b04422a3
commit ff2024a565
2 changed files with 21 additions and 14 deletions

View File

@ -229,8 +229,9 @@ class IPCServer(QObject):
log.ipc.debug("In on_error with None socket!") log.ipc.debug("In on_error with None socket!")
return return
self._timer.stop() self._timer.stop()
log.ipc.debug("Socket error {}: {}".format( log.ipc.debug("Socket 0x{:x}: error {}: {}".format(
self._socket.error(), self._socket.errorString())) id(self._socket), self._socket.error(),
self._socket.errorString()))
if err != QLocalSocket.PeerClosedError: if err != QLocalSocket.PeerClosedError:
raise SocketError("handling IPC connection", self._socket) raise SocketError("handling IPC connection", self._socket)
@ -241,13 +242,14 @@ class IPCServer(QObject):
return return
if self._socket is not None: if self._socket is not None:
log.ipc.debug("Got new connection but ignoring it because we're " log.ipc.debug("Got new connection but ignoring it because we're "
"still handling another one.") "still handling another one (0x{:x}).".format(
id(self._socket)))
return return
socket = self._server.nextPendingConnection() socket = self._server.nextPendingConnection()
if socket is None: if socket is None:
log.ipc.debug("No new connection to handle.") log.ipc.debug("No new connection to handle.")
return return
log.ipc.debug("Client connected.") log.ipc.debug("Client connected (socket 0x{:x}).".format(id(socket)))
self._timer.start() self._timer.start()
self._socket = socket self._socket = socket
socket.readyRead.connect(self.on_ready_read) socket.readyRead.connect(self.on_ready_read)
@ -267,7 +269,8 @@ class IPCServer(QObject):
@pyqtSlot() @pyqtSlot()
def on_disconnected(self): def on_disconnected(self):
"""Clean up socket when the client disconnected.""" """Clean up socket when the client disconnected."""
log.ipc.debug("Client disconnected.") log.ipc.debug("Client disconnected from socket 0x{:x}.".format(
id(self._socket)))
self._timer.stop() self._timer.stop()
if self._socket is None: if self._socket is None:
log.ipc.debug("In on_disconnected with None socket!") log.ipc.debug("In on_disconnected with None socket!")
@ -279,7 +282,8 @@ class IPCServer(QObject):
def _handle_invalid_data(self): def _handle_invalid_data(self):
"""Handle invalid data we got from a QLocalSocket.""" """Handle invalid data we got from a QLocalSocket."""
log.ipc.error("Ignoring invalid IPC data.") log.ipc.error("Ignoring invalid IPC data from socket {:x}.".format(
id(self._socket)))
self.got_invalid_data.emit() self.got_invalid_data.emit()
self._socket.error.connect(self.on_error) self._socket.error.connect(self.on_error)
self._socket.disconnectFromServer() self._socket.disconnectFromServer()
@ -296,7 +300,8 @@ class IPCServer(QObject):
while self._socket is not None and self._socket.canReadLine(): while self._socket is not None and self._socket.canReadLine():
data = bytes(self._socket.readLine()) data = bytes(self._socket.readLine())
self.got_raw.emit(data) self.got_raw.emit(data)
log.ipc.debug("Read from socket: {}".format(data)) log.ipc.debug("Read from socket {:x}: {}".format(
id(self._socket), data))
try: try:
decoded = data.decode('utf-8') decoded = data.decode('utf-8')
@ -341,7 +346,8 @@ class IPCServer(QObject):
@pyqtSlot() @pyqtSlot()
def on_timeout(self): def on_timeout(self):
"""Cancel the current connection if it was idle for too long.""" """Cancel the current connection if it was idle for too long."""
log.ipc.error("IPC connection timed out.") log.ipc.error("IPC connection timed out "
"(socket {:x}).".format(id(self._socket)))
self._socket.disconnectFromServer() self._socket.disconnectFromServer()
if self._socket is not None: # pragma: no cover if self._socket is not None: # pragma: no cover
# on_socket_disconnected sets it to None # on_socket_disconnected sets it to None
@ -369,7 +375,8 @@ class IPCServer(QObject):
def shutdown(self): def shutdown(self):
"""Shut down the IPC server cleanly.""" """Shut down the IPC server cleanly."""
log.ipc.debug("Shutting down IPC") log.ipc.debug("Shutting down IPC (socket {:x})".format(
id(self._socket)))
if self._socket is not None: if self._socket is not None:
self._socket.deleteLater() self._socket.deleteLater()
self._socket = None self._socket = None

View File

@ -410,9 +410,9 @@ class TestHandleConnection:
def test_double_connection(self, qlocalsocket, ipc_server, caplog): def test_double_connection(self, qlocalsocket, ipc_server, caplog):
ipc_server._socket = qlocalsocket ipc_server._socket = qlocalsocket
ipc_server.handle_connection() ipc_server.handle_connection()
message = ("Got new connection but ignoring it because we're still " msg = ("Got new connection but ignoring it because we're still "
"handling another one.") "handling another one")
assert message in [rec.message for rec in caplog.records] assert any(rec.message.startswith(msg) for rec in caplog.records)
def test_disconnected_immediately(self, ipc_server, caplog): def test_disconnected_immediately(self, ipc_server, caplog):
socket = FakeSocket(state=QLocalSocket.UnconnectedState) socket = FakeSocket(state=QLocalSocket.UnconnectedState)
@ -501,7 +501,7 @@ def test_invalid_data(qtbot, ipc_server, connected_socket, caplog, data, msg):
connected_socket.write(data) connected_socket.write(data)
messages = [r.message for r in caplog.records] messages = [r.message for r in caplog.records]
assert messages[-1] == 'Ignoring invalid IPC data.' assert messages[-1].startswith('Ignoring invalid IPC data from socket ')
assert messages[-2].startswith(msg) assert messages[-2].startswith(msg)
@ -599,7 +599,7 @@ def test_timeout(qtbot, caplog, qlocalsocket, ipc_server):
with qtbot.waitSignal(qlocalsocket.disconnected, timeout=5000): with qtbot.waitSignal(qlocalsocket.disconnected, timeout=5000):
pass pass
assert caplog.records[-1].message == "IPC connection timed out." assert caplog.records[-1].message.startswith("IPC connection timed out")
@pytest.mark.parametrize('method, args, is_warning', [ @pytest.mark.parametrize('method, args, is_warning', [