tracer_test.cc 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. // Copyright The OpenTelemetry Authors
  2. // SPDX-License-Identifier: Apache-2.0
  3. #include <gtest/gtest.h>
  4. #include <string>
  5. #include "opentelemetry/context/context_value.h"
  6. #include "opentelemetry/nostd/shared_ptr.h"
  7. #include "opentelemetry/trace/noop.h"
  8. #include "opentelemetry/trace/span.h"
  9. #include "opentelemetry/trace/span_context.h"
  10. #include "opentelemetry/trace/tracer.h"
  11. namespace trace_api = opentelemetry::trace;
  12. namespace nostd = opentelemetry::nostd;
  13. namespace context = opentelemetry::context;
  14. TEST(TracerTest, GetCurrentSpan)
  15. {
  16. std::unique_ptr<trace_api::Tracer> tracer(new trace_api::NoopTracer());
  17. nostd::shared_ptr<trace_api::Span> span_first(new trace_api::NoopSpan(nullptr));
  18. nostd::shared_ptr<trace_api::Span> span_second(new trace_api::NoopSpan(nullptr));
  19. auto current = tracer->GetCurrentSpan();
  20. ASSERT_FALSE(current->GetContext().IsValid());
  21. {
  22. auto scope_first = tracer->WithActiveSpan(span_first);
  23. current = tracer->GetCurrentSpan();
  24. ASSERT_EQ(current, span_first);
  25. {
  26. auto scope_second = tracer->WithActiveSpan(span_second);
  27. current = tracer->GetCurrentSpan();
  28. ASSERT_EQ(current, span_second);
  29. }
  30. current = tracer->GetCurrentSpan();
  31. ASSERT_EQ(current, span_first);
  32. }
  33. current = tracer->GetCurrentSpan();
  34. ASSERT_FALSE(current->GetContext().IsValid());
  35. }