From ffeae31505354100021999686281d15eb1311b01 Mon Sep 17 00:00:00 2001 From: Jakub Libosvar Date: Fri, 29 Jul 2016 05:26:14 -0400 Subject: [PATCH] Fix that api_workers=0 doesn't spawn any api workers Change-Id: Iadb9b35bc189244dee293efe042fee77a9a2d7da Closes-Bug: 1607691 --- neutron/service.py | 2 +- neutron/tests/unit/test_service.py | 30 ++++++++++++++++++++++++++++++ 2 files changed, 31 insertions(+), 1 deletion(-) diff --git a/neutron/service.py b/neutron/service.py index 52dc58142b8..d7308ecf3d4 100644 --- a/neutron/service.py +++ b/neutron/service.py @@ -276,7 +276,7 @@ def start_plugins_workers(): def _get_api_workers(): workers = cfg.CONF.api_workers - if not workers: + if workers is None: workers = processutils.get_worker_count() return workers diff --git a/neutron/tests/unit/test_service.py b/neutron/tests/unit/test_service.py index 6b66245f5f3..d05104b3704 100644 --- a/neutron/tests/unit/test_service.py +++ b/neutron/tests/unit/test_service.py @@ -15,7 +15,10 @@ import mock +from oslo_config import cfg + from neutron import service +from neutron.tests import base from neutron.tests.unit import test_wsgi @@ -25,3 +28,30 @@ class TestRpcWorker(test_wsgi.TestServiceBase): _plugin = mock.Mock() rpc_worker = service.RpcWorker(_plugin) self._test_reset(rpc_worker) + + +class TestRunWsgiApp(base.BaseTestCase): + def setUp(self): + super(TestRunWsgiApp, self).setUp() + self.processor_count = mock.patch( + 'oslo_concurrency.processutils.get_worker_count' + ).start().return_value + + def _test_api_workers(self, config_value, expected_passed_value): + if config_value is not None: + cfg.CONF.set_override('api_workers', config_value) + with mock.patch('neutron.wsgi.Server') as mock_server: + service.run_wsgi_app(mock.sentinel.app) + start_call = mock_server.return_value.start.call_args + expected_call = mock.call( + mock.ANY, mock.ANY, mock.ANY, workers=expected_passed_value) + self.assertEqual(expected_call, start_call) + + def test_api_workers_zero(self): + self._test_api_workers(0, 0) + + def test_api_workers_default(self): + self._test_api_workers(None, self.processor_count) + + def test_api_workers_defined(self): + self._test_api_workers(42, 42)