Skip to content

Commit 64e5211

Browse files
authored
[snmp] update e2e test default metadata namespace (#10252)
* [snmp] update e2e tests to support default metadata collection and new namespace tag * [snmp] 🚚 move e2e regex match core specific test to core
1 parent c857241 commit 64e5211

3 files changed

Lines changed: 99 additions & 21 deletions

File tree

ā€Žsnmp/tests/test_e2e_core.pyā€Ž

Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,7 @@ def assert_apc_ups_metrics(dd_agent_check, config):
7979
'serial_num:test_serial',
8080
'ups_name:testIdentName',
8181
'device_vendor:apc',
82+
'device_namespace:default',
8283
]
8384
tags = profile_tags + ["snmp_device:{}".format(instance['ip_address'])]
8485

@@ -144,6 +145,7 @@ def test_e2e_core_discovery(dd_agent_check):
144145
'serial_num:test_serial',
145146
'ups_name:testIdentName',
146147
'device_vendor:apc',
148+
'device_namespace:default',
147149
# autodiscovery
148150
'autodiscovery_subnet:' + network,
149151
'snmp_device:' + ip_address,
@@ -157,3 +159,81 @@ def test_e2e_core_discovery(dd_agent_check):
157159
'snmp.devices_monitored', metric_type=aggregator.GAUGE, tags=tags_with_loader, at_least=4, value=1
158160
)
159161
aggregator.assert_metric('snmp.upsAdvBatteryTemperature', metric_type=aggregator.GAUGE, tags=tags, at_least=4)
162+
163+
164+
def test_e2e_regex_match(dd_agent_check):
165+
metrics = [
166+
{
167+
'MIB': "IF-MIB",
168+
'table': {
169+
"name": "ifTable",
170+
"OID": "1.3.6.1.2.1.2.2",
171+
},
172+
'symbols': [
173+
{
174+
"name": "ifInOctets",
175+
"OID": "1.3.6.1.2.1.2.2.1.10",
176+
},
177+
{
178+
"name": "ifOutOctets",
179+
"OID": "1.3.6.1.2.1.2.2.1.16",
180+
},
181+
],
182+
'metric_tags': [
183+
{
184+
'tag': "interface",
185+
'column': {
186+
"name": "ifDescr",
187+
"OID": "1.3.6.1.2.1.2.2.1.2",
188+
},
189+
},
190+
{
191+
'column': {
192+
"name": "ifDescr",
193+
"OID": "1.3.6.1.2.1.2.2.1.2",
194+
},
195+
'match': '(\\w)(\\w+)',
196+
'tags': {'prefix': '\\1', 'suffix': '\\2'},
197+
},
198+
],
199+
}
200+
]
201+
config = common.generate_container_instance_config(metrics)
202+
instance = config['instances'][0]
203+
instance['metric_tags'] = [
204+
{
205+
"OID": "1.3.6.1.2.1.1.5.0",
206+
"symbol": "sysName",
207+
"match": "(\\d+)(\\w+)",
208+
"tags": {
209+
"digits": "\\1",
210+
"remainder": "\\2",
211+
},
212+
},
213+
{
214+
"OID": "1.3.6.1.2.1.1.5.0",
215+
"symbol": "sysName",
216+
"match": "(\\w)(\\w)",
217+
"tags": {
218+
"letter1": "\\1",
219+
"letter2": "\\2",
220+
},
221+
},
222+
]
223+
aggregator = dd_agent_check(config, rate=True)
224+
config['init_config']['loader'] = 'core'
225+
aggregator = dd_agent_check(config, rate=True)
226+
227+
# raw sysName: 41ba948911b9
228+
aggregator.assert_metric(
229+
'snmp.devices_monitored',
230+
tags=[
231+
'digits:41',
232+
'remainder:ba948911b9',
233+
'letter1:4',
234+
'letter2:1',
235+
'loader:core',
236+
'snmp_device:' + instance['ip_address'],
237+
'device_namespace:default',
238+
],
239+
)

ā€Žsnmp/tests/test_e2e_core_vs_python.pyā€Ž

Lines changed: 18 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,10 @@
2424
'datadog.snmp.submitted_metrics',
2525
]
2626

27+
SKIPPED_TAGS = ['loader']
28+
29+
CORE_ONLY_TAGS = ['device_namespace:default']
30+
2731

2832
def test_e2e_metric_types(dd_agent_check):
2933
instance = common.generate_container_instance_config(SUPPORTED_METRIC_TYPES)
@@ -63,7 +67,7 @@ def test_e2e_v3_explicit_version(dd_agent_check):
6367
assert_python_vs_core(dd_agent_check, config, expected_total_count=511 + 5)
6468

6569

66-
def test_e2e_regex_match(dd_agent_check, aggregator):
70+
def test_e2e_regex_match(dd_agent_check):
6771
metrics = [
6872
{
6973
'MIB': "IF-MIB",
@@ -124,23 +128,6 @@ def test_e2e_regex_match(dd_agent_check, aggregator):
124128
]
125129
assert_python_vs_core(dd_agent_check, config)
126130

127-
config['init_config']['loader'] = 'core'
128-
aggregator.reset()
129-
aggregator = dd_agent_check(config, rate=True)
130-
131-
# raw sysName: 41ba948911b9
132-
aggregator.assert_metric(
133-
'snmp.devices_monitored',
134-
tags=[
135-
'digits:41',
136-
'remainder:ba948911b9',
137-
'letter1:4',
138-
'letter2:1',
139-
'loader:core',
140-
'snmp_device:' + instance['ip_address'],
141-
],
142-
)
143-
144131

145132
def test_e2e_scalar_oid_retry(dd_agent_check):
146133
scalar_objects_with_tags = [
@@ -358,6 +345,7 @@ def assert_python_vs_core(
358345
python_config['init_config']['loader'] = 'python'
359346
core_config = deepcopy(config)
360347
core_config['init_config']['loader'] = 'core'
348+
core_config['init_config']['collect_device_metadata'] = 'false'
361349
metrics_to_skip = metrics_to_skip or []
362350

363351
# building expected metrics (python)
@@ -368,12 +356,14 @@ def assert_python_vs_core(
368356
if stub.name in metrics_to_skip:
369357
continue
370358
stub = normalize_stub_metric(stub)
371-
python_metrics[(stub.name, stub.type, tuple(sorted(stub.tags)))].append(stub)
359+
python_metrics[(stub.name, stub.type, tuple(sorted(list(stub.tags) + CORE_ONLY_TAGS)))].append(stub)
372360

373361
python_service_checks = defaultdict(list)
374362
for _, service_checks in aggregator._service_checks.items():
375363
for stub in service_checks:
376-
python_service_checks[(stub.name, stub.status, tuple(sorted(stub.tags)), stub.message)].append(stub)
364+
python_service_checks[
365+
(stub.name, stub.status, tuple(sorted(list(stub.tags) + CORE_ONLY_TAGS)), stub.message)
366+
].append(stub)
377367

378368
total_count_python = sum(len(stubs) for stubs in python_metrics.values())
379369

@@ -426,7 +416,7 @@ def assert_python_vs_core(
426416

427417

428418
def normalize_stub_metric(stub):
429-
tags = [t for t in stub.tags if not t.startswith('loader:')] # Remove `loader` tag
419+
tags = [t for t in stub.tags if not is_skipped_tag(t)] # Remove skipped tag
430420
return MetricStub(
431421
stub.name,
432422
stub.type,
@@ -435,3 +425,10 @@ def normalize_stub_metric(stub):
435425
stub.hostname,
436426
stub.device,
437427
)
428+
429+
430+
def is_skipped_tag(tag):
431+
for skipped_tag in SKIPPED_TAGS:
432+
if tag.startswith('{}:'.format(skipped_tag)):
433+
return True
434+
return False

ā€Žsnmp/tests/test_e2e_snmp_listener.pyā€Ž

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ def test_e2e_snmp_listener(dd_agent_check, container_ip, autodiscovery_ready):
4949
'autodiscovery_subnet:{}.0/29'.format(subnet_prefix),
5050
'tag1:val1',
5151
'tag2:val2',
52+
'device_namespace:default',
5253
]
5354

5455
common.assert_common_metrics(aggregator, common_tags, is_e2e=True, loader='core')

0 commit comments

Comments
Ā (0)
⚔