Skip to content

Commit d4a6150

Browse files
amcghieashishagg
authored andcommitted
Fix LongIdGenerator not being properly supported (#106)
* Replace hardcoded spanId generation with the "idGenerator" provided in "tracer" * Stop converting traceId, spanId and parentId to UUID's
1 parent 45fd4a2 commit d4a6150

File tree

4 files changed

+64
-16
lines changed

4 files changed

+64
-16
lines changed

core/src/main/java/com/expedia/www/haystack/client/Tracer.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -324,7 +324,7 @@ protected SpanContext createDependentContext() {
324324
}
325325

326326
return createContext(parent.getContext().getTraceId(),
327-
UUID.randomUUID(),
327+
tracer.idGenerator.generate(),
328328
parent.getContext().getSpanId(),
329329
baggage);
330330
}

core/src/main/java/com/expedia/www/haystack/client/propagation/TextMapPropagator.java

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -98,10 +98,7 @@ public SpanContext extract(TextMap carrier) {
9898
return null;
9999
}
100100

101-
SpanContext context = new SpanContext(UUID.fromString(traceId),
102-
UUID.fromString(spanId),
103-
parentId == null ? null : UUID.fromString(parentId),
104-
true);
101+
SpanContext context = new SpanContext(traceId, spanId, parentId, true);
105102
return context.addBaggage(baggage);
106103
}
107104

core/src/test/java/com/expedia/www/haystack/client/TracerPropagationTest.java

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ public class TracerPropagationTest {
3636
private Tracer tracer;
3737

3838
@Before
39-
public void setUp() throws Exception {
39+
public void setUp() {
4040
tracer = new Tracer.Builder(new NoopMetricsRegistry(), "TestTracer", new NoopDispatcher()).build();
4141
}
4242

@@ -46,7 +46,7 @@ public void testInjectInvalidFormat() {
4646
UUID spanId = UUID.randomUUID();
4747
UUID parentId = UUID.randomUUID();
4848

49-
String carrier = new String();
49+
String carrier = "";
5050

5151
SpanContext context = new SpanContext(traceId, spanId, parentId).addBaggage("TEST", "TEXT");
5252

@@ -112,9 +112,9 @@ public void testExtract() {
112112

113113
SpanContext context = tracer.extract(Format.Builtin.TEXT_MAP, carrier);
114114

115-
Assert.assertEquals(context.getTraceId(), traceId);
116-
Assert.assertEquals(context.getSpanId(), spanId);
117-
Assert.assertEquals(context.getParentId(), parentId);
115+
Assert.assertEquals(context.getTraceId(), traceId.toString());
116+
Assert.assertEquals(context.getSpanId(), spanId.toString());
117+
Assert.assertEquals(context.getParentId(), parentId.toString());
118118
Assert.assertEquals(context.getBaggage().size(), 1);
119119
Assert.assertEquals(context.getBaggageItem("TEST"), "TEXT");
120120
}
@@ -137,9 +137,9 @@ public void testExtractIgnoreUnknowns() {
137137

138138
SpanContext context = tracer.extract(Format.Builtin.HTTP_HEADERS, carrier);
139139

140-
Assert.assertEquals(context.getTraceId(), traceId);
141-
Assert.assertEquals(context.getSpanId(), spanId);
142-
Assert.assertEquals(context.getParentId(), parentId);
140+
Assert.assertEquals(context.getTraceId(), traceId.toString());
141+
Assert.assertEquals(context.getSpanId(), spanId.toString());
142+
Assert.assertEquals(context.getParentId(), parentId.toString());
143143
Assert.assertEquals(context.getBaggage().size(), 0);
144144
}
145145

@@ -176,9 +176,9 @@ public void testExtractURLEncoded() {
176176

177177
SpanContext context = tracer.extract(Format.Builtin.HTTP_HEADERS, carrier);
178178

179-
Assert.assertEquals(context.getTraceId(), traceId);
180-
Assert.assertEquals(context.getSpanId(), spanId);
181-
Assert.assertEquals(context.getParentId(), parentId);
179+
Assert.assertEquals(context.getTraceId(), traceId.toString());
180+
Assert.assertEquals(context.getSpanId(), spanId.toString());
181+
Assert.assertEquals(context.getParentId(), parentId.toString());
182182
Assert.assertEquals(context.getBaggage().size(), 2);
183183
Assert.assertEquals(context.getBaggageItem("TEST"), "!@##*^ %^&&(*");
184184
Assert.assertEquals(context.getBaggageItem("!@##*^ %^&&(*"), "TEST");

core/src/test/java/com/expedia/www/haystack/client/propagation/TextMapPropagatorTest.java

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import org.junit.Test;
77

88
public class TextMapPropagatorTest {
9+
910
@Test
1011
public void propagatorExtractsSpanContextIdentitiesAsExpected() {
1112
final KeyConvention keyConvention = new DefaultKeyConvention();
@@ -26,6 +27,56 @@ public void propagatorExtractsSpanContextIdentitiesAsExpected() {
2627
"3a0bc1c1-504f-4f5d-907b-9b4522453bcf", spanContext.getParentId().toString());
2728
}
2829

30+
@Test
31+
public void propagatorExtractsNonUUIDSpanContextIdentitiesAsExpected() {
32+
final KeyConvention keyConvention = new DefaultKeyConvention();
33+
final TextMapPropagator propagator = new TextMapPropagator.Builder().withKeyConvention(keyConvention).build();
34+
final MapBackedTextMap carrier = new MapBackedTextMap();
35+
36+
carrier.put(keyConvention.traceIdKey(), "1234");
37+
carrier.put(keyConvention.spanIdKey(), "5678");
38+
carrier.put(keyConvention.parentIdKey(), "9012");
39+
40+
final SpanContext spanContext = propagator.extract(carrier);
41+
42+
Assert.assertEquals("trace-id was not extracted correctly",
43+
"1234", spanContext.getTraceId().toString());
44+
Assert.assertEquals("span-id was not extracted correctly",
45+
"5678", spanContext.getSpanId().toString());
46+
Assert.assertEquals("parent-id was not extracted correctly",
47+
"9012", spanContext.getParentId().toString());
48+
}
49+
50+
@Test
51+
public void nullSpanContextIsReturnedIfTraceIdIsNull() {
52+
final KeyConvention keyConvention = new DefaultKeyConvention();
53+
final TextMapPropagator propagator = new TextMapPropagator.Builder().withKeyConvention(keyConvention).build();
54+
final MapBackedTextMap carrier = new MapBackedTextMap();
55+
56+
carrier.put(keyConvention.traceIdKey(), null);
57+
carrier.put(keyConvention.spanIdKey(), "5678");
58+
carrier.put(keyConvention.parentIdKey(), "9012");
59+
60+
final SpanContext spanContext = propagator.extract(carrier);
61+
62+
Assert.assertNull("Expected a null spanContext", spanContext);
63+
}
64+
65+
@Test
66+
public void nullSpanContextIsReturnedIfSpanIdIsNull() {
67+
final KeyConvention keyConvention = new DefaultKeyConvention();
68+
final TextMapPropagator propagator = new TextMapPropagator.Builder().withKeyConvention(keyConvention).build();
69+
final MapBackedTextMap carrier = new MapBackedTextMap();
70+
71+
carrier.put(keyConvention.traceIdKey(), "1234");
72+
carrier.put(keyConvention.spanIdKey(), null);
73+
carrier.put(keyConvention.parentIdKey(), "9012");
74+
75+
final SpanContext spanContext = propagator.extract(carrier);
76+
77+
Assert.assertNull("Expected a null spanContext", spanContext);
78+
}
79+
2980
@Test
3081
public void propagatorExtractsSpanContextIdentitiesAsExpectedRegardlessOfCase() {
3182
final KeyConvention keyConvention = new DefaultKeyConvention();

0 commit comments

Comments
 (0)