neutron/neutron/tests/unit/plugins/ml2/drivers/mech_sriov/agent/common/test_config.py

129 lines
5.4 KiB
Python

# Copyright 2014 Mellanox Technologies, Ltd
#
# 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.
from oslo_config import cfg
from neutron.common import utils as n_utils
from neutron.plugins.ml2.drivers.mech_sriov.agent.common import config
from neutron.plugins.ml2.drivers.mech_sriov.agent \
import sriov_nic_agent as agent
from neutron.tests import base
class TestSriovAgentConfig(base.BaseTestCase):
EXCLUDE_DEVICES_LIST = ['p7p1:0000:07:00.1;0000:07:00.2',
'p3p1:0000:04:00.3']
EXCLUDE_DEVICES_LIST_INVALID = ['p7p2:0000:07:00.1;0000:07:00.2']
EXCLUDE_DEVICES_WITH_SPACES_LIST = ['p7p1: 0000:07:00.1 ; 0000:07:00.2',
'p3p1:0000:04:00.3 ']
EXCLUDE_DEVICES_WITH_SPACES_ERROR = ['p7p1',
'p3p1:0000:04:00.3 ']
EXCLUDE_DEVICES = {'p7p1': set(['0000:07:00.1', '0000:07:00.2']),
'p3p1': set(['0000:04:00.3'])}
DEVICE_MAPPING_LIST = ['physnet7:p7p1',
'physnet3:p3p1']
DEVICE_MAPPING_WITH_ERROR_LIST = ['physnet7',
'physnet3:p3p1']
DEVICE_MAPPING_WITH_SPACES_LIST = ['physnet7 : p7p1',
'physnet3 : p3p1 ']
DEVICE_MAPPING = {'physnet7': 'p7p1',
'physnet3': 'p3p1'}
def test_defaults(self):
self.assertEqual(config.DEFAULT_DEVICE_MAPPINGS,
cfg.CONF.SRIOV_NIC.physical_device_mappings)
self.assertEqual(config.DEFAULT_EXCLUDE_DEVICES,
cfg.CONF.SRIOV_NIC.exclude_devices)
self.assertEqual(2,
cfg.CONF.AGENT.polling_interval)
def test_device_mappings(self):
cfg.CONF.set_override('physical_device_mappings',
self.DEVICE_MAPPING_LIST,
'SRIOV_NIC')
device_mappings = n_utils.parse_mappings(
cfg.CONF.SRIOV_NIC.physical_device_mappings)
self.assertEqual(device_mappings, self.DEVICE_MAPPING)
def test_device_mappings_with_error(self):
cfg.CONF.set_override('physical_device_mappings',
self.DEVICE_MAPPING_WITH_ERROR_LIST,
'SRIOV_NIC')
self.assertRaises(ValueError, n_utils.parse_mappings,
cfg.CONF.SRIOV_NIC.physical_device_mappings)
def test_device_mappings_with_spaces(self):
cfg.CONF.set_override('physical_device_mappings',
self.DEVICE_MAPPING_WITH_SPACES_LIST,
'SRIOV_NIC')
device_mappings = n_utils.parse_mappings(
cfg.CONF.SRIOV_NIC.physical_device_mappings)
self.assertEqual(device_mappings, self.DEVICE_MAPPING)
def test_exclude_devices(self):
cfg.CONF.set_override('exclude_devices',
self.EXCLUDE_DEVICES_LIST,
'SRIOV_NIC')
exclude_devices = config.parse_exclude_devices(
cfg.CONF.SRIOV_NIC.exclude_devices)
self.assertEqual(exclude_devices, self.EXCLUDE_DEVICES)
def test_exclude_devices_with_spaces(self):
cfg.CONF.set_override('exclude_devices',
self.EXCLUDE_DEVICES_WITH_SPACES_LIST,
'SRIOV_NIC')
exclude_devices = config.parse_exclude_devices(
cfg.CONF.SRIOV_NIC.exclude_devices)
self.assertEqual(exclude_devices, self.EXCLUDE_DEVICES)
def test_exclude_devices_with_error(self):
cfg.CONF.set_override('exclude_devices',
self.EXCLUDE_DEVICES_WITH_SPACES_ERROR,
'SRIOV_NIC')
self.assertRaises(ValueError, config.parse_exclude_devices,
cfg.CONF.SRIOV_NIC.exclude_devices)
def test_validate_config_ok(self):
cfg.CONF.set_override('physical_device_mappings',
self.DEVICE_MAPPING_LIST,
'SRIOV_NIC')
cfg.CONF.set_override('exclude_devices',
self.EXCLUDE_DEVICES_LIST,
'SRIOV_NIC')
config_parser = agent.SriovNicAgentConfigParser()
config_parser.parse()
device_mappings = config_parser.device_mappings
exclude_devices = config_parser.exclude_devices
self.assertEqual(exclude_devices, self.EXCLUDE_DEVICES)
self.assertEqual(device_mappings, self.DEVICE_MAPPING)
def test_validate_config_fail(self):
cfg.CONF.set_override('physical_device_mappings',
self.DEVICE_MAPPING_LIST,
'SRIOV_NIC')
cfg.CONF.set_override('exclude_devices',
self.EXCLUDE_DEVICES_LIST_INVALID,
'SRIOV_NIC')
config_parser = agent.SriovNicAgentConfigParser()
self.assertRaises(ValueError, config_parser.parse)