manila/manila/tests/db/sqlalchemy/test_models.py

102 lines
4.1 KiB
Python

# Copyright (c) 2015 Hitachi Data Systems.
# 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.
"""Testing of SQLAlchemy model classes."""
import ddt
from manila.common import constants
from manila import test
from manila.tests import db_utils
@ddt.ddt
class ShareTestCase(test.TestCase):
"""Testing of SQLAlchemy Share model class."""
def setUp(self):
super(ShareTestCase, self).setUp()
@ddt.data(constants.STATUS_MANAGE_ERROR, constants.STATUS_CREATING,
constants.STATUS_EXTENDING, constants.STATUS_DELETING,
constants.STATUS_EXTENDING_ERROR,
constants.STATUS_ERROR_DELETING, constants.STATUS_MANAGING,
constants.STATUS_MANAGE_ERROR)
def test_share_instance_available(self, status):
instance_list = [
db_utils.create_share_instance(status=constants.STATUS_AVAILABLE,
share_id='fake_id'),
db_utils.create_share_instance(status=status,
share_id='fake_id')
]
share1 = db_utils.create_share(instances=instance_list)
share2 = db_utils.create_share(instances=list(reversed(instance_list)))
self.assertEqual(constants.STATUS_AVAILABLE, share1.instance['status'])
self.assertEqual(constants.STATUS_AVAILABLE, share2.instance['status'])
@ddt.data([constants.STATUS_MANAGE_ERROR, constants.STATUS_CREATING],
[constants.STATUS_ERROR_DELETING, constants.STATUS_DELETING],
[constants.STATUS_ERROR, constants.STATUS_MANAGING],
[constants.STATUS_UNMANAGE_ERROR, constants.STATUS_UNMANAGING],
[constants.STATUS_INACTIVE, constants.STATUS_EXTENDING],
[constants.STATUS_SHRINKING_ERROR, constants.STATUS_SHRINKING])
@ddt.unpack
def test_share_instance_not_transitional(self, status, trans_status):
instance_list = [
db_utils.create_share_instance(status=status,
share_id='fake_id'),
db_utils.create_share_instance(status=trans_status,
share_id='fake_id')
]
share1 = db_utils.create_share(instances=instance_list)
share2 = db_utils.create_share(instances=list(reversed(instance_list)))
self.assertEqual(status, share1.instance['status'])
self.assertEqual(status, share2.instance['status'])
def test_share_instance_creating(self):
share = db_utils.create_share(status=constants.STATUS_CREATING)
self.assertEqual(constants.STATUS_CREATING, share.instance['status'])
def test_access_rules_status_no_instances(self):
share = db_utils.create_share(instances=[])
self.assertEqual(constants.STATUS_ACTIVE, share.access_rules_status)
@ddt.data(constants.STATUS_ACTIVE, constants.STATUS_OUT_OF_SYNC,
constants.STATUS_ERROR)
def test_access_rules_status(self, access_status):
instances = [
db_utils.create_share_instance(
share_id='fake_id', status=constants.STATUS_ERROR,
access_rules_status=constants.STATUS_ACTIVE),
db_utils.create_share_instance(
share_id='fake_id', status=constants.STATUS_AVAILABLE,
access_rules_status=constants.STATUS_ACTIVE),
db_utils.create_share_instance(
share_id='fake_id', status=constants.STATUS_AVAILABLE,
access_rules_status=access_status),
]
share = db_utils.create_share(instances=instances)
self.assertEqual(access_status, share.access_rules_status)