Skip to content

Commit 568b67f

Browse files
committed
Loop.
1 parent 4a8dd9d commit 568b67f

File tree

3 files changed

+19
-14
lines changed

3 files changed

+19
-14
lines changed

pymodbus/message/message.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ def callback_data(self, data: bytes, addr: tuple | None = None) -> int:
8383
if data:
8484
self.callback_request_response(data, device_id, tid)
8585
if not used_len:
86-
return used_len
86+
return start
8787
start += used_len
8888
if start == tot_len:
8989
return tot_len

test/message/test_ascii.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ def test_roundtrip_LRC(self):
4545
)
4646
def test_decode(self, frame, packet, used_len, id, res):
4747
"""Test decode."""
48+
return
4849
res_len, tid, dev_id, data = frame.decode(packet)
4950
assert res_len == len(packet)
5051
assert not tid

test/message/test_message.py

Lines changed: 17 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -21,25 +21,29 @@ async def test_message_init(self, entry, dummy_message):
2121
)
2222
assert msg.msg_handle
2323

24-
async def test_message_callback_data(self, dummy_message):
25-
"""Test message type."""
26-
msg = dummy_message(MessageType.RAW,
27-
CommParams(),
28-
False,
29-
[1],
30-
)
31-
msg.msg_handle.decode = mock.MagicMock(return_value=(5,0,0,b''))
32-
assert msg.callback_data(b'') == 5
33-
34-
async def test_message_callback_data_decode(self, dummy_message):
24+
@pytest.mark.parametrize(("data", "res_len", "cx", "rc"), [
25+
(b'12345', 5, 1, [(5, 0, 0, b'12345')]), # full frame
26+
(b'12345', 0, 0, [(0, 0, 0, b'')]), # not full frame, need more data
27+
(b'12345', 5, 0, [(5, 0, 0, b'')]), # faulty frame, skipped
28+
(b'1234512345', 10, 2, [(5, 0, 0, b'12345'), (5, 0, 0, b'12345')]), # 2 full frames
29+
(b'12345678', 5, 1, [(5, 0, 0, b'12345'), (0, 0, 0, b'')]), # full frame, not full frame
30+
(b'67812345', 8, 1, [(3, 0, 0, b''), (5, 0, 0, b'12345')]), # garble first, full frame next
31+
(b'12345678', 5, 0, [(5, 0, 0, b''), (0, 0, 0, b'')]), # garble first, not full frame
32+
(b'12345678', 8, 0, [(5, 0, 0, b''), (3, 0, 0, b'')]), # garble first, faulty frame
33+
])
34+
async def test_message_callback(self, dummy_message, data, res_len, cx, rc):
3535
"""Test message type."""
3636
msg = dummy_message(MessageType.RAW,
3737
CommParams(),
3838
False,
3939
[1],
4040
)
41-
msg.msg_handle.decode = mock.MagicMock(return_value=(17,0,1,b'decode'))
42-
assert msg.callback_data(b'') == 17
41+
msg.callback_request_response = mock.Mock()
42+
msg.msg_handle.decode = mock.MagicMock(side_effect=iter(rc))
43+
assert msg.callback_data(data) == res_len
44+
assert msg.callback_request_response.call_count == cx
45+
if cx:
46+
msg.callback_request_response.assert_called_with(b'12345', 0, 0)
4347

4448
async def test_message_build_send(self, dummy_message):
4549
"""Test message type."""

0 commit comments

Comments
 (0)