From 0a2a611d9fce57e6c38e5d4edbe9b945f07b55b1 Mon Sep 17 00:00:00 2001 From: Chris Dent Date: Thu, 14 Mar 2019 12:21:13 +0000 Subject: [PATCH] Move set_traits tests back to test_resource_provider The set_traits related tests were moved in [1] and in the review process it was determined that they should be associated with resource provider-related tests. Private methods used to assert traits in test results are moved to test_base. [1] Ibe11ebd7ccc97a46586edd6c897b173ed67ca134 Change-Id: I8e1e62518c1c2308a64bb19997fedc219bf8342a --- placement/tests/functional/db/test_base.py | 13 ++++ .../functional/db/test_resource_provider.py | 51 +++++++++++++++ placement/tests/functional/db/test_trait.py | 64 ------------------- 3 files changed, 64 insertions(+), 64 deletions(-) diff --git a/placement/tests/functional/db/test_base.py b/placement/tests/functional/db/test_base.py index 3b8fc8b29..43a1fbe9d 100644 --- a/placement/tests/functional/db/test_base.py +++ b/placement/tests/functional/db/test_base.py @@ -119,6 +119,19 @@ class PlacementDbBaseTestCase(base.TestCase): self.rp_uuid_to_name = {} self.rp_id_to_name = {} + def _assert_traits(self, expected_traits, traits_objs): + expected_traits.sort() + traits = [] + for obj in traits_objs: + traits.append(obj.name) + traits.sort() + self.assertEqual(expected_traits, traits) + + def _assert_traits_in(self, expected_traits, traits_objs): + traits = [trait.name for trait in traits_objs] + for expected in expected_traits: + self.assertIn(expected, traits) + def _create_provider(self, name, *aggs, **kwargs): rp = create_provider(self.ctx, name, *aggs, **kwargs) self.rp_uuid_to_name[rp.uuid] = name diff --git a/placement/tests/functional/db/test_resource_provider.py b/placement/tests/functional/db/test_resource_provider.py index 81c76585d..18f0dc5a2 100644 --- a/placement/tests/functional/db/test_resource_provider.py +++ b/placement/tests/functional/db/test_resource_provider.py @@ -555,6 +555,57 @@ class ResourceProviderTestCase(tb.PlacementDbBaseTestCase): rp_obj.ResourceProvider.get_by_uuid, self.ctx, uuidsentinel.fake_rp1) + def test_set_traits_for_resource_provider(self): + rp = self._create_provider('fake_resource_provider') + generation = rp.generation + self.assertIsInstance(rp.id, int) + + trait_names = ['CUSTOM_TRAIT_A', 'CUSTOM_TRAIT_B', 'CUSTOM_TRAIT_C'] + tb.set_traits(rp, *trait_names) + + rp_traits = trait_obj.get_all_by_resource_provider(self.ctx, rp) + self._assert_traits(trait_names, rp_traits) + self.assertEqual(rp.generation, generation + 1) + generation = rp.generation + + trait_names.remove('CUSTOM_TRAIT_A') + updated_traits = trait_obj.get_all( + self.ctx, filters={'name_in': trait_names}) + self._assert_traits(trait_names, updated_traits) + tb.set_traits(rp, *trait_names) + rp_traits = trait_obj.get_all_by_resource_provider(self.ctx, rp) + self._assert_traits(trait_names, rp_traits) + self.assertEqual(rp.generation, generation + 1) + + def test_set_traits_for_correct_resource_provider(self): + """This test creates two ResourceProviders, and attaches same trait to + both of them. Then detaching the trait from one of them, and ensure + the trait still associated with another one. + """ + # Create two ResourceProviders + rp1 = self._create_provider('fake_resource_provider1') + rp2 = self._create_provider('fake_resource_provider2') + + tname = 'CUSTOM_TRAIT_A' + + # Associate the trait with two ResourceProviders + tb.set_traits(rp1, tname) + tb.set_traits(rp2, tname) + + # Ensure the association + rp1_traits = trait_obj.get_all_by_resource_provider(self.ctx, rp1) + rp2_traits = trait_obj.get_all_by_resource_provider(self.ctx, rp2) + self._assert_traits([tname], rp1_traits) + self._assert_traits([tname], rp2_traits) + + # Detach the trait from one of ResourceProvider, and ensure the + # trait association with another ResourceProvider still exists. + tb.set_traits(rp1) + rp1_traits = trait_obj.get_all_by_resource_provider(self.ctx, rp1) + rp2_traits = trait_obj.get_all_by_resource_provider(self.ctx, rp2) + self._assert_traits([], rp1_traits) + self._assert_traits([tname], rp2_traits) + def test_set_inventory_unknown_resource_class(self): """Test attempting to set inventory to an unknown resource class raises an exception. diff --git a/placement/tests/functional/db/test_trait.py b/placement/tests/functional/db/test_trait.py index d53eee08b..bf71ed2e3 100644 --- a/placement/tests/functional/db/test_trait.py +++ b/placement/tests/functional/db/test_trait.py @@ -19,19 +19,6 @@ from placement.tests.functional.db import test_base as tb class TraitTestCase(tb.PlacementDbBaseTestCase): - def _assert_traits(self, expected_traits, traits_objs): - expected_traits.sort() - traits = [] - for obj in traits_objs: - traits.append(obj.name) - traits.sort() - self.assertEqual(expected_traits, traits) - - def _assert_traits_in(self, expected_traits, traits_objs): - traits = [trait.name for trait in traits_objs] - for expected in expected_traits: - self.assertIn(expected, traits) - def test_provider_traits_empty_param(self): self.assertRaises(ValueError, trait_obj.get_traits_by_provider_tree, self.ctx, []) @@ -155,57 +142,6 @@ class TraitTestCase(tb.PlacementDbBaseTestCase): traits = trait_obj.get_all(self.ctx, filters={"prefix": "NOT_EXISTED"}) self.assertEqual(0, len(traits)) - def test_set_traits_for_resource_provider(self): - rp = self._create_provider('fake_resource_provider') - generation = rp.generation - self.assertIsInstance(rp.id, int) - - trait_names = ['CUSTOM_TRAIT_A', 'CUSTOM_TRAIT_B', 'CUSTOM_TRAIT_C'] - tb.set_traits(rp, *trait_names) - - rp_traits = trait_obj.get_all_by_resource_provider(self.ctx, rp) - self._assert_traits(trait_names, rp_traits) - self.assertEqual(rp.generation, generation + 1) - generation = rp.generation - - trait_names.remove('CUSTOM_TRAIT_A') - updated_traits = trait_obj.get_all( - self.ctx, filters={'name_in': trait_names}) - self._assert_traits(trait_names, updated_traits) - tb.set_traits(rp, *trait_names) - rp_traits = trait_obj.get_all_by_resource_provider(self.ctx, rp) - self._assert_traits(trait_names, rp_traits) - self.assertEqual(rp.generation, generation + 1) - - def test_set_traits_for_correct_resource_provider(self): - """This test creates two ResourceProviders, and attaches same trait to - both of them. Then detaching the trait from one of them, and ensure - the trait still associated with another one. - """ - # Create two ResourceProviders - rp1 = self._create_provider('fake_resource_provider1') - rp2 = self._create_provider('fake_resource_provider2') - - tname = 'CUSTOM_TRAIT_A' - - # Associate the trait with two ResourceProviders - tb.set_traits(rp1, tname) - tb.set_traits(rp2, tname) - - # Ensure the association - rp1_traits = trait_obj.get_all_by_resource_provider(self.ctx, rp1) - rp2_traits = trait_obj.get_all_by_resource_provider(self.ctx, rp2) - self._assert_traits([tname], rp1_traits) - self._assert_traits([tname], rp2_traits) - - # Detach the trait from one of ResourceProvider, and ensure the - # trait association with another ResourceProvider still exists. - tb.set_traits(rp1) - rp1_traits = trait_obj.get_all_by_resource_provider(self.ctx, rp1) - rp2_traits = trait_obj.get_all_by_resource_provider(self.ctx, rp2) - self._assert_traits([], rp1_traits) - self._assert_traits([tname], rp2_traits) - def test_trait_delete_in_use(self): rp = self._create_provider('fake_resource_provider') t, = tb.set_traits(rp, 'CUSTOM_TRAIT_A')