Serialize the entire trace flags not only the sample bit (#1774)

* Serialize the entire trace flags not only the sample bit

Signed-off-by: Bogdan Drutu <bogdandrutu@gmail.com>

* Add test for more than just sampling bit in the context

Signed-off-by: Bogdan Drutu <bogdandrutu@gmail.com>

* Update api/src/test/java/io/opentelemetry/trace/propagation/HttpTraceContextTest.java

Co-authored-by: Anuraag Agrawal <anuraaga@gmail.com>
This commit is contained in:
Bogdan Drutu 2020-10-22 21:33:41 -07:00 committed by GitHub
parent 23444d6e5c
commit 185d10e395
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 12 additions and 2 deletions

View File

@ -120,8 +120,7 @@ public abstract class SpanContext {
public abstract byte getTraceFlags();
public void copyTraceFlagsHexTo(char[] dest, int destOffset) {
dest[destOffset] = '0';
dest[destOffset + 1] = isSampled() ? '1' : '0';
BigendianEncoding.byteToBase16String(getTraceFlags(), dest, destOffset);
}
/**

View File

@ -177,6 +177,17 @@ class HttpTraceContextTest {
TRACE_ID_BASE16, SPAN_ID_BASE16, SAMPLED_TRACE_OPTIONS, TRACE_STATE_DEFAULT));
}
@Test
void extractAndInject_MoreFlags() {
String traceParent = "00-" + TRACE_ID_BASE16 + "-" + SPAN_ID_BASE16 + "-03";
Map<String, String> extractCarrier = new LinkedHashMap<>();
extractCarrier.put(TRACE_PARENT, traceParent);
Context context = httpTraceContext.extract(Context.current(), extractCarrier, getter);
Map<String, String> injectCarrier = new LinkedHashMap<>();
httpTraceContext.inject(context, injectCarrier, setter);
assertThat(extractCarrier).isEqualTo(injectCarrier);
}
@Test
void extract_NotSampledContext() {
Map<String, String> carrier = new LinkedHashMap<>();