Merge "Fix db shim layer mismatches with implementation"
This commit is contained in:
commit
b81b98b2b7
|
@ -337,7 +337,7 @@ def share_instances_get_all_by_share_network(context, share_network_id):
|
||||||
|
|
||||||
def share_instances_get_all_by_share(context, share_id):
|
def share_instances_get_all_by_share(context, share_id):
|
||||||
"""Returns list of shares that belong to given share."""
|
"""Returns list of shares that belong to given share."""
|
||||||
return IMPL.share_instances_get_all_by_share_network(context, share_id)
|
return IMPL.share_instances_get_all_by_share(context, share_id)
|
||||||
|
|
||||||
|
|
||||||
def share_instances_get_all_by_consistency_group_id(context, cg_id):
|
def share_instances_get_all_by_consistency_group_id(context, cg_id):
|
||||||
|
@ -393,14 +393,6 @@ def share_get_all_by_consistency_group_id(context, cg_id,
|
||||||
sort_key=sort_key, sort_dir=sort_dir)
|
sort_key=sort_key, sort_dir=sort_dir)
|
||||||
|
|
||||||
|
|
||||||
def share_get_all_by_share_network(context, share_network_id, filters=None,
|
|
||||||
sort_key=None, sort_dir=None):
|
|
||||||
"""Returns list of shares that belong to given share network."""
|
|
||||||
return IMPL.share_get_all_by_share_network(
|
|
||||||
context, share_network_id, filters=filters, sort_key=sort_key,
|
|
||||||
sort_dir=sort_dir)
|
|
||||||
|
|
||||||
|
|
||||||
def share_get_all_by_share_server(context, share_server_id, filters=None,
|
def share_get_all_by_share_server(context, share_server_id, filters=None,
|
||||||
sort_key=None, sort_dir=None):
|
sort_key=None, sort_dir=None):
|
||||||
"""Returns all shares with given share server ID."""
|
"""Returns all shares with given share server ID."""
|
||||||
|
@ -752,20 +744,6 @@ def share_server_get(context, id, session=None):
|
||||||
return IMPL.share_server_get(context, id, session=session)
|
return IMPL.share_server_get(context, id, session=session)
|
||||||
|
|
||||||
|
|
||||||
def share_server_get_by_host(context, host, share_net_id, session=None):
|
|
||||||
"""Get share server DB records by host."""
|
|
||||||
return IMPL.share_server_get_by_host(context, host, share_net_id,
|
|
||||||
session=session)
|
|
||||||
|
|
||||||
|
|
||||||
def share_server_get_by_host_and_share_net(context, host, share_net_id,
|
|
||||||
session=None):
|
|
||||||
"""Get share server DB records by host and share net."""
|
|
||||||
return IMPL.share_server_get_by_host_and_share_net(context, host,
|
|
||||||
share_net_id,
|
|
||||||
session=session)
|
|
||||||
|
|
||||||
|
|
||||||
def share_server_get_all_by_host_and_share_net_valid(context, host,
|
def share_server_get_all_by_host_and_share_net_valid(context, host,
|
||||||
share_net_id,
|
share_net_id,
|
||||||
session=None):
|
session=None):
|
||||||
|
@ -854,11 +832,6 @@ def share_type_access_remove(context, type_id, project_id):
|
||||||
return IMPL.share_type_access_remove(context, type_id, project_id)
|
return IMPL.share_type_access_remove(context, type_id, project_id)
|
||||||
|
|
||||||
|
|
||||||
def share_type_qos_specs_get(context, type_id):
|
|
||||||
"""Get all qos specs for given share type."""
|
|
||||||
return IMPL.share_type_qos_specs_get(context, type_id)
|
|
||||||
|
|
||||||
|
|
||||||
def share_type_destroy(context, id):
|
def share_type_destroy(context, id):
|
||||||
"""Delete a share type."""
|
"""Delete a share type."""
|
||||||
return IMPL.share_type_destroy(context, id)
|
return IMPL.share_type_destroy(context, id)
|
||||||
|
|
|
@ -0,0 +1,54 @@
|
||||||
|
# Copyright (c) Goutham Pacha Ravi.
|
||||||
|
# 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.
|
||||||
|
"""Unit Tests for the interface methods in the manila/db/api.py."""
|
||||||
|
|
||||||
|
import re
|
||||||
|
|
||||||
|
from manila.db import api as db_interface
|
||||||
|
from manila.db.sqlalchemy import api as db_api
|
||||||
|
from manila import test
|
||||||
|
|
||||||
|
|
||||||
|
class DBInterfaceTestCase(test.TestCase):
|
||||||
|
"""Test cases for the DB Interface methods."""
|
||||||
|
|
||||||
|
def setUp(self):
|
||||||
|
super(self.__class__, self).setUp()
|
||||||
|
|
||||||
|
def test_interface_methods(self):
|
||||||
|
"""Ensure that implementation methods match interfaces.
|
||||||
|
|
||||||
|
manila/db/api module is merely shim layer between the database
|
||||||
|
implementation and the other methods using these implementations.
|
||||||
|
Bugs are introduced when the shims go out of sync with the actual
|
||||||
|
implementation. So this test ensures that method names and
|
||||||
|
signatures match between the interface and the implementation.
|
||||||
|
"""
|
||||||
|
members = dir(db_interface)
|
||||||
|
# Ignore private methods for the file and any other members that
|
||||||
|
# need not match.
|
||||||
|
ignore_members = re.compile(r'^_|CONF|IMPL')
|
||||||
|
interfaces = [i for i in members if not ignore_members.match(i)]
|
||||||
|
for interface in interfaces:
|
||||||
|
method = getattr(db_interface, interface)
|
||||||
|
if callable(method):
|
||||||
|
mock_method_call = self.mock_object(db_api, interface)
|
||||||
|
# kwargs always specify defaults, ignore them in the signature.
|
||||||
|
args = filter(
|
||||||
|
lambda x: x != 'kwargs', method.__code__.co_varnames)
|
||||||
|
|
||||||
|
method(*args)
|
||||||
|
|
||||||
|
self.assertTrue(mock_method_call.called)
|
Loading…
Reference in New Issue