From 27040e6d5abef7b5d797c351363ad659ddcf951b Mon Sep 17 00:00:00 2001 From: Nadia Ciobanu Date: Thu, 20 Aug 2020 22:24:51 +0000 Subject: [PATCH 01/10] Set ids in Span constructor --- .../opentelemetry/trace/span_context.h | 9 +++++++ sdk/src/trace/BUILD | 1 + sdk/src/trace/span.cc | 26 ++++++++++++++----- sdk/src/trace/span.h | 3 ++- sdk/src/trace/tracer.cc | 9 +++++-- 5 files changed, 39 insertions(+), 9 deletions(-) diff --git a/api/include/opentelemetry/trace/span_context.h b/api/include/opentelemetry/trace/span_context.h index 57b6a72e2e..bc629b9cc8 100644 --- a/api/include/opentelemetry/trace/span_context.h +++ b/api/include/opentelemetry/trace/span_context.h @@ -43,6 +43,9 @@ class SpanContext final : trace_flags_(trace_api::TraceFlags((uint8_t)sampled_flag)), remote_parent_(has_remote_parent){}; + // Since this class is not fully implemented, all class instances are invalid. + bool IsValid() const noexcept { return false; } + // @returns the trace_flags associated with this span_context const trace_api::TraceFlags &trace_flags() const noexcept { return trace_flags_; } @@ -52,7 +55,13 @@ class SpanContext final // @returns whether this context has a remote parent or not bool HasRemoteParent() const noexcept { return remote_parent_; } + const TraceId &trace_id() const noexcept { return trace_id_; } + + const SpanId &span_id() const noexcept { return span_id_; } + private: + TraceId trace_id_; + SpanId span_id_; const trace_api::TraceFlags trace_flags_; const bool remote_parent_ = false; }; diff --git a/sdk/src/trace/BUILD b/sdk/src/trace/BUILD index 49699e4c44..221066076b 100644 --- a/sdk/src/trace/BUILD +++ b/sdk/src/trace/BUILD @@ -22,5 +22,6 @@ cc_library( deps = [ "//api", "//sdk:headers", + "//sdk/src/common:random", ], ) diff --git a/sdk/src/trace/span.cc b/sdk/src/trace/span.cc index 0e465edd5a..d8aaad4230 100644 --- a/sdk/src/trace/span.cc +++ b/sdk/src/trace/span.cc @@ -1,4 +1,5 @@ #include "src/trace/span.h" +#include "src/trace/span_utils.h" #include "opentelemetry/context/runtime_context.h" #include "opentelemetry/version.h" @@ -43,7 +44,8 @@ Span::Span(std::shared_ptr &&tracer, std::shared_ptr processor, nostd::string_view name, const trace_api::KeyValueIterable &attributes, - const trace_api::StartSpanOptions &options) noexcept + const trace_api::StartSpanOptions &options, + const trace_api::SpanContext &parent_span_context) noexcept : tracer_{std::move(tracer)}, processor_{processor}, recordable_{processor_->MakeRecordable()}, @@ -59,10 +61,21 @@ Span::Span(std::shared_ptr &&tracer, } recordable_->SetName(name); - attributes.ForEachKeyValue([&](nostd::string_view key, common::AttributeValue value) noexcept { - recordable_->SetAttribute(key, value); - return true; - }); + if (parent_span_context.IsValid()) + { + recordable_->SetIds(parent_span_context.trace_id(), GenerateRandomSpanId(), + parent_span_context.span_id()); + } + else + { + recordable_->SetIds(GenerateRandomTraceId(), GenerateRandomSpanId(), GenerateRandomSpanId()); + } + + attributes.ForEachKeyValue( + [&](nostd::string_view key, opentelemetry::common::AttributeValue value) noexcept { + recordable_->SetAttribute(key, value); + return true; + }); recordable_->SetStartTime(NowOr(options.start_system_time)); start_steady_time = NowOr(options.start_steady_time); @@ -74,7 +87,8 @@ Span::~Span() End(); } -void Span::SetAttribute(nostd::string_view key, const common::AttributeValue &value) noexcept +void Span::SetAttribute(nostd::string_view key, + const opentelemetry::common::AttributeValue &value) noexcept { std::lock_guard lock_guard{mu_}; diff --git a/sdk/src/trace/span.h b/sdk/src/trace/span.h index f307aa5c53..24af0256e5 100644 --- a/sdk/src/trace/span.h +++ b/sdk/src/trace/span.h @@ -19,7 +19,8 @@ class Span final : public trace_api::Span std::shared_ptr processor, nostd::string_view name, const trace_api::KeyValueIterable &attributes, - const trace_api::StartSpanOptions &options) noexcept; + const trace_api::StartSpanOptions &options, + const trace_api::SpanContext &parent_span_context) noexcept; ~Span() override; diff --git a/sdk/src/trace/tracer.cc b/sdk/src/trace/tracer.cc index 0221d35003..3923a47161 100644 --- a/sdk/src/trace/tracer.cc +++ b/sdk/src/trace/tracer.cc @@ -47,8 +47,13 @@ nostd::shared_ptr Tracer::StartSpan( } else { - auto span = nostd::shared_ptr{new (std::nothrow) Span{ - this->shared_from_this(), processor_.load(), name, attributes, options}}; + // TODO: Get parent span context from current context. For now we assume all spans + // have no parent, and pass an invalid parent span context to the Span constructor. + const trace_api::SpanContext kInvalidParentSpanContext(false, false); + + auto span = nostd::shared_ptr{ + new (std::nothrow) Span{this->shared_from_this(), processor_.load(), name, attributes, + options, kInvalidParentSpanContext}}; span->SetToken( nostd::unique_ptr(new context::Token(context::RuntimeContext::Attach( From 5721288883ec431de61859e13e803073201fcf8b Mon Sep 17 00:00:00 2001 From: Nadia Ciobanu Date: Thu, 20 Aug 2020 22:25:48 +0000 Subject: [PATCH 02/10] Add id generation --- sdk/src/trace/span_utils.h | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 sdk/src/trace/span_utils.h diff --git a/sdk/src/trace/span_utils.h b/sdk/src/trace/span_utils.h new file mode 100644 index 0000000000..61c2d3411b --- /dev/null +++ b/sdk/src/trace/span_utils.h @@ -0,0 +1,28 @@ +#include "opentelemetry/version.h" +#include "src/common/random.h" + +OPENTELEMETRY_BEGIN_NAMESPACE +namespace sdk +{ +namespace trace +{ +namespace trace_api = opentelemetry::trace; + +// Helper function to generate random trace id. +trace_api::TraceId GenerateRandomTraceId() +{ + uint8_t trace_id_buf[trace_api::TraceId::kSize]; + sdk::common::Random::GenerateRandomBuffer(trace_id_buf); + return trace_api::TraceId(trace_id_buf); +} + +// Helper function to generate random span id. +trace_api::SpanId GenerateRandomSpanId() +{ + uint8_t span_id_buf[trace_api::SpanId::kSize]; + sdk::common::Random::GenerateRandomBuffer(span_id_buf); + return trace_api::SpanId(span_id_buf); +} +} // namespace trace +} // namespace sdk +OPENTELEMETRY_END_NAMESPACE From 3b5bc2db67045af4139295e1757284b4ec179957 Mon Sep 17 00:00:00 2001 From: Nadia Ciobanu Date: Thu, 20 Aug 2020 22:49:14 +0000 Subject: [PATCH 03/10] Add test --- sdk/src/trace/span.cc | 18 +++++++++++++++++- sdk/src/trace/span_utils.h | 28 ---------------------------- sdk/test/trace/tracer_test.cc | 5 +++++ 3 files changed, 22 insertions(+), 29 deletions(-) delete mode 100644 sdk/src/trace/span_utils.h diff --git a/sdk/src/trace/span.cc b/sdk/src/trace/span.cc index d8aaad4230..c360fed09e 100644 --- a/sdk/src/trace/span.cc +++ b/sdk/src/trace/span.cc @@ -1,5 +1,5 @@ #include "src/trace/span.h" -#include "src/trace/span_utils.h" +#include "src/common/random.h" #include "opentelemetry/context/runtime_context.h" #include "opentelemetry/version.h" @@ -40,6 +40,22 @@ SteadyTimestamp NowOr(const SteadyTimestamp &steady) } } // namespace +// Helper function to generate random trace id. +trace_api::TraceId GenerateRandomTraceId() +{ + uint8_t trace_id_buf[trace_api::TraceId::kSize]; + sdk::common::Random::GenerateRandomBuffer(trace_id_buf); + return trace_api::TraceId(trace_id_buf); +} + +// Helper function to generate random span id. +trace_api::SpanId GenerateRandomSpanId() +{ + uint8_t span_id_buf[trace_api::SpanId::kSize]; + sdk::common::Random::GenerateRandomBuffer(span_id_buf); + return trace_api::SpanId(span_id_buf); +} + Span::Span(std::shared_ptr &&tracer, std::shared_ptr processor, nostd::string_view name, diff --git a/sdk/src/trace/span_utils.h b/sdk/src/trace/span_utils.h deleted file mode 100644 index 61c2d3411b..0000000000 --- a/sdk/src/trace/span_utils.h +++ /dev/null @@ -1,28 +0,0 @@ -#include "opentelemetry/version.h" -#include "src/common/random.h" - -OPENTELEMETRY_BEGIN_NAMESPACE -namespace sdk -{ -namespace trace -{ -namespace trace_api = opentelemetry::trace; - -// Helper function to generate random trace id. -trace_api::TraceId GenerateRandomTraceId() -{ - uint8_t trace_id_buf[trace_api::TraceId::kSize]; - sdk::common::Random::GenerateRandomBuffer(trace_id_buf); - return trace_api::TraceId(trace_id_buf); -} - -// Helper function to generate random span id. -trace_api::SpanId GenerateRandomSpanId() -{ - uint8_t span_id_buf[trace_api::SpanId::kSize]; - sdk::common::Random::GenerateRandomBuffer(span_id_buf); - return trace_api::SpanId(span_id_buf); -} -} // namespace trace -} // namespace sdk -OPENTELEMETRY_END_NAMESPACE diff --git a/sdk/test/trace/tracer_test.cc b/sdk/test/trace/tracer_test.cc index aebab0de3d..fc1be74818 100644 --- a/sdk/test/trace/tracer_test.cc +++ b/sdk/test/trace/tracer_test.cc @@ -111,10 +111,15 @@ TEST(Tracer, ToMockSpanExporter) ASSERT_EQ(1, spans_received->size()); ASSERT_EQ("span 2", spans_received->at(0)->GetName()); + ASSERT_TRUE(spans_received->at(0)->GetTraceId().IsValid()); + ASSERT_TRUE(spans_received->at(0)->GetSpanId().IsValid()); span_first->End(); ASSERT_EQ(2, spans_received->size()); + ASSERT_EQ("span 1", spans_received->at(1)->GetName()); + ASSERT_TRUE(spans_received->at(1)->GetTraceId().IsValid()); + ASSERT_TRUE(spans_received->at(1)->GetSpanId().IsValid()); } TEST(Tracer, StartSpanSampleOn) From 55f3698a5ee82abde7735a9ff4ae846d8d6f2385 Mon Sep 17 00:00:00 2001 From: Nadia Ciobanu Date: Thu, 20 Aug 2020 22:58:48 +0000 Subject: [PATCH 04/10] Add SpanContext test --- api/test/trace/span_context_test.cc | 6 ++++++ sdk/src/trace/span.cc | 1 + 2 files changed, 7 insertions(+) diff --git a/api/test/trace/span_context_test.cc b/api/test/trace/span_context_test.cc index 661bba00bc..4d3cbc3d68 100644 --- a/api/test/trace/span_context_test.cc +++ b/api/test/trace/span_context_test.cc @@ -36,3 +36,9 @@ TEST(SpanContextTest, TraceFlags) ASSERT_EQ(s2.trace_flags().flags(), 0); } + +TEST(SpanContextTest, IsValid) +{ + SpanContext s1(false, false); + ASSERT_FALSE(s1.IsValid()); +} diff --git a/sdk/src/trace/span.cc b/sdk/src/trace/span.cc index c360fed09e..7e7476a746 100644 --- a/sdk/src/trace/span.cc +++ b/sdk/src/trace/span.cc @@ -86,6 +86,7 @@ Span::Span(std::shared_ptr &&tracer, { recordable_->SetIds(GenerateRandomTraceId(), GenerateRandomSpanId(), GenerateRandomSpanId()); } + // TODO: Create and populate SpanContext for this span when SpanContext is fully implemented attributes.ForEachKeyValue( [&](nostd::string_view key, opentelemetry::common::AttributeValue value) noexcept { From ec1f8a8da2e93a46bbc867fa62d219763dd6928f Mon Sep 17 00:00:00 2001 From: Nadia Ciobanu Date: Thu, 20 Aug 2020 23:13:23 +0000 Subject: [PATCH 05/10] Extend SpanContext test --- api/include/opentelemetry/trace/span_context.h | 6 +++++- api/test/trace/span_context_test.cc | 9 ++++++++- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/api/include/opentelemetry/trace/span_context.h b/api/include/opentelemetry/trace/span_context.h index bc629b9cc8..ba0321133e 100644 --- a/api/include/opentelemetry/trace/span_context.h +++ b/api/include/opentelemetry/trace/span_context.h @@ -34,13 +34,17 @@ class SpanContext final { public: /* A temporary constructor for an invalid SpanContext. + * Trace id and span id are set to invalid (all zeros). + * * @param sampled_flag a required parameter specifying if child spans should be * sampled * @param has_remote_parent a required parameter specifying if this context has * a remote parent */ SpanContext(bool sampled_flag, bool has_remote_parent) - : trace_flags_(trace_api::TraceFlags((uint8_t)sampled_flag)), + : trace_id_(), + span_id_(), + trace_flags_(trace_api::TraceFlags((uint8_t)sampled_flag)), remote_parent_(has_remote_parent){}; // Since this class is not fully implemented, all class instances are invalid. diff --git a/api/test/trace/span_context_test.cc b/api/test/trace/span_context_test.cc index 4d3cbc3d68..1b3bbbf3fd 100644 --- a/api/test/trace/span_context_test.cc +++ b/api/test/trace/span_context_test.cc @@ -1,4 +1,6 @@ #include "opentelemetry/trace/span_context.h" +#include "opentelemetry/trace/trace_id.h" +#include "opentelemetry/trace/span_id.h" #include @@ -37,8 +39,13 @@ TEST(SpanContextTest, TraceFlags) ASSERT_EQ(s2.trace_flags().flags(), 0); } -TEST(SpanContextTest, IsValid) +// Test that SpanContext is invalid +TEST(SpanContextTest, Invalid) { SpanContext s1(false, false); ASSERT_FALSE(s1.IsValid()); + + // Test that trace id and span id are invalid + ASSERT_EQ(s1.trace_id(), opentelemetry::trace::TraceId()); + ASSERT_EQ(s1.span_id(), opentelemetry::trace::SpanId()); } From ec34800df043cae69ee17e8664c9a5914cca8d9d Mon Sep 17 00:00:00 2001 From: Nadia Ciobanu Date: Thu, 20 Aug 2020 23:25:54 +0000 Subject: [PATCH 06/10] Update IsValid --- api/include/opentelemetry/trace/span_context.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/api/include/opentelemetry/trace/span_context.h b/api/include/opentelemetry/trace/span_context.h index ba0321133e..aed22cfe72 100644 --- a/api/include/opentelemetry/trace/span_context.h +++ b/api/include/opentelemetry/trace/span_context.h @@ -47,8 +47,8 @@ class SpanContext final trace_flags_(trace_api::TraceFlags((uint8_t)sampled_flag)), remote_parent_(has_remote_parent){}; - // Since this class is not fully implemented, all class instances are invalid. - bool IsValid() const noexcept { return false; } + // @returns whether this context is valid + bool IsValid() const noexcept { return trace_id_.IsValid() && span_id_.IsValid(); } // @returns the trace_flags associated with this span_context const trace_api::TraceFlags &trace_flags() const noexcept { return trace_flags_; } @@ -64,8 +64,8 @@ class SpanContext final const SpanId &span_id() const noexcept { return span_id_; } private: - TraceId trace_id_; - SpanId span_id_; + const TraceId trace_id_; + const SpanId span_id_; const trace_api::TraceFlags trace_flags_; const bool remote_parent_ = false; }; From 3d2a21dddb4189cc289a2466de2b7443324a37f3 Mon Sep 17 00:00:00 2001 From: Nadia Ciobanu Date: Fri, 21 Aug 2020 00:18:36 +0000 Subject: [PATCH 07/10] Fix build failures --- api/test/trace/span_context_test.cc | 2 +- sdk/src/trace/CMakeLists.txt | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/api/test/trace/span_context_test.cc b/api/test/trace/span_context_test.cc index 1b3bbbf3fd..8bbc3fc8cb 100644 --- a/api/test/trace/span_context_test.cc +++ b/api/test/trace/span_context_test.cc @@ -1,6 +1,6 @@ #include "opentelemetry/trace/span_context.h" -#include "opentelemetry/trace/trace_id.h" #include "opentelemetry/trace/span_id.h" +#include "opentelemetry/trace/trace_id.h" #include diff --git a/sdk/src/trace/CMakeLists.txt b/sdk/src/trace/CMakeLists.txt index 5d7c8777f1..3944be05c9 100644 --- a/sdk/src/trace/CMakeLists.txt +++ b/sdk/src/trace/CMakeLists.txt @@ -2,3 +2,5 @@ add_library( opentelemetry_trace tracer_provider.cc tracer.cc span.cc batch_span_processor.cc samplers/parent_or_else.cc samplers/probability.cc) + +target_link_libraries(opentelemetry_trace, opentelemetry_common) From 99e57c59359649db9bd09cc78c1784d45c5cf171 Mon Sep 17 00:00:00 2001 From: Nadia Ciobanu Date: Fri, 21 Aug 2020 00:35:20 +0000 Subject: [PATCH 08/10] Fix CMake error --- sdk/src/trace/CMakeLists.txt | 2 -- sdk/test/trace/CMakeLists.txt | 2 +- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/sdk/src/trace/CMakeLists.txt b/sdk/src/trace/CMakeLists.txt index 3944be05c9..5d7c8777f1 100644 --- a/sdk/src/trace/CMakeLists.txt +++ b/sdk/src/trace/CMakeLists.txt @@ -2,5 +2,3 @@ add_library( opentelemetry_trace tracer_provider.cc tracer.cc span.cc batch_span_processor.cc samplers/parent_or_else.cc samplers/probability.cc) - -target_link_libraries(opentelemetry_trace, opentelemetry_common) diff --git a/sdk/test/trace/CMakeLists.txt b/sdk/test/trace/CMakeLists.txt index 69ad1c749b..ce00183ffe 100644 --- a/sdk/test/trace/CMakeLists.txt +++ b/sdk/test/trace/CMakeLists.txt @@ -19,4 +19,4 @@ endforeach() add_executable(sampler_benchmark sampler_benchmark.cc) target_link_libraries(sampler_benchmark benchmark::benchmark - ${CMAKE_THREAD_LIBS_INIT} opentelemetry_trace) + ${CMAKE_THREAD_LIBS_INIT} opentelemetry_trace opentelemetry_common) From 788b1ba69a5b02e19c00f6e45334c1eab63a8b35 Mon Sep 17 00:00:00 2001 From: Nadia Ciobanu Date: Fri, 21 Aug 2020 17:24:01 +0000 Subject: [PATCH 09/10] Address review comments, fix CMake failures --- api/test/trace/span_context_test.cc | 6 +++--- sdk/src/trace/CMakeLists.txt | 2 ++ sdk/src/trace/span.cc | 10 +++++----- sdk/test/trace/CMakeLists.txt | 7 +++---- sdk/test/trace/tracer_test.cc | 8 ++++---- 5 files changed, 17 insertions(+), 16 deletions(-) diff --git a/api/test/trace/span_context_test.cc b/api/test/trace/span_context_test.cc index 8bbc3fc8cb..b364348ccd 100644 --- a/api/test/trace/span_context_test.cc +++ b/api/test/trace/span_context_test.cc @@ -43,9 +43,9 @@ TEST(SpanContextTest, TraceFlags) TEST(SpanContextTest, Invalid) { SpanContext s1(false, false); - ASSERT_FALSE(s1.IsValid()); + EXPECT_FALSE(s1.IsValid()); // Test that trace id and span id are invalid - ASSERT_EQ(s1.trace_id(), opentelemetry::trace::TraceId()); - ASSERT_EQ(s1.span_id(), opentelemetry::trace::SpanId()); + EXPECT_EQ(s1.trace_id(), opentelemetry::trace::TraceId()); + EXPECT_EQ(s1.span_id(), opentelemetry::trace::SpanId()); } diff --git a/sdk/src/trace/CMakeLists.txt b/sdk/src/trace/CMakeLists.txt index 5d7c8777f1..9f9e06f45c 100644 --- a/sdk/src/trace/CMakeLists.txt +++ b/sdk/src/trace/CMakeLists.txt @@ -2,3 +2,5 @@ add_library( opentelemetry_trace tracer_provider.cc tracer.cc span.cc batch_span_processor.cc samplers/parent_or_else.cc samplers/probability.cc) + +target_link_libraries(opentelemetry_trace opentelemetry_common) diff --git a/sdk/src/trace/span.cc b/sdk/src/trace/span.cc index 7e7476a746..b04883be0e 100644 --- a/sdk/src/trace/span.cc +++ b/sdk/src/trace/span.cc @@ -88,11 +88,11 @@ Span::Span(std::shared_ptr &&tracer, } // TODO: Create and populate SpanContext for this span when SpanContext is fully implemented - attributes.ForEachKeyValue( - [&](nostd::string_view key, opentelemetry::common::AttributeValue value) noexcept { - recordable_->SetAttribute(key, value); - return true; - }); + attributes.ForEachKeyValue([&](nostd::string_view key, + opentelemetry::common::AttributeValue value) noexcept { + recordable_->SetAttribute(key, value); + return true; + }); recordable_->SetStartTime(NowOr(options.start_system_time)); start_steady_time = NowOr(options.start_steady_time); diff --git a/sdk/test/trace/CMakeLists.txt b/sdk/test/trace/CMakeLists.txt index ce00183ffe..c72cd7fe77 100644 --- a/sdk/test/trace/CMakeLists.txt +++ b/sdk/test/trace/CMakeLists.txt @@ -11,12 +11,11 @@ foreach( batch_span_processor_test attribute_utils_test) add_executable(${testname} "${testname}.cc") - target_link_libraries( - ${testname} ${GTEST_BOTH_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT} - opentelemetry_common opentelemetry_trace) + target_link_libraries(${testname} ${GTEST_BOTH_LIBRARIES} + ${CMAKE_THREAD_LIBS_INIT} opentelemetry_trace) gtest_add_tests(TARGET ${testname} TEST_PREFIX trace. TEST_LIST ${testname}) endforeach() add_executable(sampler_benchmark sampler_benchmark.cc) target_link_libraries(sampler_benchmark benchmark::benchmark - ${CMAKE_THREAD_LIBS_INIT} opentelemetry_trace opentelemetry_common) + ${CMAKE_THREAD_LIBS_INIT} opentelemetry_trace) diff --git a/sdk/test/trace/tracer_test.cc b/sdk/test/trace/tracer_test.cc index fc1be74818..fa2c2ed909 100644 --- a/sdk/test/trace/tracer_test.cc +++ b/sdk/test/trace/tracer_test.cc @@ -111,15 +111,15 @@ TEST(Tracer, ToMockSpanExporter) ASSERT_EQ(1, spans_received->size()); ASSERT_EQ("span 2", spans_received->at(0)->GetName()); - ASSERT_TRUE(spans_received->at(0)->GetTraceId().IsValid()); - ASSERT_TRUE(spans_received->at(0)->GetSpanId().IsValid()); + EXPECT_TRUE(spans_received->at(0)->GetTraceId().IsValid()); + EXPECT_TRUE(spans_received->at(0)->GetSpanId().IsValid()); span_first->End(); ASSERT_EQ(2, spans_received->size()); ASSERT_EQ("span 1", spans_received->at(1)->GetName()); - ASSERT_TRUE(spans_received->at(1)->GetTraceId().IsValid()); - ASSERT_TRUE(spans_received->at(1)->GetSpanId().IsValid()); + EXPECT_TRUE(spans_received->at(1)->GetTraceId().IsValid()); + EXPECT_TRUE(spans_received->at(1)->GetSpanId().IsValid()); } TEST(Tracer, StartSpanSampleOn) From a4ee2c9885c82da5ce064434f876b43501c6cf6a Mon Sep 17 00:00:00 2001 From: Nadia Ciobanu Date: Mon, 24 Aug 2020 16:43:33 +0000 Subject: [PATCH 10/10] Set invalid parent span id --- sdk/src/trace/span.cc | 2 +- sdk/test/trace/tracer_test.cc | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/sdk/src/trace/span.cc b/sdk/src/trace/span.cc index b04883be0e..c6c3151a7f 100644 --- a/sdk/src/trace/span.cc +++ b/sdk/src/trace/span.cc @@ -84,7 +84,7 @@ Span::Span(std::shared_ptr &&tracer, } else { - recordable_->SetIds(GenerateRandomTraceId(), GenerateRandomSpanId(), GenerateRandomSpanId()); + recordable_->SetIds(GenerateRandomTraceId(), GenerateRandomSpanId(), trace_api::SpanId()); } // TODO: Create and populate SpanContext for this span when SpanContext is fully implemented diff --git a/sdk/test/trace/tracer_test.cc b/sdk/test/trace/tracer_test.cc index fa2c2ed909..efdc6b6f8b 100644 --- a/sdk/test/trace/tracer_test.cc +++ b/sdk/test/trace/tracer_test.cc @@ -113,6 +113,7 @@ TEST(Tracer, ToMockSpanExporter) ASSERT_EQ("span 2", spans_received->at(0)->GetName()); EXPECT_TRUE(spans_received->at(0)->GetTraceId().IsValid()); EXPECT_TRUE(spans_received->at(0)->GetSpanId().IsValid()); + EXPECT_FALSE(spans_received->at(0)->GetParentSpanId().IsValid()); span_first->End(); ASSERT_EQ(2, spans_received->size()); @@ -120,6 +121,7 @@ TEST(Tracer, ToMockSpanExporter) ASSERT_EQ("span 1", spans_received->at(1)->GetName()); EXPECT_TRUE(spans_received->at(1)->GetTraceId().IsValid()); EXPECT_TRUE(spans_received->at(1)->GetSpanId().IsValid()); + EXPECT_FALSE(spans_received->at(1)->GetParentSpanId().IsValid()); } TEST(Tracer, StartSpanSampleOn)