@@ -1089,12 +1089,14 @@ def test_otel_config_telemetry(test_agent_session, run_python_code_in_subprocess
1089
1089
assert tags == [["config_opentelemetry:otel_logs_exporter" ]]
1090
1090
1091
1091
1092
- def test_add_integration_error_log (mock_time , telemetry_writer , test_agent_session ):
1092
+ def test_add_error_log (mock_time , telemetry_writer , test_agent_session ):
1093
1093
"""Test add_integration_error_log functionality with real stack trace"""
1094
1094
try :
1095
- raise ValueError ("Test exception" )
1096
- except ValueError as e :
1097
- telemetry_writer .add_integration_error_log ("Test error message" , e )
1095
+ import json
1096
+
1097
+ json .loads ("{invalid: json,}" )
1098
+ except Exception as e :
1099
+ telemetry_writer .add_error_log ("Test error message" , e )
1098
1100
telemetry_writer .periodic (force_flush = True )
1099
1101
1100
1102
log_events = test_agent_session .get_events ("logs" )
@@ -1110,9 +1112,14 @@ def test_add_integration_error_log(mock_time, telemetry_writer, test_agent_sessi
1110
1112
stack_trace = log_entry ["stack_trace" ]
1111
1113
expected_lines = [
1112
1114
"Traceback (most recent call last):" ,
1113
- " <REDACTED>" ,
1114
- " <REDACTED>" ,
1115
- "builtins.ValueError: Test exception" ,
1115
+ "<REDACTED>" , # User code gets redacted
1116
+ ' File "json/__init__.py' ,
1117
+ " return _default_decoder.decode(s)" ,
1118
+ ' File "json/decoder.py"' ,
1119
+ " obj, end = self.raw_decode(s, idx=_w(s, 0).end())" ,
1120
+ ' File "json/decoder.py"' ,
1121
+ " obj, end = self.scan_once(s, idx)" ,
1122
+ "json.decoder.JSONDecodeError: <REDACTED>" ,
1116
1123
]
1117
1124
for expected_line in expected_lines :
1118
1125
assert expected_line in stack_trace
@@ -1127,7 +1134,7 @@ def test_add_integration_error_log_with_log_collection_disabled(mock_time, telem
1127
1134
try :
1128
1135
raise ValueError ("Test exception" )
1129
1136
except ValueError as e :
1130
- telemetry_writer .add_integration_error_log ("Test error message" , e )
1137
+ telemetry_writer .add_error_log ("Test error message" , e )
1131
1138
telemetry_writer .periodic (force_flush = True )
1132
1139
1133
1140
log_events = test_agent_session .get_events ("logs" , subprocess = True )
@@ -1137,17 +1144,22 @@ def test_add_integration_error_log_with_log_collection_disabled(mock_time, telem
1137
1144
1138
1145
1139
1146
@pytest .mark .parametrize (
1140
- "filename, is_redacted " ,
1147
+ "filename, result " ,
1141
1148
[
1142
- ("/path/to/file.py" , True ),
1143
- ("/path/to/ddtrace/contrib/flask/file.py" , False ),
1144
- ("/path/to/dd-trace-something/file.py" , True ),
1149
+ ("/path/to/file.py" , "<REDACTED>" ),
1150
+ ("/path/to/ddtrace/contrib/flask/file.py" , "<REDACTED>" ),
1151
+ ("/path/to/lib/python3.13/site-packages/ddtrace/_trace/tracer.py" , "ddtrace/_trace/tracer.py" ),
1152
+ ("/path/to/lib/python3.13/site-packages/requests/api.py" , "requests/api.py" ),
1153
+ (
1154
+ "/path/to/[email protected] /3.13.1/Frameworks/Python.framework/Versions/3.13/lib/python3.13/json/__init__.py" ,
1155
+ "json/__init__.py" ,
1156
+ ),
1145
1157
],
1146
1158
)
1147
- def test_redact_filename (filename , is_redacted ):
1159
+ def test_redact_filename (filename , result ):
1148
1160
"""Test file redaction logic"""
1149
1161
writer = TelemetryWriter (is_periodic = False )
1150
- assert writer ._should_redact (filename ) == is_redacted
1162
+ assert writer ._format_file_path (filename ) == result
1151
1163
1152
1164
1153
1165
def test_telemetry_writer_multiple_sources_config (telemetry_writer , test_agent_session ):
0 commit comments