Skip to content

Commit 1bfd8b1

Browse files
authored
feat!: Refactor Basic class for requirement test (#514)
BREAKING CHANGE:TA's tests/requirement_test/pytest.ini file requires update
1 parent f6ecef4 commit 1bfd8b1

File tree

5 files changed

+78
-16
lines changed

5 files changed

+78
-16
lines changed

pytest_splunk_addon/standard_lib/addon_basic.py

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -22,13 +22,10 @@
2222
from .fields_tests import FieldTestTemplates
2323
from .cim_tests import CIMTestTemplates, FieldTestHelper
2424
from .index_tests import IndexTimeTestTemplate
25-
from .requirement_tests import ReqsTestTemplates
2625
import pytest
2726

2827

29-
class Basic(
30-
FieldTestTemplates, CIMTestTemplates, IndexTimeTestTemplate, ReqsTestTemplates
31-
):
28+
class Basic(FieldTestTemplates, CIMTestTemplates, IndexTimeTestTemplate):
3229
"""
3330
Base class for test cases. Inherit this class to include the test
3431
cases for an Add-on. Only implement the common tests here, all the other
@@ -40,7 +37,6 @@ class Basic(
4037
@pytest.mark.splunk_indextime
4138
@pytest.mark.splunk_searchtime_cim
4239
@pytest.mark.splunk_searchtime_fields
43-
@pytest.mark.splunk_searchtime_requirements
4440
def test_events_with_untokenised_values(
4541
self, splunk_search_util, splunk_ingest_data, splunk_setup, record_property
4642
):
Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
# Copyright 2022 Splunk Inc.
2+
#
3+
# Licensed under the Apache License, Version 2.0 (the "License");
4+
# you may not use this file except in compliance with the License.
5+
# You may obtain a copy of the License at
6+
#
7+
# http://www.apache.org/licenses/LICENSE-2.0
8+
#
9+
# Unless required by applicable law or agreed to in writing, software
10+
# distributed under the License is distributed on an "AS IS" BASIS,
11+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12+
# See the License for the specific language governing permissions and
13+
# limitations under the License.
14+
#
15+
"""
16+
Base class for requirement test cases.
17+
"""
18+
from .requirement_tests import ReqsTestTemplates
19+
from .cim_tests import FieldTestHelper
20+
import pytest
21+
22+
23+
class RequirementBasic(ReqsTestTemplates):
24+
"""
25+
Base class for requirement test cases.Only implement the common tests here.
26+
"""
27+
28+
@pytest.mark.splunk_searchtime_requirements
29+
def test_events_with_untokenised_values(
30+
self, splunk_search_util, splunk_ingest_data, splunk_setup, record_property
31+
):
32+
"""
33+
Test case to validate that all the events have been properly tokenised
34+
35+
Args:
36+
splunk_search_util (SearchUtil): Object that helps to search on Splunk.
37+
splunk_ingest_data (fixture): To ingest data into splunk.
38+
record_property (fixture): Document facts of test cases.
39+
40+
"""
41+
query = f"search index=* ##*## | stats count by source, sourcetype"
42+
record_property("Query", query)
43+
results = list(
44+
splunk_search_util.getFieldValuesList(
45+
query,
46+
interval=0,
47+
retries=0,
48+
)
49+
)
50+
if results:
51+
record_property("results", results)
52+
result_str = FieldTestHelper.get_table_output(
53+
headers=["Source", "Sourcetype"],
54+
value_list=[
55+
[
56+
result.get("source"),
57+
result.get("sourcetype"),
58+
]
59+
for result in results
60+
],
61+
)
62+
assert False, (
63+
f"For the query: '{query}'\n"
64+
f"Some fields are not tokenized in the events of following source and sourcetype \n{result_str}"
65+
)

pytest_splunk_addon/standard_lib/requirement_tests/test_templates.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -144,7 +144,10 @@ def remove_empty_keys(self, event):
144144

145145
@pytest.mark.splunk_searchtime_requirements
146146
def test_requirement_params(
147-
self, splunk_searchtime_requirement_param, splunk_search_util
147+
self,
148+
splunk_searchtime_requirement_param,
149+
splunk_search_util,
150+
splunk_ingest_data,
148151
):
149152
model_datalist = splunk_searchtime_requirement_param["model_list"]
150153
escaped_event = splunk_searchtime_requirement_param["escaped_event"]

tests/constants.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -649,7 +649,6 @@
649649
"*test_splunk_fiction_indextime.py::Test_App::test_tags*splunk_searchtime_fields_tags0* SKIPPED*",
650650
"*test_splunk_fiction_indextime.py::Test_App::test_eventtype*splunk_searchtime_fields_eventtypes0* SKIPPED*",
651651
"*test_splunk_fiction_indextime.py::Test_App::test_savedsearches*splunk_searchtime_fields_savedsearches0* SKIPPED*",
652-
"*test_splunk_fiction_indextime.py::Test_App::test_requirement_params* SKIPPED*",
653652
]
654653
"""
655654
Define the TA_fiction_indextime_broken add-on passed test case list.
@@ -739,7 +738,6 @@
739738
"*test_splunk_fiction_indextime_broken.py::Test_App::test_tags*splunk_searchtime_fields_tags0* SKIPPED*",
740739
"*test_splunk_fiction_indextime_broken.py::Test_App::test_eventtype*splunk_searchtime_fields_eventtypes0* SKIPPED*",
741740
"*test_splunk_fiction_indextime_broken.py::Test_App::test_savedsearches*splunk_searchtime_fields_savedsearches0* SKIPPED*",
742-
"*test_splunk_fiction_indextime_broken.py::Test_App::test_requirement_params* SKIPPED*",
743741
]
744742
"""
745743
Define TA_requirement_tests passed test

tests/test_splunk_addon.py

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -520,8 +520,8 @@ def test_splunk_app_requirements(testdir):
520520

521521
testdir.makepyfile(
522522
"""
523-
from pytest_splunk_addon.standard_lib.addon_basic import Basic
524-
class Test_App(Basic):
523+
from pytest_splunk_addon.standard_lib.addon_requirements_basic import RequirementBasic
524+
class Test_App(RequirementBasic):
525525
def empty_method():
526526
pass
527527
"""
@@ -563,8 +563,8 @@ def test_splunk_app_requirements_modinput(testdir):
563563

564564
testdir.makepyfile(
565565
"""
566-
from pytest_splunk_addon.standard_lib.addon_basic import Basic
567-
class Test_App(Basic):
566+
from pytest_splunk_addon.standard_lib.addon_requirements_basic import RequirementBasic
567+
class Test_App(RequirementBasic):
568568
def empty_method():
569569
pass
570570
"""
@@ -611,8 +611,8 @@ def test_splunk_app_requirements_uf(testdir):
611611

612612
testdir.makepyfile(
613613
"""
614-
from pytest_splunk_addon.standard_lib.addon_basic import Basic
615-
class Test_App(Basic):
614+
from pytest_splunk_addon.standard_lib.addon_requirements_basic import RequirementBasic
615+
class Test_App(RequirementBasic):
616616
def empty_method():
617617
pass
618618
"""
@@ -654,8 +654,8 @@ def test_splunk_app_requirements_scripted(testdir):
654654

655655
testdir.makepyfile(
656656
"""
657-
from pytest_splunk_addon.standard_lib.addon_basic import Basic
658-
class Test_App(Basic):
657+
from pytest_splunk_addon.standard_lib.addon_requirements_basic import RequirementBasic
658+
class Test_App(RequirementBasic):
659659
def empty_method():
660660
pass
661661
"""

0 commit comments

Comments
 (0)