From 87b062a1910dd108be8dd0b44eeba28310972e58 Mon Sep 17 00:00:00 2001 From: Oliver Zhang Date: Wed, 15 Jul 2020 00:25:04 +0000 Subject: [PATCH 1/8] add tracer comprehensive test --- sdk/test/trace/tracer_test.cc | 33 +++++++++++++++++++++++++-------- 1 file changed, 25 insertions(+), 8 deletions(-) diff --git a/sdk/test/trace/tracer_test.cc b/sdk/test/trace/tracer_test.cc index aa28672708..8e95d80720 100644 --- a/sdk/test/trace/tracer_test.cc +++ b/sdk/test/trace/tracer_test.cc @@ -1,6 +1,7 @@ #include "opentelemetry/sdk/trace/tracer.h" #include "opentelemetry/sdk/trace/samplers/always_off.h" #include "opentelemetry/sdk/trace/samplers/always_on.h" +#include "opentelemetry/sdk/trace/samplers/parent_or_else.h" #include "opentelemetry/sdk/trace/simple_processor.h" #include "opentelemetry/sdk/trace/span_data.h" @@ -202,7 +203,8 @@ TEST(Tracer, StartSpanWithAttributes) ASSERT_EQ(314159, nostd::get(span_data3->GetAttributes().at("attr1"))); ASSERT_EQ(false, nostd::get(span_data3->GetAttributes().at("attr2"))); ASSERT_EQ(123, nostd::get(span_data3->GetAttributes().at("sampling_attr1"))); - ASSERT_EQ("string", nostd::get(span_data3->GetAttributes().at("sampling_attr2"))); + ASSERT_EQ("string", + nostd::get(span_data3->GetAttributes().at("sampling_attr2"))); } TEST(Tracer, GetSampler) @@ -223,18 +225,33 @@ TEST(Tracer, GetSampler) ASSERT_EQ("AlwaysOffSampler", t2->GetDescription()); } -TEST(Tracer, SpanSetAttribute) +TEST(Tracer, ComprehensiveTest) { - std::shared_ptr>> spans_received( + // Create tracers with AlwaysOn, AlwaysOff, Parent-or-else, and Probablity samplers + std::shared_ptr>> spans_received_on( new std::vector>); - auto tracer = initTracer(spans_received); + std::shared_ptr>> spans_received_off( + new std::vector>); + std::shared_ptr>> spans_received_parent_on( + new std::vector>); + auto tracer_on = initTracer(spans_received_on); + auto tracer_off = initTracer(spans_received_off, std::make_shared()); + // Current ShouldSample always pass an empty ParentContext, + // so this sampler will work as an AlwaysOnSampler + auto tracer_parent_on = initTracer( + spans_received_parent_on, std::make_shared(std::make_shared())); - auto span = tracer->StartSpan("span 1"); + // Create two spans for each tracer. Check the exported result. + auto span = tracer_on->StartSpan("span 1"); span->SetAttribute("abc", 3.1); span->End(); - ASSERT_EQ(1, spans_received->size()); - auto &span_data = spans_received->at(0); - ASSERT_EQ(3.1, nostd::get(span_data->GetAttributes().at("abc"))); + ASSERT_EQ(1, spans_received_on->size()); + auto &span_data_on = spans_received_on->at(0); + ASSERT_EQ(3.1, nostd::get(span_data_on->GetAttributes().at("abc"))); + ASSERT_LT(std::chrono::nanoseconds(0), span_data_on->GetStartTime().time_since_epoch()); + ASSERT_LT(std::chrono::nanoseconds(0), span_data_on->GetDuration()); + + // ASSERT_EQ(0, spans_received->size()); } From 648dc13d127cf584a724d0baf5878023b012aa20 Mon Sep 17 00:00:00 2001 From: Oliver Zhang Date: Wed, 15 Jul 2020 01:28:02 +0000 Subject: [PATCH 2/8] add comprehensive test --- sdk/test/trace/tracer_test.cc | 111 ++++++++++++++++++++++++++++------ 1 file changed, 92 insertions(+), 19 deletions(-) diff --git a/sdk/test/trace/tracer_test.cc b/sdk/test/trace/tracer_test.cc index 8e95d80720..b72de5224f 100644 --- a/sdk/test/trace/tracer_test.cc +++ b/sdk/test/trace/tracer_test.cc @@ -2,6 +2,7 @@ #include "opentelemetry/sdk/trace/samplers/always_off.h" #include "opentelemetry/sdk/trace/samplers/always_on.h" #include "opentelemetry/sdk/trace/samplers/parent_or_else.h" +#include "opentelemetry/sdk/trace/samplers/probability.h" #include "opentelemetry/sdk/trace/simple_processor.h" #include "opentelemetry/sdk/trace/span_data.h" @@ -227,31 +228,103 @@ TEST(Tracer, GetSampler) TEST(Tracer, ComprehensiveTest) { - // Create tracers with AlwaysOn, AlwaysOff, Parent-or-else, and Probablity samplers + // Create tracers with AlwaysOn, AlwaysOff, Parent-or-else, and Probability samplers. std::shared_ptr>> spans_received_on( new std::vector>); std::shared_ptr>> spans_received_off( new std::vector>); std::shared_ptr>> spans_received_parent_on( new std::vector>); - auto tracer_on = initTracer(spans_received_on); - auto tracer_off = initTracer(spans_received_off, std::make_shared()); + std::shared_ptr>> spans_received_probability_on( + new std::vector>); + std::shared_ptr>> spans_received_probability_off( + new std::vector>); + auto tracer_on = initTracer(spans_received_on); + auto tracer_off = initTracer(spans_received_off, std::make_shared()); // Current ShouldSample always pass an empty ParentContext, - // so this sampler will work as an AlwaysOnSampler - auto tracer_parent_on = initTracer( - spans_received_parent_on, std::make_shared(std::make_shared())); - + // so this sampler will work as an AlwaysOnSampler. + auto tracer_parent_on = + initTracer(spans_received_parent_on, + std::make_shared(std::make_shared())); + // Current ShouldSample uses an invalid TraceId. + // This sampler always return RECORD_AND_SAMPLE at probability 0.01 + auto tracer_probability_on = + initTracer(spans_received_probability_on, std::make_shared(0.01)); + // This sampler always return NOT_SAMPLE at probability 0 + auto tracer_probability_off = + initTracer(spans_received_probability_off, std::make_shared(0)); + + // Testing AlwaysOn sampler. // Create two spans for each tracer. Check the exported result. - auto span = tracer_on->StartSpan("span 1"); - - span->SetAttribute("abc", 3.1); - - span->End(); - ASSERT_EQ(1, spans_received_on->size()); - auto &span_data_on = spans_received_on->at(0); - ASSERT_EQ(3.1, nostd::get(span_data_on->GetAttributes().at("abc"))); - ASSERT_LT(std::chrono::nanoseconds(0), span_data_on->GetStartTime().time_since_epoch()); - ASSERT_LT(std::chrono::nanoseconds(0), span_data_on->GetDuration()); - - // ASSERT_EQ(0, spans_received->size()); + auto span_on_1 = tracer_on->StartSpan("span with AlwaysOn sampler 1"); + auto span_on_2 = tracer_on->StartSpan("span with AlwaysOn sampler 2"); + + span_on_1->SetAttribute("attr1", 3.1); + + span_on_2->End(); + span_on_1->End(); + ASSERT_EQ(2, spans_received_on->size()); + auto &span_data_on_1 = spans_received_on->at(1); // span 2 ends first. + auto &span_data_on_2 = spans_received_on->at(0); + ASSERT_EQ(3.1, nostd::get(span_data_on_1->GetAttributes().at("attr1"))); + ASSERT_LT(std::chrono::nanoseconds(0), span_data_on_1->GetStartTime().time_since_epoch()); + ASSERT_LT(std::chrono::nanoseconds(0), span_data_on_1->GetDuration()); + ASSERT_LT(std::chrono::nanoseconds(0), span_data_on_2->GetStartTime().time_since_epoch()); + ASSERT_LT(std::chrono::nanoseconds(0), span_data_on_2->GetDuration()); + + // Testing AlwaysOff sampler + auto span_off_1 = tracer_off->StartSpan("span with AlwaysOff sampler 1"); + auto span_off_2 = tracer_off->StartSpan("span with AlwaysOff sampler 2"); + + span_off_1->SetAttribute("attr1", 3.1); // Not recorded. + + span_off_2->End(); + span_off_1->End(); + + // The tracer export nothing with an AlwaysOff sampler + ASSERT_EQ(0, spans_received_off->size()); + + // Testing AlwaysOff sampler + auto span_parent_on_1 = tracer_parent_on->StartSpan("span with Parent-or-else sampler 1"); + auto span_parent_on_2 = tracer_parent_on->StartSpan("span with Parent-or-else sampler 2"); + + span_parent_on_1->SetAttribute("attr1", 3.1); + + span_parent_on_2->End(); + span_parent_on_1->End(); + ASSERT_EQ(2, spans_received_parent_on->size()); + auto &span_data_parent_on_1 = spans_received_parent_on->at(1); + auto &span_data_parent_on_2 = spans_received_parent_on->at(0); + ASSERT_EQ(3.1, nostd::get(span_data_parent_on_1->GetAttributes().at("attr1"))); + ASSERT_LT(std::chrono::nanoseconds(0), span_data_parent_on_1->GetStartTime().time_since_epoch()); + ASSERT_LT(std::chrono::nanoseconds(0), span_data_parent_on_1->GetDuration()); + ASSERT_LT(std::chrono::nanoseconds(0), span_data_parent_on_2->GetStartTime().time_since_epoch()); + ASSERT_LT(std::chrono::nanoseconds(0), span_data_parent_on_2->GetDuration()); + + // Testing Probablity sampler + auto span_probability_on_1 = tracer_probability_on->StartSpan("span with Probability on sampler 1"); + auto span_probability_on_2 = tracer_probability_on->StartSpan("span with Probability on sampler 2"); + + span_probability_on_1->SetAttribute("attr1", 3.1); + + span_probability_on_2->End(); + span_probability_on_1->End(); + ASSERT_EQ(2, spans_received_probability_on->size()); + auto &span_data_probability_on_1 = spans_received_probability_on->at(1); + auto &span_data_probability_on_2 = spans_received_probability_on->at(0); + ASSERT_EQ(3.1, nostd::get(span_data_probability_on_1->GetAttributes().at("attr1"))); + ASSERT_LT(std::chrono::nanoseconds(0), span_data_probability_on_1->GetStartTime().time_since_epoch()); + ASSERT_LT(std::chrono::nanoseconds(0), span_data_probability_on_1->GetDuration()); + ASSERT_LT(std::chrono::nanoseconds(0), span_data_probability_on_2->GetStartTime().time_since_epoch()); + ASSERT_LT(std::chrono::nanoseconds(0), span_data_probability_on_2->GetDuration()); + + // Testing Probablity sampler + auto span_probability_off_1 = tracer_probability_off->StartSpan("span with Probability off sampler 1"); + auto span_probability_off_2 = tracer_probability_off->StartSpan("span with Probability off sampler 2"); + + span_probability_off_1->SetAttribute("attr1", 3.1); + + span_probability_off_2->End(); + span_probability_off_1->End(); + ASSERT_EQ(0, spans_received_probability_off->size()); } From 363c124883e0cbe528acb05775a87a39378fef91 Mon Sep 17 00:00:00 2001 From: Oliver Zhang Date: Wed, 15 Jul 2020 14:24:53 +0000 Subject: [PATCH 3/8] separate test cases --- sdk/test/trace/tracer_test.cc | 84 ++++++++++++++++++++++------------- 1 file changed, 52 insertions(+), 32 deletions(-) diff --git a/sdk/test/trace/tracer_test.cc b/sdk/test/trace/tracer_test.cc index b72de5224f..6cda37f0b8 100644 --- a/sdk/test/trace/tracer_test.cc +++ b/sdk/test/trace/tracer_test.cc @@ -226,33 +226,13 @@ TEST(Tracer, GetSampler) ASSERT_EQ("AlwaysOffSampler", t2->GetDescription()); } -TEST(Tracer, ComprehensiveTest) +TEST(Tracer, TestAlwaysOnSampler) { // Create tracers with AlwaysOn, AlwaysOff, Parent-or-else, and Probability samplers. std::shared_ptr>> spans_received_on( new std::vector>); - std::shared_ptr>> spans_received_off( - new std::vector>); - std::shared_ptr>> spans_received_parent_on( - new std::vector>); - std::shared_ptr>> spans_received_probability_on( - new std::vector>); - std::shared_ptr>> spans_received_probability_off( - new std::vector>); - auto tracer_on = initTracer(spans_received_on); - auto tracer_off = initTracer(spans_received_off, std::make_shared()); - // Current ShouldSample always pass an empty ParentContext, - // so this sampler will work as an AlwaysOnSampler. - auto tracer_parent_on = - initTracer(spans_received_parent_on, - std::make_shared(std::make_shared())); - // Current ShouldSample uses an invalid TraceId. - // This sampler always return RECORD_AND_SAMPLE at probability 0.01 - auto tracer_probability_on = - initTracer(spans_received_probability_on, std::make_shared(0.01)); - // This sampler always return NOT_SAMPLE at probability 0 - auto tracer_probability_off = - initTracer(spans_received_probability_off, std::make_shared(0)); + + auto tracer_on = initTracer(spans_received_on); // Testing AlwaysOn sampler. // Create two spans for each tracer. Check the exported result. @@ -271,7 +251,13 @@ TEST(Tracer, ComprehensiveTest) ASSERT_LT(std::chrono::nanoseconds(0), span_data_on_1->GetDuration()); ASSERT_LT(std::chrono::nanoseconds(0), span_data_on_2->GetStartTime().time_since_epoch()); ASSERT_LT(std::chrono::nanoseconds(0), span_data_on_2->GetDuration()); +} +TEST(Tracer, TestAlwaysOffSampler) +{ + std::shared_ptr>> spans_received_off( + new std::vector>); + auto tracer_off = initTracer(spans_received_off, std::make_shared()); // Testing AlwaysOff sampler auto span_off_1 = tracer_off->StartSpan("span with AlwaysOff sampler 1"); auto span_off_2 = tracer_off->StartSpan("span with AlwaysOff sampler 2"); @@ -283,8 +269,20 @@ TEST(Tracer, ComprehensiveTest) // The tracer export nothing with an AlwaysOff sampler ASSERT_EQ(0, spans_received_off->size()); +} - // Testing AlwaysOff sampler +TEST(Tracer, TestParentOrElseSampler) +{ + std::shared_ptr>> spans_received_parent_on( + new std::vector>); + + // Current ShouldSample always pass an empty ParentContext, + // so this sampler will work as an AlwaysOnSampler. + auto tracer_parent_on = + initTracer(spans_received_parent_on, + std::make_shared(std::make_shared())); + + // Testing ParentOrElse sampler auto span_parent_on_1 = tracer_parent_on->StartSpan("span with Parent-or-else sampler 1"); auto span_parent_on_2 = tracer_parent_on->StartSpan("span with Parent-or-else sampler 2"); @@ -293,34 +291,56 @@ TEST(Tracer, ComprehensiveTest) span_parent_on_2->End(); span_parent_on_1->End(); ASSERT_EQ(2, spans_received_parent_on->size()); - auto &span_data_parent_on_1 = spans_received_parent_on->at(1); + auto &span_data_parent_on_1 = spans_received_parent_on->at(1); auto &span_data_parent_on_2 = spans_received_parent_on->at(0); ASSERT_EQ(3.1, nostd::get(span_data_parent_on_1->GetAttributes().at("attr1"))); ASSERT_LT(std::chrono::nanoseconds(0), span_data_parent_on_1->GetStartTime().time_since_epoch()); ASSERT_LT(std::chrono::nanoseconds(0), span_data_parent_on_1->GetDuration()); ASSERT_LT(std::chrono::nanoseconds(0), span_data_parent_on_2->GetStartTime().time_since_epoch()); ASSERT_LT(std::chrono::nanoseconds(0), span_data_parent_on_2->GetDuration()); +} +TEST(Tracer, TestProbabilitySampler) +{ + std::shared_ptr>> spans_received_probability_on( + new std::vector>); + std::shared_ptr>> spans_received_probability_off( + new std::vector>); + + // Current ShouldSample uses an invalid TraceId. + // This sampler always return RECORD_AND_SAMPLE at probability 0.01 + auto tracer_probability_on = + initTracer(spans_received_probability_on, std::make_shared(0.01)); + // This sampler always return NOT_SAMPLE at probability 0 + auto tracer_probability_off = + initTracer(spans_received_probability_off, std::make_shared(0)); + // Testing Probablity sampler - auto span_probability_on_1 = tracer_probability_on->StartSpan("span with Probability on sampler 1"); - auto span_probability_on_2 = tracer_probability_on->StartSpan("span with Probability on sampler 2"); + auto span_probability_on_1 = + tracer_probability_on->StartSpan("span with Probability on sampler 1"); + auto span_probability_on_2 = + tracer_probability_on->StartSpan("span with Probability on sampler 2"); span_probability_on_1->SetAttribute("attr1", 3.1); span_probability_on_2->End(); span_probability_on_1->End(); ASSERT_EQ(2, spans_received_probability_on->size()); - auto &span_data_probability_on_1 = spans_received_probability_on->at(1); + auto &span_data_probability_on_1 = spans_received_probability_on->at(1); auto &span_data_probability_on_2 = spans_received_probability_on->at(0); ASSERT_EQ(3.1, nostd::get(span_data_probability_on_1->GetAttributes().at("attr1"))); - ASSERT_LT(std::chrono::nanoseconds(0), span_data_probability_on_1->GetStartTime().time_since_epoch()); + ASSERT_LT(std::chrono::nanoseconds(0), + span_data_probability_on_1->GetStartTime().time_since_epoch()); ASSERT_LT(std::chrono::nanoseconds(0), span_data_probability_on_1->GetDuration()); - ASSERT_LT(std::chrono::nanoseconds(0), span_data_probability_on_2->GetStartTime().time_since_epoch()); + ASSERT_LT(std::chrono::nanoseconds(0), + span_data_probability_on_2->GetStartTime().time_since_epoch()); ASSERT_LT(std::chrono::nanoseconds(0), span_data_probability_on_2->GetDuration()); // Testing Probablity sampler - auto span_probability_off_1 = tracer_probability_off->StartSpan("span with Probability off sampler 1"); - auto span_probability_off_2 = tracer_probability_off->StartSpan("span with Probability off sampler 2"); + auto span_probability_off_1 = + tracer_probability_off->StartSpan("span with Probability off sampler 1"); + auto span_probability_off_2 = + tracer_probability_off->StartSpan("span with Probability off sampler 2"); span_probability_off_1->SetAttribute("attr1", 3.1); From a5500341e6538f57db8036e823a86be395ed711e Mon Sep 17 00:00:00 2001 From: Oliver Zhang Date: Wed, 15 Jul 2020 14:54:33 +0000 Subject: [PATCH 4/8] fix deleted test case --- sdk/test/trace/tracer_test.cc | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/sdk/test/trace/tracer_test.cc b/sdk/test/trace/tracer_test.cc index 6cda37f0b8..8a5ccb5d0b 100644 --- a/sdk/test/trace/tracer_test.cc +++ b/sdk/test/trace/tracer_test.cc @@ -226,6 +226,22 @@ TEST(Tracer, GetSampler) ASSERT_EQ("AlwaysOffSampler", t2->GetDescription()); } +TEST(Tracer, SpanSetAttribute) +{ + std::shared_ptr>> spans_received( + new std::vector>); + auto tracer = initTracer(spans_received); + + auto span = tracer->StartSpan("span 1"); + + span->SetAttribute("abc", 3.1); + + span->End(); + ASSERT_EQ(1, spans_received->size()); + auto &span_data = spans_received->at(0); + ASSERT_EQ(3.1, nostd::get(span_data->GetAttributes().at("abc"))); +} + TEST(Tracer, TestAlwaysOnSampler) { // Create tracers with AlwaysOn, AlwaysOff, Parent-or-else, and Probability samplers. From 3c39d7185e79698280b4ab8aedf3558826969cba Mon Sep 17 00:00:00 2001 From: Oliver Zhang Date: Wed, 15 Jul 2020 18:02:27 +0000 Subject: [PATCH 5/8] clear comments --- sdk/test/trace/tracer_test.cc | 1 - 1 file changed, 1 deletion(-) diff --git a/sdk/test/trace/tracer_test.cc b/sdk/test/trace/tracer_test.cc index 8a5ccb5d0b..66bd1ad64d 100644 --- a/sdk/test/trace/tracer_test.cc +++ b/sdk/test/trace/tracer_test.cc @@ -244,7 +244,6 @@ TEST(Tracer, SpanSetAttribute) TEST(Tracer, TestAlwaysOnSampler) { - // Create tracers with AlwaysOn, AlwaysOff, Parent-or-else, and Probability samplers. std::shared_ptr>> spans_received_on( new std::vector>); From b61f2cd239dd8025ef5f029aeb46b1cc37f312fb Mon Sep 17 00:00:00 2001 From: Oliver Zhang Date: Thu, 16 Jul 2020 00:44:10 +0000 Subject: [PATCH 6/8] modify tracer test --- sdk/test/trace/tracer_test.cc | 104 ++++++++++------------------------ 1 file changed, 29 insertions(+), 75 deletions(-) diff --git a/sdk/test/trace/tracer_test.cc b/sdk/test/trace/tracer_test.cc index 66bd1ad64d..d8f82c9b25 100644 --- a/sdk/test/trace/tracer_test.cc +++ b/sdk/test/trace/tracer_test.cc @@ -244,28 +244,20 @@ TEST(Tracer, SpanSetAttribute) TEST(Tracer, TestAlwaysOnSampler) { - std::shared_ptr>> spans_received_on( + std::shared_ptr>> spans_received( new std::vector>); - - auto tracer_on = initTracer(spans_received_on); + + auto tracer_on = initTracer(spans_received); // Testing AlwaysOn sampler. // Create two spans for each tracer. Check the exported result. - auto span_on_1 = tracer_on->StartSpan("span with AlwaysOn sampler 1"); - auto span_on_2 = tracer_on->StartSpan("span with AlwaysOn sampler 2"); - - span_on_1->SetAttribute("attr1", 3.1); - + auto span_on_1 = tracer_on->StartSpan("span 1"); + auto span_on_2 = tracer_on->StartSpan("span 2"); span_on_2->End(); span_on_1->End(); - ASSERT_EQ(2, spans_received_on->size()); - auto &span_data_on_1 = spans_received_on->at(1); // span 2 ends first. - auto &span_data_on_2 = spans_received_on->at(0); - ASSERT_EQ(3.1, nostd::get(span_data_on_1->GetAttributes().at("attr1"))); - ASSERT_LT(std::chrono::nanoseconds(0), span_data_on_1->GetStartTime().time_since_epoch()); - ASSERT_LT(std::chrono::nanoseconds(0), span_data_on_1->GetDuration()); - ASSERT_LT(std::chrono::nanoseconds(0), span_data_on_2->GetStartTime().time_since_epoch()); - ASSERT_LT(std::chrono::nanoseconds(0), span_data_on_2->GetDuration()); + ASSERT_EQ(2, spans_received->size()); + ASSERT_EQ("span 2", spans_received->at(0)->GetName()); // span 2 ends first. + ASSERT_EQ("span 1", spans_received->at(1)->GetName()); } TEST(Tracer, TestAlwaysOffSampler) @@ -273,9 +265,8 @@ TEST(Tracer, TestAlwaysOffSampler) std::shared_ptr>> spans_received_off( new std::vector>); auto tracer_off = initTracer(spans_received_off, std::make_shared()); - // Testing AlwaysOff sampler - auto span_off_1 = tracer_off->StartSpan("span with AlwaysOff sampler 1"); - auto span_off_2 = tracer_off->StartSpan("span with AlwaysOff sampler 2"); + auto span_off_1 = tracer_off->StartSpan("span 1"); + auto span_off_2 = tracer_off->StartSpan("span 2"); span_off_1->SetAttribute("attr1", 3.1); // Not recorded. @@ -297,69 +288,32 @@ TEST(Tracer, TestParentOrElseSampler) initTracer(spans_received_parent_on, std::make_shared(std::make_shared())); - // Testing ParentOrElse sampler - auto span_parent_on_1 = tracer_parent_on->StartSpan("span with Parent-or-else sampler 1"); - auto span_parent_on_2 = tracer_parent_on->StartSpan("span with Parent-or-else sampler 2"); + auto span_parent_on_1 = tracer_parent_on->StartSpan("span 1"); + auto span_parent_on_2 = tracer_parent_on->StartSpan("span 2"); span_parent_on_1->SetAttribute("attr1", 3.1); span_parent_on_2->End(); span_parent_on_1->End(); ASSERT_EQ(2, spans_received_parent_on->size()); - auto &span_data_parent_on_1 = spans_received_parent_on->at(1); - auto &span_data_parent_on_2 = spans_received_parent_on->at(0); - ASSERT_EQ(3.1, nostd::get(span_data_parent_on_1->GetAttributes().at("attr1"))); - ASSERT_LT(std::chrono::nanoseconds(0), span_data_parent_on_1->GetStartTime().time_since_epoch()); - ASSERT_LT(std::chrono::nanoseconds(0), span_data_parent_on_1->GetDuration()); - ASSERT_LT(std::chrono::nanoseconds(0), span_data_parent_on_2->GetStartTime().time_since_epoch()); - ASSERT_LT(std::chrono::nanoseconds(0), span_data_parent_on_2->GetDuration()); -} + ASSERT_EQ("span 2", spans_received_parent_on->at(0)->GetName()); // span 2 ends first. + ASSERT_EQ("span 1", spans_received_parent_on->at(1)->GetName()); -TEST(Tracer, TestProbabilitySampler) -{ - std::shared_ptr>> spans_received_probability_on( - new std::vector>); - std::shared_ptr>> spans_received_probability_off( + std::shared_ptr>> spans_received_parent_off( new std::vector>); - // Current ShouldSample uses an invalid TraceId. - // This sampler always return RECORD_AND_SAMPLE at probability 0.01 - auto tracer_probability_on = - initTracer(spans_received_probability_on, std::make_shared(0.01)); - // This sampler always return NOT_SAMPLE at probability 0 - auto tracer_probability_off = - initTracer(spans_received_probability_off, std::make_shared(0)); - - // Testing Probablity sampler - auto span_probability_on_1 = - tracer_probability_on->StartSpan("span with Probability on sampler 1"); - auto span_probability_on_2 = - tracer_probability_on->StartSpan("span with Probability on sampler 2"); - - span_probability_on_1->SetAttribute("attr1", 3.1); - - span_probability_on_2->End(); - span_probability_on_1->End(); - ASSERT_EQ(2, spans_received_probability_on->size()); - auto &span_data_probability_on_1 = spans_received_probability_on->at(1); - auto &span_data_probability_on_2 = spans_received_probability_on->at(0); - ASSERT_EQ(3.1, nostd::get(span_data_probability_on_1->GetAttributes().at("attr1"))); - ASSERT_LT(std::chrono::nanoseconds(0), - span_data_probability_on_1->GetStartTime().time_since_epoch()); - ASSERT_LT(std::chrono::nanoseconds(0), span_data_probability_on_1->GetDuration()); - ASSERT_LT(std::chrono::nanoseconds(0), - span_data_probability_on_2->GetStartTime().time_since_epoch()); - ASSERT_LT(std::chrono::nanoseconds(0), span_data_probability_on_2->GetDuration()); - - // Testing Probablity sampler - auto span_probability_off_1 = - tracer_probability_off->StartSpan("span with Probability off sampler 1"); - auto span_probability_off_2 = - tracer_probability_off->StartSpan("span with Probability off sampler 2"); - - span_probability_off_1->SetAttribute("attr1", 3.1); - - span_probability_off_2->End(); - span_probability_off_1->End(); - ASSERT_EQ(0, spans_received_probability_off->size()); + // Current ShouldSample always pass an empty ParentContext, + // so this sampler will work as an AlwaysOnSampler. + auto tracer_parent_off = + initTracer(spans_received_parent_off, + std::make_shared(std::make_shared())); + + auto span_parent_off_1 = tracer_parent_off->StartSpan("span 1"); + auto span_parent_off_2 = tracer_parent_off->StartSpan("span 2"); + + span_parent_off_1->SetAttribute("attr1", 3.1); + + span_parent_off_1->End(); + span_parent_off_2->End(); + ASSERT_EQ(0, spans_received_parent_off->size()); } From f0197d07d6b2e268d53e9857e84ce3a6b0f8aa15 Mon Sep 17 00:00:00 2001 From: Oliver Zhang Date: Thu, 16 Jul 2020 20:02:32 +0000 Subject: [PATCH 7/8] remove unused header file --- sdk/test/trace/tracer_test.cc | 1 - 1 file changed, 1 deletion(-) diff --git a/sdk/test/trace/tracer_test.cc b/sdk/test/trace/tracer_test.cc index 33490b2d2c..cedadaa672 100644 --- a/sdk/test/trace/tracer_test.cc +++ b/sdk/test/trace/tracer_test.cc @@ -2,7 +2,6 @@ #include "opentelemetry/sdk/trace/samplers/always_off.h" #include "opentelemetry/sdk/trace/samplers/always_on.h" #include "opentelemetry/sdk/trace/samplers/parent_or_else.h" -#include "opentelemetry/sdk/trace/samplers/probability.h" #include "opentelemetry/sdk/trace/simple_processor.h" #include "opentelemetry/sdk/trace/span_data.h" From c88f6638cbea0baac9aadb6b440b60aa55e056db Mon Sep 17 00:00:00 2001 From: Oliver Zhang Date: Mon, 20 Jul 2020 22:47:09 +0000 Subject: [PATCH 8/8] fix comments --- sdk/test/trace/tracer_test.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sdk/test/trace/tracer_test.cc b/sdk/test/trace/tracer_test.cc index cedadaa672..29812bf059 100644 --- a/sdk/test/trace/tracer_test.cc +++ b/sdk/test/trace/tracer_test.cc @@ -358,7 +358,7 @@ TEST(Tracer, TestParentOrElseSampler) span_parent_on_2->End(); span_parent_on_1->End(); ASSERT_EQ(2, spans_received_parent_on->size()); - ASSERT_EQ("span 2", spans_received_parent_on->at(0)->GetName()); // span 2 ends first. + ASSERT_EQ("span 2", spans_received_parent_on->at(0)->GetName()); ASSERT_EQ("span 1", spans_received_parent_on->at(1)->GetName()); std::shared_ptr>> spans_received_parent_off(