Skip to content

Commit 023588d

Browse files
fix: new tests (#680)
1 parent f309196 commit 023588d

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

53 files changed

+1869
-24331
lines changed

.github/workflows/build-test-release.yml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -199,7 +199,8 @@ jobs:
199199
strategy:
200200
fail-fast: false
201201
matrix:
202-
splunk-version: [8.1, 8.2]
202+
# splunk-version: [8.1, 8.2]
203+
splunk-version: [8.2]
203204
test-marker: [
204205
"splunk_connection_docker",
205206
"splunk_app_fiction",

pytest_splunk_addon/splunk.py

Lines changed: 9 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@
2424
import os
2525
import shutil
2626
from collections import defaultdict
27-
from itertools import chain
2827
from time import sleep
2928
import json
3029
import pytest
@@ -34,6 +33,7 @@
3433
from .helmut.splunk.cloud import CloudSplunk
3534
from .helmut_lib.SearchUtil import SearchUtil
3635
from .standard_lib.event_ingestors import IngestorHelper
36+
from .standard_lib.CIM_Models.datamodel_definition import datamodels
3737
import configparser
3838
from filelock import FileLock
3939

@@ -803,54 +803,29 @@ def file_system_prerequisite():
803803

804804

805805
@pytest.fixture(scope="session")
806-
def splunk_dm_recommended_fields(splunk_search_util):
806+
def splunk_dm_recommended_fields():
807807
"""
808808
Returns function which gets recommended fields from Splunk for given datamodel
809809
810810
Note that data is being dynamically retrieved from Splunk. When CIM add-on version changes
811811
retrieved data may differ
812-
813-
Args:
814-
splunk_search_util: Other fixture preparing connection to Splunk Search.
815-
816812
"""
817813
recommended_fields = defaultdict(list)
818-
cim_path = os.path.join(
819-
os.path.dirname(__file__), "standard_lib", "CIM_Models", "5.0.0"
820-
)
821-
822-
def _find(name, dictionary):
823-
for key, value in dictionary.items():
824-
if key == name:
825-
yield value
826-
elif isinstance(value, dict):
827-
yield from _find(name, value)
828-
elif isinstance(value, list):
829-
for element in value:
830-
if isinstance(element, dict):
831-
yield from _find(name, element)
832814

833-
def update_recommended_fields(model, datasets):
834-
model_key = f"{model}:{':'.join(datasets)}".strip(":")
815+
def update_recommended_fields(model, datasets, cim_version):
816+
model_key = f"{cim_version}:{model}:{':'.join(datasets)}".strip(":")
835817

836818
if model_key not in recommended_fields:
837819
LOGGER.info(f"Fetching {model_key} definition")
838-
with open(os.path.join(cim_path, f"{model}.json")) as f:
839-
defined_models = json.load(f)
840-
for _object in defined_models["objects"]:
841-
object_name = _object["objectName"]
820+
datamodel_per_cim = datamodels.get(cim_version) or datamodels["latest"]
821+
datamodel = datamodel_per_cim[model]
822+
for object_name, value in datamodel.items():
842823
if (
843-
_object["parentName"] == "BaseEvent"
824+
object_name == "BaseEvent"
844825
or object_name in datasets
845826
or object_name == model
846827
):
847-
for fields in chain(
848-
_find("fields", _object), _find("outputFields", _object)
849-
):
850-
for field in fields:
851-
recommended = field["comment"].get("recommended")
852-
if recommended:
853-
recommended_fields[model_key].append(field["fieldName"])
828+
recommended_fields[model_key] += value
854829

855830
if not recommended_fields.get(model_key) or []:
856831
raise ValueError(f"Model {model_key} definition was not fetched")

0 commit comments

Comments
 (0)