Skip to content

Commit 55493ac

Browse files
fix: exception fields structure (#707)
1 parent 525ed4a commit 55493ac

File tree

6 files changed

+44
-38
lines changed

6 files changed

+44
-38
lines changed

.gitignore

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,4 +31,7 @@ docs/_build/
3131
.vscode
3232
test_report.md
3333
.idea/
34-
.python-version
34+
.python-version
35+
*.pickle
36+
*_events.lock
37+
*_events

pytest_splunk_addon/standard_lib/cim_tests/test_generator.py

Lines changed: 26 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -262,25 +262,30 @@ def generate_recommended_fields_tests(self):
262262
for event in self.tokenized_events:
263263
if not event.requirement_test_data:
264264
continue
265-
for _, datamodel in event.requirement_test_data["datamodels"].items():
266-
model, *datasets = datamodel.split(":")
267-
model = model.replace(" ", "_")
268-
if datasets:
269-
datasets = [dataset.replace(" ", "_") for dataset in datasets]
270-
271-
fields = (
272-
list(event.requirement_test_data["cim_fields"].keys())
273-
+ event.requirement_test_data["missing_recommended_fields"]
274-
)
275-
for exception in event.requirement_test_data["exceptions"]:
276-
fields.append(exception["name"])
265+
for _, datamodels in event.requirement_test_data["datamodels"].items():
266+
if type(datamodels) is not list:
267+
datamodels = [datamodels]
268+
for datamodel in datamodels:
269+
model, *datasets = datamodel.split(":")
270+
model = model.replace(" ", "_")
271+
if datasets:
272+
datasets = [dataset.replace(" ", "_") for dataset in datasets]
273+
274+
fields = (
275+
list(event.requirement_test_data["cim_fields"].keys())
276+
+ event.requirement_test_data["missing_recommended_fields"]
277+
)
278+
for exception, _ in event.requirement_test_data[
279+
"exceptions"
280+
].items():
281+
fields.append(exception)
277282

278-
yield pytest.param(
279-
{
280-
"datamodel": model,
281-
"datasets": datasets,
282-
"fields": fields,
283-
"cim_version": event.requirement_test_data["cim_version"],
284-
},
285-
id=f"{model}-{'-'.join(datasets)}::sample_name::{event.sample_name}::host::{event.metadata.get('host')}",
286-
)
283+
yield pytest.param(
284+
{
285+
"datamodel": model,
286+
"datasets": datasets,
287+
"fields": fields,
288+
"cim_version": event.requirement_test_data["cim_version"],
289+
},
290+
id=f"{model}-{'-'.join(datasets)}::sample_name::{event.sample_name}::host::{event.metadata.get('host')}",
291+
)

pytest_splunk_addon/standard_lib/fields_tests/test_generator.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -177,8 +177,11 @@ def generate_requirements_datamodels_tests(self):
177177
datamodels = event.requirement_test_data.get("datamodels")
178178
if datamodels:
179179
if type(datamodels) is dict:
180-
datamodels = [datamodels]
181-
datamodels = [dm["model"] for dm in datamodels]
180+
if type(datamodels["model"]) == list:
181+
datamodels = datamodels["model"]
182+
else:
183+
datamodels = [datamodels]
184+
datamodels = [dm["model"] for dm in datamodels]
182185
else:
183186
datamodels = []
184187
datamodels = [

pytest_splunk_addon/standard_lib/fields_tests/test_templates.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -193,6 +193,8 @@ def test_requirements_fields(
193193
retries=splunk_search_util.search_retry,
194194
)
195195

196+
assert fields_from_splunk, f"Event was not returned with search: {search}"
197+
196198
missing_fields = []
197199
wrong_value_fields = {}
198200

@@ -414,6 +416,8 @@ def test_datamodels(
414416
retries=splunk_search_util.search_retry,
415417
)
416418

419+
assert fields_from_splunk, f"Event was not returned with search: {search}"
420+
417421
extracted_tags = fields_from_splunk.get("tag", "")
418422
extracted_tags = extracted_tags.strip("][").split(", ")
419423
extracted_tags = [tag.replace("'", "") for tag in extracted_tags]

pytest_splunk_addon/standard_lib/sample_generation/sample_stanza.py

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -421,20 +421,14 @@ def populate_requirement_test_data(event):
421421
"missing_recommended_fields"
422422
] = missing_recommended_fields
423423

424-
defined_exceptions = cim.get("exceptions") or []
425-
exceptions = []
424+
defined_exceptions = cim.get("exceptions") or {}
425+
exceptions = {}
426426
if defined_exceptions:
427427
defined_fields = defined_exceptions["field"]
428428
defined_fields = (
429429
defined_fields if type(defined_fields) == list else [defined_fields]
430430
)
431431
for field in defined_fields:
432-
exceptions.append(
433-
{
434-
"name": field["@name"],
435-
"value": field["@value"],
436-
"reason": field["@reason"],
437-
}
438-
)
432+
exceptions[field["@name"]] = field["@value"]
439433
requirement_test_data["exceptions"] = exceptions
440434
return requirement_test_data

tests/unit/tests_standard_lib/tests_sample_generation/test_sample_stanza.py

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -325,7 +325,7 @@ def test_break_events_exception(self, sample_stanza, caplog):
325325
"type": "event",
326326
},
327327
"datamodels": {"model": "Alerts"},
328-
"exceptions": [],
328+
"exceptions": {},
329329
"missing_recommended_fields": ["app", "id", "user", "user_name"],
330330
},
331331
),
@@ -354,10 +354,7 @@ def test_break_events_exception(self, sample_stanza, caplog):
354354
"cim_version": "4.20.2",
355355
"cim_fields": {},
356356
"datamodels": {},
357-
"exceptions": [
358-
{"name": "mane_1", "value": "value_1", "reason": "reason_1"},
359-
{"name": "dest", "value": "192.168.0.1", "reason": "reason"},
360-
],
357+
"exceptions": {"mane_1": "value_1", "dest": "192.168.0.1"},
361358
"missing_recommended_fields": [],
362359
},
363360
),

0 commit comments

Comments
 (0)