Skip to content

Commit 1922e55

Browse files
committed
Add unit test for _get_resource_ids method in SCSClusterStatusChecker
1 parent dc694fa commit 1922e55

3 files changed

Lines changed: 108 additions & 4 deletions

File tree

tests/modules/get_cluster_status_scs_test.py

Lines changed: 42 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,47 @@ def scs_checker(self):
2525
"""
2626
return SCSClusterStatusChecker(sap_sid="TST", ansible_os_family="REDHAT")
2727

28-
def test_process_node_attributes(self, scs_checker):
28+
def test_get_resource_ids(self, mocker, scs_checker):
29+
"""
30+
Test the _get_resource_ids method to ensure ASCS and ERS resource IDs are
31+
correctly identified.
32+
33+
:param mocker: Mocking library to patch methods.
34+
:type mocker: pytest_mock.MockerFixture
35+
:param scs_checker: Instance of SCSClusterStatusChecker.
36+
:type scs_checker: SCSClusterStatusChecker
37+
"""
38+
mock_resources_xml = """
39+
<resources>
40+
<primitive id="rsc_sap_TST_ASCS00" type="SAPInstance">
41+
<instance_attributes>
42+
<nvpair name="IS_ERS" value="false"/>
43+
</instance_attributes>
44+
</primitive>
45+
<primitive id="rsc_sap_TST_ERS01" type="SAPInstance">
46+
<instance_attributes>
47+
<nvpair name="IS_ERS" value="true"/>
48+
</instance_attributes>
49+
</primitive>
50+
</resources>
51+
"""
52+
53+
mocker.patch.object(
54+
scs_checker,
55+
"execute_command_subprocess",
56+
return_value=mock_resources_xml,
57+
)
58+
59+
scs_checker._get_resource_ids()
60+
assert scs_checker.ascs_resource_id == "rsc_sap_TST_ASCS00"
61+
assert scs_checker.ers_resource_id == "rsc_sap_TST_ERS01"
62+
63+
def test_process_node_attributes(self, mocker, scs_checker):
2964
"""
3065
Test processing node attributes to identify ASCS and ERS nodes.
3166
67+
:param mocker: Mocker fixture for mocking functions.
68+
:type mocker: pytest_mock.MockerFixture
3269
:param scs_checker: Instance of SCSClusterStatusChecker.
3370
:type scs_checker: SCSClusterStatusChecker
3471
"""
@@ -52,6 +89,8 @@ def test_process_node_attributes(self, scs_checker):
5289
</node_attributes>
5390
</dummy>
5491
"""
92+
scs_checker.ascs_resource_id = "rsc_sap_TST_ASCS00"
93+
scs_checker.ers_resource_id = "rsc_sap_TST_ERS01"
5594
node_attributes = ET.fromstring(xml_str)
5695

5796
scs_checker._process_node_attributes(node_attributes)
@@ -83,6 +122,8 @@ def test_process_node_attributes_incomplete(self, scs_checker):
83122
</node_attributes>
84123
</dummy>
85124
"""
125+
scs_checker.ascs_resource_id = "rsc_sap_TST_ASCS00"
126+
scs_checker.ers_resource_id = "rsc_sap_TST_ERS01"
86127
node_attributes = ET.fromstring(xml_str)
87128

88129
scs_checker._process_node_attributes(node_attributes)

tests/modules/get_pcmk_properties_db_test.py

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -112,9 +112,13 @@
112112
"CRM_CONFIG_DEFAULTS": {"stonith-enabled": "true"},
113113
"RESOURCE_DEFAULTS": {
114114
"REDHAT": {
115-
"stonith": {
116-
"meta_attributes": {"priority": "10"},
117-
"operations": {"monitor": {"timeout": "30"}},
115+
"fence_agent": {
116+
"meta_attributes": {"pcmk_delay_max": "15"},
117+
"operations": {"monitor": {"timeout": ["700", "700s"]}},
118+
},
119+
"sbd_stonith": {
120+
"meta_attributes": {"pcmk_delay_max": "15"},
121+
"operations": {"monitor": {"timeout": ["30", "30s"]}},
118122
},
119123
"hana": {"meta_attributes": {"clone-max": "2"}},
120124
}

tests/modules/log_parser_test.py

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -156,3 +156,62 @@ def exit_json(self, **kwargs):
156156
monkey_patch.setattr("src.modules.log_parser.AnsibleModule", MockAnsibleModule)
157157
main()
158158
assert mock_result["status"] == "FAILED"
159+
160+
def test_merge_logs_success(self, log_parser_redhat):
161+
"""
162+
Test the merge_logs method for successful log merging.
163+
164+
:param log_parser_redhat: LogParser instance.
165+
:type log_parser_redhat: LogParser
166+
"""
167+
log_parser_redhat.logs = [
168+
'["Jan 01 12:34:56 server1 pacemaker-controld: Notice: '
169+
'Resource SAPHana_HDB_00 started"]',
170+
'["Jan 01 12:35:00 server2 pacemaker-controld: Notice: '
171+
'Resource SAPHana_HDB_01 started"]',
172+
'["Jan 01 12:36:00 server3 pacemaker-controld: Notice: '
173+
'Resource SAPHana_HDB_02 started"]',
174+
]
175+
176+
log_parser_redhat.merge_logs()
177+
result = log_parser_redhat.get_result()
178+
179+
filtered_logs = [log.strip() for log in json.loads(result["filtered_logs"])]
180+
assert len(filtered_logs) == len(log_parser_redhat.logs)
181+
assert result["status"] == "PASSED"
182+
183+
def test_merge_logs_empty_input(self, log_parser_redhat):
184+
"""
185+
Test the merge_logs method with empty input.
186+
187+
:param log_parser_redhat: LogParser instance.
188+
:type log_parser_redhat: LogParser
189+
"""
190+
log_parser_redhat.logs = []
191+
192+
log_parser_redhat.merge_logs()
193+
result = log_parser_redhat.get_result()
194+
195+
assert json.loads(result["filtered_logs"]) == []
196+
assert result["status"] == "PASSED"
197+
assert result["message"] == "No logs provided to merge"
198+
199+
def test_merge_logs_invalid_json(self, log_parser_redhat):
200+
"""
201+
Test the merge_logs method with invalid JSON strings.
202+
203+
:param log_parser_redhat: LogParser instance.
204+
:type log_parser_redhat: LogParser
205+
"""
206+
log_parser_redhat.logs = [
207+
'["Jan 01 12:34:56 server1 pacemaker-controld: Notice: '
208+
'Resource SAPHana_HDB_00 started"]',
209+
"Invalid JSON string",
210+
]
211+
212+
log_parser_redhat.merge_logs()
213+
result = log_parser_redhat.get_result()
214+
215+
filtered_logs = [log.strip() for log in json.loads(result["filtered_logs"])]
216+
assert len(filtered_logs) == 2
217+
assert result["status"] == "PASSED"

0 commit comments

Comments
 (0)