Skip to content

Commit 11c5797

Browse files
brettlangdonKyle-Verhoogmergify[bot]
authored
Simplify DatadogSampler test cases (#3047)
* Simplify DatadogSampler test cases * remove unused variables * Update tests/tracer/test_sampler.py Co-authored-by: Kyle Verhoog <[email protected]> * address comments Co-authored-by: Kyle Verhoog <[email protected]> Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
1 parent 682b7f0 commit 11c5797

File tree

1 file changed

+30
-96
lines changed

1 file changed

+30
-96
lines changed

tests/tracer/test_sampler.py

Lines changed: 30 additions & 96 deletions
Original file line numberDiff line numberDiff line change
@@ -742,143 +742,77 @@ def test_datadog_sampler_sample_rules(sampler, sampling_priority, rule, limit, d
742742

743743
def test_datadog_sampler_tracer(dummy_tracer):
744744
rule = SamplingRule(sample_rate=1.0, name="test.span")
745-
rule_spy = mock.Mock(spec=rule, wraps=rule)
746-
rule_spy.sample_rate = rule.sample_rate
747-
748-
sampler = DatadogSampler(rules=[rule_spy])
749-
limiter_spy = mock.Mock(spec=sampler.limiter, wraps=sampler.limiter)
750-
sampler.limiter = limiter_spy
751-
sampler_spy = mock.Mock(spec=sampler, wraps=sampler)
752-
753-
dummy_tracer.configure(sampler=sampler_spy)
754-
755-
assert dummy_tracer.sampler is sampler_spy
745+
sampler = DatadogSampler(rules=[rule])
746+
dummy_tracer.configure(sampler=sampler)
756747

757-
with dummy_tracer.trace("test.span") as span:
758-
# Assert all of our expected functions were called
759-
sampler_spy.sample.assert_called_once_with(span)
760-
rule_spy.matches.assert_called_once_with(span)
761-
rule_spy.sample.assert_called_once_with(span)
762-
limiter_spy.is_allowed.assert_called_once_with()
748+
with dummy_tracer.trace("test.span"):
749+
pass
763750

764751
spans = dummy_tracer.pop()
765752
assert len(spans) == 1, "Span should have been sampled and written"
766753
assert spans[0].get_metric(SAMPLING_PRIORITY_KEY) is USER_KEEP
767-
assert spans[0].get_metric(SAMPLING_RULE_DECISION) == 1.0
754+
assert_sampling_decision_tags(spans[0], rule=1.0, limit=1.0)
768755

769756

770757
def test_datadog_sampler_tracer_rate_limited(dummy_tracer):
771758
rule = SamplingRule(sample_rate=1.0, name="test.span")
772-
rule_spy = mock.Mock(spec=rule, wraps=rule)
773-
rule_spy.sample_rate = rule.sample_rate
774-
775-
sampler = DatadogSampler(rules=[rule_spy])
776-
limiter_spy = mock.Mock(spec=sampler.limiter, wraps=sampler.limiter)
777-
limiter_spy.is_allowed.return_value = False # Have the limiter deny the span
778-
sampler.limiter = limiter_spy
779-
sampler_spy = mock.Mock(spec=sampler, wraps=sampler)
780-
781-
dummy_tracer.configure(sampler=sampler_spy)
782-
783-
assert dummy_tracer.sampler is sampler_spy
759+
sampler = DatadogSampler(rules=[rule], rate_limit=0)
760+
dummy_tracer.configure(sampler=sampler)
784761

785-
with dummy_tracer.trace("test.span") as span:
786-
# Assert all of our expected functions were called
787-
sampler_spy.sample.assert_called_once_with(span)
788-
rule_spy.matches.assert_called_once_with(span)
789-
rule_spy.sample.assert_called_once_with(span)
790-
limiter_spy.is_allowed.assert_called_once_with()
762+
with dummy_tracer.trace("test.span"):
763+
pass
791764

792765
spans = dummy_tracer.pop()
793766
assert len(spans) == 1, "Span should have been sampled and written"
794767
assert spans[0].get_metric(SAMPLING_PRIORITY_KEY) is USER_REJECT
795-
assert spans[0].get_metric(SAMPLING_LIMIT_DECISION) is None
796-
assert spans[0].get_metric(SAMPLING_RULE_DECISION) == 1.0
768+
assert_sampling_decision_tags(spans[0], rule=1.0, limit=0.0)
797769

798770

799771
def test_datadog_sampler_tracer_rate_0(dummy_tracer):
800-
rule = SamplingRule(sample_rate=0, name="test.span") # Sample rate of 0 means never sample
801-
rule_spy = mock.Mock(spec=rule, wraps=rule)
802-
rule_spy.sample_rate = rule.sample_rate
803-
804-
sampler = DatadogSampler(rules=[rule_spy])
805-
limiter_spy = mock.Mock(spec=sampler.limiter, wraps=sampler.limiter)
806-
sampler.limiter = limiter_spy
807-
sampler_spy = mock.Mock(spec=sampler, wraps=sampler)
808-
809-
dummy_tracer.configure(sampler=sampler_spy)
810-
811-
assert dummy_tracer.sampler is sampler_spy
772+
# Sample rate of 0 means never sample
773+
rule = SamplingRule(sample_rate=0, name="test.span")
774+
sampler = DatadogSampler(rules=[rule])
775+
dummy_tracer.configure(sampler=sampler)
812776

813-
with dummy_tracer.trace("test.span") as span:
814-
# Assert all of our expected functions were called
815-
sampler_spy.sample.assert_called_once_with(span)
816-
rule_spy.matches.assert_called_once_with(span)
817-
rule_spy.sample.assert_called_once_with(span)
818-
limiter_spy.is_allowed.assert_not_called()
777+
with dummy_tracer.trace("test.span"):
778+
pass
819779

820780
spans = dummy_tracer.pop()
821781
assert len(spans) == 1, "Span should have been sampled and written"
822782
assert spans[0].get_metric(SAMPLING_PRIORITY_KEY) is USER_REJECT
823-
assert spans[0].get_metric(SAMPLING_RULE_DECISION) == 0
783+
assert_sampling_decision_tags(spans[0], rule=0.0)
824784

825785

826786
def test_datadog_sampler_tracer_child(dummy_tracer):
827-
rule = SamplingRule(sample_rate=1.0) # No rules means it gets applied to every span
828-
rule_spy = mock.Mock(spec=rule, wraps=rule)
829-
rule_spy.sample_rate = rule.sample_rate
830-
831-
sampler = DatadogSampler(rules=[rule_spy])
832-
limiter_spy = mock.Mock(spec=sampler.limiter, wraps=sampler.limiter)
833-
sampler.limiter = limiter_spy
834-
sampler_spy = mock.Mock(spec=sampler, wraps=sampler)
835-
836-
dummy_tracer.configure(sampler=sampler_spy)
837-
838-
assert dummy_tracer.sampler is sampler_spy
787+
# No rules means it gets applied to every span
788+
rule = SamplingRule(sample_rate=1.0)
789+
sampler = DatadogSampler(rules=[rule])
790+
dummy_tracer.configure(sampler=sampler)
839791

840-
with dummy_tracer.trace("parent.span") as parent:
792+
with dummy_tracer.trace("parent.span"):
841793
with dummy_tracer.trace("child.span"):
842-
# Assert all of our expected functions were called
843-
# DEV: `assert_called_once_with` ensures we didn't also call with the child span
844-
sampler_spy.sample.assert_called_once_with(parent)
845-
rule_spy.matches.assert_called_once_with(parent)
846-
rule_spy.sample.assert_called_once_with(parent)
847-
limiter_spy.is_allowed.assert_called_once_with()
794+
pass
848795

849796
spans = dummy_tracer.pop()
850797
assert len(spans) == 2, "Trace should have been sampled and written"
851798
assert spans[0].get_metric(SAMPLING_PRIORITY_KEY) is USER_KEEP
852-
assert spans[0].get_metric(SAMPLING_RULE_DECISION) == 1.0
799+
assert_sampling_decision_tags(spans[0], rule=1.0, limit=1.0)
800+
assert_sampling_decision_tags(spans[1], agent=None, rule=None, limit=None)
853801

854802

855803
def test_datadog_sampler_tracer_start_span(dummy_tracer):
856-
rule = SamplingRule(sample_rate=1.0) # No rules means it gets applied to every span
857-
rule_spy = mock.Mock(spec=rule, wraps=rule)
858-
rule_spy.sample_rate = rule.sample_rate
859-
860-
sampler = DatadogSampler(rules=[rule_spy])
861-
limiter_spy = mock.Mock(spec=sampler.limiter, wraps=sampler.limiter)
862-
sampler.limiter = limiter_spy
863-
sampler_spy = mock.Mock(spec=sampler, wraps=sampler)
864-
865-
dummy_tracer.configure(sampler=sampler_spy)
866-
867-
assert dummy_tracer.sampler is sampler_spy
804+
# No rules means it gets applied to every span
805+
rule = SamplingRule(sample_rate=1.0)
806+
sampler = DatadogSampler(rules=[rule])
807+
dummy_tracer.configure(sampler=sampler)
868808

869809
span = dummy_tracer.start_span("test.span")
870810
span.finish()
871811

872-
# Assert all of our expected functions were called
873-
sampler_spy.sample.assert_called_once_with(span)
874-
rule_spy.matches.assert_called_once_with(span)
875-
rule_spy.sample.assert_called_once_with(span)
876-
limiter_spy.is_allowed.assert_called_once_with()
877-
878812
spans = dummy_tracer.pop()
879813
assert len(spans) == 1, "Span should have been sampled and written"
880814
assert spans[0].get_metric(SAMPLING_PRIORITY_KEY) is USER_KEEP
881-
assert spans[0].get_metric(SAMPLING_RULE_DECISION) == 1.0
815+
assert_sampling_decision_tags(spans[0], rule=1.0, limit=1.0)
882816

883817

884818
def test_datadog_sampler_update_rate_by_service_sample_rates(dummy_tracer):

0 commit comments

Comments
 (0)