Added dangling mock detection to 'guestagent'
Ensured that no dangling mocks exist by having each test class extend trove_testtools.TestCase Ran 'tox -epy27' and fixed any detected problems. Change-Id: Ib43b86f74036a71c65bd2b1bd7b0905a1d8520b7 Partial-Bug: 1448273
This commit is contained in:
parent
0d5de65cc8
commit
4be4daa8e1
|
@ -10,16 +10,16 @@
|
|||
# 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.
|
||||
import uuid
|
||||
|
||||
import testtools
|
||||
import uuid
|
||||
|
||||
from trove.common import exception
|
||||
from trove.guestagent.models import AgentHeartBeat
|
||||
from trove.tests.unittests import trove_testtools
|
||||
from trove.tests.unittests.util import util
|
||||
|
||||
|
||||
class AgentHeartBeatTest(testtools.TestCase):
|
||||
class AgentHeartBeatTest(trove_testtools.TestCase):
|
||||
|
||||
def setUp(self):
|
||||
super(AgentHeartBeatTest, self).setUp()
|
||||
|
|
|
@ -11,13 +11,14 @@
|
|||
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
from mock import MagicMock
|
||||
import testtools
|
||||
|
||||
from trove.guestagent.db import models as dbmodels
|
||||
from trove.tests.unittests import trove_testtools
|
||||
|
||||
|
||||
class MySQLDatabaseTest(testtools.TestCase):
|
||||
class MySQLDatabaseTest(trove_testtools.TestCase):
|
||||
|
||||
def setUp(self):
|
||||
super(MySQLDatabaseTest, self).setUp()
|
||||
|
@ -45,7 +46,7 @@ class MySQLDatabaseTest(testtools.TestCase):
|
|||
self.assertFalse(self.mysqlDb._is_valid('mysql'))
|
||||
|
||||
|
||||
class MySQLUserTest(testtools.TestCase):
|
||||
class MySQLUserTest(trove_testtools.TestCase):
|
||||
def setUp(self):
|
||||
super(MySQLUserTest, self).setUp()
|
||||
self.mysqlUser = dbmodels.MySQLUser()
|
||||
|
@ -62,7 +63,7 @@ class MySQLUserTest(testtools.TestCase):
|
|||
self.assertTrue(self.mysqlUser._is_valid("real_name"))
|
||||
|
||||
|
||||
class IsValidUsernameTest(testtools.TestCase):
|
||||
class IsValidUsernameTest(trove_testtools.TestCase):
|
||||
def setUp(self):
|
||||
super(IsValidUsernameTest, self).setUp()
|
||||
self.mysqlUser = dbmodels.MySQLUser()
|
||||
|
@ -87,7 +88,7 @@ class IsValidUsernameTest(testtools.TestCase):
|
|||
self.assertFalse(self.mysqlUser._is_valid_user_name("king"))
|
||||
|
||||
|
||||
class IsValidHostnameTest(testtools.TestCase):
|
||||
class IsValidHostnameTest(trove_testtools.TestCase):
|
||||
def setUp(self):
|
||||
super(IsValidHostnameTest, self).setUp()
|
||||
self.mysqlUser = dbmodels.MySQLUser()
|
||||
|
|
|
@ -14,21 +14,20 @@
|
|||
|
||||
from datetime import datetime
|
||||
|
||||
from mock import Mock, MagicMock
|
||||
import testtools
|
||||
from mock import Mock, MagicMock, patch
|
||||
|
||||
from trove.common import utils
|
||||
from trove.db import models as dbmodels
|
||||
from trove.db.sqlalchemy import api as dbapi
|
||||
from trove.guestagent import models
|
||||
from trove.tests.unittests import trove_testtools
|
||||
|
||||
|
||||
class AgentHeartBeatTest(testtools.TestCase):
|
||||
class AgentHeartBeatTest(trove_testtools.TestCase):
|
||||
def setUp(self):
|
||||
super(AgentHeartBeatTest, self).setUp()
|
||||
self.origin_get_db_api = dbmodels.get_db_api
|
||||
self.origin_utcnow = utils.utcnow
|
||||
self.origin_DatabaseModelBase = dbmodels.DatabaseModelBase
|
||||
self.origin_db_api_save = dbapi.save
|
||||
self.origin_is_valid = dbmodels.DatabaseModelBase.is_valid
|
||||
self.origin_generate_uuid = utils.generate_uuid
|
||||
|
@ -37,7 +36,6 @@ class AgentHeartBeatTest(testtools.TestCase):
|
|||
super(AgentHeartBeatTest, self).tearDown()
|
||||
dbmodels.get_db_api = self.origin_get_db_api
|
||||
utils.utcnow = self.origin_utcnow
|
||||
dbmodels.DatabaseModelBase = self.origin_DatabaseModelBase
|
||||
dbapi.save = self.origin_db_api_save
|
||||
dbmodels.DatabaseModelBase.is_valid = self.origin_is_valid
|
||||
utils.generate_uuid = self.origin_generate_uuid
|
||||
|
@ -52,9 +50,9 @@ class AgentHeartBeatTest(testtools.TestCase):
|
|||
self.assertEqual(3,
|
||||
dbmodels.DatabaseModelBase.is_valid.call_count)
|
||||
|
||||
def test_save(self):
|
||||
@patch('trove.db.models.DatabaseModelBase')
|
||||
def test_save(self, dmb_mock):
|
||||
utils.utcnow = Mock()
|
||||
dbmodels.DatabaseModelBase = Mock
|
||||
dbmodels.get_db_api = MagicMock(
|
||||
return_value=dbmodels.DatabaseModelBase)
|
||||
dbapi.save = Mock()
|
||||
|
|
|
@ -19,16 +19,16 @@ import stat
|
|||
|
||||
from mock import call, patch
|
||||
from oslo_concurrency.processutils import UnknownArgumentError
|
||||
import testtools
|
||||
from testtools import ExpectedException
|
||||
|
||||
from trove.common import exception
|
||||
from trove.common import utils
|
||||
from trove.guestagent.common import operating_system
|
||||
from trove.guestagent.common.operating_system import FileMode
|
||||
from trove.tests.unittests import trove_testtools
|
||||
|
||||
|
||||
class TestOperatingSystem(testtools.TestCase):
|
||||
class TestOperatingSystem(trove_testtools.TestCase):
|
||||
|
||||
def test_modes(self):
|
||||
self._assert_modes(None, None, None, operating_system.FileMode())
|
||||
|
|
|
@ -20,18 +20,19 @@ import subprocess
|
|||
|
||||
from mock import Mock, MagicMock, patch
|
||||
import pexpect
|
||||
import testtools
|
||||
|
||||
from trove.common import exception
|
||||
from trove.common import utils
|
||||
from trove.guestagent import pkg
|
||||
from trove.tests.unittests import trove_testtools
|
||||
|
||||
|
||||
"""
|
||||
Unit tests for the classes and functions in pkg.py.
|
||||
"""
|
||||
|
||||
|
||||
class PkgDEBInstallTestCase(testtools.TestCase):
|
||||
class PkgDEBInstallTestCase(trove_testtools.TestCase):
|
||||
|
||||
def setUp(self):
|
||||
super(PkgDEBInstallTestCase, self).setUp()
|
||||
|
@ -141,7 +142,7 @@ class PkgDEBInstallTestCase(testtools.TestCase):
|
|||
self.pkgName, {}, 5000)
|
||||
|
||||
|
||||
class PkgDEBRemoveTestCase(testtools.TestCase):
|
||||
class PkgDEBRemoveTestCase(trove_testtools.TestCase):
|
||||
|
||||
def setUp(self):
|
||||
super(PkgDEBRemoveTestCase, self).setUp()
|
||||
|
@ -258,7 +259,7 @@ class PkgDEBRemoveTestCase(testtools.TestCase):
|
|||
self.assertEqual(1, mock_call.call_count)
|
||||
|
||||
|
||||
class PkgDEBVersionTestCase(testtools.TestCase):
|
||||
class PkgDEBVersionTestCase(trove_testtools.TestCase):
|
||||
|
||||
def setUp(self):
|
||||
super(PkgDEBVersionTestCase, self).setUp()
|
||||
|
@ -288,7 +289,7 @@ class PkgDEBVersionTestCase(testtools.TestCase):
|
|||
self.assertFalse(pkg.DebianPackagerMixin().pkg_version(self.pkgName))
|
||||
|
||||
|
||||
class PkgRPMVersionTestCase(testtools.TestCase):
|
||||
class PkgRPMVersionTestCase(trove_testtools.TestCase):
|
||||
|
||||
def setUp(self):
|
||||
super(PkgRPMVersionTestCase, self).setUp()
|
||||
|
@ -313,7 +314,7 @@ class PkgRPMVersionTestCase(testtools.TestCase):
|
|||
self.assertEqual(self.pkgVersion, version)
|
||||
|
||||
|
||||
class PkgRPMInstallTestCase(testtools.TestCase):
|
||||
class PkgRPMInstallTestCase(trove_testtools.TestCase):
|
||||
|
||||
def setUp(self):
|
||||
super(PkgRPMInstallTestCase, self).setUp()
|
||||
|
@ -339,15 +340,15 @@ class PkgRPMInstallTestCase(testtools.TestCase):
|
|||
|
||||
def test_pkg_is_installed_yes(self):
|
||||
packages = ["package1=1.0", "package2"]
|
||||
commands.getstatusoutput = MagicMock(return_value={1: "package1=1.0\n"
|
||||
"package2=2.0"})
|
||||
self.assertTrue(self.pkg.pkg_is_installed(packages))
|
||||
with patch.object(commands, 'getstatusoutput', MagicMock(
|
||||
return_value={1: "package1=1.0\n" "package2=2.0"})):
|
||||
self.assertTrue(self.pkg.pkg_is_installed(packages))
|
||||
|
||||
def test_pkg_is_installed_no(self):
|
||||
packages = ["package1=1.0", "package2", "package3=3.0"]
|
||||
commands.getstatusoutput = MagicMock(return_value={1: "package1=1.0\n"
|
||||
"package2=2.0"})
|
||||
self.assertFalse(self.pkg.pkg_is_installed(packages))
|
||||
with patch.object(commands, 'getstatusoutput', MagicMock(
|
||||
return_value={1: "package1=1.0\n" "package2=2.0"})):
|
||||
self.assertFalse(self.pkg.pkg_is_installed(packages))
|
||||
|
||||
def test_permission_error(self):
|
||||
# test
|
||||
|
@ -449,7 +450,7 @@ class PkgRPMInstallTestCase(testtools.TestCase):
|
|||
self.pkgName, {}, 5000)
|
||||
|
||||
|
||||
class PkgRPMRemoveTestCase(testtools.TestCase):
|
||||
class PkgRPMRemoveTestCase(trove_testtools.TestCase):
|
||||
|
||||
def setUp(self):
|
||||
super(PkgRPMRemoveTestCase, self).setUp()
|
||||
|
@ -513,7 +514,7 @@ class PkgRPMRemoveTestCase(testtools.TestCase):
|
|||
self.pkgName, 5000)
|
||||
|
||||
|
||||
class PkgDEBFixPackageSelections(testtools.TestCase):
|
||||
class PkgDEBFixPackageSelections(trove_testtools.TestCase):
|
||||
|
||||
def setUp(self):
|
||||
super(PkgDEBFixPackageSelections, self).setUp()
|
||||
|
|
|
@ -12,11 +12,11 @@
|
|||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
import testtools
|
||||
from trove.guestagent.common import sql_query
|
||||
from trove.tests.unittests import trove_testtools
|
||||
|
||||
|
||||
class QueryTestBase(testtools.TestCase):
|
||||
class QueryTestBase(trove_testtools.TestCase):
|
||||
def setUp(self):
|
||||
super(QueryTestBase, self).setUp()
|
||||
|
||||
|
|
|
@ -11,15 +11,16 @@
|
|||
# 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 os
|
||||
|
||||
from mock import Mock, MagicMock, patch, mock_open
|
||||
import pexpect
|
||||
import testtools
|
||||
|
||||
from trove.common.exception import GuestError, ProcessExecutionError
|
||||
from trove.common import utils
|
||||
from trove.guestagent import volume
|
||||
from trove.tests.unittests import trove_testtools
|
||||
|
||||
|
||||
def _setUp_fake_spawn(return_val=0):
|
||||
|
@ -29,7 +30,7 @@ def _setUp_fake_spawn(return_val=0):
|
|||
return fake_spawn
|
||||
|
||||
|
||||
class VolumeDeviceTest(testtools.TestCase):
|
||||
class VolumeDeviceTest(trove_testtools.TestCase):
|
||||
|
||||
def setUp(self):
|
||||
super(VolumeDeviceTest, self).setUp()
|
||||
|
@ -38,6 +39,7 @@ class VolumeDeviceTest(testtools.TestCase):
|
|||
def tearDown(self):
|
||||
super(VolumeDeviceTest, self).tearDown()
|
||||
|
||||
@patch.object(pexpect, 'spawn', Mock())
|
||||
def test_migrate_data(self):
|
||||
origin_execute = utils.execute
|
||||
utils.execute = Mock()
|
||||
|
@ -67,18 +69,21 @@ class VolumeDeviceTest(testtools.TestCase):
|
|||
self.assertRaises(GuestError,
|
||||
self.volumeDevice._check_device_exists)
|
||||
|
||||
@patch.object(pexpect, 'spawn', Mock())
|
||||
def test__check_format(self):
|
||||
fake_spawn = _setUp_fake_spawn()
|
||||
|
||||
self.volumeDevice._check_format()
|
||||
self.assertEqual(1, fake_spawn.expect.call_count)
|
||||
|
||||
@patch.object(pexpect, 'spawn', Mock())
|
||||
def test__check_format_2(self):
|
||||
fake_spawn = _setUp_fake_spawn(return_val=1)
|
||||
|
||||
self.assertEqual(0, fake_spawn.expect.call_count)
|
||||
self.assertRaises(IOError, self.volumeDevice._check_format)
|
||||
|
||||
@patch.object(pexpect, 'spawn', Mock())
|
||||
def test__format(self):
|
||||
fake_spawn = _setUp_fake_spawn()
|
||||
|
||||
|
@ -151,6 +156,7 @@ class VolumeDeviceTest(testtools.TestCase):
|
|||
def test_unmount_negative(self):
|
||||
self._test_unmount(False)
|
||||
|
||||
@patch.object(pexpect, 'spawn', Mock())
|
||||
def _test_unmount(self, positive=True):
|
||||
origin_ = os.path.exists
|
||||
os.path.exists = MagicMock(return_value=positive)
|
||||
|
@ -195,7 +201,8 @@ class VolumeDeviceTest(testtools.TestCase):
|
|||
self.volumeDevice._check_device_exists.assert_any_call()
|
||||
|
||||
|
||||
class VolumeMountPointTest(testtools.TestCase):
|
||||
class VolumeMountPointTest(trove_testtools.TestCase):
|
||||
|
||||
def setUp(self):
|
||||
super(VolumeMountPointTest, self).setUp()
|
||||
self.volumeMountPoint = volume.VolumeMountPoint('/mnt/device',
|
||||
|
@ -204,18 +211,18 @@ class VolumeMountPointTest(testtools.TestCase):
|
|||
def tearDown(self):
|
||||
super(VolumeMountPointTest, self).tearDown()
|
||||
|
||||
@patch.object(pexpect, 'spawn', Mock())
|
||||
def test_mount(self):
|
||||
origin_ = os.path.exists
|
||||
os.path.exists = MagicMock(return_value=False)
|
||||
fake_spawn = _setUp_fake_spawn()
|
||||
|
||||
utils.execute_with_timeout = Mock()
|
||||
with patch.object(utils, 'execute_with_timeout'):
|
||||
self.volumeMountPoint.mount()
|
||||
|
||||
self.volumeMountPoint.mount()
|
||||
|
||||
self.assertEqual(1, os.path.exists.call_count)
|
||||
self.assertEqual(1, utils.execute_with_timeout.call_count)
|
||||
self.assertEqual(1, fake_spawn.expect.call_count)
|
||||
self.assertEqual(1, os.path.exists.call_count)
|
||||
self.assertEqual(1, utils.execute_with_timeout.call_count)
|
||||
self.assertEqual(1, fake_spawn.expect.call_count)
|
||||
|
||||
os.path.exists = origin_
|
||||
|
||||
|
|
Loading…
Reference in New Issue