Skip to content

Commit 8ce88fd

Browse files
committed
writing unit tests
1 parent 8d49759 commit 8ce88fd

File tree

5 files changed

+99
-31
lines changed

5 files changed

+99
-31
lines changed

dd-java-agent/instrumentation/armeria/armeria-grpc-0.84/src/main/java/datadog/trace/instrumentation/armeria/grpc/client/GrpcInjectAdapter.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ public final class GrpcInjectAdapter implements CarrierSetter<Metadata> {
1212
@Override
1313
public void set(final Metadata carrier, final String key, final String value) {
1414
Metadata.Key<String> metadataKey = Metadata.Key.of(key, Metadata.ASCII_STRING_MARSHALLER);
15-
if(!key.startsWith("ot-baggage-*") || !carrier.containsKey(metadataKey)){
15+
if (!key.startsWith("ot-baggage-") || !carrier.containsKey(metadataKey)) {
1616
carrier.put(metadataKey, value);
1717
}
1818
}
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
import datadog.trace.agent.test.naming.VersionedNamingTestBase
2+
import io.grpc.Metadata
3+
import static datadog.trace.instrumentation.grpc.client.GrpcInjectAdapter.SETTER
4+
5+
class GrpcInjectAdapterTest extends VersionedNamingTestBase {
6+
def "carrier set is called only once per unique ot-baggage-* key"() {
7+
setup:
8+
def carrier = new Metadata()
9+
10+
def baggage = [
11+
["ot-baggage-foo", "v1"],
12+
["ot-baggage-foo", "v2"],
13+
["ot-baggage-bar", "v3"]
14+
]
15+
16+
when:
17+
baggage.each { pair ->
18+
def (key, value) = pair
19+
SETTER.set(carrier, key, value)
20+
}
21+
22+
then:
23+
carrier.headerCount() == 2
24+
carrier.get(getKey("ot-baggage-foo")) == "v1" // first value wins
25+
carrier.get(getKey("ot-baggage-bar")) == "v3"
26+
}
27+
28+
Metadata.Key<String> getKey(String key){
29+
Metadata.Key.of(key, Metadata.ASCII_STRING_MARSHALLER)
30+
}
31+
32+
33+
@Override
34+
int version() {
35+
return 0
36+
}
37+
38+
@Override
39+
String service() {
40+
return null
41+
}
42+
43+
@Override
44+
String operation() {
45+
return null
46+
}
47+
}

dd-java-agent/instrumentation/grpc-1.5/src/main/java/datadog/trace/instrumentation/grpc/client/GrpcInjectAdapter.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,9 @@ public final class GrpcInjectAdapter implements CarrierSetter<Metadata> {
1010

1111
@Override
1212
public void set(final Metadata carrier, final String key, final String value) {
13-
carrier.put(Metadata.Key.of(key, Metadata.ASCII_STRING_MARSHALLER), value);
13+
Metadata.Key<String> metadataKey = Metadata.Key.of(key, Metadata.ASCII_STRING_MARSHALLER);
14+
if (!key.startsWith("ot-baggage-") || !carrier.containsKey(metadataKey)) {
15+
carrier.put(metadataKey, value);
16+
}
1417
}
1518
}
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
import datadog.trace.agent.test.naming.VersionedNamingTestBase
2+
import io.grpc.Metadata
3+
import static datadog.trace.instrumentation.grpc.client.GrpcInjectAdapter.SETTER
4+
5+
class GrpcInjectAdapterTest extends VersionedNamingTestBase {
6+
def "carrier set is called only once per unique ot-baggage-* key"() {
7+
setup:
8+
def carrier = new Metadata()
9+
10+
def baggage = [
11+
["ot-baggage-foo", "v1"],
12+
["ot-baggage-foo", "v2"],
13+
["ot-baggage-bar", "v3"]
14+
]
15+
16+
when:
17+
baggage.each { pair ->
18+
def (key, value) = pair
19+
SETTER.set(carrier, key, value)
20+
}
21+
22+
then:
23+
carrier.headerCount() == 2
24+
carrier.get(getKey("ot-baggage-foo")) == "v1" // first value wins
25+
carrier.get(getKey("ot-baggage-bar")) == "v3"
26+
}
27+
28+
Metadata.Key<String> getKey(String key){
29+
Metadata.Key.of(key, Metadata.ASCII_STRING_MARSHALLER)
30+
}
31+
32+
33+
@Override
34+
int version() {
35+
return 0
36+
}
37+
38+
@Override
39+
String service() {
40+
return null
41+
}
42+
43+
@Override
44+
String operation() {
45+
return null
46+
}
47+
}

dd-trace-core/src/test/groovy/datadog/trace/core/propagation/HttpInjectorTest.groovy

Lines changed: 0 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -218,35 +218,6 @@ class HttpInjectorTest extends DDCoreSpecification {
218218
style << [DATADOG, TRACECONTEXT, HAYSTACK]
219219
}
220220

221-
def "inject ot-baggage-* in http headers only once"() {
222-
setup:
223-
Config config = Mock(Config)
224-
def baggage = [
225-
'k1': 'v1',
226-
'k2': 'v2',
227-
]
228-
def mapping = baggage.keySet().collectEntries { [(it):it]} as Map<String, String>
229-
def injector = HttpCodec.createInjector(config, [DATADOG, TRACECONTEXT].toSet(), mapping)
230-
def traceId = DDTraceId.ONE
231-
def spanId = 2
232-
def writer = new ListWriter()
233-
def tracer = tracerBuilder().writer(writer).build()
234-
final DDSpanContext mockedContext = mockedContext(tracer, traceId, spanId, UNSET, null, baggage)
235-
final Map<String, String> carrier = Mock()
236-
mockedContext.beginEndToEnd()
237-
238-
when:
239-
injector.inject(mockedContext, carrier, MapSetter.INSTANCE)
240-
241-
then:
242-
1 * carrier.put('k1', 'v1')
243-
1 * carrier.put('k2', 'v2')
244-
1 * carrier.put('ot-baggage-t0', "${(long) (mockedContext.endToEndStartTime / 1000000L)}")
245-
246-
cleanup:
247-
tracer.close()
248-
}
249-
250221
static DDSpanContext mockedContext(CoreTracer tracer, DDTraceId traceId, long spanId, int samplingPriority, String origin, Map<String, String> baggage) {
251222
return new DDSpanContext(
252223
traceId,

0 commit comments

Comments
 (0)