@@ -51,10 +51,14 @@ TEST(ParentBasedSampler, ShouldSample)
5151 opentelemetry::common::KeyValueIterableView<M> view{m1};
5252 trace_api::SpanContextKeyValueIterableView<L> links{l1};
5353 auto trace_state = trace_api::TraceState::FromHeader (" congo=t61rcWkgMzE" );
54- trace_api::SpanContext parent_context_sampled (trace_id, span_id, trace_api::TraceFlags{1 }, false ,
55- trace_state);
56- trace_api::SpanContext parent_context_nonsampled (trace_id, span_id, trace_api::TraceFlags{0 },
57- false , trace_state);
54+ trace_api::SpanContext parent_context_sampled_local (trace_id, span_id, trace_api::TraceFlags{1 },
55+ false , trace_state);
56+ trace_api::SpanContext parent_context_nonsampled_local (
57+ trace_id, span_id, trace_api::TraceFlags{0 }, false , trace_state);
58+ trace_api::SpanContext parent_context_sampled_remote (trace_id, span_id, trace_api::TraceFlags{1 },
59+ true , trace_state);
60+ trace_api::SpanContext parent_context_nonsampled_remote (
61+ trace_id, span_id, trace_api::TraceFlags{0 }, true , trace_state);
5862
5963 // Case 1: Parent doesn't exist. Return result of delegateSampler()
6064 auto sampling_result = sampler_off.ShouldSample (trace_api::SpanContext::GetInvalid (), trace_id,
@@ -67,17 +71,29 @@ TEST(ParentBasedSampler, ShouldSample)
6771 ASSERT_EQ (" " , sampling_result.trace_state ->ToHeader ());
6872 ASSERT_EQ (" " , sampling_result2.trace_state ->ToHeader ());
6973
70- // Case 2: Parent exists and SampledFlag is true
74+ // Case 2: Parent exists and SampledFlag is true and RemoteFlag is false
7175 auto sampling_result3 =
72- sampler_off.ShouldSample (parent_context_sampled , trace_id, " " , span_kind, view, links);
76+ sampler_off.ShouldSample (parent_context_sampled_local , trace_id, " " , span_kind, view, links);
7377 ASSERT_EQ (Decision::RECORD_AND_SAMPLE, sampling_result3.decision );
7478 ASSERT_EQ (" congo=t61rcWkgMzE" , sampling_result3.trace_state ->ToHeader ());
7579
76- // Case 3: Parent exists and SampledFlag is false
77- auto sampling_result4 =
78- sampler_on. ShouldSample (parent_context_nonsampled, trace_id, " " , span_kind, view, links);
80+ // Case 3: Parent exists and SampledFlag is false and RemoteFlag is false
81+ auto sampling_result4 = sampler_on. ShouldSample (parent_context_nonsampled_local, trace_id, " " ,
82+ span_kind, view, links);
7983 ASSERT_EQ (Decision::DROP, sampling_result4.decision );
8084 ASSERT_EQ (" congo=t61rcWkgMzE" , sampling_result4.trace_state ->ToHeader ());
85+
86+ // Case 4: Parent exists, SampledFlag is true and RemoteFlag is true
87+ auto sampling_result5 =
88+ sampler_off.ShouldSample (parent_context_sampled_remote, trace_id, " " , span_kind, view, links);
89+ ASSERT_EQ (Decision::RECORD_AND_SAMPLE, sampling_result5.decision );
90+ ASSERT_EQ (" congo=t61rcWkgMzE" , sampling_result5.trace_state ->ToHeader ());
91+
92+ // Case 5: Parent exists, SampledFlag is false and RemoteFlag is true
93+ auto sampling_result6 = sampler_on.ShouldSample (parent_context_nonsampled_remote, trace_id, " " ,
94+ span_kind, view, links);
95+ ASSERT_EQ (Decision::DROP, sampling_result6.decision );
96+ ASSERT_EQ (" congo=t61rcWkgMzE" , sampling_result6.trace_state ->ToHeader ());
8197}
8298
8399TEST (ParentBasedSampler, GetDescription)
0 commit comments