Skip to content

Commit cee3751

Browse files
committed
feat(internal-api): Add Baggage unit tests
1 parent 341ca92 commit cee3751

File tree

2 files changed

+88
-2
lines changed

2 files changed

+88
-2
lines changed

internal-api/build.gradle

-2
Original file line numberDiff line numberDiff line change
@@ -181,8 +181,6 @@ excludedClassesCoverage += [
181181
"datadog.trace.api.iast.Taintable",
182182
"datadog.trace.api.Stateful",
183183
"datadog.trace.api.Stateful.1",
184-
// BaggageContext class tested in BaggagePropagatorTest in dd-trace-core
185-
'datadog.trace.bootstrap.instrumentation.api.BaggageContext',
186184
// a stub
187185
"datadog.trace.bootstrap.instrumentation.api.ProfilingContextIntegration",
188186
"datadog.trace.bootstrap.instrumentation.api.ProfilingContextIntegration.NoOp",
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
1+
package datadog.trace.bootstrap.instrumentation.api
2+
3+
import datadog.context.Context
4+
import spock.lang.Specification
5+
6+
class BaggageTest extends Specification {
7+
def 'test empty baggage'() {
8+
when:
9+
def baggage = Baggage.empty()
10+
11+
then:
12+
baggage.asMap().isEmpty()
13+
baggage.w3cHeader != null
14+
baggage.w3cHeader.isEmpty()
15+
16+
when:
17+
baggage.addItem('key', 'value')
18+
19+
then:
20+
baggage.w3cHeader == null
21+
}
22+
23+
def 'test baggage creation'() {
24+
setup:
25+
def items = ['key1': 'value1', 'key2': 'value2']
26+
def header = 'key1=value1,key2=value2'
27+
28+
when:
29+
def baggage = Baggage.create(items)
30+
31+
then:
32+
baggage.asMap() == items
33+
baggage.w3cHeader == null
34+
35+
when:
36+
baggage = Baggage.create(items, header)
37+
38+
then:
39+
baggage.asMap() == items
40+
baggage.w3cHeader == header
41+
}
42+
43+
def 'test baggage header'() {
44+
setup:
45+
def items = ['key1': 'value1', 'key2': 'value2']
46+
def header = 'key1=value1,key2=value2'
47+
def baggage = Baggage.create(items, header)
48+
49+
when:
50+
baggage.removeItem('missingKey')
51+
52+
then: 'header is preserved'
53+
baggage.w3cHeader == header
54+
55+
when:
56+
baggage.removeItem('key2')
57+
58+
then: 'header is out of sync'
59+
baggage.w3cHeader == null
60+
61+
when:
62+
baggage.w3cHeader = 'key1=value1'
63+
64+
then: 'header is forced'
65+
baggage.w3cHeader == 'key1=value1'
66+
67+
when:
68+
baggage.addItem('key3', 'value3')
69+
70+
then: 'header is out of sync'
71+
baggage.w3cHeader == null
72+
}
73+
74+
def 'test context storage'() {
75+
given:
76+
def baggage = Baggage.empty()
77+
def context = Context.root()
78+
79+
expect:
80+
Baggage.fromContext(context) == null
81+
82+
when:
83+
context = context.with(baggage)
84+
85+
then:
86+
Baggage.fromContext(context) == baggage
87+
}
88+
}

0 commit comments

Comments
 (0)