Skip to content

Commit e07aa71

Browse files
committed
test
Signed-off-by: Sai Shree Pradhan <saishree.pradhan@databricks.com>
1 parent 8b9fa88 commit e07aa71

File tree

3 files changed

+39
-2
lines changed

3 files changed

+39
-2
lines changed

src/databricks/sql/client.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -270,7 +270,10 @@ def read(self) -> Optional[OAuthToken]:
270270
error_message=str(e),
271271
host_url=server_hostname,
272272
http_path=http_path,
273-
port=self.session.port,
273+
port=kwargs.get("_port", 443),
274+
user_agent=self.session.useragent_header
275+
if hasattr(self, "session")
276+
else None,
274277
)
275278
raise e
276279

src/databricks/sql/telemetry/telemetry_client.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -469,3 +469,4 @@ def connection_failure_log(
469469
telemetry_client._user_agent = user_agent
470470

471471
telemetry_client.export_failure_log(error_name, error_message)
472+
TelemetryClientFactory.close(UNAUTH_DUMMY_SESSION_ID)

tests/unit/test_telemetry.py

Lines changed: 34 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
NoopTelemetryClient,
99
TelemetryClientFactory,
1010
TelemetryHelper,
11-
BaseTelemetryClient,
1211
)
1312
from databricks.sql.telemetry.models.enums import AuthMech, AuthFlow
1413
from 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

Comments
 (0)