16
16
Tests For Distributed Scheduler.
19
21
from nova import context
20
22
from nova import exception
21
23
from nova.scheduler import least_cost
22
24
from nova.scheduler import host_manager
25
from nova.scheduler import distributed_scheduler
23
26
from nova import test
24
from nova.tests.scheduler import fakes
27
from nova.tests.scheduler import fakes, test_scheduler
27
30
def fake_filter_hosts(hosts, filter_properties):
31
class DistributedSchedulerTestCase(test.TestCase):
34
class DistributedSchedulerTestCase(test_scheduler.SchedulerTestCase):
32
35
"""Test case for Distributed Scheduler."""
37
driver_cls = distributed_scheduler.DistributedScheduler
34
39
def test_run_instance_no_hosts(self):
36
41
Ensure empty hosts & child_zones result in NoValidHosts exception.
76
81
self.assertRaises(NotImplementedError, sched._schedule, fake_context,
84
def test_scheduler_includes_launch_index(self):
86
fake_kwargs = {'fake_kwarg1': 'fake_value1',
87
'fake_kwarg2': 'fake_value2'}
88
instance_opts = {'fake_opt1': 'meow'}
89
request_spec = {'num_instances': 2,
90
'instance_properties': instance_opts}
91
instance1 = {'uuid': 'fake-uuid1'}
92
instance2 = {'uuid': 'fake-uuid2'}
94
def _has_launch_index(expected_index):
95
"""Return a function that verifies the expected index."""
96
def _check_launch_index(value):
97
if 'instance_properties' in value:
98
if 'launch_index' in value['instance_properties']:
99
index = value['instance_properties']['launch_index']
100
if index == expected_index:
103
return _check_launch_index
105
class ContextFake(object):
108
context_fake = ContextFake()
110
self.mox.StubOutWithMock(self.driver, '_schedule')
111
self.mox.StubOutWithMock(self.driver, '_provision_resource')
113
self.driver._schedule(context_fake, 'compute',
114
request_spec, **fake_kwargs
115
).AndReturn(['host1', 'host2'])
117
self.driver._provision_resource(
119
mox.Func(_has_launch_index(0)), fake_kwargs).AndReturn(instance1)
121
self.driver._provision_resource(
123
mox.Func(_has_launch_index(1)), fake_kwargs).AndReturn(instance2)
126
self.driver.schedule_run_instance(context_fake, request_spec,
79
129
def test_schedule_happy_day(self):
80
130
"""Make sure there's nothing glaringly wrong with _schedule()
81
131
by doing a happy day pass through."""