Skip to content

Commit a20b8b3

Browse files
committed
Add more tests
1 parent bf30160 commit a20b8b3

3 files changed

Lines changed: 56 additions & 8 deletions

File tree

src/test/java/io/apitally/common/RequestLoggerTest.java

Lines changed: 33 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
import io.apitally.common.dto.LogRecord;
1212
import io.apitally.common.dto.Request;
1313
import io.apitally.common.dto.Response;
14+
import io.apitally.common.dto.SpanData;
1415
import java.io.IOException;
1516
import java.util.ArrayList;
1617
import java.util.Base64;
@@ -34,6 +35,7 @@ void setUp() {
3435
requestLoggingConfig.setResponseHeadersIncluded(true);
3536
requestLoggingConfig.setResponseBodyIncluded(true);
3637
requestLoggingConfig.setLogCaptureEnabled(true);
38+
requestLoggingConfig.setTracingEnabled(true);
3739
requestLogger = new RequestLogger(requestLoggingConfig);
3840
}
3941

@@ -72,7 +74,29 @@ void testEndToEnd() {
7274
"test.Logger",
7375
"INFO",
7476
"Test log message"));
75-
requestLogger.logRequest(request, response, exception, logs, null, null);
77+
List<SpanData> spans = new ArrayList<>();
78+
spans.add(
79+
new SpanData(
80+
"a1b2c3d4e5f6a7b8",
81+
null,
82+
"root",
83+
"INTERNAL",
84+
1000000L,
85+
2000000L,
86+
null,
87+
null));
88+
spans.add(
89+
new SpanData(
90+
"b2c3d4e5f6a7b8c9",
91+
"a1b2c3d4e5f6a7b8",
92+
"child",
93+
"INTERNAL",
94+
1100000L,
95+
1900000L,
96+
"OK",
97+
null));
98+
String traceId = "a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6";
99+
requestLogger.logRequest(request, response, exception, logs, spans, traceId);
76100

77101
JsonNode[] items = getLoggedItems(requestLogger);
78102
assertEquals(1, items.length);
@@ -114,6 +138,14 @@ void testEndToEnd() {
114138
assertEquals("INFO", logsNode.get(0).get("level").asText());
115139
assertEquals("Test log message", logsNode.get(0).get("message").asText());
116140

141+
assertEquals("a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6", jsonNode.get("trace_id").asText());
142+
JsonNode spansNode = jsonNode.get("spans");
143+
assertTrue(spansNode.isArray());
144+
assertEquals(2, spansNode.size());
145+
assertEquals("root", spansNode.get(0).get("name").asText());
146+
assertEquals("child", spansNode.get(1).get("name").asText());
147+
assertEquals("a1b2c3d4e5f6a7b8", spansNode.get(1).get("parent_span_id").asText());
148+
117149
requestLogger.clear();
118150

119151
items = getLoggedItems(requestLogger);

src/test/java/io/apitally/spring/ApitallyFilterTest.java

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,8 +52,13 @@ static class TestConfig {
5252
@Bean
5353
public ApitallyClient apitallyClient(ApitallyProperties properties) {
5454
LogAppender.register();
55-
return new ApitallyClient(
56-
properties.getClientId(), properties.getEnv(), properties.getRequestLogging());
55+
ApitallyClient client =
56+
new ApitallyClient(
57+
properties.getClientId(),
58+
properties.getEnv(),
59+
properties.getRequestLogging());
60+
ApitallySpanCollector.getInstance().setDelegate(client.spanCollector);
61+
return client;
5762
}
5863

5964
@Bean
@@ -289,6 +294,7 @@ void testRequestLogger() {
289294
apitallyClient.requestLogger.getConfig().setRequestBodyIncluded(true);
290295
apitallyClient.requestLogger.getConfig().setResponseBodyIncluded(true);
291296
apitallyClient.requestLogger.getConfig().setLogCaptureEnabled(true);
297+
apitallyClient.requestLogger.getConfig().setTracingEnabled(true);
292298
apitallyClient.requestLogger.clear();
293299

294300
ResponseEntity<String> response = restTemplate.getForEntity("/items", String.class);
@@ -321,6 +327,14 @@ void testRequestLogger() {
321327
assertTrue(firstItem.get("logs").size() > 0);
322328
assertTrue(firstItem.get("logs").get(0).get("message").asText().contains("Getting items"));
323329

330+
// Verify spans were captured
331+
assertTrue(firstItem.has("spans"));
332+
assertTrue(firstItem.get("spans").isArray());
333+
assertTrue(firstItem.get("spans").size() >= 2); // root span + child span
334+
assertTrue(
335+
java.util.stream.StreamSupport.stream(firstItem.get("spans").spliterator(), false)
336+
.anyMatch(span -> span.get("name").asText().equals("fetchItems")));
337+
324338
// Verify POST request logging with request body
325339
JsonNode secondItem = items[1];
326340
assertEquals("POST", secondItem.get("request").get("method").asText());

src/test/java/io/apitally/spring/app/TestController.java

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -38,11 +38,18 @@ public List<TestItem> getItems(
3838
HttpServletRequest request,
3939
@RequestParam(required = false) @Size(min = 2, max = 10) String name) {
4040
logger.info("Getting items with filter: {}", name != null ? name : "none");
41+
4142
ApitallyConsumer consumer = new ApitallyConsumer("tester", "Tester", "Test Group");
4243
request.setAttribute("apitallyConsumer", consumer);
44+
45+
Tracer tracer = GlobalOpenTelemetry.getTracer("test");
46+
Span childSpan = tracer.spanBuilder("fetchItems").startSpan();
47+
childSpan.setAttribute("filter", name != null ? name : "none");
4348
List<TestItem> items = new ArrayList<TestItem>();
4449
items.add(new TestItem(1, "bob"));
4550
items.add(new TestItem(2, "alice"));
51+
childSpan.end();
52+
4653
logger.debug("Returning {} items", items.size());
4754
return items;
4855
}
@@ -53,11 +60,6 @@ public void addItem(@Valid @RequestBody TestItem newItem) {}
5360

5461
@GetMapping("/items/{id}")
5562
public TestItem getItem(@PathVariable @Min(1) Integer id) {
56-
Tracer tracer = GlobalOpenTelemetry.getTracer("test");
57-
Span childSpan = tracer.spanBuilder("fetchItemFromDatabase").startSpan();
58-
childSpan.setAttribute("item.id", id);
59-
childSpan.end();
60-
6163
TestItem item = new TestItem(id, "bob");
6264
return item;
6365
}

0 commit comments

Comments
 (0)