@@ -277,6 +277,13 @@ def test_enable_telemetry_on_with_server_on_sends_events(
277277 Scenario: enable_telemetry=ON, force_enable_telemetry=OFF, server=ON
278278 Expected: 2 events (initial_log + latency_log)
279279 """
280+ from databricks .sql .telemetry .telemetry_client import TelemetryHelper
281+
282+ print (f"\n { '=' * 80 } " )
283+ print (f"TEST: test_enable_telemetry_on_with_server_on_sends_events" )
284+ print (f"Feature flag being checked: { TelemetryHelper .TELEMETRY_FEATURE_FLAG_NAME } " )
285+ print (f"{ '=' * 80 } \n " )
286+
280287 (
281288 captured_events ,
282289 captured_futures ,
@@ -296,6 +303,11 @@ def test_enable_telemetry_on_with_server_on_sends_events(
296303 "telemetry_batch_size" : 1 ,
297304 }
298305 ) as conn :
306+ print (f"\n Connection created:" )
307+ print (f" enable_telemetry: { conn .enable_telemetry } " )
308+ print (f" force_enable_telemetry: { conn .force_enable_telemetry } " )
309+ print (f" telemetry_enabled (computed): { conn .telemetry_enabled } " )
310+ print (f" telemetry_client type: { type (conn ._telemetry_client ).__name__ } \n " )
299311 with conn .cursor () as cursor :
300312 cursor .execute ("SELECT 1" )
301313 cursor .fetchone ()
@@ -424,6 +436,82 @@ def test_both_flags_off_does_not_send_events(self, telemetry_interceptors):
424436
425437 print (f"\n Statement ID: { statement_id } " )
426438
439+ def test_default_behavior_sends_events_with_server_flag_on (
440+ self , telemetry_interceptors
441+ ):
442+ """
443+ Scenario: Neither enable_telemetry nor force_enable_telemetry passed (uses defaults)
444+ Expected: 2 events (initial_log + latency_log) when server feature flag is ON
445+
446+ Default behavior:
447+ - enable_telemetry defaults to True
448+ - force_enable_telemetry defaults to False
449+ - Telemetry will be sent if server feature flag is enabled
450+ """
451+ from databricks .sql .telemetry .telemetry_client import TelemetryHelper
452+
453+ print (f"\n { '=' * 80 } " )
454+ print (f"TEST: test_default_behavior_sends_events_with_server_flag_on" )
455+ print (f"Feature flag being checked: { TelemetryHelper .TELEMETRY_FEATURE_FLAG_NAME } " )
456+ print (f"Testing DEFAULT behavior (no flags passed explicitly)" )
457+ print (f"{ '=' * 80 } \n " )
458+
459+ (
460+ captured_events ,
461+ captured_futures ,
462+ export_wrapper ,
463+ callback_wrapper ,
464+ ) = telemetry_interceptors
465+
466+ with patch .object (
467+ TelemetryClient , "_export_event" , export_wrapper
468+ ), patch .object (
469+ TelemetryClient , "_telemetry_request_callback" , callback_wrapper
470+ ):
471+ # Connection without explicit telemetry flags - relies on defaults
472+ with self .connection (
473+ extra_params = {
474+ "telemetry_batch_size" : 1 ,
475+ }
476+ ) as conn :
477+ # Verify defaults are as expected
478+ print (f"\n Connection created with DEFAULT settings:" )
479+ print (f" enable_telemetry (default): { conn .enable_telemetry } " )
480+ print (f" force_enable_telemetry (default): { conn .force_enable_telemetry } " )
481+ print (f" telemetry_enabled (computed): { conn .telemetry_enabled } " )
482+ print (f" telemetry_client type: { type (conn ._telemetry_client ).__name__ } \n " )
483+
484+ with conn .cursor () as cursor :
485+ cursor .execute ("SELECT 99" )
486+ cursor .fetchone ()
487+ statement_id = cursor .query_id
488+
489+ time .sleep (2 )
490+ done , not_done = wait (captured_futures , timeout = 10 )
491+
492+ # With default enable_telemetry=True and server flag ON, expect 2 events
493+ assert (
494+ len (captured_events ) == 2
495+ ), f"Expected exactly 2 events with default settings, got { len (captured_events )} "
496+ assert len (done ) == 2 , f"Expected exactly 2 responses, got { len (done )} "
497+
498+ # Verify HTTP responses
499+ for future in done :
500+ response = future .result ()
501+ assert 200 <= response .status < 300
502+
503+ # Assert payload for all events
504+ for event in captured_events :
505+ self .assertSystemConfiguration (event )
506+ self .assertConnectionParams (
507+ event , expected_http_path = self .arguments ["http_path" ]
508+ )
509+
510+ # Assert latency event (second event)
511+ self .assertStatementExecution (captured_events [1 ])
512+
513+ print (f"\n Statement ID: { statement_id } " )
514+
427515 def test_sql_error_sends_telemetry_with_error_info (self , telemetry_interceptors ):
428516 """
429517 Scenario: SQL query with invalid syntax causes error
0 commit comments