trivial: Remove FakeScheduler

We don't need this and it's blocking us from removing pluggable
scheduler drivers. Remove it.

Change-Id: I61c1a47559645c41089747cc81270848b58b68f9
Signed-off-by: Stephen Finucane <sfinucan@redhat.com>
This commit is contained in:
Stephen Finucane 2020-02-11 17:16:14 +00:00
parent e69dbfa0d3
commit a0a88d7c0c
6 changed files with 45 additions and 81 deletions

View File

@ -32,20 +32,15 @@ of the entrypoints under the namespace 'nova.scheduler.driver' of file
'setup.cfg'. If nothing is specified in this option, the 'filter_scheduler' is
used.
Other options are:
* 'fake_scheduler' which is used for testing.
Possible values:
* Any of the drivers included in Nova:
* filter_scheduler
* fake_scheduler
* You may also set this to the entry point name of a custom scheduler driver,
but you will be responsible for creating and maintaining it in your setup.cfg
file.
but you will be responsible for creating and maintaining it in your
``setup.cfg`` file.
Related options:

View File

@ -55,16 +55,17 @@ class SchedulerManager(manager.Manager):
_sentinel = object()
def __init__(self, scheduler_driver=None, *args, **kwargs):
def __init__(self, *args, **kwargs):
self.placement_client = report.SchedulerReportClient()
if not scheduler_driver:
scheduler_driver = CONF.scheduler.driver
self.driver = driver.DriverManager(
"nova.scheduler.driver",
scheduler_driver,
invoke_on_load=True).driver
super(SchedulerManager, self).__init__(service_name='scheduler',
*args, **kwargs)
'nova.scheduler.driver',
CONF.scheduler.driver,
invoke_on_load=True
).driver
super(SchedulerManager, self).__init__(
service_name='scheduler', *args, **kwargs
)
@periodic_task.periodic_task(
spacing=CONF.scheduler.discover_hosts_in_cells_interval,

View File

@ -46,16 +46,3 @@ class TestScheduler(test.NoDBTestCase):
mock_serve.assert_called_once_with(
service_create.return_value, workers=4)
mock_wait.assert_called_once_with()
@mock.patch('nova.service.Service.create')
@mock.patch('nova.service.serve')
@mock.patch('nova.service.wait')
@mock.patch('oslo_concurrency.processutils.get_worker_count')
def test_workers_fake_scheduler(self, get_worker_count, mock_wait,
mock_serve, service_create):
self.flags(driver='fake_scheduler', group='scheduler')
scheduler.main()
get_worker_count.assert_not_called()
mock_serve.assert_called_once_with(
service_create.return_value, workers=1)
mock_wait.assert_called_once_with()

View File

@ -20,14 +20,15 @@ import mock
from oslo_serialization import jsonutils
from oslo_utils.fixture import uuidsentinel as uuids
from nova import context
from nova import exception
from nova import objects
from nova.scheduler import filter_scheduler
from nova.scheduler import host_manager
from nova.scheduler import utils as scheduler_utils
from nova.scheduler import weights
from nova import servicegroup
from nova import test # noqa
from nova.tests.unit.scheduler import test_scheduler
fake_numa_limit = objects.NUMATopologyLimits(cpu_allocation_ratio=1.0,
@ -50,18 +51,41 @@ fake_selection = objects.Selection(service_host="fake_host",
allocation_request_version=fake_alloc_version)
class FilterSchedulerTestCase(test_scheduler.SchedulerTestCase):
class FilterSchedulerTestCase(test.NoDBTestCase):
"""Test case for Filter Scheduler."""
driver_cls = filter_scheduler.FilterScheduler
@mock.patch.object(host_manager.HostManager, '_init_instance_info',
new=mock.Mock())
@mock.patch.object(host_manager.HostManager, '_init_aggregates',
new=mock.Mock())
@mock.patch('nova.scheduler.client.report.SchedulerReportClient',
autospec=True, new=mock.Mock())
@mock.patch('nova.scheduler.client.query.SchedulerQueryClient',
autospec=True, new=mock.Mock())
def setUp(self):
with mock.patch(
'nova.scheduler.client.report.SchedulerReportClient',
autospec=True), mock.patch(
'nova.scheduler.client.query.SchedulerQueryClient',
autospec=True):
super(FilterSchedulerTestCase, self).setUp()
super(FilterSchedulerTestCase, self).setUp()
self.driver = filter_scheduler.FilterScheduler()
self.context = context.RequestContext('fake_user', 'fake_project')
self.topic = 'fake_topic'
self.servicegroup_api = servicegroup.API()
@mock.patch('nova.objects.ServiceList.get_by_topic')
@mock.patch('nova.servicegroup.API.service_is_up')
def test_hosts_up(self, mock_service_is_up, mock_get_by_topic):
service1 = objects.Service(host='host1')
service2 = objects.Service(host='host2')
services = objects.ServiceList(objects=[service1, service2])
mock_get_by_topic.return_value = services
mock_service_is_up.side_effect = [False, True]
result = self.driver.hosts_up(self.context, self.topic)
self.assertEqual(result, ['host2'])
mock_get_by_topic.assert_called_once_with(self.context, self.topic)
calls = [mock.call(service1), mock.call(service2)]
self.assertEqual(calls, mock_service_is_up.call_args_list)
@mock.patch('nova.scheduler.utils.claim_resources')
@mock.patch('nova.scheduler.filter_scheduler.FilterScheduler.'

View File

@ -27,7 +27,6 @@ from nova import objects
from nova.scheduler import filter_scheduler
from nova.scheduler import host_manager
from nova.scheduler import manager
from nova import servicegroup
from nova import test
from nova.tests.unit import fake_server_actions
from nova.tests.unit.scheduler import fakes
@ -60,14 +59,11 @@ class SchedulerManagerTestCase(test.NoDBTestCase):
"""Test case for scheduler manager."""
manager_cls = manager.SchedulerManager
driver_cls = fakes.FakeScheduler
driver_plugin_name = 'fake_scheduler'
@mock.patch.object(host_manager.HostManager, '_init_instance_info')
@mock.patch.object(host_manager.HostManager, '_init_aggregates')
def setUp(self, mock_init_agg, mock_init_inst):
super(SchedulerManagerTestCase, self).setUp()
self.flags(driver=self.driver_plugin_name, group='scheduler')
self.manager = self.manager_cls()
self.context = context.RequestContext('fake_user', 'fake_project')
self.topic = 'fake_topic'
@ -75,11 +71,6 @@ class SchedulerManagerTestCase(test.NoDBTestCase):
self.fake_kwargs = {'cat': 'meow', 'dog': 'woof'}
fake_server_actions.stub_out_action_events(self)
def test_1_correct_init(self):
# Correct scheduler driver
manager = self.manager
self.assertIsInstance(manager.driver, self.driver_cls)
@mock.patch('nova.scheduler.request_filter.process_reqspec')
@mock.patch('nova.scheduler.utils.resources_from_request_spec')
@mock.patch('nova.scheduler.client.report.SchedulerReportClient.'
@ -448,36 +439,3 @@ class SchedulerManagerTestCase(test.NoDBTestCase):
self.manager._discover_hosts_in_cells(mock.sentinel.context)
mock_log_warning.assert_not_called()
mock_log_debug.assert_called_once_with(msg)
class SchedulerTestCase(test.NoDBTestCase):
"""Test case for base scheduler driver class."""
# So we can subclass this test and re-use tests if we need.
driver_cls = fakes.FakeScheduler
@mock.patch.object(host_manager.HostManager, '_init_instance_info')
@mock.patch.object(host_manager.HostManager, '_init_aggregates')
def setUp(self, mock_init_agg, mock_init_inst):
super(SchedulerTestCase, self).setUp()
self.driver = self.driver_cls()
self.context = context.RequestContext('fake_user', 'fake_project')
self.topic = 'fake_topic'
self.servicegroup_api = servicegroup.API()
@mock.patch('nova.objects.ServiceList.get_by_topic')
@mock.patch('nova.servicegroup.API.service_is_up')
def test_hosts_up(self, mock_service_is_up, mock_get_by_topic):
service1 = objects.Service(host='host1')
service2 = objects.Service(host='host2')
services = objects.ServiceList(objects=[service1, service2])
mock_get_by_topic.return_value = services
mock_service_is_up.side_effect = [False, True]
result = self.driver.hosts_up(self.context, self.topic)
self.assertEqual(result, ['host2'])
mock_get_by_topic.assert_called_once_with(self.context, self.topic)
calls = [mock.call(service1), mock.call(service2)]
self.assertEqual(calls, mock_service_is_up.call_args_list)

View File

@ -50,7 +50,6 @@ nova.compute.monitors.cpu =
virt_driver = nova.compute.monitors.cpu.virt_driver:Monitor
nova.scheduler.driver =
filter_scheduler = nova.scheduler.filter_scheduler:FilterScheduler
fake_scheduler = nova.tests.unit.scheduler.fakes:FakeScheduler
console_scripts =
nova-api = nova.cmd.api:main
nova-api-metadata = nova.cmd.api_metadata:main