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 _listen(self, opt): try: servsoc = socket.socket(socket.AF_INET, socket.SOCK_STREAM) servsoc.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) servsoc.bind((opt['host'], opt['port'])) servsoc.listen(1) self._logger.info("listen : " + str(opt)) executing = True while executing: self._logger.info("waiting a client~") rsoc, wsoc, esoc = select.select([servsoc], [], [], 10) for sock in rsoc: if sock == servsoc: clisoc, address = servsoc.accept() self._logger.info("client connected from " + str(address)) for tmp in self._tempthd: if tmp["port"] == opt["port"]: conn = ModbusTcpClient(timeout=self._timeout) conn.socket = clisoc self._conn[opt["port"]] = conn tmp["status"] = 10 # connected executing = False except Exception as ex: servsoc.close() for tmp in self._tempthd: if tmp["port"] == opt["port"]: self._logger.warn(" port [" + str(opt["port"]) + "] exception : " + str(ex)) tmp["status"] = 5 # error
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 testTcpClientSend(self): ''' Test the tcp client send method''' client = ModbusTcpClient() self.assertRaises(ConnectionException, lambda: client._send(None)) client.socket = mockSocket() self.assertEqual(0, client._send(None)) self.assertEqual(4, client._send('1234'))
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 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))