def testTcpClientRecv(self): ''' Test the tcp client receive method''' client = ModbusTcpClient() self.assertRaises(ConnectionException, lambda: client._recv(1024)) client.socket = mockSocket() self.assertEqual('', client._recv(0)) self.assertEqual('\x00'*4, client._recv(4))
def testTcpClientRecv(self): ''' Test the tcp client receive method''' client = ModbusTcpClient() self.assertRaises(ConnectionException, lambda: client._recv(1024)) client.socket = mockSocket() self.assertEqual('', client._recv(0)) self.assertEqual('\x00' * 4, client._recv(4))
def testTcpClientRecv(self, mock_select, mock_time): ''' Test the tcp client receive method''' mock_select.select.return_value = [True] mock_time.time.side_effect = count() client = ModbusTcpClient() self.assertRaises(ConnectionException, lambda: client._recv(1024)) client.socket = mockSocket() self.assertEqual(b'', client._recv(0)) self.assertEqual(b'\x00' * 4, client._recv(4)) mock_socket = MagicMock() mock_socket.recv.side_effect = iter([b'\x00', b'\x01', b'\x02']) client.socket = mock_socket client.timeout = 3 self.assertEqual(b'\x00\x01\x02', client._recv(3)) mock_socket.recv.side_effect = iter([b'\x00', b'\x01', b'\x02']) self.assertEqual(b'\x00\x01', client._recv(2)) mock_select.select.return_value = [False] self.assertEqual(b'', client._recv(2)) client.socket = mockSocket() mock_select.select.return_value = [True] self.assertIn(b'\x00', client._recv(None)) mock_socket = MagicMock() mock_socket.recv.return_value = b'' client.socket = mock_socket self.assertRaises(ConnectionException, lambda: client._recv(1024)) mock_socket.recv.side_effect = iter([b'\x00', b'\x01', b'\x02', b'']) client.socket = mock_socket self.assertEqual(b'\x00\x01\x02', client._recv(1024))
def _recv_decipher(self, size): if len(self._fifo) == 0: header = ModbusTcpClient._recv(self, 4) if header and len(header) == 4: packet_len = int(header[2]) padding = int(header[3]) length = packet_len + padding encrypted_packet = ModbusTcpClient._recv(self, length) if encrypted_packet and len(encrypted_packet) == length: packet = self._aes_ecb.decrypt(encrypted_packet) packet = self._transactionID + packet[2:] self._fifo = self._fifo + packet[:packet_len] if size is None: recv_size = 1 else: recv_size = size recv_size = min(recv_size, len(self._fifo)) result = self._fifo[:recv_size] self._fifo = self._fifo[recv_size:] return result
def testBasicSyncTcpClient(self): ''' Test the basic methods for the tcp sync client''' # receive/send client = ModbusTcpClient() client.socket = mockSocket() self.assertEqual(0, client._send(None)) self.assertEqual(1, client._send('\x00')) self.assertEqual('\x00', client._recv(1)) # connect/disconnect self.assertTrue(client.connect()) client.close() # already closed socket client.socket = False client.close() self.assertEqual("127.0.0.1:502", str(client))
def testTcpClientRecv(self): ''' Test the tcp client receive method''' client = ModbusTcpClient() self.assertRaises(ConnectionException, lambda: client._recv(1024)) client.socket = mockSocket() self.assertEqual(b'', client._recv(0)) self.assertEqual(b'\x00' * 4, client._recv(4)) mock_socket = MagicMock() mock_socket.recv.side_effect = iter([b'\x00', b'\x01', b'\x02']) client.socket = mock_socket client.timeout = 1 self.assertEqual(b'\x00\x01\x02', client._recv(3)) mock_socket.recv.side_effect = iter([b'\x00', b'\x01', b'\x02']) self.assertEqual(b'\x00\x01', client._recv(2)) mock_socket.recv.side_effect = socket.error('No data') self.assertEqual(b'', client._recv(2)) client.socket = mockSocket() client.socket.timeout = 0.1 self.assertIn(b'\x00', client._recv(None))
def testTcpClientRecv(self, mock_select): ''' Test the tcp client receive method''' mock_select.select.return_value = [True] client = ModbusTcpClient() self.assertRaises(ConnectionException, lambda: client._recv(1024)) client.socket = mockSocket() self.assertEqual(b'', client._recv(0)) self.assertEqual(b'\x00' * 4, client._recv(4)) mock_socket = MagicMock() mock_socket.recv.side_effect = iter([b'\x00', b'\x01', b'\x02']) client.socket = mock_socket client.timeout = 1 self.assertEqual(b'\x00\x01\x02', client._recv(3)) mock_socket.recv.side_effect = iter([b'\x00', b'\x01', b'\x02']) self.assertEqual(b'\x00\x01', client._recv(2)) mock_select.select.return_value = [False] self.assertEqual(b'', client._recv(2)) client.socket = mockSocket() mock_select.select.return_value = [True] self.assertIn(b'\x00', client._recv(None))