Skip to content

Commit cc01d1a

Browse files
Don't invoke trace_connect callback twice (#2670)
1 parent ef44d0f commit cc01d1a

File tree

3 files changed

+32
-2
lines changed

3 files changed

+32
-2
lines changed

pymodbus/server/base.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -60,8 +60,6 @@ def __init__( # pylint: disable=too-many-arguments
6060

6161
def callback_new_connection(self):
6262
"""Handle incoming connect."""
63-
if self.trace_connect:
64-
self.trace_connect(True)
6563
return ServerRequestHandler(
6664
self,
6765
self.trace_packet,

test/server/test_server_asyncio.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -255,6 +255,19 @@ async def test_async_server_file_descriptors(self): # pragma: no cover
255255
assert not response.isError()
256256
client.close()
257257

258+
async def test_async_server_trace_connect_disconnect(self):
259+
"""Test connect/disconnect trace handler."""
260+
trace_connect = mock.Mock()
261+
await self.start_server()
262+
self.server.trace_connect = trace_connect
263+
await self.connect_server()
264+
trace_connect.assert_called_once_with(True)
265+
trace_connect.reset_mock()
266+
267+
BasicClient.transport.close()
268+
await asyncio.sleep(0.2) # so we have to wait a bit
269+
trace_connect.assert_called_once_with(False)
270+
258271
async def test_async_tcp_server_connection_lost(self):
259272
"""Test tcp stream interruption."""
260273
await self.start_server()

test/transaction/test_transaction.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,25 @@ async def test_transaction_sync_pdu_send(self, use_clc):
8686
transact.pdu_send(ExceptionResponse(0xff), (0,0))
8787
assert transact.sent_buffer == b'\x01\xff\x00a\xf0'
8888

89+
async def test_transaction_connect(self, use_clc):
90+
"""Test tracers in disconnect."""
91+
transact = TransactionManager(
92+
use_clc,
93+
FramerRTU(DecodePDU(False)),
94+
5,
95+
False,
96+
None,
97+
None,
98+
None,
99+
)
100+
transact.trace_packet = mock.Mock()
101+
transact.trace_pdu = mock.Mock()
102+
transact.trace_connect = mock.Mock()
103+
transact.callback_connected()
104+
transact.trace_connect.assert_called_once_with(True)
105+
transact.trace_packet.assert_not_called()
106+
transact.trace_pdu.assert_not_called()
107+
89108
async def test_transaction_disconnect(self, use_clc):
90109
"""Test tracers in disconnect."""
91110
transact = TransactionManager(

0 commit comments

Comments
 (0)