135 lines
4.8 KiB
Python
135 lines
4.8 KiB
Python
# Copyright (c) 2013 The Johns Hopkins University/Applied Physics Laboratory
|
|
# 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.
|
|
from unittest import mock
|
|
|
|
from os_brick import caches
|
|
from os_brick import exception
|
|
from os_brick.tests import base
|
|
|
|
|
|
class CacheManagerTestCase(base.TestCase):
|
|
def setUp(self):
|
|
super(CacheManagerTestCase, self).setUp()
|
|
self.connection_info = {
|
|
"data": {
|
|
"device_path": "/dev/disk/by-path/"
|
|
"ip-192.0.2.0:3260-iscsi-iqn.2010-10.org.openstack"
|
|
":volume-fake_uuid-lun-1",
|
|
},
|
|
}
|
|
self.root_helper = None
|
|
|
|
@mock.patch('os_brick.executor.Executor._execute')
|
|
def test_init_invalid_device_path(self, moc_exec):
|
|
conn_info_invalid = {
|
|
'data': {
|
|
}
|
|
}
|
|
self.assertRaises(
|
|
exception.VolumeLocalCacheNotSupported,
|
|
caches.CacheManager,
|
|
root_helper=None,
|
|
connection_info=conn_info_invalid
|
|
)
|
|
|
|
@mock.patch('os_brick.caches.CacheManager._get_engine')
|
|
def test_init_cacheable(self, moc_get_engine):
|
|
moc_get_engine.return_value = None
|
|
conn_info_cacheable = {
|
|
'data': {
|
|
'device_path': '/dev/sdd',
|
|
'cacheable': True
|
|
}
|
|
}
|
|
conn_info_non_cacheable = {
|
|
'data': {
|
|
'device_path': '/dev/sdd',
|
|
}
|
|
}
|
|
mgr_cacheable = caches.CacheManager(
|
|
root_helper=None,
|
|
connection_info=conn_info_cacheable)
|
|
mgr_non_cacheable = caches.CacheManager(
|
|
root_helper=None,
|
|
connection_info=conn_info_non_cacheable)
|
|
self.assertTrue(mgr_cacheable.cacheable)
|
|
self.assertFalse(mgr_non_cacheable.cacheable)
|
|
|
|
@mock.patch('os_brick.caches.opencas.OpenCASEngine.is_engine_ready')
|
|
def test_get_engine(self, moc_get_engine):
|
|
conn_info = {
|
|
'data': {
|
|
'device_path': '/dev/sdd',
|
|
'cacheable': True
|
|
}
|
|
}
|
|
mgr = caches.CacheManager(root_helper=None,
|
|
cache_name='opencas',
|
|
connection_info=conn_info)
|
|
self.assertIsNotNone(mgr.engine)
|
|
|
|
self.assertRaises(
|
|
exception.Invalid,
|
|
caches.CacheManager,
|
|
root_helper=None,
|
|
connection_info=conn_info
|
|
)
|
|
|
|
@mock.patch('os_brick.caches.opencas.OpenCASEngine.is_engine_ready')
|
|
@mock.patch('os_brick.caches.opencas.OpenCASEngine.attach_volume')
|
|
def test_attach_volume(self, moc_attach, moc_eng_ready):
|
|
conn_info = {
|
|
'data': {
|
|
'device_path': '/dev/sdd',
|
|
}
|
|
}
|
|
moc_attach.return_value = '/dev/cas1-1'
|
|
moc_eng_ready.return_value = True
|
|
|
|
mgr = caches.CacheManager(root_helper=None,
|
|
cache_name='opencas',
|
|
connection_info=conn_info)
|
|
self.assertEqual('/dev/sdd', mgr.attach_volume())
|
|
|
|
conn_info['data']['cacheable'] = True
|
|
mgr = caches.CacheManager(root_helper=None,
|
|
cache_name='opencas',
|
|
connection_info=conn_info)
|
|
self.assertEqual('/dev/cas1-1', mgr.attach_volume())
|
|
|
|
@mock.patch('os_brick.caches.opencas.OpenCASEngine.is_engine_ready')
|
|
@mock.patch('os_brick.caches.opencas.OpenCASEngine.detach_volume')
|
|
def test_detach_volume(self, moc_detach, moc_eng_ready):
|
|
conn_info = {
|
|
'data': {
|
|
'device_path': '/dev/sdd',
|
|
}
|
|
}
|
|
moc_detach.return_value = '/dev/sdd'
|
|
moc_eng_ready.return_value = True
|
|
|
|
# cacheable == False
|
|
mgr = caches.CacheManager(root_helper=None,
|
|
cache_name='opencas',
|
|
connection_info=conn_info)
|
|
self.assertEqual('/dev/sdd', mgr.attach_volume())
|
|
|
|
# cacheable == True
|
|
conn_info['data']['cacheable'] = True
|
|
mgr = caches.CacheManager(root_helper=None,
|
|
cache_name='opencas',
|
|
connection_info=conn_info)
|
|
self.assertEqual('/dev/sdd', mgr.detach_volume())
|