forked from instana/python-sensor
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtest_span_disabling.py
More file actions
93 lines (77 loc) · 3.72 KB
/
Copy pathtest_span_disabling.py
File metadata and controls
93 lines (77 loc) · 3.72 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
# (c) Copyright IBM Corp. 2025
import pytest
from instana.options import BaseOptions, StandardOptions
from instana.singletons import agent
class TestSpanDisabling:
@pytest.fixture(autouse=True)
def setup(self):
# Save original options
self.original_options = agent.options
yield
# Restore original options
agent.options = self.original_options
def test_is_span_disabled_default(self):
options = BaseOptions()
assert not options.is_span_disabled(category="logging")
assert not options.is_span_disabled(category="databases")
assert not options.is_span_disabled(category="stack")
assert not options.is_span_disabled(span_type="redis")
def test_disable_category(self):
options = BaseOptions()
options.disabled_spans = ["logging"]
assert options.is_span_disabled(category="logging")
assert not options.is_span_disabled(category="databases")
def test_disable_type(self):
options = BaseOptions()
options.disabled_spans = ["redis"]
assert options.is_span_disabled(span_type="redis")
assert not options.is_span_disabled(span_type="mysql")
def test_type_category_relationship(self):
options = BaseOptions()
options.disabled_spans = ["databases"]
assert options.is_span_disabled(span_type="redis")
assert options.is_span_disabled(span_type="mysql")
def test_precedence_rules(self):
options = BaseOptions()
options.disabled_spans = ["databases"]
options.enabled_spans = ["redis"]
assert options.is_span_disabled(category="databases")
assert options.is_span_disabled(span_type="mysql")
assert not options.is_span_disabled(span_type="redis")
@pytest.mark.parametrize("value", ["True", "true", "1"])
def test_env_var_disable_all(self, value, monkeypatch):
monkeypatch.setenv("INSTANA_TRACING_DISABLE", value)
options = BaseOptions()
assert options.is_span_disabled(category="logging") is True
assert options.is_span_disabled(category="databases") is True
assert options.is_span_disabled(category="messaging") is True
assert options.is_span_disabled(category="protocols") is True
assert options.is_span_disabled(category="stack") is True
def test_env_var_disable_specific(self, monkeypatch):
monkeypatch.setenv("INSTANA_TRACING_DISABLE", "logging, redis")
options = BaseOptions()
assert options.is_span_disabled(category="logging") is True
assert options.is_span_disabled(category="databases") is False
assert options.is_span_disabled(span_type="redis") is True
assert options.is_span_disabled(span_type="mysql") is False
def test_yaml_config(self):
options = StandardOptions()
tracing_config = {
"disable": [{"logging": True}, {"redis": False}, {"databases": True}]
}
options.set_tracing(tracing_config)
assert options.is_span_disabled(category="logging")
assert options.is_span_disabled(category="databases")
assert options.is_span_disabled(span_type="mysql")
assert not options.is_span_disabled(span_type="redis")
def test_disable_stack_category(self):
options = BaseOptions()
options.disabled_spans = ["stack"]
assert options.is_span_disabled(category="stack")
assert not options.is_span_disabled(category="logging")
def test_env_var_disable_stack(self, monkeypatch):
monkeypatch.setenv("INSTANA_TRACING_DISABLE", "stack")
options = BaseOptions()
assert options.is_span_disabled(category="stack") is True
assert options.is_span_disabled(category="logging") is False
# Made with Bob