Skip to content

Commit b49754b

Browse files
committed
cleaned up code and added additional test case
1 parent 42fa0f7 commit b49754b

File tree

2 files changed

+32
-7
lines changed

2 files changed

+32
-7
lines changed

aws-xray-propagator/src/main/java/io/opentelemetry/contrib/awsxray/propagator/AwsXrayPropagator.java

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,7 @@ public final class AwsXrayPropagator implements TextMapPropagator {
7777
private static final int LINEAGE_MAX_LOOP_COUNTER = 32767;
7878
private static final int LINEAGE_MAX_REQUEST_COUNTER = 255;
7979
private static final int LINEAGE_MIN_COUNTER = 0;
80+
private static final String INVALID_LINEAGE = "-1:11111111:0";
8081

8182
private static final List<String> FIELDS = Collections.singletonList(TRACE_HEADER_KEY);
8283

@@ -331,14 +332,14 @@ private static String parseLineageV2Header(String xrayLineageHeader) {
331332
if (xrayLineageHeader.length() < LINEAGE_MIN_LENGTH
332333
|| xrayLineageHeader.length() > LINEAGE_MAX_LENGTH
333334
|| numOfDelimiters != 2) {
334-
return AwsXrayPropagator.getInvalidLineageV2Header();
335+
return INVALID_LINEAGE;
335336
}
336337

337338
return xrayLineageHeader;
338339
}
339340

340341
private static boolean isValidLineage(String key) {
341-
String[] split = key.split(":");
342+
String[] split = key.split(String.valueOf(LINEAGE_DELIMITER));
342343
String hash = split[1];
343344
int loopCounter = parseIntOrReturnNegative(split[0]);
344345
int requestCounter = parseIntOrReturnNegative(split[2]);
@@ -352,10 +353,6 @@ private static boolean isValidLineage(String key) {
352353
return isHashValid && isValidRequestCounter && isValidLoopCounter;
353354
}
354355

355-
private static String getInvalidLineageV2Header() {
356-
return "-1:11111111:0";
357-
}
358-
359356
@Nullable
360357
private static Boolean parseTraceFlag(String xraySampledFlag) {
361358
if (xraySampledFlag.length() != SAMPLED_FLAG_LENGTH) {

aws-xray-propagator/src/test/java/io/opentelemetry/contrib/awsxray/propagator/AwsXrayPropagatorTest.java

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -230,6 +230,32 @@ void extract_WithLineage() {
230230
.isEqualTo("32767:e65a2c4d:255");
231231
}
232232

233+
@Test
234+
void extract_AddedLineagePreservesExistingBaggage() {
235+
Baggage expectedBaggage =
236+
Baggage.builder()
237+
.put("cat", "meow")
238+
.put("dog", "bark")
239+
.put("Lineage", "32767:e65a2c4d:255")
240+
.build();
241+
Map<String, String> carrier = new LinkedHashMap<>();
242+
carrier.put(
243+
TRACE_HEADER_KEY,
244+
"Root=1-8a3c60f7-d188f8fa79d48a391a778fa6;Parent=53995c3f42cd8ad8;Sampled=1;Lineage=32767:e65a2c4d:255");
245+
246+
Context context =
247+
subject.extract(
248+
Context.current().with(Baggage.builder().put("cat", "meow").put("dog", "bark").build()),
249+
carrier,
250+
GETTER);
251+
assertThat(getSpanContext(context))
252+
.isEqualTo(
253+
SpanContext.createFromRemoteParent(
254+
TRACE_ID, SPAN_ID, TraceFlags.getSampled(), TraceState.getDefault()));
255+
256+
assertThat(Baggage.fromContext(context).asMap()).isEqualTo(expectedBaggage.asMap());
257+
}
258+
233259
@Test
234260
void extract_inject_ValidTraceHeader() {
235261
Map<String, String> carrier1 = new LinkedHashMap<>();
@@ -395,7 +421,9 @@ static Stream<Arguments> providesBadLineages() {
395421
Arguments.of(":fbadc0de:13"),
396422
Arguments.of("1:fbadc0de:"),
397423
Arguments.of("1::1"),
398-
Arguments.of("65535:fbadc0de:255"));
424+
Arguments.of("65535:fbadc0de:255"),
425+
Arguments.of("-213:e65a2c4d:255"),
426+
Arguments.of("213:e65a2c4d:-22"));
399427
}
400428

401429
@Test

0 commit comments

Comments
 (0)