Increase the unit test coverage of
host_maintenance.py Increase coverage from 66% to 88%. Change-Id: I7073fd904f5b2a6063a8e4c97fad8ab63885bd1a
This commit is contained in:
parent
92f2d1c037
commit
0dc9f39a9a
|
@ -0,0 +1,9 @@
|
|||
<ModelRoot>
|
||||
<ComputeNode hostname="hostname_0" uuid="Node_0" id="0" state="up" human_id="" status="disabled" vcpus="40" disk="250" disk_capacity="250" disabled_reason='watcher_disabled' memory="64">
|
||||
<Instance watcher_exclude="False" human_id="" state="active" uuid="INSTANCE_0" vcpus="10" disk="20" disk_capacity="20" memory="2" metadata='{"optimize": true,"top": "floor", "nested": {"x": "y"}}' project_id="91FFFE30-78A0-4152-ACD2-8310FF274DC9"/>
|
||||
</ComputeNode>
|
||||
<ComputeNode hostname="hostname_1" uuid="Node_1" id="1" state="up" human_id="" status="disabled" vcpus="40" disk="250" disk_capacity="250" disabled_reason='watcher_disabled' memory="64">
|
||||
<Instance watcher_exclude="False" human_id="" state="active" uuid="INSTANCE_1" vcpus="10" disk="20" disk_capacity="20" memory="2" metadata='{"optimize": true,"top": "floor", "nested": {"x": "y"}}' project_id="91FFFE30-78A0-4152-ACD2-8310FF274DC9"/>
|
||||
</ComputeNode>
|
||||
</ModelRoot>
|
||||
|
|
@ -136,6 +136,9 @@ class FakerModelCollector(base.BaseClusterDataModelCollector):
|
|||
def generate_scenario_1_with_1_node_unavailable(self):
|
||||
return self.load_model('scenario_1_with_1_node_unavailable.xml')
|
||||
|
||||
def generate_scenario_1_with_all_nodes_disable(self):
|
||||
return self.load_model('scenario_1_with_all_nodes_disable.xml')
|
||||
|
||||
def generate_scenario_1_with_all_instances_exclude(self):
|
||||
return self.load_model('scenario_1_with_all_instances_exclude.xml')
|
||||
|
||||
|
|
|
@ -20,6 +20,7 @@
|
|||
import mock
|
||||
|
||||
from watcher.common import exception
|
||||
from watcher.decision_engine.model import element
|
||||
from watcher.decision_engine.model import model_root
|
||||
from watcher.decision_engine.strategy import strategies
|
||||
from watcher.tests import base
|
||||
|
@ -60,6 +61,36 @@ class TestHostMaintenance(base.TestCase):
|
|||
exception.ClusterStateNotDefined,
|
||||
self.strategy.execute)
|
||||
|
||||
def test_get_instance_state_str(self):
|
||||
mock_instance = mock.MagicMock(state="active")
|
||||
self.assertEqual("active",
|
||||
self.strategy.get_instance_state_str(mock_instance))
|
||||
|
||||
mock_instance.state = element.InstanceState("active")
|
||||
self.assertEqual("active",
|
||||
self.strategy.get_instance_state_str(mock_instance))
|
||||
|
||||
mock_instance.state = None
|
||||
self.assertRaises(
|
||||
exception.WatcherException,
|
||||
self.strategy.get_instance_state_str,
|
||||
mock_instance)
|
||||
|
||||
def test_get_node_status_str(self):
|
||||
mock_node = mock.MagicMock(status="enabled")
|
||||
self.assertEqual("enabled",
|
||||
self.strategy.get_node_status_str(mock_node))
|
||||
|
||||
mock_node.status = element.ServiceState("enabled")
|
||||
self.assertEqual("enabled",
|
||||
self.strategy.get_node_status_str(mock_node))
|
||||
|
||||
mock_node.status = None
|
||||
self.assertRaises(
|
||||
exception.WatcherException,
|
||||
self.strategy.get_node_status_str,
|
||||
mock_node)
|
||||
|
||||
def test_get_node_capacity(self):
|
||||
model = self.fake_cluster.generate_scenario_1()
|
||||
self.m_model.return_value = model
|
||||
|
@ -172,6 +203,11 @@ class TestHostMaintenance(base.TestCase):
|
|||
self.assertFalse(self.strategy.safe_maintain(node_0))
|
||||
self.assertFalse(self.strategy.safe_maintain(node_1))
|
||||
|
||||
model = self.fake_cluster.generate_scenario_1_with_all_nodes_disable()
|
||||
self.m_model.return_value = model
|
||||
node_0 = model.get_node_by_uuid('Node_0')
|
||||
self.assertTrue(self.strategy.safe_maintain(node_0))
|
||||
|
||||
def test_try_maintain(self):
|
||||
model = self.fake_cluster.generate_scenario_1()
|
||||
self.m_model.return_value = model
|
||||
|
@ -186,8 +222,14 @@ class TestHostMaintenance(base.TestCase):
|
|||
node_2 = model.get_node_by_uuid('Node_2')
|
||||
node_3 = model.get_node_by_uuid('Node_3')
|
||||
instance_4 = model.get_instance_by_uuid("INSTANCE_4")
|
||||
if not self.strategy.safe_maintain(node_2, node_3):
|
||||
self.strategy.try_maintain(node_2)
|
||||
|
||||
result = self.strategy.pre_execute()
|
||||
self.assertIsNone(result)
|
||||
|
||||
self.strategy.input_parameters = {"maintenance_node": 'Node_2',
|
||||
"backup_node": 'Node_3'}
|
||||
self.strategy.do_execute()
|
||||
|
||||
expected = [{'action_type': 'change_nova_service_state',
|
||||
'input_parameters': {
|
||||
'resource_id': 'Node_3',
|
||||
|
@ -204,3 +246,6 @@ class TestHostMaintenance(base.TestCase):
|
|||
'migration_type': 'live',
|
||||
'resource_id': instance_4.uuid}}]
|
||||
self.assertEqual(expected, self.strategy.solution.actions)
|
||||
|
||||
result = self.strategy.post_execute()
|
||||
self.assertIsNone(result)
|
||||
|
|
Loading…
Reference in New Issue