cinder/cinder/tests/unit/objects/test_manageable_volumes_sna...

108 lines
4.1 KiB
Python

# Copyright 2016 Intel Corporation
#
# 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 cinder import objects
from cinder.tests.unit import objects as test_objects
@ddt.ddt
class TestManageableResources(test_objects.BaseObjectsTestCase):
def resource_test(self, resource, resource_type):
if resource_type == "manageable_volume_obj":
resource.manageable_volume_obj.wrong_key
elif resource_type == "manageable_snapshot_obj":
resource.manageable_snapshot_obj.wrong_key
def setUp(self):
super(TestManageableResources, self).setUp()
self.manageable_volume_dict = [
{'cinder_id':
'e334aab4-c987-4eb0-9c81-d4a773b4f7a6',
'extra_info': None,
'reason_not_safe': 'already managed',
'reference':
{'source-name':
'volume-e334aab4-c987-4eb0-9c81-d4a773b4f7a6'},
'safe_to_manage': False,
'size': 1,
'foo': 'bar'},
{'cinder_id':
'da25ac53-3fe0-4f56-9369-4d289d8902fd',
'extra_info': None,
'reason_not_safe': 'already managed',
'reference':
{'source-name':
'volume-da25ac53-3fe0-4f56-9369-4d289d8902fd'},
'safe_to_manage': False,
'size': 2}
]
self.manageable_snapshot_dict = [
{'cinder_id':
'e334aab4-c987-4eb0-9c81-d4a773b4f7a6',
'reference':
{'source-name':
'volume-e334aab4-c987-4eb0-9c81-d4a773b4f7a6'},
'extra_info': None,
'reason_not_safe': 'already managed',
'source_reference':
{'source-name':
'volume-e334aab4-c987-4eb0-9c81-d4a773b4f7a6'},
'safe_to_manage': False,
'size': 1,
'foo': 'bar'},
{'cinder_id':
'da25ac53-3fe0-4f56-9369-4d289d8902fd',
'reference':
{'source-name':
'volume-da25ac53-3fe0-4f56-9369-4d289d8902fd'},
'extra_info': None,
'reason_not_safe': 'already managed',
'source_reference':
{'source-name':
'da25ac53-3fe0-4f56-9369-4d289d8902fd'},
'safe_to_manage': False,
'size': 2}
]
vol_mang_list = (objects.ManageableVolumeList.from_primitives
(self.context, self.manageable_volume_dict))
self.manageable_volume_obj_list = vol_mang_list
snap_mang_list = (objects.ManageableSnapshotList.from_primitives
(self.context, self.manageable_snapshot_dict))
self.manageable_snapshot_obj_list = snap_mang_list
self.manageable_volume_obj = self.manageable_volume_obj_list[0]
self.manageable_snapshot_obj = self.manageable_snapshot_obj_list[0]
@ddt.data('manageable_volume_obj', 'manageable_snapshot_obj')
def test_extra_info(self, obj):
# Making sure that any new key assignment gets stored in extra_info
# field of manageable_volume_object & manageable_snapshot_object
self.assertEqual(
'bar',
getattr(self, obj).extra_info['foo'])
@ddt.data('manageable_volume_obj', 'manageable_snapshot_obj')
def test_extra_info_wrong_key(self, obj):
# Making sure referring an attribute before setting it raises an
# Attribute Error for manageable_volume_object &
# manageable_snapshot_object
getattr(self, obj).foo = "test"
self.assertRaises(AttributeError, self.resource_test, self, obj)