diff --git a/blueye/sdk/drone.py b/blueye/sdk/drone.py index 6c11f511..10c8bf04 100755 --- a/blueye/sdk/drone.py +++ b/blueye/sdk/drone.py @@ -306,8 +306,11 @@ def connect( self._ctrl_client.start() self._watchdog_publisher.start() - self.ping() - connect_resp = self._req_rep_client.connect_client(client_info=client_info) + try: + self.ping() + connect_resp = self._req_rep_client.connect_client(client_info=client_info) + except blueye.protocol.exceptions.ResponseTimeout as e: + raise ConnectionError("Could not establish connection with drone") from e logger.info(f"Connection successful, client id: {connect_resp.client_id}") logger.info(f"Client id in control: {connect_resp.client_id_in_control}") logger.info(f"There are {len(connect_resp.connected_clients)-1} other clients connected") diff --git a/tests/test_sdk.py b/tests/test_sdk.py index ef5c633d..0a762ea6 100644 --- a/tests/test_sdk.py +++ b/tests/test_sdk.py @@ -33,6 +33,12 @@ def test_angle_conversion(self, mocked_drone, old_angle, new_angle): assert pose["yaw"] == new_angle +def test_zmq_connection_error(mocked_drone): + mocked_drone._req_rep_client.ping.side_effect = bp.exceptions.ResponseTimeout + with pytest.raises(ConnectionError): + mocked_drone.connect() + + def test_feature_list(mocked_drone): mocked_drone._update_drone_info() assert mocked_drone.features == ["lasers", "harpoon"]