Skip to content

Commit 101f3a3

Browse files
committed
DummyProtocol, real usage.
1 parent afccb50 commit 101f3a3

File tree

2 files changed

+42
-35
lines changed

2 files changed

+42
-35
lines changed

test/transport/conftest.py

Lines changed: 9 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
11
"""Configure pytest."""
2-
import asyncio
2+
from __future__ import annotations
3+
34
import os
45
import sys
56
from unittest import mock
67

78
import pytest
89

10+
from pymodbus.logging import Log
911
from pymodbus.transport import CommParams, CommType, ModbusProtocol
1012

1113

@@ -17,26 +19,18 @@ class DummyProtocol(ModbusProtocol):
1719

1820
def __init__(self, is_server=False):
1921
"""Initialize."""
20-
self.transport = None
21-
self.is_server = is_server
22-
self.is_closing = False
23-
self.data = b""
24-
self.connection_made = mock.Mock()
25-
self.connection_lost = mock.Mock()
26-
self.reconnect_task: asyncio.Task = None
22+
# self.connection_made = mock.Mock()
23+
# self.connection_lost = mock.Mock()
2724
super().__init__(CommParams(), is_server)
2825

2926
def callback_new_connection(self) -> ModbusProtocol:
3027
"""Call when listener receive new connection request."""
3128
return DummyProtocol()
3229

33-
def close(self): # pylint: disable=arguments-differ
34-
"""Simulate close."""
35-
self.is_closing = True
36-
37-
def data_received(self, data):
38-
"""Call when some data is received."""
39-
self.data += data
30+
def callback_data(self, data: bytes, addr: tuple | None = None) -> int:
31+
"""Handle received data."""
32+
Log.debug("callback_data called: {} addr={}", data, ":hex", addr)
33+
return 0
4034

4135

4236
@pytest.fixture(name="dummy_protocol")

test/transport/test_nullmodem.py

Lines changed: 33 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
"""Test transport."""
22
import asyncio
3+
from unittest import mock
34

45
import pytest
56

@@ -19,13 +20,17 @@ def get_port_in_class(base_ports):
1920
async def test_init(self, dummy_protocol):
2021
"""Test initialize."""
2122
prot = dummy_protocol()
23+
prot.connection_made = mock.Mock()
24+
prot.connection_lost = mock.Mock()
2225
NullModem(prot)
2326
prot.connection_made.assert_not_called()
2427
prot.connection_lost.assert_not_called()
2528

2629
async def test_close(self, dummy_protocol):
2730
"""Test close."""
2831
prot = dummy_protocol()
32+
prot.connection_made = mock.Mock()
33+
prot.connection_lost = mock.Mock()
2934
modem = NullModem(prot)
3035
modem.close()
3136
prot.connection_made.assert_not_called()
@@ -45,6 +50,8 @@ async def test_close_no_protocol(self):
4550
async def test_close_twice(self, dummy_protocol):
4651
"""Test close twice."""
4752
prot = dummy_protocol()
53+
prot.connection_made = mock.Mock()
54+
prot.connection_lost = mock.Mock()
4855
modem = NullModem(prot)
4956
modem.close()
5057
prot.connection_made.assert_not_called()
@@ -53,15 +60,17 @@ async def test_close_twice(self, dummy_protocol):
5360

5461
async def test_listen(self, dummy_protocol, use_port):
5562
"""Test listener (shared list)."""
56-
protocol = dummy_protocol(is_server=True)
57-
listen = NullModem.set_listener(use_port, protocol)
58-
assert NullModem.listeners[use_port] == protocol
63+
prot = dummy_protocol(is_server=True)
64+
prot.connection_made = mock.Mock()
65+
prot.connection_lost = mock.Mock()
66+
listen = NullModem.set_listener(use_port, prot)
67+
assert NullModem.listeners[use_port] == prot
5968
assert len(NullModem.listeners) == 1
6069
assert not NullModem.connections
6170
listen.close()
6271
assert not NullModem.listeners
63-
protocol.connection_made.assert_not_called()
64-
protocol.connection_lost.assert_not_called()
72+
prot.connection_made.assert_not_called()
73+
prot.connection_lost.assert_not_called()
6574

6675
async def test_listen_twice(self, dummy_protocol, use_port):
6776
"""Test exception when listening twice."""
@@ -101,8 +110,12 @@ async def test_is_dirty(self, dummy_protocol, use_port):
101110
async def test_connect(self, dummy_protocol, use_port):
102111
"""Test connect."""
103112
prot_listen = dummy_protocol(is_server=True)
113+
prot_listen.connection_made = mock.Mock()
114+
prot_listen.connection_lost = mock.Mock()
104115
listen = NullModem.set_listener(use_port, prot_listen)
105116
prot1 = dummy_protocol()
117+
prot1.connection_made = mock.Mock()
118+
prot1.connection_lost = mock.Mock()
106119
modem, _ = NullModem.set_connection(use_port, prot1)
107120
modem_b = modem.other_modem
108121
assert modem.protocol != listen.protocol
@@ -178,8 +191,8 @@ async def test_flow_write(self, dummy_protocol, use_port):
178191
test_data2 = b"efgh"
179192
modem.write(test_data1)
180193
modem_b.write(test_data2)
181-
assert modem_b.protocol.data == test_data1
182-
assert modem.protocol.data == test_data2
194+
assert modem_b.protocol.recv_buffer == test_data1
195+
assert modem.protocol.recv_buffer == test_data2
183196
modem.close()
184197
listen.close()
185198

@@ -193,16 +206,16 @@ async def test_flow_sendto(self, dummy_protocol, use_port):
193206
test_data2 = b"efgh"
194207
modem.sendto(test_data1)
195208
modem_b.sendto(test_data2)
196-
assert modem_b.protocol.data == test_data1
197-
assert modem.protocol.data == test_data2
209+
assert modem_b.protocol.recv_buffer == test_data1
210+
assert modem.protocol.recv_buffer == test_data2
198211
modem.close()
199212
listen.close()
200213

201214
async def test_flow_not_connected(self, dummy_protocol):
202215
"""Test flow not connected."""
203216
modem = NullModem(dummy_protocol())
204217
modem.sendto("no connection")
205-
assert modem.protocol.data == b''
218+
assert modem.protocol.recv_buffer == b''
206219
modem.close()
207220

208221

@@ -219,16 +232,16 @@ async def test_triangle_flow(self, dummy_protocol, use_port):
219232
test_data4 = b"mnop"
220233
modem1.write(test_data1)
221234
modem1b.write(test_data2)
222-
assert modem1b.protocol.data == test_data1
223-
assert modem1.protocol.data == test_data2
224-
assert modem2b.protocol.data == b""
225-
assert modem2.protocol.data == b""
235+
assert modem1b.protocol.recv_buffer == test_data1
236+
assert modem1.protocol.recv_buffer == test_data2
237+
assert modem2b.protocol.recv_buffer == b""
238+
assert modem2.protocol.recv_buffer == b""
226239
modem2.write(test_data3)
227240
modem2b.write(test_data4)
228-
assert modem1b.protocol.data == test_data1
229-
assert modem1.protocol.data == test_data2
230-
assert modem2b.protocol.data == test_data3
231-
assert modem2.protocol.data == test_data4
241+
assert modem1b.protocol.recv_buffer == test_data1
242+
assert modem1.protocol.recv_buffer == test_data2
243+
assert modem2b.protocol.recv_buffer == test_data3
244+
assert modem2.protocol.recv_buffer == test_data4
232245
modem1.close()
233246
modem2.close()
234247
listen.close()
@@ -262,8 +275,8 @@ def manipulator(data):
262275
modem_b.write(data1)
263276
modem_b.write(data2)
264277
x = b"".join(part for part in add_text)
265-
assert modem.protocol.data == data1 + data2
266-
assert modem_b.protocol.data == data1 + x + data2 + x
278+
assert modem.protocol.recv_buffer == data1 + data2
279+
assert modem_b.protocol.recv_buffer == data1 + x + data2 + x
267280
modem.close()
268281
listen.close()
269282

0 commit comments

Comments
 (0)