@@ -878,6 +878,7 @@ void attributeLength() {
878
878
assertThat (event .getAttributes ().get (stringKey ("exception.message" ))).isEqualTo (strVal );
879
879
assertThat (event .getAttributes ().get (stringKey ("exception.stacktrace" )).length ())
880
880
.isLessThanOrEqualTo (maxLength );
881
+ assertThat (event .getAttributes ().size ()).isEqualTo (3 );
881
882
} finally {
882
883
span .end ();
883
884
}
@@ -1159,6 +1160,9 @@ void recordException() {
1159
1160
testClock .advance (Duration .ofNanos (1000 ));
1160
1161
long timestamp = testClock .now ();
1161
1162
1163
+ // make sure that span attributes don't leak down to the exception event
1164
+ span .setAttribute ("spankey" , "val" );
1165
+
1162
1166
span .recordException (exception );
1163
1167
1164
1168
List <EventData > events = span .toSpanData ().getEvents ();
@@ -1171,6 +1175,7 @@ void recordException() {
1171
1175
assertThat (event .getAttributes ().get (stringKey ("exception.type" )))
1172
1176
.isEqualTo (exception .getClass ().getName ());
1173
1177
assertThat (event .getAttributes ().get (stringKey ("exception.stacktrace" ))).isEqualTo (stacktrace );
1178
+ assertThat (event .getAttributes ().size ()).isEqualTo (3 );
1174
1179
assertThat (event )
1175
1180
.isInstanceOfSatisfying (
1176
1181
ExceptionEventData .class ,
@@ -1184,12 +1189,20 @@ void recordException_noMessage() {
1184
1189
IllegalStateException exception = new IllegalStateException ();
1185
1190
SdkSpan span = createTestRootSpan ();
1186
1191
1192
+ StringWriter writer = new StringWriter ();
1193
+ exception .printStackTrace (new PrintWriter (writer ));
1194
+ String stacktrace = writer .toString ();
1195
+
1187
1196
span .recordException (exception );
1188
1197
1189
1198
List <EventData > events = span .toSpanData ().getEvents ();
1190
1199
assertThat (events ).hasSize (1 );
1191
1200
EventData event = events .get (0 );
1192
1201
assertThat (event .getAttributes ().get (stringKey ("exception.message" ))).isNull ();
1202
+ assertThat (event .getAttributes ().get (stringKey ("exception.type" )))
1203
+ .isEqualTo ("java.lang.IllegalStateException" );
1204
+ assertThat (event .getAttributes ().get (stringKey ("exception.stacktrace" ))).isEqualTo (stacktrace );
1205
+ assertThat (event .getAttributes ().size ()).isEqualTo (2 );
1193
1206
}
1194
1207
1195
1208
private static class InnerClassException extends Exception {}
@@ -1199,13 +1212,19 @@ void recordException_innerClassException() {
1199
1212
InnerClassException exception = new InnerClassException ();
1200
1213
SdkSpan span = createTestRootSpan ();
1201
1214
1215
+ StringWriter writer = new StringWriter ();
1216
+ exception .printStackTrace (new PrintWriter (writer ));
1217
+ String stacktrace = writer .toString ();
1218
+
1202
1219
span .recordException (exception );
1203
1220
1204
1221
List <EventData > events = span .toSpanData ().getEvents ();
1205
1222
assertThat (events ).hasSize (1 );
1206
1223
EventData event = events .get (0 );
1207
1224
assertThat (event .getAttributes ().get (stringKey ("exception.type" )))
1208
1225
.isEqualTo ("io.opentelemetry.sdk.trace.SdkSpanTest.InnerClassException" );
1226
+ assertThat (event .getAttributes ().get (stringKey ("exception.stacktrace" ))).isEqualTo (stacktrace );
1227
+ assertThat (event .getAttributes ().size ()).isEqualTo (2 );
1209
1228
}
1210
1229
1211
1230
@ Test
@@ -1220,6 +1239,9 @@ void recordException_additionalAttributes() {
1220
1239
testClock .advance (Duration .ofNanos (1000 ));
1221
1240
long timestamp = testClock .now ();
1222
1241
1242
+ // make sure that span attributes don't leak down to the exception event
1243
+ span .setAttribute ("spankey" , "val" );
1244
+
1223
1245
span .recordException (
1224
1246
exception ,
1225
1247
Attributes .of (
@@ -1240,6 +1262,7 @@ void recordException_additionalAttributes() {
1240
1262
assertThat (event .getAttributes ().get (stringKey ("exception.type" )))
1241
1263
.isEqualTo ("java.lang.IllegalStateException" );
1242
1264
assertThat (event .getAttributes ().get (stringKey ("exception.stacktrace" ))).isEqualTo (stacktrace );
1265
+ assertThat (event .getAttributes ().size ()).isEqualTo (4 );
1243
1266
1244
1267
assertThat (event )
1245
1268
.isInstanceOfSatisfying (
0 commit comments