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
This commit is contained in:
Chris Dent 2019-03-14 12:21:13 +00:00
parent a53aef47b2
commit 0a2a611d9f
3 changed files with 64 additions and 64 deletions

View File

@ -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

View File

@ -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.

View File

@ -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')