diff options
author | Kiall Mac Innes <kiall@hp.com> | 2014-02-21 12:25:20 +0000 |
---|---|---|
committer | Kiall Mac Innes <kiall@hp.com> | 2014-03-04 11:45:19 +0000 |
commit | e3214d3e74a5319dff438c4a9fdc0beb1214a35f (patch) | |
tree | 99cd2504c56ff55b238a9e9d18f3b7ce500e15d8 | |
parent | 97d5512041003d1230bd3bd84029cf9a18e749e1 (diff) | |
download | designate-e3214d3e74a5319dff438c4a9fdc0beb1214a35f.tar.gz |
Ensure Storage Implementions match the Interface
This just covers the storage interface, as reported in bug 1281106
Closes-Bug: 1281106
Change-Id: Ief239ce39e552c5248a0736b0fa1dc3396c3d67a
-rw-r--r-- | designate/storage/base.py | 10 | ||||
-rw-r--r-- | designate/storage/impl_sqlalchemy/__init__.py | 4 | ||||
-rw-r--r-- | designate/tests/__init__.py | 10 | ||||
-rw-r--r-- | designate/tests/test_storage/__init__.py | 7 | ||||
-rw-r--r-- | designate/tests/test_storage/test_sqlalchemy.py | 6 |
5 files changed, 29 insertions, 8 deletions
diff --git a/designate/storage/base.py b/designate/storage/base.py index dcb1ddbc..46dad6d7 100644 --- a/designate/storage/base.py +++ b/designate/storage/base.py @@ -174,7 +174,7 @@ class Storage(DriverPlugin): """ @abc.abstractmethod - def find_tld(self, context, criterion=None): + def find_tld(self, context, criterion): """ Find a single TLD. @@ -277,7 +277,7 @@ class Storage(DriverPlugin): """ @abc.abstractmethod - def count_tenants(self, context, values): + def count_tenants(self, context): """ Count tenants @@ -392,12 +392,11 @@ class Storage(DriverPlugin): """ @abc.abstractmethod - def find_recordset(self, context, domain_id, criterion): + def find_recordset(self, context, criterion): """ Find a single RecordSet. :param context: RPC Context. - :param domain_id: Domain ID where the recordsets reside. :param criterion: Criteria to filter by. """ @@ -429,12 +428,13 @@ class Storage(DriverPlugin): """ @abc.abstractmethod - def create_record(self, context, domain_id, values): + def create_record(self, context, domain_id, recordset_id, values): """ Create a record on a given Domain ID :param context: RPC Context. :param domain_id: Domain ID to create the record in. + :param recordset_id: RecordSet ID to create the record in. :param values: Values to create the new Record from. """ diff --git a/designate/storage/impl_sqlalchemy/__init__.py b/designate/storage/impl_sqlalchemy/__init__.py index 687aa9ad..24cc5608 100644 --- a/designate/storage/impl_sqlalchemy/__init__.py +++ b/designate/storage/impl_sqlalchemy/__init__.py @@ -292,7 +292,7 @@ class SQLAlchemyStorage(base.Storage): sort_key=sort_key, sort_dir=sort_dir) return [dict(s) for s in tlds] - def find_tld(self, context, criterion=None): + def find_tld(self, context, criterion): tld = self._find_tlds(context, criterion, one=True) return dict(tld) @@ -590,7 +590,7 @@ class SQLAlchemyStorage(base.Storage): return dict(record) - def find_record(self, context, criterion=None): + def find_record(self, context, criterion): record = self._find_records(context, criterion, one=True) return dict(record) diff --git a/designate/tests/__init__.py b/designate/tests/__init__.py index 5bbb5737..670a4e6a 100644 --- a/designate/tests/__init__.py +++ b/designate/tests/__init__.py @@ -17,6 +17,7 @@ import copy import fixtures import functools import os +import inspect from migrate.versioning import repository import shutil import sqlalchemy @@ -486,6 +487,15 @@ class TestCase(test.BaseTestCase): values = self.get_blacklist_fixture(fixture=fixture, values=kwargs) return self.central_service.create_blacklist(context, values=values) + def _ensure_interface(self, interface, implementation): + for name in interface.__abstractmethods__: + in_arginfo = inspect.getargspec(getattr(interface, name)) + im_arginfo = inspect.getargspec(getattr(implementation, name)) + + self.assertEqual( + in_arginfo, im_arginfo, + "Method Signature for '%s' mismatched" % name) + def _skip_decorator(func): @functools.wraps(func) diff --git a/designate/tests/test_storage/__init__.py b/designate/tests/test_storage/__init__.py index 1073b1d2..dad6b6b4 100644 --- a/designate/tests/test_storage/__init__.py +++ b/designate/tests/test_storage/__init__.py @@ -15,9 +15,9 @@ # under the License. import testtools import uuid - from designate.openstack.common import log as logging from designate import exceptions +from designate.storage.base import Storage as StorageBase LOG = logging.getLogger(__name__) @@ -78,6 +78,7 @@ class StorageTestCase(object): return fixture, self.storage.create_record( context, domain['id'], recordset['id'], fixture) + # Paging Tests def _ensure_paging(self, data, method): """ Given an array of created items we iterate through them making sure @@ -118,6 +119,10 @@ class StorageTestCase(object): self.storage.find_servers( self.admin_context, sort_key='invalid_sort_key') + # Interface Tests + def test_interface(self): + self._ensure_interface(StorageBase, self.storage.__class__) + # Quota Tests def test_create_quota(self): values = self.get_quota_fixture() diff --git a/designate/tests/test_storage/test_sqlalchemy.py b/designate/tests/test_storage/test_sqlalchemy.py index eb3c6c06..39e071b7 100644 --- a/designate/tests/test_storage/test_sqlalchemy.py +++ b/designate/tests/test_storage/test_sqlalchemy.py @@ -24,4 +24,10 @@ LOG = logging.getLogger(__name__) class SqlalchemyStorageTest(StorageTestCase, TestCase): def setUp(self): super(SqlalchemyStorageTest, self).setUp() + + self.config( + storage_driver='sqlalchemy', + group='service:central' + ) + self.storage = storage.get_storage() |