Skip to content

Commit 6e4aba8

Browse files
authored
Merge pull request #2616 from DataDog/ban/force-newline-in-printwriter
Force new line in PrintingWriter
2 parents 825acd5 + edd0f06 commit 6e4aba8

File tree

2 files changed

+46
-0
lines changed

2 files changed

+46
-0
lines changed

dd-trace-core/src/main/java/datadog/trace/common/writer/PrintingWriter.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import datadog.trace.core.processor.TraceProcessor;
88
import java.io.IOException;
99
import java.io.OutputStream;
10+
import java.nio.charset.StandardCharsets;
1011
import java.util.Collections;
1112
import java.util.List;
1213
import java.util.Map;
@@ -40,6 +41,7 @@ public void write(final List<DDSpan> trace) {
4041
try {
4142
synchronized (sink) {
4243
jsonAdapter.toJson(sink, Collections.singletonMap("traces", tracesList));
44+
sink.writeString("\n", StandardCharsets.UTF_8);
4345
sink.flush();
4446
}
4547
} catch (final IOException e) {

dd-trace-core/src/test/groovy/datadog/trace/api/writer/PrintingWriterTest.groovy

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,4 +108,48 @@ class PrintingWriterTest extends DDCoreSpecification {
108108
assert it["meta"] instanceof Map
109109
}
110110
}
111+
112+
def "test printing multiple traces"() {
113+
given:
114+
def buffer = new Buffer()
115+
def writer = new PrintingWriter(buffer.outputStream(), false)
116+
117+
when:
118+
writer.write(sampleTrace)
119+
writer.write(secondTrace)
120+
Map<String, List<List<Map>>> result1 = adapter.fromJson(buffer.readUtf8Line())
121+
Map<String, List<List<Map>>> result2 = adapter.fromJson(buffer.readUtf8Line())
122+
123+
then:
124+
result1["traces"][0].size() == sampleTrace.size()
125+
result2["traces"][0].each {
126+
assert it["service"] == "fakeService"
127+
assert it["name"] == "fakeOperation"
128+
assert it["resource"] == "fakeResource"
129+
assert it["type"] == "fakeType"
130+
assert it["trace_id"] instanceof Number
131+
assert it["span_id"] instanceof Number
132+
assert it["parent_id"] instanceof Number
133+
assert it["start"] instanceof Number
134+
assert it["duration"] instanceof Number
135+
assert it["error"] == 0
136+
assert it["metrics"] instanceof Map
137+
assert it["meta"] instanceof Map
138+
}
139+
result2["traces"][0].size() == secondTrace.size()
140+
result2["traces"][0].each {
141+
assert it["service"] == "fakeService"
142+
assert it["name"] == "fakeOperation"
143+
assert it["resource"] == "fakeResource"
144+
assert it["type"] == "fakeType"
145+
assert it["trace_id"] instanceof Number
146+
assert it["span_id"] instanceof Number
147+
assert it["parent_id"] instanceof Number
148+
assert it["start"] instanceof Number
149+
assert it["duration"] instanceof Number
150+
assert it["error"] == 0
151+
assert it["metrics"] instanceof Map
152+
assert it["meta"] instanceof Map
153+
}
154+
}
111155
}

0 commit comments

Comments
 (0)