From fd2989ae8f788baab4f1939b2178f2302939367d Mon Sep 17 00:00:00 2001 From: Tobias Stadler Date: Fri, 29 Jan 2021 19:57:42 +0100 Subject: [PATCH] Do not strip leading zeros from trace IDs and span IDs (#259) * Do not strip leading zeros from trace IDs Signed-off-by: Tobias Stadler * Do not strip leading zeros from span IDs Signed-off-by: Tobias Stadler * high should only be used if it is non zero Signed-off-by: Tobias Stadler --- src/jaegertracing/SpanContext.h | 5 +++-- src/jaegertracing/SpanContextTest.cpp | 2 +- src/jaegertracing/TraceID.h | 6 +++--- src/jaegertracing/TraceIDTest.cpp | 11 +++++++++-- 4 files changed, 16 insertions(+), 8 deletions(-) diff --git a/src/jaegertracing/SpanContext.h b/src/jaegertracing/SpanContext.h index 295a7e91..4055e4e5 100644 --- a/src/jaegertracing/SpanContext.h +++ b/src/jaegertracing/SpanContext.h @@ -156,8 +156,9 @@ class SpanContext : public opentracing::SpanContext { void print(Stream& out) const { _traceID.print(out); - out << ':' << std::hex << _spanID << ':' << std::hex << _parentID << ':' - << std::hex << static_cast(_flags); + out << ':' << std::setw(16) << std::setfill('0') << std::hex << _spanID + << ':' << std::setw(16) << std::setfill('0') << std::hex << _parentID + << ':' << std::hex << static_cast(_flags); } void ForeachBaggageItem( diff --git a/src/jaegertracing/SpanContextTest.cpp b/src/jaegertracing/SpanContextTest.cpp index 6eef6b3c..bcb4b177 100644 --- a/src/jaegertracing/SpanContextTest.cpp +++ b/src/jaegertracing/SpanContextTest.cpp @@ -78,7 +78,7 @@ TEST(SpanContext, testFormatting) SpanContext spanContext(TraceID(255, 255), 0, 0, 0, SpanContext::StrMap()); std::ostringstream oss; oss << spanContext; - ASSERT_EQ("ff00000000000000ff:0:0:0", oss.str()); + ASSERT_EQ("00000000000000ff00000000000000ff:0000000000000000:0000000000000000:0", oss.str()); } TEST(SpanContext, testBaggage) diff --git a/src/jaegertracing/TraceID.h b/src/jaegertracing/TraceID.h index 867f0c29..5b9c5a95 100644 --- a/src/jaegertracing/TraceID.h +++ b/src/jaegertracing/TraceID.h @@ -44,11 +44,11 @@ class TraceID { void print(Stream& out) const { if (_high == 0) { - out << std::hex << _low; + out << std::setw(16) << std::setfill('0') << std::hex << _low; } else { - out << std::hex << _high << std::setw(16) << std::setfill('0') - << std::hex << _low; + out << std::setw(16) << std::setfill('0') << std::hex << _high + << std::setw(16) << std::setfill('0') << std::hex << _low; } } diff --git a/src/jaegertracing/TraceIDTest.cpp b/src/jaegertracing/TraceIDTest.cpp index ece21cfe..136e6e5f 100644 --- a/src/jaegertracing/TraceIDTest.cpp +++ b/src/jaegertracing/TraceIDTest.cpp @@ -20,11 +20,18 @@ namespace jaegertracing { -TEST(TraceID, testPrint) +TEST(TraceID, testPrintWithouthHigh) { std::ostringstream oss; oss << TraceID(0, 10); - ASSERT_EQ("a", oss.str()); + ASSERT_EQ("000000000000000a", oss.str()); +} + +TEST(TraceID, testPrintWithHigh) +{ + std::ostringstream oss; + oss << TraceID(1, 10); + ASSERT_EQ("0000000000000001000000000000000a", oss.str()); } } // namespace jaegertracing