Increase the unit test coverage of
vm_workload_consolidation.py Increase the test of the execute method which contains the pre_execute(), do_execute(), post_execute() methods. Increase coverage from 82% to 87%. Change-Id: Ibde67d7b7d7945657ad0b674e06b1edc9eb24a9f
This commit is contained in:
@@ -23,6 +23,7 @@ import mock
|
|||||||
from watcher.common import exception
|
from watcher.common import exception
|
||||||
from watcher.decision_engine.model import element
|
from watcher.decision_engine.model import element
|
||||||
from watcher.decision_engine.model import model_root
|
from watcher.decision_engine.model import model_root
|
||||||
|
from watcher.decision_engine.solution.base import BaseSolution
|
||||||
from watcher.decision_engine.strategy import strategies
|
from watcher.decision_engine.strategy import strategies
|
||||||
from watcher.tests import base
|
from watcher.tests import base
|
||||||
from watcher.tests.decision_engine.model import faker_cluster_and_metrics
|
from watcher.tests.decision_engine.model import faker_cluster_and_metrics
|
||||||
@@ -277,13 +278,19 @@ class TestVMWorkloadConsolidation(base.TestCase):
|
|||||||
model = self.fake_cluster.generate_scenario_2()
|
model = self.fake_cluster.generate_scenario_2()
|
||||||
self.m_model.return_value = model
|
self.m_model.return_value = model
|
||||||
self.fake_metrics.model = model
|
self.fake_metrics.model = model
|
||||||
|
|
||||||
|
result = self.strategy.pre_execute()
|
||||||
|
self.assertIsNone(result)
|
||||||
|
|
||||||
n1 = model.get_node_by_uuid('Node_0')
|
n1 = model.get_node_by_uuid('Node_0')
|
||||||
cc = {'cpu': 1.0, 'ram': 1.0, 'disk': 1.0}
|
self.strategy.get_relative_cluster_utilization = mock.MagicMock()
|
||||||
self.strategy.offload_phase(cc)
|
self.strategy.do_execute()
|
||||||
self.strategy.consolidation_phase(cc)
|
|
||||||
self.strategy.optimize_solution()
|
|
||||||
n2 = self.strategy.solution.actions[0][
|
n2 = self.strategy.solution.actions[0][
|
||||||
'input_parameters']['destination_node']
|
'input_parameters']['destination_node']
|
||||||
|
n3 = self.strategy.solution.actions[2][
|
||||||
|
'input_parameters']['resource_id']
|
||||||
|
n4 = self.strategy.solution.actions[3][
|
||||||
|
'input_parameters']['resource_id']
|
||||||
expected = [{'action_type': 'migrate',
|
expected = [{'action_type': 'migrate',
|
||||||
'input_parameters': {'destination_node': n2,
|
'input_parameters': {'destination_node': n2,
|
||||||
'source_node': n1.uuid,
|
'source_node': n1.uuid,
|
||||||
@@ -293,10 +300,32 @@ class TestVMWorkloadConsolidation(base.TestCase):
|
|||||||
'input_parameters': {'destination_node': n2,
|
'input_parameters': {'destination_node': n2,
|
||||||
'source_node': n1.uuid,
|
'source_node': n1.uuid,
|
||||||
'migration_type': 'live',
|
'migration_type': 'live',
|
||||||
'resource_id': 'INSTANCE_1'}}]
|
'resource_id': 'INSTANCE_1'}},
|
||||||
|
{'action_type': 'change_nova_service_state',
|
||||||
|
'input_parameters': {'state': 'disabled',
|
||||||
|
'disabled_reason':
|
||||||
|
'watcher_disabled',
|
||||||
|
'resource_id': n3}},
|
||||||
|
{'action_type': 'change_nova_service_state',
|
||||||
|
'input_parameters': {'state': 'disabled',
|
||||||
|
'disabled_reason':
|
||||||
|
'watcher_disabled',
|
||||||
|
'resource_id': n4}}]
|
||||||
self.assertEqual(expected, self.strategy.solution.actions)
|
self.assertEqual(expected, self.strategy.solution.actions)
|
||||||
|
|
||||||
|
compute_nodes_count = len(self.strategy.get_available_compute_nodes())
|
||||||
|
number_of_released_nodes = self.strategy.number_of_released_nodes
|
||||||
|
number_of_migrations = self.strategy.number_of_migrations
|
||||||
|
with mock.patch.object(
|
||||||
|
BaseSolution, 'set_efficacy_indicators'
|
||||||
|
) as mock_set_efficacy_indicators:
|
||||||
|
result = self.strategy.post_execute()
|
||||||
|
mock_set_efficacy_indicators.assert_called_once_with(
|
||||||
|
compute_nodes_count=compute_nodes_count,
|
||||||
|
released_compute_nodes_count=number_of_released_nodes,
|
||||||
|
instance_migrations_count=number_of_migrations
|
||||||
|
)
|
||||||
|
|
||||||
def test_strategy2(self):
|
def test_strategy2(self):
|
||||||
model = self.fake_cluster.generate_scenario_3()
|
model = self.fake_cluster.generate_scenario_3()
|
||||||
self.m_model.return_value = model
|
self.m_model.return_value = model
|
||||||
|
|||||||
Reference in New Issue
Block a user