Skip to content

Commit a68cd02

Browse files
committed
Dev: unittests: Adjust unit test for previous commit
1 parent 0053628 commit a68cd02

File tree

3 files changed

+50
-34
lines changed

3 files changed

+50
-34
lines changed

test/unittests/test_bootstrap.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1806,7 +1806,7 @@ def test_bootstrap_remove_self(self, mock_context, mock_init, mock_active,
18061806
mock_check_all_nodes.assert_called_once_with("removing a node from the cluster")
18071807

18081808
@mock.patch('crmsh.utils.check_all_nodes_reachable')
1809-
@mock.patch('crmsh.xmlutil.listnodes')
1809+
@mock.patch('crmsh.utils.list_cluster_nodes')
18101810
@mock.patch('crmsh.utils.this_node')
18111811
@mock.patch('crmsh.bootstrap.confirm')
18121812
@mock.patch('crmsh.bootstrap.get_node_canonical_hostname')
@@ -1844,7 +1844,7 @@ def test_bootstrap_remove_not_in_cluster(self, mock_context, mock_init, mock_act
18441844
@mock.patch('crmsh.sh.ClusterShell.get_stdout_or_raise_error')
18451845
@mock.patch('crmsh.utils.fetch_cluster_node_list_from_node')
18461846
@mock.patch('crmsh.bootstrap.remove_node_from_cluster')
1847-
@mock.patch('crmsh.xmlutil.listnodes')
1847+
@mock.patch('crmsh.utils.list_cluster_nodes')
18481848
@mock.patch('crmsh.utils.this_node')
18491849
@mock.patch('crmsh.bootstrap.confirm')
18501850
@mock.patch('crmsh.bootstrap.get_node_canonical_hostname')
@@ -1882,7 +1882,7 @@ def test_bootstrap_remove(self, mock_context, mock_init, mock_active,
18821882

18831883
@mock.patch('crmsh.utils.fatal')
18841884
@mock.patch('crmsh.sh.ClusterShell.get_rc_stdout_stderr_without_input')
1885-
@mock.patch('crmsh.xmlutil.listnodes')
1885+
@mock.patch('crmsh.utils.list_cluster_nodes')
18861886
@mock.patch('crmsh.utils.this_node')
18871887
def test_remove_self_other_nodes(self, mock_this_node, mock_list, mock_run, mock_error):
18881888
mock_this_node.return_value = 'node1'
@@ -1894,7 +1894,7 @@ def test_remove_self_other_nodes(self, mock_this_node, mock_list, mock_run, mock
18941894
bootstrap._context = mock.Mock(cluster_node="node1", yes_to_all=True)
18951895
bootstrap.remove_self()
18961896

1897-
mock_list.assert_called_once_with(include_remote_nodes=False)
1897+
mock_list.assert_called_once_with()
18981898
mock_run.assert_called_once_with("node2", "crm cluster remove -y -c node1")
18991899
mock_error.assert_called_once_with("Failed to remove this node from node2: err")
19001900

test/unittests/test_utils.py

Lines changed: 16 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,11 @@ def test_package_is_installed_local(mock_run):
2828

2929
@mock.patch('re.search')
3030
@mock.patch('crmsh.sh.ShellUtils.get_stdout')
31-
def test_get_nodeid_from_name_run_None1(mock_get_stdout, mock_re_search):
31+
@mock.patch('crmsh.xmlutil.CrmMonXmlParser')
32+
def test_get_nodeid_from_name_run_None1(mock_parser, mock_get_stdout, mock_re_search):
33+
mock_parser_inst = mock.Mock()
34+
mock_parser.return_value = mock_parser_inst
35+
mock_parser_inst.is_node_remote.return_value = False
3236
mock_get_stdout.return_value = (1, None)
3337
mock_re_search_inst = mock.Mock()
3438
mock_re_search.return_value = mock_re_search_inst
@@ -40,7 +44,11 @@ def test_get_nodeid_from_name_run_None1(mock_get_stdout, mock_re_search):
4044

4145
@mock.patch('re.search')
4246
@mock.patch('crmsh.sh.ShellUtils.get_stdout')
43-
def test_get_nodeid_from_name_run_None2(mock_get_stdout, mock_re_search):
47+
@mock.patch('crmsh.xmlutil.CrmMonXmlParser')
48+
def test_get_nodeid_from_name_run_None2(mock_parser, mock_get_stdout, mock_re_search):
49+
mock_parser_inst = mock.Mock()
50+
mock_parser.return_value = mock_parser_inst
51+
mock_parser_inst.is_node_remote.return_value = False
4452
mock_get_stdout.return_value = (0, "172167901 node1 member\n172168231 node2 member")
4553
mock_re_search.return_value = None
4654
res = utils.get_nodeid_from_name("node111")
@@ -51,7 +59,11 @@ def test_get_nodeid_from_name_run_None2(mock_get_stdout, mock_re_search):
5159

5260
@mock.patch('re.search')
5361
@mock.patch('crmsh.sh.ShellUtils.get_stdout')
54-
def test_get_nodeid_from_name(mock_get_stdout, mock_re_search):
62+
@mock.patch('crmsh.xmlutil.CrmMonXmlParser')
63+
def test_get_nodeid_from_name(mock_parser, mock_get_stdout, mock_re_search):
64+
mock_parser_inst = mock.Mock()
65+
mock_parser.return_value = mock_parser_inst
66+
mock_parser_inst.is_node_remote.return_value = False
5567
mock_get_stdout.return_value = (0, "172167901 node1 member\n172168231 node2 member")
5668
mock_re_search_inst = mock.Mock()
5769
mock_re_search.return_value = mock_re_search_inst
@@ -1000,16 +1012,6 @@ def test_detect_virt(mock_run):
10001012
mock_run.assert_called_once_with("systemd-detect-virt")
10011013

10021014

1003-
@mock.patch('crmsh.sh.ClusterShell.get_stdout_or_raise_error')
1004-
def test_is_standby(mock_run):
1005-
mock_run.return_value = """
1006-
Node List:
1007-
* Node 15sp2-1: standby
1008-
"""
1009-
assert utils.is_standby("15sp2-1") is True
1010-
mock_run.assert_called_once_with("crm_mon -1")
1011-
1012-
10131015
@mock.patch('crmsh.sh.cluster_shell')
10141016
def test_get_dlm_option_dict(mock_run):
10151017
mock_run_inst = mock.Mock()
@@ -1461,7 +1463,7 @@ def test_validate_and_get_reachable_nodes_not_a_member(mock_list_nodes, mock_fat
14611463
mock_fatal.side_effect = ValueError
14621464
with pytest.raises(ValueError):
14631465
utils.validate_and_get_reachable_nodes(["node3"])
1464-
mock_fatal.assert_called_once_with("Node 'node3' is not a member of the cluster")
1466+
mock_fatal.assert_called_once_with("Node \"node3\" is not in the cluster")
14651467

14661468

14671469
@mock.patch('crmsh.utils.this_node')

test/unittests/test_xmlutil.py

Lines changed: 30 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
from lxml import etree
12
import unittest
23

34
try:
@@ -7,21 +8,12 @@
78

89
from crmsh import xmlutil, constants
910

10-
11-
class TestCrmMonXmlParser(unittest.TestCase):
12-
"""
13-
Unitary tests for crmsh.xmlutil.CrmMonXmlParser
14-
"""
15-
@mock.patch('crmsh.sh.cluster_shell')
16-
def setUp(self, mock_cluster_shell):
17-
"""
18-
Test setUp.
19-
"""
20-
data = '''
11+
FAKE_XML = '''
2112
<data>
2213
<nodes>
2314
<node name="tbw-1" id="1084783148" online="true" standby="true" standby_onfail="false" maintenance="false" pending="false" unclean="false" shutdown="false" expected_up="true" is_dc="true" resources_running="3" type="member"/>
2415
<node name="tbw-2" id="1084783312" online="false" standby="false" standby_onfail="false" maintenance="false" pending="false" unclean="false" shutdown="false" expected_up="true" is_dc="false" resources_running="2" type="member"/>
16+
<node name="tbw-3" id="alp-2" online="true" standby="false" standby_onfail="false" maintenance="true" pending="false" unclean="false" health="green" shutdown="false" expected_up="false" is_dc="false" resources_running="0" type="remote"/>
2517
</nodes>
2618
<resources>
2719
<resource id="ocfs2-dlm" resource_agent="ocf:pacemaker:controld" role="Started" active="true" orphaned="false" blocked="false" managed="true" failed="false" failure_ignored="false" nodes_running_on="1">
@@ -32,17 +24,32 @@ def setUp(self, mock_cluster_shell):
3224
</resource>
3325
</resources>
3426
</data>
35-
'''
36-
mock_cluster_shell().get_rc_stdout_stderr_without_input.return_value = (0, data, '')
27+
'''
28+
29+
30+
class TestCrmMonXmlParser(unittest.TestCase):
31+
"""
32+
Unitary tests for crmsh.xmlutil.CrmMonXmlParser
33+
"""
34+
@mock.patch('crmsh.sh.cluster_shell')
35+
def setUp(self, mock_cluster_shell):
36+
"""
37+
Test setUp.
38+
"""
39+
mock_cluster_shell().get_rc_stdout_stderr_without_input.return_value = (0, FAKE_XML, '')
3740
self.parser_inst = xmlutil.CrmMonXmlParser()
3841

3942
def test_is_node_online(self):
4043
assert self.parser_inst.is_node_online("tbw-1") is True
4144
assert self.parser_inst.is_node_online("tbw-2") is False
4245

43-
def test_get_node_list(self):
44-
assert self.parser_inst.get_node_list(standby=True) == ['tbw-1']
45-
assert self.parser_inst.get_node_list(online=False) == ['tbw-2']
46+
def test_is_node_maintenance(self):
47+
assert self.parser_inst.is_node_maintenance("tbw-1") is False
48+
assert self.parser_inst.is_node_maintenance("tbw-3") is True
49+
50+
def test_is_node_remote(self):
51+
assert self.parser_inst.is_node_remote("tbw-1") is False
52+
assert self.parser_inst.is_node_remote("tbw-3") is True
4653

4754
def test_is_resource_configured(self):
4855
assert self.parser_inst.is_resource_configured("test") is False
@@ -59,3 +66,10 @@ def test_is_resource_started(self):
5966
def test_get_resource_id_list_via_type(self):
6067
assert self.parser_inst.get_resource_id_list_via_type("test") == []
6168
assert self.parser_inst.get_resource_id_list_via_type("ocf:pacemaker:controld")[0] == "ocfs2-dlm"
69+
70+
def test_get_node_list(self):
71+
assert self.parser_inst.get_node_list() == ['tbw-1', 'tbw-2', 'tbw-3']
72+
assert self.parser_inst.get_node_list(online=True) == ['tbw-1', 'tbw-3']
73+
assert self.parser_inst.get_node_list(maintenance=True) == ['tbw-3']
74+
assert self.parser_inst.get_node_list(node_type="remote") == ['tbw-3']
75+
assert self.parser_inst.get_node_list(node_type="member") == ['tbw-1', 'tbw-2']

0 commit comments

Comments
 (0)