From c60f90cb2f8e2a30ffee5abeebd78f9eee3c6b25 Mon Sep 17 00:00:00 2001 From: Stephen Finucane Date: Wed, 15 Jul 2020 10:41:52 +0100 Subject: [PATCH] tests: Make '_IntegratedTestBase' subclass 'PlacementInstanceHelperMixin' Querying placement is an increasingly common requirement of good functional tests. Add the placement helper mixin into our uberclass so as many tests as possible can benefit from it. Change-Id: I969eb724b12114fde5660b855f359b40c23ccfec Signed-off-by: Stephen Finucane --- nova/tests/functional/integrated_helpers.py | 56 ++++----------------- 1 file changed, 10 insertions(+), 46 deletions(-) diff --git a/nova/tests/functional/integrated_helpers.py b/nova/tests/functional/integrated_helpers.py index c6d4ffeb3a..b46f690b44 100644 --- a/nova/tests/functional/integrated_helpers.py +++ b/nova/tests/functional/integrated_helpers.py @@ -470,6 +470,11 @@ class PlacementHelperMixin: '/resource_providers/%s' % rp_uuid, version='1.15', ).body + def _get_provider_uuid_by_name(self, name): + return self.placement_api.get( + '/resource_providers?name=%s' % name, + ).body['resource_providers'][0]['uuid'] + def _get_provider_usages(self, provider_uuid): return self.placement_api.get( '/resource_providers/%s/usages' % provider_uuid @@ -955,7 +960,7 @@ class PlacementInstanceHelperMixin(InstanceHelperMixin, PlacementHelperMixin): self.assertEqual(expected_vcpu_usage, hypervisor['vcpus_used']) -class _IntegratedTestBase(test.TestCase, InstanceHelperMixin): +class _IntegratedTestBase(test.TestCase, PlacementInstanceHelperMixin): #: Whether the test requires global external locking being configured for #: them. New tests should set this to False. REQUIRES_LOCKING = True @@ -988,8 +993,10 @@ class _IntegratedTestBase(test.TestCase, InstanceHelperMixin): nova.tests.unit.image.fake.stub_out_image_service(self) self.useFixture(cast_as_call.CastAsCall(self)) + placement = self.useFixture(func_fixtures.PlacementFixture()) self.placement_api = placement.api + self.neutron = self.useFixture(nova_fixtures.NeutronFixture(self)) fake_notifier.stub_notifier(self) @@ -1051,52 +1058,9 @@ class _IntegratedTestBase(test.TestCase, InstanceHelperMixin): ("The expected wsgi middlewares %s are not " "existed") % expected_middleware) - # TODO(sbauza): Drop this method once test classes inherit from a mixin - def _get_provider_uuid_by_name(self, name): - return self.placement_api.get( - '/resource_providers?name=%s' % name).body[ - 'resource_providers'][0]['uuid'] - - # TODO(sbauza): Drop this method once test classes inherit from a mixin - def _get_all_rp_uuids_in_a_tree(self, in_tree_rp_uuid): - rps = self.placement_api.get( - '/resource_providers?in_tree=%s' % in_tree_rp_uuid, - version='1.20').body['resource_providers'] - return [rp['uuid'] for rp in rps] - - # TODO(sbauza): Drop this method once test classes inherit from a mixin - def _get_provider_inventory(self, rp_uuid): - return self.placement_api.get( - '/resource_providers/%s/inventories' % rp_uuid).body['inventories'] - - # TODO(sbauza): Drop this method once test classes inherit from a mixin - def _get_provider_usages(self, provider_uuid): - return self.placement_api.get( - '/resource_providers/%s/usages' % provider_uuid).body['usages'] - - # TODO(sbauza): Drop this method once test classes inherit from a mixin - def _create_trait(self, trait): - return self.placement_api.put('/traits/%s' % trait, {}, version='1.6') - - # TODO(sbauza): Drop this method once test classes inherit from a mixin - def _set_provider_traits(self, rp_uuid, traits): - """This will overwrite any existing traits. - - :param rp_uuid: UUID of the resource provider to update - :param traits: list of trait strings to set on the provider - :returns: APIResponse object with the results - """ - provider = self.placement_api.get( - '/resource_providers/%s' % rp_uuid).body - put_traits_req = { - 'resource_provider_generation': provider['generation'], - 'traits': traits - } - return self.placement_api.put( - '/resource_providers/%s/traits' % rp_uuid, - put_traits_req, version='1.6') - +# TODO(stephenfin): This is almost identical to '_IntegratedTestBase' now and +# could be removed class ProviderUsageBaseTestCase(test.TestCase, PlacementInstanceHelperMixin): """Base test class for functional tests that check provider usage and consumer allocations in Placement during various operations.