118 lines
4.1 KiB
Python
118 lines
4.1 KiB
Python
# Copyright (c) 2016 EMC Corporation.
|
|
# All Rights Reserved.
|
|
#
|
|
# 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 ddt
|
|
from oslo_utils import units
|
|
|
|
from manila.share.drivers.dell_emc.plugins.unity import utils
|
|
from manila import test
|
|
|
|
|
|
class MockPort(object):
|
|
def __init__(self, sp_id):
|
|
self.sp_id = sp_id
|
|
|
|
def get_id(self):
|
|
return self.sp_id
|
|
|
|
|
|
SPA = MockPort('spa')
|
|
SPB = MockPort('spb')
|
|
|
|
|
|
class MockPort(object):
|
|
def __init__(self, sp, port_id, mtu):
|
|
self._sp = sp
|
|
self.port_id = port_id
|
|
self.mtu = mtu
|
|
|
|
def get_id(self):
|
|
return self.port_id
|
|
|
|
@property
|
|
def parent_storage_processor(self):
|
|
return self._sp
|
|
|
|
|
|
SPA_ETH0 = MockPort(SPA, 'spa_eth0', 1500)
|
|
SPA_ETH1 = MockPort(SPA, 'spa_eth1', 9000)
|
|
SPB_ETH0 = MockPort(SPB, 'spb_eth0', 1500)
|
|
SPB_ETH1 = MockPort(SPB, 'spb_eth1', 9000)
|
|
SPA_LA1 = MockPort(SPA, 'spa_la_1', 1500)
|
|
SPB_LA1 = MockPort(SPB, 'spb_la_1', 1500)
|
|
|
|
|
|
@ddt.ddt
|
|
class TestUtils(test.TestCase):
|
|
@ddt.data({'matcher': None,
|
|
'matched': {'pool_1', 'pool_2', 'nas_server_pool'},
|
|
'not_matched': set()},
|
|
{'matcher': ['*'],
|
|
'matched': {'pool_1', 'pool_2', 'nas_server_pool'},
|
|
'not_matched': set()},
|
|
{'matcher': ['pool_*'],
|
|
'matched': {'pool_1', 'pool_2'},
|
|
'not_matched': {'nas_server_pool'}},
|
|
{'matcher': ['*pool'],
|
|
'matched': {'nas_server_pool'},
|
|
'not_matched': {'pool_1', 'pool_2'}},
|
|
{'matcher': ['nas_server_pool'],
|
|
'matched': {'nas_server_pool'},
|
|
'not_matched': {'pool_1', 'pool_2'}},
|
|
{'matcher': ['nas_*', 'pool_*'],
|
|
'matched': {'pool_1', 'pool_2', 'nas_server_pool'},
|
|
'not_matched': set()})
|
|
def test_do_match(self, data):
|
|
full = ['pool_1 ', ' pool_2', ' nas_server_pool ']
|
|
matcher = data['matcher']
|
|
expected_matched = data['matched']
|
|
expected_not_matched = data['not_matched']
|
|
|
|
matched, not_matched = utils.do_match(full, matcher)
|
|
self.assertEqual(expected_matched, matched)
|
|
self.assertEqual(expected_not_matched, not_matched)
|
|
|
|
@ddt.data({'ports': [SPA_ETH0, SPB_ETH0],
|
|
'ids_conf': None,
|
|
'port_map': {'spa': {'spa_eth0'}, 'spb': {'spb_eth0'}},
|
|
'unmanaged': set()},
|
|
{'ports': [SPA_ETH0, SPB_ETH0],
|
|
'ids_conf': [' '],
|
|
'port_map': {'spa': {'spa_eth0'}, 'spb': {'spb_eth0'}},
|
|
'unmanaged': set()},
|
|
{'ports': [SPA_ETH0, SPB_ETH0, SPA_ETH1],
|
|
'ids_conf': ['spa*'],
|
|
'port_map': {'spa': {'spa_eth0', 'spa_eth1'}},
|
|
'unmanaged': {'spb_eth0'}},
|
|
)
|
|
@ddt.unpack
|
|
def test_match_ports(self, ports, ids_conf, port_map, unmanaged):
|
|
sp_ports_map, unmanaged_port_ids = utils.match_ports(ports,
|
|
ids_conf)
|
|
self.assertEqual(port_map, sp_ports_map)
|
|
self.assertEqual(unmanaged, unmanaged_port_ids)
|
|
|
|
def test_find_ports_by_mtu(self):
|
|
all_ports = [SPA_ETH0, SPB_ETH0, SPA_ETH1, SPB_ETH1, SPA_LA1,
|
|
SPB_LA1]
|
|
port_ids_conf = '*'
|
|
port_map = utils.find_ports_by_mtu(all_ports, port_ids_conf, 1500)
|
|
self.assertEqual({'spa': {'spa_eth0', 'spa_la_1'},
|
|
'spb': {'spb_eth0', 'spb_la_1'}},
|
|
port_map)
|
|
|
|
def test_gb_to_byte(self):
|
|
self.assertEqual(3 * units.Gi, utils.gib_to_byte(3))
|