Merge "Remove obsolete Resource element"
This commit is contained in:
@@ -22,7 +22,6 @@ import os
|
||||
import mock
|
||||
|
||||
from watcher.decision_engine.model.collector import base
|
||||
from watcher.decision_engine.model import element
|
||||
from watcher.decision_engine.model import model_root as modelroot
|
||||
|
||||
|
||||
@@ -106,16 +105,12 @@ class FakeCeilometerMetrics(object):
|
||||
node = self.model.get_node_by_uuid(node_uuid)
|
||||
instances = self.model.get_node_instances(node)
|
||||
util_sum = 0.0
|
||||
node_cpu_cores = self.model.get_resource_by_uuid(
|
||||
element.ResourceType.cpu_cores).get_capacity_by_uuid(node.uuid)
|
||||
for instance_uuid in instances:
|
||||
instance_cpu_cores = self.model.get_resource_by_uuid(
|
||||
element.ResourceType.cpu_cores).\
|
||||
get_capacity(self.model.get_instance_by_uuid(instance_uuid))
|
||||
total_cpu_util = instance_cpu_cores * self.get_instance_cpu_util(
|
||||
instance_uuid)
|
||||
instance = self.model.get_instance_by_uuid(instance_uuid)
|
||||
total_cpu_util = instance.vcpus * self.get_instance_cpu_util(
|
||||
instance.uuid)
|
||||
util_sum += total_cpu_util / 100.0
|
||||
util_sum /= node_cpu_cores
|
||||
util_sum /= node.vcpus
|
||||
return util_sum * 100.0
|
||||
|
||||
@staticmethod
|
||||
|
||||
@@ -217,26 +217,18 @@ class TestNovaNotifications(NotificationTestCase):
|
||||
)
|
||||
|
||||
instance0 = compute_model.get_instance_by_uuid(instance0_uuid)
|
||||
cpu_capacity = compute_model.get_resource_by_uuid(
|
||||
element.ResourceType.vcpus)
|
||||
disk = compute_model.get_resource_by_uuid(
|
||||
element.ResourceType.disk)
|
||||
disk_capacity = compute_model.get_resource_by_uuid(
|
||||
element.ResourceType.disk_capacity)
|
||||
memory_capacity = compute_model.get_resource_by_uuid(
|
||||
element.ResourceType.memory)
|
||||
|
||||
self.assertEqual(element.InstanceState.PAUSED.value, instance0.state)
|
||||
self.assertEqual(1, cpu_capacity.get_capacity(instance0))
|
||||
self.assertEqual(1, disk_capacity.get_capacity(instance0))
|
||||
self.assertEqual(512, memory_capacity.get_capacity(instance0))
|
||||
self.assertEqual(1, instance0.vcpus)
|
||||
self.assertEqual(1, instance0.disk_capacity)
|
||||
self.assertEqual(512, instance0.memory)
|
||||
|
||||
m_get_compute_node_by_hostname.assert_called_once_with('Node_2')
|
||||
node_2 = compute_model.get_node_by_uuid('Node_2')
|
||||
self.assertEqual(7777, memory_capacity.get_capacity(node_2))
|
||||
self.assertEqual(42, cpu_capacity.get_capacity(node_2))
|
||||
self.assertEqual(974, disk.get_capacity(node_2))
|
||||
self.assertEqual(1337, disk_capacity.get_capacity(node_2))
|
||||
self.assertEqual(7777, node_2.memory)
|
||||
self.assertEqual(42, node_2.vcpus)
|
||||
self.assertEqual(974, node_2.disk)
|
||||
self.assertEqual(1337, node_2.disk_capacity)
|
||||
|
||||
@mock.patch.object(nova_helper, "NovaHelper")
|
||||
def test_instance_update_node_notfound_set_unmapped(
|
||||
@@ -265,20 +257,12 @@ class TestNovaNotifications(NotificationTestCase):
|
||||
)
|
||||
|
||||
instance0 = compute_model.get_instance_by_uuid(instance0_uuid)
|
||||
cpu_capacity = compute_model.get_resource_by_uuid(
|
||||
element.ResourceType.vcpus)
|
||||
disk = compute_model.get_resource_by_uuid(
|
||||
element.ResourceType.disk)
|
||||
disk_capacity = compute_model.get_resource_by_uuid(
|
||||
element.ResourceType.disk_capacity)
|
||||
memory_capacity = compute_model.get_resource_by_uuid(
|
||||
element.ResourceType.memory)
|
||||
|
||||
self.assertEqual(element.InstanceState.PAUSED.value, instance0.state)
|
||||
self.assertEqual(1, cpu_capacity.get_capacity(instance0))
|
||||
self.assertEqual(1, disk.get_capacity(instance0))
|
||||
self.assertEqual(1, disk_capacity.get_capacity(instance0))
|
||||
self.assertEqual(512, memory_capacity.get_capacity(instance0))
|
||||
self.assertEqual(1, instance0.vcpus)
|
||||
self.assertEqual(1, instance0.disk)
|
||||
self.assertEqual(1, instance0.disk_capacity)
|
||||
self.assertEqual(512, instance0.memory)
|
||||
|
||||
m_get_compute_node_by_hostname.assert_any_call('Node_2')
|
||||
self.assertRaises(
|
||||
@@ -306,17 +290,11 @@ class TestNovaNotifications(NotificationTestCase):
|
||||
)
|
||||
|
||||
instance0 = compute_model.get_instance_by_uuid(instance0_uuid)
|
||||
cpu_capacity = compute_model.get_resource_by_uuid(
|
||||
element.ResourceType.vcpus)
|
||||
disk_capacity = compute_model.get_resource_by_uuid(
|
||||
element.ResourceType.disk)
|
||||
memory_capacity = compute_model.get_resource_by_uuid(
|
||||
element.ResourceType.memory)
|
||||
|
||||
self.assertEqual(element.InstanceState.ACTIVE.value, instance0.state)
|
||||
self.assertEqual(1, cpu_capacity.get_capacity(instance0))
|
||||
self.assertEqual(1, disk_capacity.get_capacity(instance0))
|
||||
self.assertEqual(512, memory_capacity.get_capacity(instance0))
|
||||
self.assertEqual(1, instance0.vcpus)
|
||||
self.assertEqual(1, instance0.disk_capacity)
|
||||
self.assertEqual(512, instance0.memory)
|
||||
|
||||
def test_nova_instance_delete_end(self):
|
||||
compute_model = self.fake_cdmc.generate_scenario_3_with_2_nodes()
|
||||
@@ -374,17 +352,11 @@ class TestLegacyNovaNotifications(NotificationTestCase):
|
||||
)
|
||||
|
||||
instance0 = compute_model.get_instance_by_uuid(instance0_uuid)
|
||||
cpu_capacity = compute_model.get_resource_by_uuid(
|
||||
element.ResourceType.vcpus)
|
||||
disk_capacity = compute_model.get_resource_by_uuid(
|
||||
element.ResourceType.disk)
|
||||
memory_capacity = compute_model.get_resource_by_uuid(
|
||||
element.ResourceType.memory)
|
||||
|
||||
self.assertEqual(element.InstanceState.ACTIVE.value, instance0.state)
|
||||
self.assertEqual(1, cpu_capacity.get_capacity(instance0))
|
||||
self.assertEqual(1, disk_capacity.get_capacity(instance0))
|
||||
self.assertEqual(512, memory_capacity.get_capacity(instance0))
|
||||
self.assertEqual(1, instance0.vcpus)
|
||||
self.assertEqual(1, instance0.disk_capacity)
|
||||
self.assertEqual(512, instance0.memory)
|
||||
|
||||
def test_legacy_instance_updated(self):
|
||||
compute_model = self.fake_cdmc.generate_scenario_3_with_2_nodes()
|
||||
@@ -445,27 +417,19 @@ class TestLegacyNovaNotifications(NotificationTestCase):
|
||||
)
|
||||
|
||||
instance0 = compute_model.get_instance_by_uuid(instance0_uuid)
|
||||
cpu_capacity = compute_model.get_resource_by_uuid(
|
||||
element.ResourceType.vcpus)
|
||||
disk = compute_model.get_resource_by_uuid(
|
||||
element.ResourceType.disk)
|
||||
disk_capacity = compute_model.get_resource_by_uuid(
|
||||
element.ResourceType.disk_capacity)
|
||||
memory_capacity = compute_model.get_resource_by_uuid(
|
||||
element.ResourceType.memory)
|
||||
|
||||
self.assertEqual(element.InstanceState.PAUSED.value, instance0.state)
|
||||
self.assertEqual(1, cpu_capacity.get_capacity(instance0))
|
||||
self.assertEqual(1, disk.get_capacity(instance0))
|
||||
self.assertEqual(1, disk_capacity.get_capacity(instance0))
|
||||
self.assertEqual(512, memory_capacity.get_capacity(instance0))
|
||||
self.assertEqual(1, instance0.vcpus)
|
||||
self.assertEqual(1, instance0.disk)
|
||||
self.assertEqual(1, instance0.disk_capacity)
|
||||
self.assertEqual(512, instance0.memory)
|
||||
|
||||
m_get_compute_node_by_hostname.assert_any_call('Node_2')
|
||||
node_2 = compute_model.get_node_by_uuid('Node_2')
|
||||
self.assertEqual(7777, memory_capacity.get_capacity(node_2))
|
||||
self.assertEqual(42, cpu_capacity.get_capacity(node_2))
|
||||
self.assertEqual(974, disk.get_capacity(node_2))
|
||||
self.assertEqual(1337, disk_capacity.get_capacity(node_2))
|
||||
self.assertEqual(7777, node_2.memory)
|
||||
self.assertEqual(42, node_2.vcpus)
|
||||
self.assertEqual(974, node_2.disk)
|
||||
self.assertEqual(1337, node_2.disk_capacity)
|
||||
|
||||
@mock.patch.object(nova_helper, "NovaHelper")
|
||||
def test_legacy_instance_update_node_notfound_set_unmapped(
|
||||
@@ -494,20 +458,12 @@ class TestLegacyNovaNotifications(NotificationTestCase):
|
||||
)
|
||||
|
||||
instance0 = compute_model.get_instance_by_uuid(instance0_uuid)
|
||||
cpu_capacity = compute_model.get_resource_by_uuid(
|
||||
element.ResourceType.vcpus)
|
||||
disk = compute_model.get_resource_by_uuid(
|
||||
element.ResourceType.disk)
|
||||
disk_capacity = compute_model.get_resource_by_uuid(
|
||||
element.ResourceType.disk_capacity)
|
||||
memory_capacity = compute_model.get_resource_by_uuid(
|
||||
element.ResourceType.memory)
|
||||
|
||||
self.assertEqual(element.InstanceState.PAUSED.value, instance0.state)
|
||||
self.assertEqual(1, cpu_capacity.get_capacity(instance0))
|
||||
self.assertEqual(1, disk.get_capacity(instance0))
|
||||
self.assertEqual(1, disk_capacity.get_capacity(instance0))
|
||||
self.assertEqual(512, memory_capacity.get_capacity(instance0))
|
||||
self.assertEqual(1, instance0.vcpus)
|
||||
self.assertEqual(1, instance0.disk)
|
||||
self.assertEqual(1, instance0.disk_capacity)
|
||||
self.assertEqual(512, instance0.memory)
|
||||
|
||||
m_get_compute_node_by_hostname.assert_any_call('Node_2')
|
||||
self.assertRaises(
|
||||
|
||||
@@ -22,7 +22,6 @@ import mock
|
||||
from watcher.applier.loading import default
|
||||
from watcher.common import exception
|
||||
from watcher.common import utils
|
||||
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
|
||||
@@ -69,15 +68,12 @@ class TestOutletTempControl(base.TestCase):
|
||||
self.strategy.input_parameters.update({'threshold': 34.3})
|
||||
self.strategy.threshold = 34.3
|
||||
|
||||
def test_calc_used_res(self):
|
||||
def test_calc_used_resource(self):
|
||||
model = self.fake_cluster.generate_scenario_3_with_2_nodes()
|
||||
self.m_model.return_value = model
|
||||
node = model.get_node_by_uuid('Node_0')
|
||||
cap_cores = model.get_resource_by_uuid(element.ResourceType.cpu_cores)
|
||||
cap_mem = model.get_resource_by_uuid(element.ResourceType.memory)
|
||||
cap_disk = model.get_resource_by_uuid(element.ResourceType.disk)
|
||||
cores_used, mem_used, disk_used = self.strategy.calc_used_res(
|
||||
node, cap_cores, cap_mem, cap_disk)
|
||||
cores_used, mem_used, disk_used = self.strategy.calc_used_resource(
|
||||
node)
|
||||
|
||||
self.assertEqual((10, 2, 20), (cores_used, mem_used, disk_used))
|
||||
|
||||
|
||||
@@ -22,7 +22,6 @@ import mock
|
||||
from watcher.applier.loading import default
|
||||
from watcher.common import exception
|
||||
from watcher.common import utils
|
||||
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
|
||||
@@ -74,16 +73,12 @@ class TestUniformAirflow(base.TestCase):
|
||||
self.strategy.threshold_power = 350
|
||||
self._period = 300
|
||||
|
||||
def test_calc_used_res(self):
|
||||
def test_calc_used_resource(self):
|
||||
model = self.fake_cluster.generate_scenario_7_with_2_nodes()
|
||||
self.m_model.return_value = model
|
||||
node = model.get_node_by_uuid('Node_0')
|
||||
cap_cores = model.get_resource_by_uuid(element.ResourceType.cpu_cores)
|
||||
cap_mem = model.get_resource_by_uuid(element.ResourceType.memory)
|
||||
cap_disk = model.get_resource_by_uuid(element.ResourceType.disk)
|
||||
cores_used, mem_used, disk_used = self.\
|
||||
strategy.calculate_used_resource(
|
||||
node, cap_cores, cap_mem, cap_disk)
|
||||
cores_used, mem_used, disk_used = (
|
||||
self.strategy.calculate_used_resource(node))
|
||||
self.assertEqual((cores_used, mem_used, disk_used), (25, 4, 40))
|
||||
|
||||
def test_group_hosts_by_airflow(self):
|
||||
|
||||
@@ -81,7 +81,7 @@ class TestVMWorkloadConsolidation(base.TestCase):
|
||||
instance_util = dict(cpu=1.0, ram=1, disk=10)
|
||||
self.assertEqual(
|
||||
instance_util,
|
||||
self.strategy.get_instance_utilization(instance_0.uuid, model))
|
||||
self.strategy.get_instance_utilization(instance_0, model))
|
||||
|
||||
def test_get_node_utilization(self):
|
||||
model = self.fake_cluster.generate_scenario_1()
|
||||
@@ -99,16 +99,14 @@ class TestVMWorkloadConsolidation(base.TestCase):
|
||||
self.fake_metrics.model = model
|
||||
node_0 = model.get_node_by_uuid("Node_0")
|
||||
node_util = dict(cpu=40, ram=64, disk=250)
|
||||
self.assertEqual(node_util,
|
||||
self.strategy.get_node_capacity(node_0, model))
|
||||
self.assertEqual(node_util, self.strategy.get_node_capacity(node_0))
|
||||
|
||||
def test_get_relative_node_utilization(self):
|
||||
model = self.fake_cluster.generate_scenario_1()
|
||||
self.m_model.return_value = model
|
||||
self.fake_metrics.model = model
|
||||
node = model.get_node_by_uuid('Node_0')
|
||||
rhu = self.strategy.get_relative_node_utilization(
|
||||
node, model)
|
||||
rhu = self.strategy.get_relative_node_utilization(node)
|
||||
expected_rhu = {'disk': 0.04, 'ram': 0.015625, 'cpu': 0.025}
|
||||
self.assertEqual(expected_rhu, rhu)
|
||||
|
||||
@@ -116,7 +114,7 @@ class TestVMWorkloadConsolidation(base.TestCase):
|
||||
model = self.fake_cluster.generate_scenario_1()
|
||||
self.m_model.return_value = model
|
||||
self.fake_metrics.model = model
|
||||
cru = self.strategy.get_relative_cluster_utilization(model)
|
||||
cru = self.strategy.get_relative_cluster_utilization()
|
||||
expected_cru = {'cpu': 0.05, 'disk': 0.05, 'ram': 0.0234375}
|
||||
self.assertEqual(expected_cru, cru)
|
||||
|
||||
@@ -128,7 +126,7 @@ class TestVMWorkloadConsolidation(base.TestCase):
|
||||
n2 = model.get_node_by_uuid('Node_1')
|
||||
instance_uuid = 'INSTANCE_0'
|
||||
instance = model.get_instance_by_uuid(instance_uuid)
|
||||
self.strategy.add_migration(instance, n1, n2, model)
|
||||
self.strategy.add_migration(instance, n1, n2)
|
||||
self.assertEqual(1, len(self.strategy.solution.actions))
|
||||
expected = {'action_type': 'migrate',
|
||||
'input_parameters': {'destination_node': n2.uuid,
|
||||
@@ -143,15 +141,15 @@ class TestVMWorkloadConsolidation(base.TestCase):
|
||||
self.fake_metrics.model = model
|
||||
n1 = model.get_node_by_uuid('Node_0')
|
||||
cc = {'cpu': 1.0, 'ram': 1.0, 'disk': 1.0}
|
||||
res = self.strategy.is_overloaded(n1, model, cc)
|
||||
res = self.strategy.is_overloaded(n1, cc)
|
||||
self.assertFalse(res)
|
||||
|
||||
cc = {'cpu': 0.025, 'ram': 1.0, 'disk': 1.0}
|
||||
res = self.strategy.is_overloaded(n1, model, cc)
|
||||
res = self.strategy.is_overloaded(n1, cc)
|
||||
self.assertFalse(res)
|
||||
|
||||
cc = {'cpu': 0.024, 'ram': 1.0, 'disk': 1.0}
|
||||
res = self.strategy.is_overloaded(n1, model, cc)
|
||||
res = self.strategy.is_overloaded(n1, cc)
|
||||
self.assertTrue(res)
|
||||
|
||||
def test_instance_fits(self):
|
||||
@@ -159,13 +157,13 @@ class TestVMWorkloadConsolidation(base.TestCase):
|
||||
self.m_model.return_value = model
|
||||
self.fake_metrics.model = model
|
||||
n = model.get_node_by_uuid('Node_1')
|
||||
instance_uuid = 'INSTANCE_0'
|
||||
instance0 = model.get_instance_by_uuid('INSTANCE_0')
|
||||
cc = {'cpu': 1.0, 'ram': 1.0, 'disk': 1.0}
|
||||
res = self.strategy.instance_fits(instance_uuid, n, model, cc)
|
||||
res = self.strategy.instance_fits(instance0, n, cc)
|
||||
self.assertTrue(res)
|
||||
|
||||
cc = {'cpu': 0.025, 'ram': 1.0, 'disk': 1.0}
|
||||
res = self.strategy.instance_fits(instance_uuid, n, model, cc)
|
||||
res = self.strategy.instance_fits(instance0, n, cc)
|
||||
self.assertFalse(res)
|
||||
|
||||
def test_add_action_enable_compute_node(self):
|
||||
@@ -198,13 +196,13 @@ class TestVMWorkloadConsolidation(base.TestCase):
|
||||
n2 = model.get_node_by_uuid('Node_1')
|
||||
instance_uuid = 'INSTANCE_0'
|
||||
instance = model.get_instance_by_uuid(instance_uuid)
|
||||
self.strategy.disable_unused_nodes(model)
|
||||
self.strategy.disable_unused_nodes()
|
||||
self.assertEqual(0, len(self.strategy.solution.actions))
|
||||
|
||||
# Migrate VM to free the node
|
||||
self.strategy.add_migration(instance, n1, n2, model)
|
||||
self.strategy.add_migration(instance, n1, n2)
|
||||
|
||||
self.strategy.disable_unused_nodes(model)
|
||||
self.strategy.disable_unused_nodes()
|
||||
expected = {'action_type': 'change_nova_service_state',
|
||||
'input_parameters': {'state': 'disabled',
|
||||
'resource_id': 'Node_0'}}
|
||||
@@ -216,7 +214,7 @@ class TestVMWorkloadConsolidation(base.TestCase):
|
||||
self.m_model.return_value = model
|
||||
self.fake_metrics.model = model
|
||||
cc = {'cpu': 1.0, 'ram': 1.0, 'disk': 1.0}
|
||||
self.strategy.offload_phase(model, cc)
|
||||
self.strategy.offload_phase(cc)
|
||||
expected = []
|
||||
self.assertEqual(expected, self.strategy.solution.actions)
|
||||
|
||||
@@ -228,7 +226,7 @@ class TestVMWorkloadConsolidation(base.TestCase):
|
||||
n2 = model.get_node_by_uuid('Node_1')
|
||||
instance_uuid = 'INSTANCE_0'
|
||||
cc = {'cpu': 1.0, 'ram': 1.0, 'disk': 1.0}
|
||||
self.strategy.consolidation_phase(model, cc)
|
||||
self.strategy.consolidation_phase(cc)
|
||||
expected = [{'action_type': 'migrate',
|
||||
'input_parameters': {'destination_node': n2.uuid,
|
||||
'source_node': n1.uuid,
|
||||
@@ -242,9 +240,9 @@ class TestVMWorkloadConsolidation(base.TestCase):
|
||||
self.fake_metrics.model = model
|
||||
n1 = model.get_node_by_uuid('Node_0')
|
||||
cc = {'cpu': 1.0, 'ram': 1.0, 'disk': 1.0}
|
||||
self.strategy.offload_phase(model, cc)
|
||||
self.strategy.consolidation_phase(model, cc)
|
||||
self.strategy.optimize_solution(model)
|
||||
self.strategy.offload_phase(cc)
|
||||
self.strategy.consolidation_phase(cc)
|
||||
self.strategy.optimize_solution()
|
||||
n2 = self.strategy.solution.actions[0][
|
||||
'input_parameters']['destination_node']
|
||||
expected = [{'action_type': 'migrate',
|
||||
@@ -267,7 +265,7 @@ class TestVMWorkloadConsolidation(base.TestCase):
|
||||
n1 = model.get_node_by_uuid('Node_0')
|
||||
n2 = model.get_node_by_uuid('Node_1')
|
||||
cc = {'cpu': 1.0, 'ram': 1.0, 'disk': 1.0}
|
||||
self.strategy.offload_phase(model, cc)
|
||||
self.strategy.offload_phase(cc)
|
||||
expected = [{'action_type': 'migrate',
|
||||
'input_parameters': {'destination_node': n2.uuid,
|
||||
'migration_type': 'live',
|
||||
@@ -284,14 +282,14 @@ class TestVMWorkloadConsolidation(base.TestCase):
|
||||
'resource_id': 'INSTANCE_8',
|
||||
'source_node': n1.uuid}}]
|
||||
self.assertEqual(expected, self.strategy.solution.actions)
|
||||
self.strategy.consolidation_phase(model, cc)
|
||||
self.strategy.consolidation_phase(cc)
|
||||
expected.append({'action_type': 'migrate',
|
||||
'input_parameters': {'destination_node': n1.uuid,
|
||||
'migration_type': 'live',
|
||||
'resource_id': 'INSTANCE_7',
|
||||
'source_node': n2.uuid}})
|
||||
self.assertEqual(expected, self.strategy.solution.actions)
|
||||
self.strategy.optimize_solution(model)
|
||||
self.strategy.optimize_solution()
|
||||
del expected[3]
|
||||
del expected[1]
|
||||
self.assertEqual(expected, self.strategy.solution.actions)
|
||||
|
||||
@@ -22,7 +22,6 @@ import mock
|
||||
from watcher.applier.loading import default
|
||||
from watcher.common import exception
|
||||
from watcher.common import utils
|
||||
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
|
||||
@@ -70,16 +69,12 @@ class TestWorkloadBalance(base.TestCase):
|
||||
self.strategy.threshold = 25.0
|
||||
self.strategy._period = 300
|
||||
|
||||
def test_calc_used_res(self):
|
||||
def test_calc_used_resource(self):
|
||||
model = self.fake_cluster.generate_scenario_6_with_2_nodes()
|
||||
self.m_model.return_value = model
|
||||
node = model.get_node_by_uuid('Node_0')
|
||||
cap_cores = model.get_resource_by_uuid(element.ResourceType.vcpus)
|
||||
cap_mem = model.get_resource_by_uuid(element.ResourceType.memory)
|
||||
cap_disk = model.get_resource_by_uuid(element.ResourceType.disk)
|
||||
cores_used, mem_used, disk_used = (
|
||||
self.strategy.calculate_used_resource(
|
||||
node, cap_cores, cap_mem, cap_disk))
|
||||
self.strategy.calculate_used_resource(node))
|
||||
|
||||
self.assertEqual((cores_used, mem_used, disk_used), (20, 4, 40))
|
||||
|
||||
|
||||
@@ -93,25 +93,29 @@ class TestWorkloadStabilization(base.TestCase):
|
||||
self.strategy.periods = {"instance": 720, "node": 600}
|
||||
|
||||
def test_get_instance_load(self):
|
||||
self.m_model.return_value = self.fake_cluster.generate_scenario_1()
|
||||
model = self.fake_cluster.generate_scenario_1()
|
||||
self.m_model.return_value = model
|
||||
instance0 = model.get_instance_by_uuid("INSTANCE_0")
|
||||
instance_0_dict = {
|
||||
'uuid': 'INSTANCE_0', 'vcpus': 10,
|
||||
'cpu_util': 0.07, 'memory.resident': 2}
|
||||
self.assertEqual(
|
||||
instance_0_dict, self.strategy.get_instance_load("INSTANCE_0"))
|
||||
instance_0_dict, self.strategy.get_instance_load(instance0))
|
||||
|
||||
def test_periods(self):
|
||||
self.m_model.return_value = self.fake_cluster.generate_scenario_1()
|
||||
model = self.fake_cluster.generate_scenario_1()
|
||||
self.m_model.return_value = model
|
||||
p_ceilometer = mock.patch.object(
|
||||
strategies.WorkloadStabilization, "ceilometer")
|
||||
m_ceilometer = p_ceilometer.start()
|
||||
self.addCleanup(p_ceilometer.stop)
|
||||
m_ceilometer.return_value = mock.Mock(
|
||||
statistic_aggregation=self.fake_metrics.mock_get_statistics)
|
||||
self.strategy.get_instance_load("INSTANCE_0")
|
||||
instance0 = model.get_instance_by_uuid("INSTANCE_0")
|
||||
self.strategy.get_instance_load(instance0)
|
||||
m_ceilometer.statistic_aggregation.assert_called_with(
|
||||
aggregate='min', meter_name='memory.resident',
|
||||
period=720, resource_id='INSTANCE_0')
|
||||
period=720, resource_id=instance0.uuid)
|
||||
self.strategy.get_hosts_load()
|
||||
m_ceilometer.statistic_aggregation.assert_called_with(
|
||||
aggregate='avg', meter_name='hardware.memory.used',
|
||||
@@ -158,10 +162,14 @@ class TestWorkloadStabilization(base.TestCase):
|
||||
self.assertEqual(self.strategy.calculate_weighted_sd(sd_case), 1.25)
|
||||
|
||||
def test_calculate_migration_case(self):
|
||||
self.m_model.return_value = self.fake_cluster.generate_scenario_1()
|
||||
model = self.fake_cluster.generate_scenario_1()
|
||||
self.m_model.return_value = model
|
||||
instance = model.get_instance_by_uuid("INSTANCE_5")
|
||||
src_node = model.get_node_by_uuid("Node_2")
|
||||
dst_node = model.get_node_by_uuid("Node_1")
|
||||
result = self.strategy.calculate_migration_case(
|
||||
self.hosts_load_assert, "INSTANCE_5", "Node_2", "Node_1")[-1][
|
||||
"Node_1"]
|
||||
self.hosts_load_assert, instance,
|
||||
src_node, dst_node)[-1][dst_node.uuid]
|
||||
result['cpu_util'] = round(result['cpu_util'], 3)
|
||||
self.assertEqual(result, {'cpu_util': 0.095, 'memory.resident': 21.0,
|
||||
'vcpus': 40})
|
||||
|
||||
Reference in New Issue
Block a user