88 NoopTelemetryClient ,
99 TelemetryClientFactory ,
1010 TelemetryHelper ,
11- BaseTelemetryClient ,
1211)
1312from databricks .sql .telemetry .models .enums import AuthMech , AuthFlow
1413from databricks .sql .auth .authenticators import (
@@ -290,3 +289,37 @@ def test_factory_shutdown_flow(self):
290289 TelemetryClientFactory .close (session2 )
291290 assert TelemetryClientFactory ._initialized is False
292291 assert TelemetryClientFactory ._executor is None
292+
293+ @patch ("databricks.sql.client.Session" )
294+ @patch ("databricks.sql.telemetry.telemetry_client.TelemetryClient._send_telemetry" )
295+ def test_connection_failure_sends_correct_telemetry_payload (
296+ self , mock_send_telemetry , mock_session
297+ ):
298+ """
299+ Verify that a connection failure constructs and sends the correct
300+ telemetry payload via _send_telemetry.
301+ """
302+
303+ error_message = "Could not connect to host"
304+ mock_session .side_effect = Exception (error_message )
305+
306+ try :
307+ from databricks .sql .client import Connection
308+ Connection (server_hostname = "test-host" , http_path = "/test-path" )
309+ except Exception as e :
310+ assert str (e ) == error_message
311+
312+ mock_send_telemetry .assert_called_once ()
313+
314+ call_arguments = mock_send_telemetry .call_args .args
315+ sent_events = call_arguments [0 ]
316+
317+ assert len (sent_events ) == 1
318+ telemetry_log = sent_events [0 ]
319+
320+ assert telemetry_log .entry .sql_driver_log is not None
321+
322+ error_info = telemetry_log .entry .sql_driver_log .error_info
323+ assert error_info is not None
324+ assert error_info .error_name == "Exception"
325+ assert error_info .stack_trace == error_message
0 commit comments