diff --git a/ceilometer/api/app.py b/ceilometer/api/app.py index 2171d5efc..89857d608 100644 --- a/ceilometer/api/app.py +++ b/ceilometer/api/app.py @@ -43,9 +43,8 @@ OPTS = [ API_OPTS = [ cfg.BoolOpt('pecan_debug', - default=CONF.debug, help='Toggle Pecan Debug Middleware. ' - 'Defaults to global debug value.' + 'If it is not set, global debug value will be used.' ), ] @@ -76,6 +75,8 @@ def setup_app(pecan_config=None, extra_hooks=None): pecan.configuration.set_config(dict(pecan_config), overwrite=True) + cfg.set_defaults(API_OPTS, pecan_debug=CONF.debug) + app = pecan.make_app( pecan_config.app.root, debug=CONF.api.pecan_debug, @@ -91,7 +92,6 @@ def setup_app(pecan_config=None, extra_hooks=None): class VersionSelectorApplication(object): def __init__(self): pc = get_pecan_config() - pc.app.debug = CONF.api.pecan_debug def not_found(environ, start_response): start_response('404 Not Found', []) diff --git a/ceilometer/tests/api/test_app.py b/ceilometer/tests/api/test_app.py index 5daa60d84..b77926b53 100644 --- a/ceilometer/tests/api/test_app.py +++ b/ceilometer/tests/api/test_app.py @@ -49,3 +49,21 @@ class TestApp(base.BaseTestCase): with mock.patch.object(self.CONF, 'find_file') as ff: ff.return_value = None self.assertRaises(cfg.ConfigFilesNotFoundError, app.load_app) + + @mock.patch('ceilometer.storage.get_connection_from_config', + mock.MagicMock()) + @mock.patch('ceilometer.api.hooks.PipelineHook', mock.MagicMock()) + @mock.patch('pecan.make_app') + def test_pecan_debug(self, mocked): + def _check_pecan_debug(g_debug, p_debug, expected): + self.CONF.set_override('debug', g_debug) + if p_debug is not None: + self.CONF.set_override('pecan_debug', p_debug, group='api') + app.setup_app() + args, kwargs = mocked.call_args + self.assertEqual(expected, kwargs.get('debug')) + + _check_pecan_debug(g_debug=False, p_debug=None, expected=False) + _check_pecan_debug(g_debug=True, p_debug=None, expected=True) + _check_pecan_debug(g_debug=True, p_debug=False, expected=False) + _check_pecan_debug(g_debug=False, p_debug=True, expected=True)