Skip to content

Commit 0cdc39b

Browse files
committed
Fix tests. closes #608. closes #575
1 parent 6fa2d59 commit 0cdc39b

File tree

7 files changed

+20
-11
lines changed

7 files changed

+20
-11
lines changed

CHANGELOG.rst

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,9 @@ version 2.5.0
55
* Update reactive server to send stray response of given length.
66
* Transaction manager updates on retries for empty and invalid packets.
77
* Test fixes for asyncio client and transaction manager.
8+
* Fix sync client and processing of incomplete frames with rtu framers
9+
* Support synchronous diagnostic client (TCP)
10+
* Server updates (REPL and async)
811

912
version 2.5.0rc3
1013
----------------------------------------------------------

pymodbus/client/sync.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -155,8 +155,8 @@ def _dump(self, data, direction):
155155
try:
156156
fd.write(hexlify_packets(data))
157157
except Exception as e:
158-
self._logger.debug(hexlify_packets(data))
159-
self._logger.exception(e)
158+
_logger.debug(hexlify_packets(data))
159+
_logger.exception(e)
160160

161161
def register(self, function):
162162
"""

pymodbus/client/sync_diag.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ def __init__(self, host='127.0.0.1', port=Defaults.Port,
7474
.. note:: The host argument will accept ipv4 and ipv6 hosts
7575
"""
7676
self.warn_delay_limit = kwargs.get('warn_delay_limit', True)
77-
super().__init__(host, port, framer, **kwargs)
77+
super(ModbusTcpDiagClient, self).__init__(host, port, framer, **kwargs)
7878
if self.warn_delay_limit is True:
7979
self.warn_delay_limit = self.timeout / 2
8080

@@ -112,7 +112,7 @@ def _recv(self, size):
112112
try:
113113
start = time.time()
114114

115-
result = super()._recv(size)
115+
result = super(ModbusTcpDiagClient, self)._recv(size)
116116

117117
delay = time.time() - start
118118
if self.warn_delay_limit is not None and delay >= self.warn_delay_limit:

pymodbus/utilities.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -245,7 +245,10 @@ def hexlify_packets(packet):
245245
"""
246246
if not packet:
247247
return ''
248-
return " ".join([hex(byte2int(x)) for x in packet])
248+
if IS_PYTHON3:
249+
return " ".join([hex(byte2int(x)) for x in packet])
250+
else:
251+
return u" ".join([hex(byte2int(x)) for x in packet])
249252
# --------------------------------------------------------------------------- #
250253
# Exported symbols
251254
# --------------------------------------------------------------------------- #

test/test_client_sync.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -86,8 +86,8 @@ def testBaseModbusClient(self):
8686
self.assertEqual(False, client.debug_enabled())
8787
writable = StringIO()
8888
client.trace(writable)
89-
client._dump([0, 1, 2], None)
90-
self.assertEqual(hexlify_packets([0, 1, 2]), writable.getvalue())
89+
client._dump(b'\x00\x01\x02', None)
90+
self.assertEqual(hexlify_packets(b'\x00\x01\x02'), writable.getvalue())
9191

9292
# a successful execute
9393
client.connect = lambda: True
@@ -154,7 +154,7 @@ def settimeout(self, *a, **kwa):
154154
def testUdpClientIsSocketOpen(self):
155155
''' Test the udp client is_socket_open method'''
156156
client = ModbusUdpClient()
157-
self.assertFalse(client.is_socket_open())
157+
self.assertTrue(client.is_socket_open())
158158

159159
def testUdpClientSend(self):
160160
''' Test the udp client send method'''
@@ -434,7 +434,7 @@ def testBasicSyncSerialClient(self, mock_serial):
434434
client.close()
435435

436436
# rtu connect/disconnect
437-
rtu_client = ModbusSerialClient(method='rtu')
437+
rtu_client = ModbusSerialClient(method='rtu', strict=True)
438438
self.assertTrue(rtu_client.connect())
439439
self.assertEqual(rtu_client.socket.interCharTimeout, rtu_client.inter_char_timeout)
440440
rtu_client.close()

test/test_framers.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
if IS_PYTHON3:
1111
from unittest.mock import Mock, patch
1212
else: # Python 2
13-
from mock import Mock
13+
from mock import Mock, patch
1414

1515

1616
@pytest.fixture

test/test_transaction.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -144,7 +144,10 @@ def testExecute(self, mock_time):
144144
# wrong handle_local_echo
145145
tm._recv = MagicMock(side_effect=iter([b'abcdef', b'deadbe', b'123456']))
146146
client.handle_local_echo = True
147-
self.assertEqual(tm.execute(request).message, '[Input/Output] Wrong local echo')
147+
tm.retry_on_empty = False
148+
tm.retry_on_invalid = False
149+
self.assertEqual(tm.execute(request).message,
150+
'[Input/Output] Wrong local echo')
148151
client.handle_local_echo = False
149152

150153
# retry on invalid response

0 commit comments

Comments
 (0)