From 00ddc03c546b914635e7107a0c78a78e56045ca9 Mon Sep 17 00:00:00 2001 From: Lingxian Kong Date: Wed, 17 Jun 2020 17:52:58 +1200 Subject: [PATCH] Add tests: resize Change-Id: I126c83d249f7f79b5983380b793ea85af9cf2409 --- .zuul.yaml | 8 +-- trove_tempest_plugin/config.py | 5 ++ trove_tempest_plugin/tests/base.py | 1 + .../tests/scenario/base_actions.py | 49 +++++++++++++++++++ 4 files changed, 59 insertions(+), 4 deletions(-) diff --git a/.zuul.yaml b/.zuul.yaml index 3e0e915..c0ba067 100644 --- a/.zuul.yaml +++ b/.zuul.yaml @@ -6,14 +6,14 @@ check: jobs: - trove-tempest-plugin: - voting: false + voting: true - trove-tempest-ipv6-only: voting: false gate: queue: trove jobs: - trove-tempest-plugin: - voting: false + voting: true - trove-tempest-ipv6-only: voting: false @@ -39,7 +39,7 @@ devstack_services: tempest: true tls-proxy: false - tempest_test_regex: ^trove_tempest_plugin\.tests + tempest_test_regex: ^trove_tempest_plugin\.tests.scenario\.test_instance_basic\.TestInstanceBasicMySQL\.test_database_access branches: - stable/ocata - stable/pike @@ -98,7 +98,7 @@ s-object: true s-proxy: true tempest: true - tempest_test_regex: ^trove_tempest_plugin\.tests + tempest_test_regex: ^trove_tempest_plugin\.tests.scenario\.test_instance_basic\.TestInstanceBasicMySQL\.test_database_access - job: name: trove-tempest-ipv6-only diff --git a/trove_tempest_plugin/config.py b/trove_tempest_plugin/config.py index c3ce717..8b24d6b 100644 --- a/trove_tempest_plugin/config.py +++ b/trove_tempest_plugin/config.py @@ -56,6 +56,11 @@ DatabaseGroup = [ default="d2", help="The Nova flavor ID used for creating database instance." ), + cfg.StrOpt( + 'resize_flavor_id', + default="d3", + help="The Nova flavor ID used for resizing database instance." + ), cfg.StrOpt( 'shared_network', default="private", diff --git a/trove_tempest_plugin/tests/base.py b/trove_tempest_plugin/tests/base.py index a7a80b8..8a4faab 100644 --- a/trove_tempest_plugin/tests/base.py +++ b/trove_tempest_plugin/tests/base.py @@ -61,6 +61,7 @@ class BaseTroveTest(test.BaseTestCase): cls.client = cls.os_primary.database.TroveClient() cls.admin_client = cls.os_admin.database.TroveClient() + cls.admin_server_client = cls.os_admin.servers_client @classmethod def setup_credentials(cls): diff --git a/trove_tempest_plugin/tests/scenario/base_actions.py b/trove_tempest_plugin/tests/scenario/base_actions.py index 2d6e2a7..81372f9 100644 --- a/trove_tempest_plugin/tests/scenario/base_actions.py +++ b/trove_tempest_plugin/tests/scenario/base_actions.py @@ -97,3 +97,52 @@ class TestInstanceActionsBase(trove_base.BaseTroveTest): self.wait_for_instance_status(instance['id'], expected_status="DELETED", need_delete=True) + + @decorators.idempotent_id("27914e82-b061-11ea-b87c-00224d6b7bc1") + def test_resize(self): + # Resize flavor + LOG.info(f"Resizing flavor to {CONF.database.resize_flavor_id} for " + f"instance {self.instance_id}") + resize_flavor = { + "resize": { + "flavorRef": CONF.database.resize_flavor_id + } + } + self.client.create_resource(f"instances/{self.instance_id}/action", + resize_flavor, expected_status_code=202, + need_response=False) + self.wait_for_instance_status(self.instance_id) + + # Verify Trove flavor + ret = self.client.get_resource('instances', self.instance_id) + self.assertEqual(CONF.database.resize_flavor_id, + ret['instance']['flavor']['id']) + + # Verify Nova flavor + params = { + 'all_tenants': True, + 'detail': True, + 'name': self.instance['name'] + } + servers = self.admin_server_client.list_servers(**params)['servers'] + self.assertEqual(1, len(servers)) + self.assertEqual(CONF.database.resize_flavor_id, + servers[0]['flavor']['id']) + + # Resize volume + LOG.info(f"Resizing volume to 2 for instance {self.instance_id}") + resize_volume = { + "resize": { + "volume": { + "size": 2 + } + } + } + self.client.create_resource(f"instances/{self.instance_id}/action", + resize_volume, expected_status_code=202, + need_response=False) + self.wait_for_instance_status(self.instance_id) + + # Verify Trove volume + ret = self.client.get_resource('instances', self.instance_id) + self.assertEqual(2, ret['instance']['volume']['size'])