Merge "Improve coverage in guestagent and backup models"

This commit is contained in:
Jenkins 2016-08-03 20:38:17 +00:00 committed by Gerrit Code Review
commit fe324eb46b
2 changed files with 109 additions and 2 deletions

View File

@ -16,12 +16,15 @@ import datetime
from mock import DEFAULT
from mock import MagicMock
from mock import patch
from swiftclient.client import ClientException
from trove.backup import models
from trove.backup import state
from trove.common import context
from trove.common import exception
from trove.common import remote
from trove.common import utils
from trove.db.models import DatabaseModelBase
from trove.instance import models as instance_models
from trove.taskmanager import api
from trove.tests.unittests import trove_testtools
@ -190,8 +193,6 @@ class BackupCreateTest(trove_testtools.TestCase):
instance = MagicMock()
with patch.object(instance_models.BuiltInstance, 'load',
return_value=instance):
instance.validate_can_perform_action = MagicMock(
return_value=None)
with patch.object(
models.Backup, 'validate_can_perform_action',
side_effect=exception.DatastoreOperationNotSupported
@ -201,6 +202,39 @@ class BackupCreateTest(trove_testtools.TestCase):
self.context, self.instance_id,
BACKUP_NAME, BACKUP_DESC)
def test_create_backup_cluster_instance_operation_not_supported(self):
instance = MagicMock()
instance.cluster_id = 'bad_id'
with patch.object(instance_models.BuiltInstance, 'load',
return_value=instance),\
patch.object(models.Backup, 'validate_can_perform_action',
return_value=None),\
patch.object(models.Backup, 'verify_swift_auth_token',
return_value=None):
self.assertRaises(exception.ClusterInstanceOperationNotSupported,
models.Backup.create,
self.context, self.instance_id,
BACKUP_NAME, BACKUP_DESC)
def test_create_backup_creation_error(self):
instance = MagicMock()
instance.cluster_id = None
with patch.object(instance_models.BuiltInstance, 'load',
return_value=instance),\
patch.object(models.Backup, 'validate_can_perform_action',
return_value=None),\
patch.object(models.Backup, 'verify_swift_auth_token',
return_value=None),\
patch.object(DatabaseModelBase, 'is_valid',
return_value=False),\
patch('trove.quota.quota.QuotaEngine.reserve',
return_value=[]):
DatabaseModelBase.errors = {}
self.assertRaises(exception.BackupCreationError,
models.Backup.create,
self.context, self.instance_id,
BACKUP_NAME, BACKUP_DESC)
class BackupDeleteTest(trove_testtools.TestCase):
def setUp(self):
@ -357,6 +391,57 @@ class BackupORMTest(trove_testtools.TestCase):
def test_filename(self):
self.assertEqual(BACKUP_FILENAME, self.backup.filename)
def test_filename_bad(self):
def _set_bad_filename():
self.backup.location = 'bad'
self.backup.filename
self.assertRaises(ValueError, _set_bad_filename)
def test_check_swift_object_exist_integrity_error(self):
mock_client = MagicMock()
mock_client.head_object.return_value = {'etag': ''}
with patch.object(remote, 'get_endpoint', return_value=None),\
patch.object(remote, 'Connection',
return_value=mock_client):
self.assertRaises(exception.RestoreBackupIntegrityError,
self.backup.check_swift_object_exist,
self.context, True)
def test_check_swift_object_exist_client_exception(self):
with patch.object(remote, 'get_endpoint', return_value=None),\
patch.object(remote, 'Connection',
side_effect=ClientException(self.context.tenant)):
self.assertRaises(exception.SwiftAuthError,
self.backup.check_swift_object_exist,
self.context)
def test_check_swift_object_exist_client_exception_404(self):
e = ClientException(self.context.tenant)
e.http_status = 404
with patch.object(remote, 'get_endpoint', return_value=None),\
patch.object(remote, 'Connection',
side_effect=e):
self.assertFalse(
self.backup.check_swift_object_exist(self.context))
def test_swift_auth_token_client_exception(self):
with patch.object(remote, 'get_endpoint', return_value=None),\
patch.object(remote, 'Connection',
side_effect=ClientException(self.context.tenant)):
self.assertRaises(exception.SwiftAuthError,
models.Backup.verify_swift_auth_token,
self.context)
def test_swift_auth_token_no_service_endpoint(self):
with patch.object(remote, 'get_endpoint', return_value=None),\
patch.object(remote, 'Connection',
side_effect=exception.NoServiceEndpoint):
self.assertRaises(exception.SwiftNotFound,
models.Backup.verify_swift_auth_token,
self.context)
class PaginationTests(trove_testtools.TestCase):

View File

@ -11,6 +11,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.
from mock import Mock
from mock import patch
import uuid
@ -63,6 +64,27 @@ class AgentHeartBeatTest(trove_testtools.TestCase):
self.assertIsNotNone(heartbeat.guest_agent_version)
self.assertEqual("1.2.3", heartbeat.guest_agent_version)
def test_create_invalid_model_error(self):
"""
Test the creation failure of a new agent heartbeat record
"""
instance = Mock()
instance.errors = {}
instance.is_valid = Mock(return_value=False)
with patch.object(AgentHeartBeat, 'save', return_value=instance):
self.assertRaises(exception.InvalidModelError,
AgentHeartBeat.create)
def test_save_invalid_model_error(self):
"""
Test the save failure of an agent heartbeat record
"""
instance_id = str(uuid.uuid4())
heartbeat = AgentHeartBeat.create(
instance_id=instance_id)
with patch.object(AgentHeartBeat, 'is_valid', return_value=False):
self.assertRaises(exception.InvalidModelError, heartbeat.save)
def test_find_by_instance_id(self):
"""
Test to retrieve a guest agents by its id