272 lines
12 KiB
Python
272 lines
12 KiB
Python
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
|
# not use this file except in compliance with the License. You may obtain
|
|
# a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
|
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
|
# License for the specific language governing permissions and limitations
|
|
# under the License.
|
|
|
|
import uuid
|
|
|
|
from oslo_config import cfg
|
|
from oslo_config import fixture as config
|
|
|
|
from keystoneauth1 import loading
|
|
from keystoneauth1.tests.unit.loading import utils
|
|
|
|
|
|
class ConfLoadingTests(utils.TestCase):
|
|
|
|
GROUP = 'adaptergroup'
|
|
|
|
def setUp(self):
|
|
super(ConfLoadingTests, self).setUp()
|
|
|
|
self.conf_fx = self.useFixture(config.Config())
|
|
loading.register_adapter_conf_options(self.conf_fx.conf, self.GROUP,
|
|
include_deprecated=False)
|
|
|
|
def test_load(self):
|
|
self.conf_fx.config(
|
|
service_type='type', service_name='name',
|
|
valid_interfaces='internal',
|
|
region_name='region', endpoint_override='endpoint',
|
|
version='2.0', group=self.GROUP)
|
|
adap = loading.load_adapter_from_conf_options(
|
|
self.conf_fx.conf, self.GROUP, session='session', auth='auth')
|
|
self.assertEqual('type', adap.service_type)
|
|
self.assertEqual('name', adap.service_name)
|
|
self.assertEqual(['internal'], adap.interface)
|
|
self.assertEqual('region', adap.region_name)
|
|
self.assertEqual('endpoint', adap.endpoint_override)
|
|
self.assertEqual('session', adap.session)
|
|
self.assertEqual('auth', adap.auth)
|
|
self.assertEqual('2.0', adap.version)
|
|
self.assertIsNone(adap.min_version)
|
|
self.assertIsNone(adap.max_version)
|
|
|
|
def test_load_valid_interfaces_list(self):
|
|
self.conf_fx.config(
|
|
service_type='type', service_name='name',
|
|
valid_interfaces=['internal', 'public'],
|
|
region_name='region', endpoint_override='endpoint',
|
|
version='2.0', group=self.GROUP)
|
|
adap = loading.load_adapter_from_conf_options(
|
|
self.conf_fx.conf, self.GROUP, session='session', auth='auth')
|
|
self.assertEqual('type', adap.service_type)
|
|
self.assertEqual('name', adap.service_name)
|
|
self.assertEqual(['internal', 'public'], adap.interface)
|
|
self.assertEqual('region', adap.region_name)
|
|
self.assertEqual('endpoint', adap.endpoint_override)
|
|
self.assertEqual('session', adap.session)
|
|
self.assertEqual('auth', adap.auth)
|
|
self.assertEqual('2.0', adap.version)
|
|
self.assertIsNone(adap.min_version)
|
|
self.assertIsNone(adap.max_version)
|
|
|
|
def test_load_valid_interfaces_comma_list(self):
|
|
self.conf_fx.config(
|
|
service_type='type', service_name='name',
|
|
valid_interfaces='internal,public',
|
|
region_name='region', endpoint_override='endpoint',
|
|
version='2.0', group=self.GROUP)
|
|
adap = loading.load_adapter_from_conf_options(
|
|
self.conf_fx.conf, self.GROUP, session='session', auth='auth')
|
|
self.assertEqual('type', adap.service_type)
|
|
self.assertEqual('name', adap.service_name)
|
|
self.assertEqual(['internal', 'public'], adap.interface)
|
|
self.assertEqual('region', adap.region_name)
|
|
self.assertEqual('endpoint', adap.endpoint_override)
|
|
self.assertEqual('session', adap.session)
|
|
self.assertEqual('auth', adap.auth)
|
|
self.assertEqual('2.0', adap.version)
|
|
self.assertIsNone(adap.min_version)
|
|
self.assertIsNone(adap.max_version)
|
|
|
|
def test_load_bad_valid_interfaces_value(self):
|
|
self.conf_fx.config(
|
|
service_type='type', service_name='name',
|
|
valid_interfaces='bad',
|
|
region_name='region', endpoint_override='endpoint',
|
|
version='2.0', group=self.GROUP)
|
|
self.assertRaises(
|
|
TypeError,
|
|
loading.load_adapter_from_conf_options,
|
|
self.conf_fx.conf, self.GROUP, session='session', auth='auth')
|
|
|
|
def test_load_version_range(self):
|
|
self.conf_fx.config(
|
|
service_type='type', service_name='name',
|
|
valid_interfaces='internal',
|
|
region_name='region', endpoint_override='endpoint',
|
|
min_version='2.0', max_version='3.0', group=self.GROUP)
|
|
adap = loading.load_adapter_from_conf_options(
|
|
self.conf_fx.conf, self.GROUP, session='session', auth='auth')
|
|
self.assertEqual('type', adap.service_type)
|
|
self.assertEqual('name', adap.service_name)
|
|
self.assertEqual(['internal'], adap.interface)
|
|
self.assertEqual('region', adap.region_name)
|
|
self.assertEqual('endpoint', adap.endpoint_override)
|
|
self.assertEqual('session', adap.session)
|
|
self.assertEqual('auth', adap.auth)
|
|
self.assertIsNone(adap.version)
|
|
self.assertEqual('2.0', adap.min_version)
|
|
self.assertEqual('3.0', adap.max_version)
|
|
|
|
def test_version_mutex_min(self):
|
|
self.conf_fx.config(
|
|
service_type='type', service_name='name',
|
|
valid_interfaces='iface',
|
|
region_name='region', endpoint_override='endpoint',
|
|
version='2.0', min_version='2.0', group=self.GROUP)
|
|
|
|
self.assertRaises(
|
|
TypeError,
|
|
loading.load_adapter_from_conf_options,
|
|
self.conf_fx.conf, self.GROUP, session='session', auth='auth')
|
|
|
|
def test_version_mutex_max(self):
|
|
self.conf_fx.config(
|
|
service_type='type', service_name='name',
|
|
valid_interfaces='iface',
|
|
region_name='region', endpoint_override='endpoint',
|
|
version='2.0', max_version='3.0', group=self.GROUP)
|
|
|
|
self.assertRaises(
|
|
TypeError,
|
|
loading.load_adapter_from_conf_options,
|
|
self.conf_fx.conf, self.GROUP, session='session', auth='auth')
|
|
|
|
def test_version_mutex_minmax(self):
|
|
self.conf_fx.config(
|
|
service_type='type', service_name='name',
|
|
valid_interfaces='iface',
|
|
region_name='region', endpoint_override='endpoint',
|
|
version='2.0', min_version='2.0', max_version='3.0',
|
|
group=self.GROUP)
|
|
|
|
self.assertRaises(
|
|
TypeError,
|
|
loading.load_adapter_from_conf_options,
|
|
self.conf_fx.conf, self.GROUP, session='session', auth='auth')
|
|
|
|
def test_load_retries(self):
|
|
self.conf_fx.config(
|
|
service_type='type', service_name='name',
|
|
connect_retries=3, status_code_retries=5,
|
|
connect_retry_delay=0.5, status_code_retry_delay=2.0,
|
|
group=self.GROUP)
|
|
adap = loading.load_adapter_from_conf_options(
|
|
self.conf_fx.conf, self.GROUP, session='session', auth='auth')
|
|
self.assertEqual('type', adap.service_type)
|
|
self.assertEqual('name', adap.service_name)
|
|
self.assertEqual(3, adap.connect_retries)
|
|
self.assertEqual(0.5, adap.connect_retry_delay)
|
|
self.assertEqual(5, adap.status_code_retries)
|
|
self.assertEqual(2.0, adap.status_code_retry_delay)
|
|
|
|
def test_get_conf_options(self):
|
|
opts = loading.get_adapter_conf_options()
|
|
for opt in opts:
|
|
if opt.name.endswith('-retries'):
|
|
self.assertIsInstance(opt, cfg.IntOpt)
|
|
elif opt.name.endswith('-retry-delay'):
|
|
self.assertIsInstance(opt, cfg.FloatOpt)
|
|
elif opt.name != 'valid-interfaces':
|
|
self.assertIsInstance(opt, cfg.StrOpt)
|
|
else:
|
|
self.assertIsInstance(opt, cfg.ListOpt)
|
|
self.assertEqual({'service-type', 'service-name',
|
|
'interface', 'valid-interfaces',
|
|
'region-name', 'endpoint-override', 'version',
|
|
'min-version', 'max-version', 'connect-retries',
|
|
'status-code-retries', 'connect-retry-delay',
|
|
'status-code-retry-delay'},
|
|
{opt.name for opt in opts})
|
|
|
|
def test_get_conf_options_undeprecated(self):
|
|
opts = loading.get_adapter_conf_options(include_deprecated=False)
|
|
for opt in opts:
|
|
if opt.name.endswith('-retries'):
|
|
self.assertIsInstance(opt, cfg.IntOpt)
|
|
elif opt.name.endswith('-retry-delay'):
|
|
self.assertIsInstance(opt, cfg.FloatOpt)
|
|
elif opt.name != 'valid-interfaces':
|
|
self.assertIsInstance(opt, cfg.StrOpt)
|
|
else:
|
|
self.assertIsInstance(opt, cfg.ListOpt)
|
|
self.assertEqual({'service-type', 'service-name', 'valid-interfaces',
|
|
'region-name', 'endpoint-override', 'version',
|
|
'min-version', 'max-version', 'connect-retries',
|
|
'status-code-retries', 'connect-retry-delay',
|
|
'status-code-retry-delay'},
|
|
{opt.name for opt in opts})
|
|
|
|
def test_deprecated(self):
|
|
"""Test external options that are deprecated by Adapter options.
|
|
|
|
Not to be confused with ConfLoadingDeprecatedTests, which tests conf
|
|
options in Adapter which are themselves deprecated.
|
|
"""
|
|
def new_deprecated():
|
|
return cfg.DeprecatedOpt(uuid.uuid4().hex, group=uuid.uuid4().hex)
|
|
|
|
opt_names = ['service-type', 'valid-interfaces', 'endpoint-override']
|
|
depr = dict([(n, [new_deprecated()]) for n in opt_names])
|
|
opts = loading.get_adapter_conf_options(deprecated_opts=depr)
|
|
|
|
for opt in opts:
|
|
if opt.name in opt_names:
|
|
self.assertIn(depr[opt.name][0], opt.deprecated_opts)
|
|
|
|
|
|
class ConfLoadingLegacyTests(ConfLoadingTests):
|
|
"""Tests with inclusion of deprecated conf options.
|
|
|
|
Not to be confused with ConfLoadingTests.test_deprecated, which tests
|
|
external options that are deprecated in favor of Adapter options.
|
|
"""
|
|
|
|
GROUP = 'adaptergroup'
|
|
|
|
def setUp(self):
|
|
super(ConfLoadingLegacyTests, self).setUp()
|
|
|
|
self.conf_fx = self.useFixture(config.Config())
|
|
loading.register_adapter_conf_options(self.conf_fx.conf, self.GROUP)
|
|
|
|
def test_load_old_interface(self):
|
|
self.conf_fx.config(
|
|
service_type='type', service_name='name',
|
|
interface='internal',
|
|
region_name='region', endpoint_override='endpoint',
|
|
version='2.0', group=self.GROUP)
|
|
adap = loading.load_adapter_from_conf_options(
|
|
self.conf_fx.conf, self.GROUP, session='session', auth='auth')
|
|
self.assertEqual('type', adap.service_type)
|
|
self.assertEqual('name', adap.service_name)
|
|
self.assertEqual('internal', adap.interface)
|
|
self.assertEqual('region', adap.region_name)
|
|
self.assertEqual('endpoint', adap.endpoint_override)
|
|
self.assertEqual('session', adap.session)
|
|
self.assertEqual('auth', adap.auth)
|
|
self.assertEqual('2.0', adap.version)
|
|
self.assertIsNone(adap.min_version)
|
|
self.assertIsNone(adap.max_version)
|
|
|
|
def test_interface_conflict(self):
|
|
self.conf_fx.config(
|
|
service_type='type', service_name='name', interface='iface',
|
|
valid_interfaces='internal,public',
|
|
region_name='region', endpoint_override='endpoint',
|
|
group=self.GROUP)
|
|
|
|
self.assertRaises(
|
|
TypeError,
|
|
loading.load_adapter_from_conf_options,
|
|
self.conf_fx.conf, self.GROUP, session='session', auth='auth')
|