summaryrefslogtreecommitdiff
path: root/trove/tests/unittests
diff options
context:
space:
mode:
authorLingxian Kong <anlin.kong@gmail.com>2020-11-05 09:44:57 +1300
committerLingxian Kong <anlin.kong@gmail.com>2020-11-08 19:15:13 +1300
commit59a972b312c8d25ffb46b4a994374490731747ea (patch)
tree0c60a9ffcd8019a878c8bc7d914070aa11ccdab5 /trove/tests/unittests
parentde056b912b617182953ebbc55240da00dfb56e73 (diff)
downloadtrove-59a972b312c8d25ffb46b4a994374490731747ea.tar.gz
Fix upgrading instance datastore version
Change-Id: I0456688c2e6c72b0312f1f79bb3e68f13fd2cb6e
Diffstat (limited to 'trove/tests/unittests')
-rw-r--r--trove/tests/unittests/instance/test_service.py48
1 files changed, 48 insertions, 0 deletions
diff --git a/trove/tests/unittests/instance/test_service.py b/trove/tests/unittests/instance/test_service.py
index e2635654..07444a4c 100644
--- a/trove/tests/unittests/instance/test_service.py
+++ b/trove/tests/unittests/instance/test_service.py
@@ -15,7 +15,9 @@ from unittest import mock
from trove.common import clients
from trove.datastore import models as ds_models
+from trove.instance import models as ins_models
from trove.instance import service
+from trove.instance import service_status as srvstatus
from trove.tests.unittests import trove_testtools
from trove.tests.unittests.util import util
@@ -51,6 +53,10 @@ class TestInstanceController(trove_testtools.TestCase):
super(TestInstanceController, cls).tearDownClass()
+ def setUp(self):
+ trove_testtools.patch_notifier(self)
+ super(TestInstanceController, self).setUp()
+
@mock.patch.object(clients, 'create_glance_client')
@mock.patch('trove.instance.models.Instance.create')
def test_create_by_ds_version_image_tags(self, mock_model_create,
@@ -78,3 +84,45 @@ class TestInstanceController(trove_testtools.TestCase):
filters={'tag': ['trove', 'mysql'], 'status': 'active'},
sort='created_at:desc', limit=1
)
+
+ @mock.patch.object(clients, 'create_nova_client',
+ return_value=mock.MagicMock())
+ @mock.patch('trove.rpc.get_client')
+ def test_update_datastore_version(self, mock_get_rpc_client,
+ mock_create_nova_client):
+ # Create an instance in db.
+ instance = ins_models.DBInstance.create(
+ name=self.random_name('instance'),
+ flavor_id=self.random_uuid(),
+ tenant_id=self.random_uuid(),
+ volume_size=1,
+ datastore_version_id=self.ds_version_imageid.id,
+ task_status=ins_models.InstanceTasks.BUILDING,
+ compute_instance_id=self.random_uuid()
+ )
+ ins_models.InstanceServiceStatus.create(
+ instance_id=instance.id,
+ status=srvstatus.ServiceStatuses.NEW
+ )
+
+ # Create a new datastore version in db.
+ new_version_name = self.random_name('version')
+ ds_models.update_datastore_version(
+ self.ds_name, new_version_name,
+ 'mysql', self.random_uuid(), [], '', 1
+ )
+ new_ds_version = ds_models.DatastoreVersion.load(
+ self.ds, new_version_name)
+
+ body = {
+ 'instance': {
+ 'datastore_version': new_ds_version.id
+ }
+ }
+ self.controller.update(mock.MagicMock(), instance.id, body, mock.ANY)
+
+ rpc_ctx = mock_get_rpc_client.return_value.prepare.return_value
+ rpc_ctx.cast.assert_called_once_with(
+ mock.ANY, "upgrade",
+ instance_id=instance.id,
+ datastore_version_id=new_ds_version.id)