Update modules to turn on dangling mock detection

Make all test suites in the api, configuration, instance, network,
mysql, router, quota, db, and datastore modules extend
'trove_testtools.TestCase' to enable dangling mock detection.

Co-Authored-By: Peter Stachowski <peter@tesora.com>
Change-Id: If9326709d76972d66fb40b4984bbb5214b0c5189
Partial-Bug: 1448273
This commit is contained in:
Petr Malik 2015-05-03 21:43:23 -04:00
parent b1cf32ba5b
commit 8fa76ceff8
15 changed files with 76 additions and 85 deletions

View File

@ -16,7 +16,6 @@
import mock
import os
import pkg_resources
import testtools
import trove
import ConfigParser as config_parser
@ -26,6 +25,7 @@ from trove.extensions.routes.account import Account
from trove.extensions.routes.mgmt import Mgmt
from trove.extensions.routes.mysql import Mysql
from trove.extensions.routes.security_group import Security_group
from trove.tests.unittests import trove_testtools
DEFAULT_EXTENSION_MAP = {
'Account': [Account, extensions.ExtensionDescriptor],
@ -63,7 +63,7 @@ class InvalidExtension(object):
return []
class TestExtensionLoading(testtools.TestCase):
class TestExtensionLoading(trove_testtools.TestCase):
def setUp(self):
super(TestExtensionLoading, self).setUp()

View File

@ -19,7 +19,6 @@ Tests dealing with HTTP rate-limiting.
import httplib
from trove.quota.models import Quota
import testtools
import webob
from mock import Mock, MagicMock
@ -31,6 +30,7 @@ from trove.limits import views
from trove.limits.service import LimitsController
from oslo.serialization import jsonutils
from trove.quota.quota import QUOTAS
from trove.tests.unittests import trove_testtools
TEST_LIMITS = [
Limit("GET", "/delayed", "^/delayed", 1, limits.PER_MINUTE),
@ -40,7 +40,7 @@ TEST_LIMITS = [
]
class BaseLimitTestSuite(testtools.TestCase):
class BaseLimitTestSuite(trove_testtools.TestCase):
"""Base test suite which provides relevant stubs and time abstraction."""
def setUp(self):
@ -683,7 +683,7 @@ class WsgiLimiterProxyTest(BaseLimitTestSuite):
super(WsgiLimiterProxyTest, self).tearDown()
class LimitsViewTest(testtools.TestCase):
class LimitsViewTest(trove_testtools.TestCase):
def setUp(self):
super(LimitsViewTest, self).setUp()
@ -735,7 +735,7 @@ class LimitsViewTest(testtools.TestCase):
self.assertEqual(expected, data)
class LimitsViewsTest(testtools.TestCase):
class LimitsViewsTest(trove_testtools.TestCase):
def setUp(self):
super(LimitsViewsTest, self).setUp()

View File

@ -14,6 +14,7 @@
# under the License.
from mock import Mock
from trove.tests.unittests import trove_testtools
from trove.versions import BaseVersion
from trove.versions import Version
from trove.versions import VersionDataView
@ -22,12 +23,11 @@ from trove.versions import VersionsController
from trove.versions import VersionsDataView
from trove.versions import VERSIONS
import testtools
BASE_URL = 'http://localhost'
class VersionsControllerTest(testtools.TestCase):
class VersionsControllerTest(trove_testtools.TestCase):
def setUp(self):
super(VersionsControllerTest, self).setUp()
@ -79,7 +79,7 @@ class VersionsControllerTest(testtools.TestCase):
self.assertEqual('v1.0', version['id'], "Version id was not 'v1.0'")
class BaseVersionTestCase(testtools.TestCase):
class BaseVersionTestCase(trove_testtools.TestCase):
def setUp(self):
super(BaseVersionTestCase, self).setUp()
@ -113,7 +113,7 @@ class BaseVersionTestCase(testtools.TestCase):
"Base Version url is incorrect")
class VersionTestCase(testtools.TestCase):
class VersionTestCase(trove_testtools.TestCase):
def setUp(self):
super(VersionTestCase, self).setUp()
@ -140,7 +140,7 @@ class VersionTestCase(testtools.TestCase):
'Base url value was incorrect')
class VersionDataViewTestCase(testtools.TestCase):
class VersionDataViewTestCase(trove_testtools.TestCase):
def setUp(self):
super(VersionDataViewTestCase, self).setUp()
@ -177,7 +177,7 @@ class VersionDataViewTestCase(testtools.TestCase):
"Data status was not 'v1.0'")
class VersionsDataViewTestCase(testtools.TestCase):
class VersionsDataViewTestCase(trove_testtools.TestCase):
def setUp(self):
super(VersionsDataViewTestCase, self).setUp()
@ -220,7 +220,7 @@ class VersionsDataViewTestCase(testtools.TestCase):
"Version ids are not equal")
class VersionAPITestCase(testtools.TestCase):
class VersionAPITestCase(trove_testtools.TestCase):
def setUp(self):
super(VersionAPITestCase, self).setUp()

View File

@ -13,17 +13,16 @@
# License for the specific language governing permissions and limitations
# under the License.
#
import jsonschema
from testtools import TestCase
from trove.configuration.service import ConfigurationsController
from trove.extensions.mgmt.configuration import service
from mock import MagicMock
from trove.common import configurations
from trove.common.exception import UnprocessableEntity
from mock import MagicMock
from trove.configuration.service import ConfigurationsController
from trove.extensions.mgmt.configuration import service
from trove.tests.unittests import trove_testtools
import jsonschema
class TestConfigurationParser(TestCase):
class TestConfigurationParser(trove_testtools.TestCase):
def setUp(self):
super(TestConfigurationParser, self).setUp()
@ -46,7 +45,7 @@ class TestConfigurationParser(TestCase):
self.assertEqual('1', d_parsed["skip-external-locking"])
class TestConfigurationController(TestCase):
class TestConfigurationController(trove_testtools.TestCase):
def setUp(self):
super(TestConfigurationController, self).setUp()
self.controller = ConfigurationsController()
@ -178,7 +177,7 @@ class TestConfigurationController(TestCase):
None, config_rules)
class TestConfigurationsParameterController(TestCase):
class TestConfigurationsParameterController(trove_testtools.TestCase):
def setUp(self):
super(TestConfigurationsParameterController, self).setUp()
self.controller = service.ConfigurationsParameterController()

View File

@ -11,18 +11,17 @@
# 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 testtools
from trove.datastore import models as datastore_models
from trove.datastore.models import Datastore
from trove.datastore.models import Capability
from trove.datastore.models import DatastoreVersion
from trove.datastore.models import DBCapabilityOverrides
from trove.datastore.models import Datastore
from trove.datastore.models import DatastoreVersion
from trove.tests.unittests import trove_testtools
from trove.tests.unittests.util import util
import uuid
class TestDatastoreBase(testtools.TestCase):
class TestDatastoreBase(trove_testtools.TestCase):
def setUp(self):
# Basic setup and mock/fake structures for testing only

View File

@ -13,19 +13,17 @@
# License for the specific language governing permissions and limitations
# under the License.
#
from mock import call
from mock import Mock
from mock import call
from mock import patch
from sqlalchemy.engine import reflection
from sqlalchemy.schema import Column
import testtools
from trove.db.sqlalchemy.migrate_repo.schema import String
from trove.db.sqlalchemy import utils as db_utils
from trove.db.sqlalchemy.migrate_repo.schema import String
from trove.tests.unittests import trove_testtools
class TestDbMigrationUtils(testtools.TestCase):
class TestDbMigrationUtils(trove_testtools.TestCase):
def setUp(self):
super(TestDbMigrationUtils, self).setUp()

View File

@ -13,16 +13,16 @@
# License for the specific language governing permissions and limitations
# under the License.
#
import jsonschema
from testtools import TestCase
from mock import Mock
from testtools.matchers import Is, Equals
from testtools.testcase import skip
from trove.common import apischema
from trove.instance.service import InstanceController
from mock import Mock
from trove.tests.unittests import trove_testtools
import jsonschema
class TestInstanceController(TestCase):
class TestInstanceController(trove_testtools.TestCase):
def setUp(self):
super(TestInstanceController, self).setUp()
self.controller = InstanceController()

View File

@ -11,30 +11,30 @@
# 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 uuid
from mock import Mock
from testtools import TestCase
from trove.backup import models as backup_models
from trove.common import cfg
from trove.common import exception
from trove.backup import models as backup_models
from trove.datastore import models as datastore_models
from trove.common.instance import ServiceStatuses
from trove.instance.models import filter_ips
from trove.instance.models import InstanceServiceStatus
from trove.datastore import models as datastore_models
from trove.instance import models
from trove.instance.models import DBInstance
from trove.instance.models import Instance
from trove.instance.models import InstanceServiceStatus
from trove.instance.models import SimpleInstance
from trove.instance import models
from trove.instance.models import filter_ips
from trove.instance.tasks import InstanceTasks
from trove.taskmanager import api as task_api
from trove.tests.fakes import nova
from trove.tests.unittests import trove_testtools
from trove.tests.unittests.util import util
import uuid
CONF = cfg.CONF
task_api.API.get_client = Mock()
class SimpleInstanceTest(TestCase):
class SimpleInstanceTest(trove_testtools.TestCase):
def setUp(self):
super(SimpleInstanceTest, self).setUp()
@ -102,7 +102,7 @@ class SimpleInstanceTest(TestCase):
self.assertTrue('15.123.123.123' in ip)
class CreateInstanceTest(TestCase):
class CreateInstanceTest(trove_testtools.TestCase):
def setUp(self):
util.init_db()
@ -181,7 +181,7 @@ class CreateInstanceTest(TestCase):
models.create_nova_client = self.orig_client
task_api.API(self.context).create_instance = self.orig_api
models.run_with_quotas = self.run_with_quotas
backup_models.DBBackup.check_swift_object_exist = self.context
backup_models.DBBackup.check_swift_object_exist = self.check
self.backup.delete()
self.db_info.delete()
super(CreateInstanceTest, self).tearDown()
@ -211,7 +211,7 @@ class CreateInstanceTest(TestCase):
self.assertIsNotNone(instance)
class TestReplication(TestCase):
class TestReplication(trove_testtools.TestCase):
def setUp(self):
util.init_db()

View File

@ -13,16 +13,14 @@
# License for the specific language governing permissions and limitations
# under the License.
#
import uuid
from testtools import TestCase
from trove.common.instance import ServiceStatuses
from trove.datastore import models
from trove.instance.models import InstanceStatus
from trove.instance.models import InstanceServiceStatus
from trove.instance.models import InstanceStatus
from trove.instance.models import SimpleInstance
from trove.tests.unittests import trove_testtools
from trove.tests.unittests.util import util
import uuid
class FakeInstanceTask(object):
@ -42,7 +40,7 @@ class FakeDBInstance(object):
self.task_status = FakeInstanceTask()
class BaseInstanceStatusTestCase(TestCase):
class BaseInstanceStatusTestCase(trove_testtools.TestCase):
def setUp(self):
util.init_db()

View File

@ -14,15 +14,15 @@
# under the License.
#
from mock import Mock
from testtools import TestCase
from trove.common import cfg
from trove.instance.views import InstanceView
from trove.instance.views import InstanceDetailView
from trove.instance.views import InstanceView
from trove.tests.unittests import trove_testtools
CONF = cfg.CONF
class InstanceViewsTest(TestCase):
class InstanceViewsTest(trove_testtools.TestCase):
def setUp(self):
super(InstanceViewsTest, self).setUp()
@ -38,7 +38,7 @@ class InstanceViewsTest(TestCase):
CONF.ip_regex = self.orig_ip_regex
class InstanceDetailViewTest(TestCase):
class InstanceDetailViewTest(trove_testtools.TestCase):
def setUp(self):
super(InstanceDetailViewTest, self).setUp()

View File

@ -12,17 +12,17 @@
# License for the specific language governing permissions and limitations
# under the License.
#
from testtools import TestCase
from testtools.matchers import Is
from testtools.matchers import Equals
from trove.common.exception import DatabaseInitialDatabaseDuplicateError
from testtools.matchers import Is
from trove.common.exception import DatabaseForUserNotInDatabaseListError
from trove.common.exception import DatabaseInitialDatabaseDuplicateError
from trove.common.exception import DatabaseInitialUserDuplicateError
from trove.extensions.mysql.common import populate_validated_databases
from trove.extensions.mysql.common import populate_users
from trove.extensions.mysql.common import populate_validated_databases
from trove.tests.unittests import trove_testtools
class MySqlCommonTest(TestCase):
class MySqlCommonTest(trove_testtools.TestCase):
def setUp(self):
super(MySqlCommonTest, self).setUp()

View File

@ -13,16 +13,15 @@
# License for the specific language governing permissions and limitations
# under the License.
#
from testtools.matchers import Is
from trove.extensions.mysql.service import SchemaController
from trove.extensions.mysql.service import UserAccessController
from trove.extensions.mysql.service import UserController
from trove.tests.unittests import trove_testtools
import jsonschema
from testtools import TestCase
from testtools.matchers import Is
from trove.extensions.mysql.service import UserController
from trove.extensions.mysql.service import UserAccessController
from trove.extensions.mysql.service import SchemaController
class TestUserController(TestCase):
class TestUserController(trove_testtools.TestCase):
def setUp(self):
super(TestUserController, self).setUp()
self.controller = UserController()
@ -305,7 +304,7 @@ class TestUserController(TestCase):
self.assertFalse(validator_none_host.is_valid(body_none_host))
class TestUserAccessController(TestCase):
class TestUserAccessController(trove_testtools.TestCase):
def test_validate_update_db(self):
body = {"databases": []}
schema = (UserAccessController()).get_schema('update_all', body)
@ -318,7 +317,7 @@ class TestUserAccessController(TestCase):
#self.assertThat(errors[0].path.pop(), Equals("databases"))
class TestSchemaController(TestCase):
class TestSchemaController(trove_testtools.TestCase):
def setUp(self):
super(TestSchemaController, self).setUp()
self.controller = SchemaController()

View File

@ -14,7 +14,6 @@
# under the License.
#
import testtools
from mock import MagicMock
from mock import Mock
from neutronclient.common import exceptions as neutron_exceptions
@ -25,9 +24,10 @@ from trove.common.models import NetworkRemoteModelBase
from trove.network import neutron
from trove.network.neutron import NeutronDriver as driver
from trove.extensions.security_group.models import RemoteSecurityGroup
from trove.tests.unittests import trove_testtools
class NeutronDriverTest(testtools.TestCase):
class NeutronDriverTest(trove_testtools.TestCase):
def setUp(self):
super(NeutronDriverTest, self).setUp()
self.context = Mock()
@ -72,7 +72,7 @@ class NeutronDriverTest(testtools.TestCase):
self.assertEqual(1, driver.delete_security_group.call_count)
class NeutronDriverExceptionTest(testtools.TestCase):
class NeutronDriverExceptionTest(trove_testtools.TestCase):
def setUp(self):
super(NeutronDriverExceptionTest, self).setUp()
self.context = Mock()

View File

@ -12,8 +12,8 @@
# License for the specific language governing permissions and limitations
# under the License.
import testtools
from mock import Mock, MagicMock, patch
from testtools import skipIf
from trove.quota.quota import DbQuotaDriver
from trove.quota.models import Resource
from trove.quota.models import Quota
@ -25,6 +25,7 @@ from trove.common import exception
from trove.common import cfg
from trove.quota.quota import run_with_quotas
from trove.quota.quota import QUOTAS
from trove.tests.unittests import trove_testtools
"""
Unit tests for the classes and functions in DbQuotaDriver.py.
"""
@ -39,7 +40,7 @@ FAKE_TENANT1 = "123456"
FAKE_TENANT2 = "654321"
class Run_with_quotasTest(testtools.TestCase):
class Run_with_quotasTest(trove_testtools.TestCase):
def setUp(self):
super(Run_with_quotasTest, self).setUp()
@ -78,7 +79,7 @@ class Run_with_quotasTest(testtools.TestCase):
self.assertTrue(f.called)
class QuotaControllerTest(testtools.TestCase):
class QuotaControllerTest(trove_testtools.TestCase):
def setUp(self):
super(QuotaControllerTest, self).setUp()
@ -120,8 +121,7 @@ class QuotaControllerTest(testtools.TestCase):
self.assertEqual(200, result.status)
self.assertEqual(2, result._data['quotas']['instances'])
@testtools.skipIf(not CONF.trove_volume_support,
'Volume support is not enabled')
@skipIf(not CONF.trove_volume_support, 'Volume support is not enabled')
def test_update_resource_volume(self):
instance_quota = MagicMock(spec=Quota)
volume_quota = MagicMock(spec=Quota)
@ -142,7 +142,7 @@ class QuotaControllerTest(testtools.TestCase):
self.assertEqual(10, result._data['quotas']['volumes'])
class DbQuotaDriverTest(testtools.TestCase):
class DbQuotaDriverTest(trove_testtools.TestCase):
def setUp(self):

View File

@ -12,10 +12,8 @@
# License for the specific language governing permissions and limitations
# under the License.
import testtools
from trove.common.wsgi import Router, Fault
from trove.tests.unittests import trove_testtools
from routes import Mapper
@ -35,7 +33,7 @@ class FakeRequst(object):
}
class TestRouter(testtools.TestCase):
class TestRouter(trove_testtools.TestCase):
"""Test case for trove `Router` extensions."""
def setUp(self):