summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKiall Mac Innes <kiall@hp.com>2014-02-21 12:25:20 +0000
committerKiall Mac Innes <kiall@hp.com>2014-03-04 11:45:19 +0000
commite3214d3e74a5319dff438c4a9fdc0beb1214a35f (patch)
tree99cd2504c56ff55b238a9e9d18f3b7ce500e15d8
parent97d5512041003d1230bd3bd84029cf9a18e749e1 (diff)
downloaddesignate-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.py10
-rw-r--r--designate/storage/impl_sqlalchemy/__init__.py4
-rw-r--r--designate/tests/__init__.py10
-rw-r--r--designate/tests/test_storage/__init__.py7
-rw-r--r--designate/tests/test_storage/test_sqlalchemy.py6
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()