Skip to content

Commit 725cce9

Browse files
committed
tests
Signed-off-by: Sai Shree Pradhan <saishree.pradhan@databricks.com>
1 parent 6ceb092 commit 725cce9

File tree

1 file changed

+88
-3
lines changed

1 file changed

+88
-3
lines changed

tests/unit/test_telemetry.py

Lines changed: 88 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,14 @@
77
NoopTelemetryClient,
88
TelemetryClientFactory,
99
TelemetryHelper,
10-
BaseTelemetryClient,
1110
)
1211
from databricks.sql.telemetry.models.enums import AuthMech, AuthFlow
1312
from databricks.sql.auth.authenticators import (
1413
AccessTokenAuthProvider,
1514
DatabricksOAuthProvider,
1615
ExternalAuthProvider,
1716
)
17+
from databricks import sql
1818

1919

2020
@pytest.fixture
@@ -311,8 +311,6 @@ def test_connection_failure_sends_correct_telemetry_payload(
311311
mock_session.side_effect = Exception(error_message)
312312

313313
try:
314-
from databricks import sql
315-
316314
sql.connect(server_hostname="test-host", http_path="/test-path")
317315
except Exception as e:
318316
assert str(e) == error_message
@@ -321,3 +319,90 @@ def test_connection_failure_sends_correct_telemetry_payload(
321319
call_arguments = mock_export_failure_log.call_args
322320
assert call_arguments[0][0] == "Exception"
323321
assert call_arguments[0][1] == error_message
322+
323+
324+
@patch("databricks.sql.client.Session")
325+
class TestTelemetryFeatureFlag:
326+
"""Tests the interaction between the telemetry feature flag and connection parameters."""
327+
328+
def _mock_ff_response(self, mock_requests_get, enabled: bool):
329+
"""Helper to configure the mock response for the feature flag endpoint."""
330+
mock_response = MagicMock()
331+
mock_response.status_code = 200
332+
payload = {
333+
"flags": [
334+
{
335+
"name": "databricks.partnerplatform.clientConfigsFeatureFlags.enableTelemetryForPythonDriver",
336+
"value": str(enabled).lower(),
337+
}
338+
],
339+
"ttl_seconds": 3600,
340+
}
341+
mock_response.json.return_value = payload
342+
mock_requests_get.return_value = mock_response
343+
344+
@patch("databricks.sql.common.feature_flag.requests.get")
345+
def test_telemetry_enabled_when_flag_is_true(
346+
self, mock_requests_get, MockSession
347+
):
348+
"""Telemetry should be ON when enable_telemetry=True and server flag is 'true'."""
349+
self._mock_ff_response(mock_requests_get, enabled=True)
350+
mock_session_instance = MockSession.return_value
351+
mock_session_instance.guid_hex = "test-session-ff-true"
352+
mock_session_instance.auth_provider = AccessTokenAuthProvider("token")
353+
354+
conn = sql.client.Connection(
355+
server_hostname="test",
356+
http_path="test",
357+
access_token="test",
358+
enable_telemetry=True,
359+
)
360+
361+
assert conn.telemetry_enabled is True
362+
mock_requests_get.assert_called_once()
363+
client = TelemetryClientFactory.get_telemetry_client("test-session-ff-true")
364+
assert isinstance(client, TelemetryClient)
365+
366+
@patch("databricks.sql.common.feature_flag.requests.get")
367+
def test_telemetry_disabled_when_flag_is_false(
368+
self, mock_requests_get, MockSession
369+
):
370+
"""Telemetry should be OFF when enable_telemetry=True but server flag is 'false'."""
371+
self._mock_ff_response(mock_requests_get, enabled=False)
372+
mock_session_instance = MockSession.return_value
373+
mock_session_instance.guid_hex = "test-session-ff-false"
374+
mock_session_instance.auth_provider = AccessTokenAuthProvider("token")
375+
376+
conn = sql.client.Connection(
377+
server_hostname="test",
378+
http_path="test",
379+
access_token="test",
380+
enable_telemetry=True,
381+
)
382+
383+
assert conn.telemetry_enabled is False
384+
mock_requests_get.assert_called_once()
385+
client = TelemetryClientFactory.get_telemetry_client("test-session-ff-false")
386+
assert isinstance(client, NoopTelemetryClient)
387+
388+
@patch("databricks.sql.common.feature_flag.requests.get")
389+
def test_telemetry_disabled_when_flag_request_fails(
390+
self, mock_requests_get, MockSession
391+
):
392+
"""Telemetry should default to OFF if the feature flag network request fails."""
393+
mock_requests_get.side_effect = Exception("Network is down")
394+
mock_session_instance = MockSession.return_value
395+
mock_session_instance.guid_hex = "test-session-ff-fail"
396+
mock_session_instance.auth_provider = AccessTokenAuthProvider("token")
397+
398+
conn = sql.client.Connection(
399+
server_hostname="test",
400+
http_path="test",
401+
access_token="test",
402+
enable_telemetry=True,
403+
)
404+
405+
assert conn.telemetry_enabled is False
406+
mock_requests_get.assert_called_once()
407+
client = TelemetryClientFactory.get_telemetry_client("test-session-ff-fail")
408+
assert isinstance(client, NoopTelemetryClient)

0 commit comments

Comments
 (0)