Skip to content

Commit cd6f4a8

Browse files
authored
Merge pull request #54231 from mskacelik/issue-37399
Fix OpenTelemetryQuartzIT and OpenTelemetrySchedulerIT native mode tests
2 parents 7b2d710 + 21523cb commit cd6f4a8

6 files changed

Lines changed: 144 additions & 18 deletions

File tree

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
package io.quarkus.it.opentelemetry.quartz;
2+
3+
import jakarta.inject.Singleton;
4+
5+
import com.fasterxml.jackson.databind.ObjectMapper;
6+
import com.fasterxml.jackson.databind.module.SimpleModule;
7+
8+
import io.opentelemetry.sdk.trace.data.SpanData;
9+
import io.quarkus.jackson.ObjectMapperCustomizer;
10+
11+
@Singleton
12+
public class SpanDataModuleSerializer implements ObjectMapperCustomizer {
13+
14+
@Override
15+
public void customize(ObjectMapper objectMapper) {
16+
SimpleModule module = new SimpleModule();
17+
module.addSerializer(SpanData.class, new SpanDataSerializer());
18+
objectMapper.registerModule(module);
19+
}
20+
}
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
package io.quarkus.it.opentelemetry.quartz;
2+
3+
import java.io.IOException;
4+
5+
import com.fasterxml.jackson.core.JsonGenerator;
6+
import com.fasterxml.jackson.databind.SerializerProvider;
7+
import com.fasterxml.jackson.databind.ser.std.StdSerializer;
8+
9+
import io.opentelemetry.sdk.trace.data.EventData;
10+
import io.opentelemetry.sdk.trace.data.ExceptionEventData;
11+
import io.opentelemetry.sdk.trace.data.SpanData;
12+
13+
public class SpanDataSerializer extends StdSerializer<SpanData> {
14+
15+
public SpanDataSerializer() {
16+
this(null);
17+
}
18+
19+
public SpanDataSerializer(Class<SpanData> type) {
20+
super(type);
21+
}
22+
23+
@Override
24+
public void serialize(SpanData spanData, JsonGenerator gen, SerializerProvider provider)
25+
throws IOException {
26+
gen.writeStartObject();
27+
28+
gen.writeStringField("name", spanData.getName());
29+
gen.writeStringField("kind", spanData.getKind().name());
30+
gen.writeNumberField("startEpochNanos", spanData.getStartEpochNanos());
31+
gen.writeNumberField("endEpochNanos", spanData.getEndEpochNanos());
32+
33+
gen.writeObjectFieldStart("status");
34+
gen.writeStringField("statusCode", spanData.getStatus().getStatusCode().name());
35+
gen.writeEndObject();
36+
37+
gen.writeArrayFieldStart("events");
38+
for (EventData event : spanData.getEvents()) {
39+
gen.writeStartObject();
40+
if (event instanceof ExceptionEventData) {
41+
ExceptionEventData exEvent = (ExceptionEventData) event;
42+
gen.writeObjectFieldStart("exception");
43+
gen.writeStringField("message", exEvent.getException().getMessage());
44+
gen.writeEndObject();
45+
}
46+
gen.writeEndObject();
47+
}
48+
gen.writeEndArray();
49+
50+
gen.writeEndObject();
51+
}
52+
}
Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,7 @@
11
package io.quarkus.it.opentelemetry.quartz;
22

3-
import org.junit.jupiter.api.Test;
4-
5-
import io.quarkus.test.junit.DisabledOnIntegrationTest;
63
import io.quarkus.test.junit.QuarkusIntegrationTest;
74

85
@QuarkusIntegrationTest
96
public class OpenTelemetryQuartzIT extends OpenTelemetryQuartzTest {
10-
@Test
11-
@DisabledOnIntegrationTest("native mode testing span does not have a field 'exception' (only in integration-test, not in quarkus app)")
12-
@Override
13-
public void quartzSpanTest() {
14-
super.quartzSpanTest();
15-
}
167
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
package io.quarkus.it.opentelemetry.scheduler;
2+
3+
import jakarta.inject.Singleton;
4+
5+
import com.fasterxml.jackson.databind.ObjectMapper;
6+
import com.fasterxml.jackson.databind.module.SimpleModule;
7+
8+
import io.opentelemetry.sdk.trace.data.SpanData;
9+
import io.quarkus.jackson.ObjectMapperCustomizer;
10+
11+
@Singleton
12+
public class SpanDataModuleSerializer implements ObjectMapperCustomizer {
13+
14+
@Override
15+
public void customize(ObjectMapper objectMapper) {
16+
SimpleModule module = new SimpleModule();
17+
module.addSerializer(SpanData.class, new SpanDataSerializer());
18+
objectMapper.registerModule(module);
19+
}
20+
}
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
package io.quarkus.it.opentelemetry.scheduler;
2+
3+
import java.io.IOException;
4+
5+
import com.fasterxml.jackson.core.JsonGenerator;
6+
import com.fasterxml.jackson.databind.SerializerProvider;
7+
import com.fasterxml.jackson.databind.ser.std.StdSerializer;
8+
9+
import io.opentelemetry.sdk.trace.data.EventData;
10+
import io.opentelemetry.sdk.trace.data.ExceptionEventData;
11+
import io.opentelemetry.sdk.trace.data.SpanData;
12+
13+
public class SpanDataSerializer extends StdSerializer<SpanData> {
14+
15+
public SpanDataSerializer() {
16+
this(null);
17+
}
18+
19+
public SpanDataSerializer(Class<SpanData> type) {
20+
super(type);
21+
}
22+
23+
@Override
24+
public void serialize(SpanData spanData, JsonGenerator gen, SerializerProvider provider)
25+
throws IOException {
26+
gen.writeStartObject();
27+
28+
gen.writeStringField("name", spanData.getName());
29+
gen.writeStringField("kind", spanData.getKind().name());
30+
gen.writeNumberField("startEpochNanos", spanData.getStartEpochNanos());
31+
gen.writeNumberField("endEpochNanos", spanData.getEndEpochNanos());
32+
33+
gen.writeObjectFieldStart("status");
34+
gen.writeStringField("statusCode", spanData.getStatus().getStatusCode().name());
35+
gen.writeEndObject();
36+
37+
gen.writeArrayFieldStart("events");
38+
for (EventData event : spanData.getEvents()) {
39+
gen.writeStartObject();
40+
if (event instanceof ExceptionEventData) {
41+
ExceptionEventData exEvent = (ExceptionEventData) event;
42+
gen.writeObjectFieldStart("exception");
43+
gen.writeStringField("message", exEvent.getException().getMessage());
44+
gen.writeEndObject();
45+
}
46+
gen.writeEndObject();
47+
}
48+
gen.writeEndArray();
49+
50+
gen.writeEndObject();
51+
}
52+
}
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,7 @@
11
package io.quarkus.it.opentelemetry.scheduler;
22

3-
import org.junit.jupiter.api.Test;
4-
5-
import io.quarkus.test.junit.DisabledOnIntegrationTest;
63
import io.quarkus.test.junit.QuarkusIntegrationTest;
74

85
@QuarkusIntegrationTest
96
public class OpenTelemetrySchedulerIT extends OpenTelemetrySchedulerTest {
10-
@Test
11-
@DisabledOnIntegrationTest("native mode testing span does not have a field 'exception' (only in integration-test, not in quarkus app)")
12-
@Override
13-
public void schedulerSpanTest() {
14-
super.schedulerSpanTest();
15-
}
167
}

0 commit comments

Comments
 (0)