@@ -143,15 +143,57 @@ def setUpClass(cls):
143
143
),
144
144
InstrumentationScope ("test_name" ),
145
145
)
146
- cls ._exc_data_blank = _logs .LogData (
146
+ cls ._exc_data_with_exc_body = _logs .LogData (
147
147
_logs .LogRecord (
148
148
timestamp = 1646865018558419456 ,
149
149
trace_id = 125960616039069540489478540494783893221 ,
150
150
span_id = 2909973987304607650 ,
151
151
severity_text = "EXCEPTION" ,
152
152
trace_flags = None ,
153
153
severity_number = SeverityNumber .FATAL ,
154
- body = "Test message" ,
154
+ body = Exception ("test exception message" ),
155
+ resource = Resource .create (
156
+ attributes = {"asd" :"test_resource" }
157
+ ),
158
+ attributes = {
159
+ "test" : "attribute" ,
160
+ SpanAttributes .EXCEPTION_TYPE : "ZeroDivisionError" ,
161
+ SpanAttributes .EXCEPTION_MESSAGE : "division by zero" ,
162
+ SpanAttributes .EXCEPTION_STACKTRACE : 'Traceback (most recent call last):\n File "test.py", line 38, in <module>\n raise ZeroDivisionError()\n ZeroDivisionError\n '
163
+ },
164
+ ),
165
+ InstrumentationScope ("test_name" ),
166
+ )
167
+ cls ._exc_data_blank_exception = _logs .LogData (
168
+ _logs .LogRecord (
169
+ timestamp = 1646865018558419456 ,
170
+ trace_id = 125960616039069540489478540494783893221 ,
171
+ span_id = 2909973987304607650 ,
172
+ severity_text = "EXCEPTION" ,
173
+ trace_flags = None ,
174
+ severity_number = SeverityNumber .FATAL ,
175
+ body = "test exception" ,
176
+ resource = Resource .create (
177
+ attributes = {"asd" :"test_resource" }
178
+ ),
179
+ attributes = {
180
+ "test" : "attribute" ,
181
+ SpanAttributes .EXCEPTION_TYPE : "" ,
182
+ SpanAttributes .EXCEPTION_MESSAGE : "" ,
183
+ SpanAttributes .EXCEPTION_STACKTRACE : ""
184
+ },
185
+ ),
186
+ InstrumentationScope ("test_name" ),
187
+ )
188
+ cls ._exc_data_empty = _logs .LogData (
189
+ _logs .LogRecord (
190
+ timestamp = 1646865018558419456 ,
191
+ trace_id = 125960616039069540489478540494783893221 ,
192
+ span_id = 2909973987304607650 ,
193
+ severity_text = "EXCEPTION" ,
194
+ trace_flags = None ,
195
+ severity_number = SeverityNumber .FATAL ,
196
+ body = "" ,
155
197
resource = Resource .create (
156
198
attributes = {"asd" :"test_resource" }
157
199
),
@@ -304,7 +346,7 @@ def test_log_to_envelope_log_empty(self):
304
346
self .assertEqual (envelope .data .base_type , 'MessageData' )
305
347
self .assertEqual (envelope .data .base_data .message , "n/a" )
306
348
307
- def test_log_to_envelope_exception (self ):
349
+ def test_log_to_envelope_exception_with_string_message (self ):
308
350
exporter = self ._exporter
309
351
envelope = exporter ._log_to_envelope (self ._exc_data )
310
352
record = self ._log_data .log_record
@@ -315,13 +357,28 @@ def test_log_to_envelope_exception(self):
315
357
self .assertEqual (envelope .data .base_data .properties ["test" ], "attribute" )
316
358
self .assertEqual (len (envelope .data .base_data .exceptions ), 1 )
317
359
self .assertEqual (envelope .data .base_data .exceptions [0 ].type_name , "ZeroDivisionError" )
318
- self .assertEqual (envelope .data .base_data .exceptions [0 ].message , "division by zero" )
360
+ self .assertEqual (envelope .data .base_data .exceptions [0 ].message , "Test message" )
361
+ self .assertTrue (envelope .data .base_data .exceptions [0 ].has_full_stack )
362
+ self .assertEqual (envelope .data .base_data .exceptions [0 ].stack , 'Traceback (most recent call last):\n File "test.py", line 38, in <module>\n raise ZeroDivisionError()\n ZeroDivisionError\n ' )
363
+
364
+ def test_log_to_envelope_exception_with_exc_message (self ):
365
+ exporter = self ._exporter
366
+ envelope = exporter ._log_to_envelope (self ._exc_data_with_exc_body )
367
+ record = self ._log_data .log_record
368
+ self .assertEqual (envelope .name , 'Microsoft.ApplicationInsights.Exception' )
369
+ self .assertEqual (envelope .time , ns_to_iso_str (record .timestamp ))
370
+ self .assertEqual (envelope .data .base_type , 'ExceptionData' )
371
+ self .assertEqual (envelope .data .base_data .severity_level , 4 )
372
+ self .assertEqual (envelope .data .base_data .properties ["test" ], "attribute" )
373
+ self .assertEqual (len (envelope .data .base_data .exceptions ), 1 )
374
+ self .assertEqual (envelope .data .base_data .exceptions [0 ].type_name , "ZeroDivisionError" )
375
+ self .assertEqual (envelope .data .base_data .exceptions [0 ].message , "test exception message" )
319
376
self .assertTrue (envelope .data .base_data .exceptions [0 ].has_full_stack )
320
377
self .assertEqual (envelope .data .base_data .exceptions [0 ].stack , 'Traceback (most recent call last):\n File "test.py", line 38, in <module>\n raise ZeroDivisionError()\n ZeroDivisionError\n ' )
321
378
322
- def test_log_to_envelope_exception_blank (self ):
379
+ def test_log_to_envelope_exception_empty (self ):
323
380
exporter = self ._exporter
324
- envelope = exporter ._log_to_envelope (self ._exc_data_blank )
381
+ envelope = exporter ._log_to_envelope (self ._exc_data_empty )
325
382
record = self ._log_data .log_record
326
383
self .assertEqual (envelope .name , 'Microsoft.ApplicationInsights.Exception' )
327
384
self .assertEqual (envelope .time , ns_to_iso_str (record .timestamp ))
@@ -334,6 +391,21 @@ def test_log_to_envelope_exception_blank(self):
334
391
self .assertTrue (envelope .data .base_data .exceptions [0 ].has_full_stack )
335
392
self .assertEqual (envelope .data .base_data .exceptions [0 ].stack , "" )
336
393
394
+ def test_log_to_envelope_exception_with_blank_exception (self ):
395
+ exporter = self ._exporter
396
+ envelope = exporter ._log_to_envelope (self ._exc_data_blank_exception )
397
+ record = self ._log_data .log_record
398
+ self .assertEqual (envelope .name , 'Microsoft.ApplicationInsights.Exception' )
399
+ self .assertEqual (envelope .time , ns_to_iso_str (record .timestamp ))
400
+ self .assertEqual (envelope .data .base_type , 'ExceptionData' )
401
+ self .assertEqual (envelope .data .base_data .severity_level , 4 )
402
+ self .assertEqual (envelope .data .base_data .properties ["test" ], "attribute" )
403
+ self .assertEqual (len (envelope .data .base_data .exceptions ), 1 )
404
+ self .assertEqual (envelope .data .base_data .exceptions [0 ].type_name , "Exception" )
405
+ self .assertEqual (envelope .data .base_data .exceptions [0 ].message , "test exception" )
406
+ self .assertTrue (envelope .data .base_data .exceptions [0 ].has_full_stack )
407
+ self .assertEqual (envelope .data .base_data .exceptions [0 ].stack , "" )
408
+
337
409
def test_log_to_envelope_event (self ):
338
410
exporter = self ._exporter
339
411
envelope = exporter ._log_to_envelope (self ._log_data_event )
0 commit comments