def test_factory_start_success(self, mock_async): mock_protocol_class = mock.MagicMock() mock_loop = mock.MagicMock() client = ReconnectingAsyncioModbusTcpClient(protocol_class=mock_protocol_class, loop=mock_loop) run_coroutine(client.start(mock.sentinel.HOST, mock.sentinel.PORT)) mock_loop.create_connection.assert_called_once_with(mock.ANY, mock.sentinel.HOST, mock.sentinel.PORT) assert mock_async.call_count == 0
def test_factory_start_success(self, mock_async): mock_protocol_class = mock.MagicMock() mock_loop = mock.MagicMock() client = ReconnectingAsyncioModbusTcpClient( protocol_class=mock_protocol_class, loop=mock_loop) run_coroutine(client.start(mock.sentinel.HOST, mock.sentinel.PORT)) mock_loop.create_connection.assert_called_once_with( mock.ANY, mock.sentinel.HOST, mock.sentinel.PORT) assert mock_async.call_count == 0
def test_factory_reconnect(self, mock_sleep): mock_protocol_class = mock.MagicMock() mock_loop = mock.MagicMock() client = ReconnectingAsyncioModbusTcpClient(protocol_class=mock_protocol_class, loop=mock_loop) client.delay_ms = 5000 mock_sleep.side_effect = return_as_coroutine() run_coroutine(client._reconnect()) mock_sleep.assert_called_once_with(5) assert mock_loop.create_connection.call_count == 1
def test_factory_reconnect(self, mock_sleep): mock_protocol_class = mock.MagicMock() mock_loop = mock.MagicMock() client = ReconnectingAsyncioModbusTcpClient(protocol_class=mock_protocol_class, loop=mock_loop) client.delay_ms = 5000 mock_sleep.side_effect = return_as_coroutine() run_coroutine(client._reconnect()) mock_sleep.assert_called_once_with(5) assert mock_loop.create_connection.call_count == 1
def test_factory_start_failing_and_retried(self, mock_async): mock_protocol_class = mock.MagicMock() mock_loop = mock.MagicMock() mock_loop.create_connection = mock.MagicMock(side_effect=Exception('Did not work.')) client = ReconnectingAsyncioModbusTcpClient(protocol_class=mock_protocol_class, loop=mock_loop) # check whether reconnect is called upon failed connection attempt: with mock.patch('pymodbus.client.asynchronous.asyncio.ReconnectingAsyncioModbusTcpClient._reconnect') as mock_reconnect: mock_reconnect.return_value = mock.sentinel.RECONNECT_GENERATOR run_coroutine(client.start(mock.sentinel.HOST, mock.sentinel.PORT)) mock_reconnect.assert_called_once_with() mock_async.assert_called_once_with(mock.sentinel.RECONNECT_GENERATOR, loop=mock_loop)
def test_factory_start_failing_and_retried(self, mock_async): mock_protocol_class = mock.MagicMock() mock_loop = mock.MagicMock() mock_loop.create_connection = mock.MagicMock(side_effect=Exception('Did not work.')) client = ReconnectingAsyncioModbusTcpClient(protocol_class=mock_protocol_class, loop=mock_loop) # check whether reconnect is called upon failed connection attempt: with mock.patch('pymodbus.client.asynchronous.async_io.ReconnectingAsyncioModbusTcpClient._reconnect') as mock_reconnect: mock_reconnect.return_value = mock.sentinel.RECONNECT_GENERATOR run_coroutine(client.start(mock.sentinel.HOST, mock.sentinel.PORT)) mock_reconnect.assert_called_once_with() if PYTHON_VERSION <= (3, 7): mock_async.assert_called_once_with(mock.sentinel.RECONNECT_GENERATOR, loop=mock_loop)