def test_resolve_reference(self):
        mock_resource = MagicMock()
        ref = ResourceReference(mock_resource, self._setter_uuid,
                                self._device_port_spec_1)
        ref.resolve_reference('uuid-000')

        mock_resource.set_uuid.assert_called_with('uuid-000')
    def test_resolve_reference(self):
        mock_resource = MagicMock()
        ref = ResourceReference(mock_resource,
                                self._setter_uuid,
                                self._device_port_spec_1)
        ref.resolve_reference('uuid-000')

        mock_resource.set_uuid.assert_called_with('uuid-000')
 def setUp(self):
     self._res_a_1 = TestResourceClassA('res'),
     self._res_a_2 = TestResourceClassA('res')
     self._res_b_1 = TestResourceClassB('res')
     self._device_port_spec_1 = {'device_name': 'bridge-000-001',
                                 'port_id': 1}
     self._device_port_spec_2 = {'device_name': 'bridge-000-001',
                                 'port_id': 2}
     self._setter_uuid = 'set_uuid'
     self._setter_type = 'set_uuid'
     self._ref1 = ResourceReference(self._res_a_1,
                                    self._setter_uuid,
                                    self._device_port_spec_1)
     self._ref2 = ResourceReference(self._res_a_1,
                                    self._setter_uuid,
                                    self._device_port_spec_1)
     self._ref3 = ResourceReference(self._res_a_2,
                                    self._setter_uuid,
                                    self._device_port_spec_1)
     self._ref4 = ResourceReference(self._res_b_1,
                                    self._setter_uuid,
                                    self._device_port_spec_1)
     self._ref5 = ResourceReference(self._res_a_1,
                                    self._setter_type,
                                    self._device_port_spec_1)
     self._ref6 = ResourceReference(self._res_a_1,
                                    self._setter_uuid,
                                    self._device_port_spec_2)
 def setUp(self):
     self._res_a_1 = TestResourceClassA('res'),
     self._res_a_2 = TestResourceClassA('res')
     self._res_b_1 = TestResourceClassB('res')
     self._device_port_spec_1 = {
         'device_name': 'bridge-000-001',
         'port_id': 1
     }
     self._device_port_spec_2 = {
         'device_name': 'bridge-000-001',
         'port_id': 2
     }
     self._setter_uuid = 'set_uuid'
     self._setter_type = 'set_uuid'
     self._ref1 = ResourceReference(self._res_a_1, self._setter_uuid,
                                    self._device_port_spec_1)
     self._ref2 = ResourceReference(self._res_a_1, self._setter_uuid,
                                    self._device_port_spec_1)
     self._ref3 = ResourceReference(self._res_a_2, self._setter_uuid,
                                    self._device_port_spec_1)
     self._ref4 = ResourceReference(self._res_b_1, self._setter_uuid,
                                    self._device_port_spec_1)
     self._ref5 = ResourceReference(self._res_a_1, self._setter_type,
                                    self._device_port_spec_1)
     self._ref6 = ResourceReference(self._res_a_1, self._setter_uuid,
                                    self._device_port_spec_2)
Example #5
0
 def test_register_resource_reference(self):
     """Test registering a resource reference."""
     self.build_empty_topology()
     mock_referrer = MagicMock()
     self._vtm.register_resource_reference(
             mock_referrer, 'port_group', {'port_group_name': 'pg-1'})
     self.assertIn(ResourceReference(mock_referrer,
                                     'port_group',
                                     {'port_group_name': 'pg-1'}),
                   self._vtm._resource_references)
    def register_resource_reference(self, referrer, setter, reference_spec):
        """Registers a resource reference for lazy resolution.

        Args:
            referrer: A resource referring to another resource.
            field: A setter for the field referring to the resource.
            reference_spec: A specification of the referred resource.
        """
        self._resource_references.append(
            ResourceReference(referrer, setter, reference_spec))
class ResourceReferenceTest(unittest.TestCase):

    def setUp(self):
        self._res_a_1 = TestResourceClassA('res'),
        self._res_a_2 = TestResourceClassA('res')
        self._res_b_1 = TestResourceClassB('res')
        self._device_port_spec_1 = {'device_name': 'bridge-000-001',
                                    'port_id': 1}
        self._device_port_spec_2 = {'device_name': 'bridge-000-001',
                                    'port_id': 2}
        self._setter_uuid = 'set_uuid'
        self._setter_type = 'set_uuid'
        self._ref1 = ResourceReference(self._res_a_1,
                                       self._setter_uuid,
                                       self._device_port_spec_1)
        self._ref2 = ResourceReference(self._res_a_1,
                                       self._setter_uuid,
                                       self._device_port_spec_1)
        self._ref3 = ResourceReference(self._res_a_2,
                                       self._setter_uuid,
                                       self._device_port_spec_1)
        self._ref4 = ResourceReference(self._res_b_1,
                                       self._setter_uuid,
                                       self._device_port_spec_1)
        self._ref5 = ResourceReference(self._res_a_1,
                                       self._setter_type,
                                       self._device_port_spec_1)
        self._ref6 = ResourceReference(self._res_a_1,
                                       self._setter_uuid,
                                       self._device_port_spec_2)

    def test_resource_reference_eq(self):
        # The same referencing resource object, same setter and specs.
        self.assertEqual(self._ref1, self._ref2)
        # The same reference classes but different instances.
        self.assertNotEqual(self._ref1, self._ref3)
        # The same reference classes but different instances.
        self.assertNotEqual(self._ref1, self._ref4)
        # Different attribute setters.
        self.assertNotEqual(self._ref1, self._ref5)
        # Different reference specs.
        self.assertNotEqual(self._ref1, self._ref6)

    def test_get_reference_spec(self):
        self.assertEqual(self._device_port_spec_1,
                         self._ref1.get_reference_spec())

    def test_resolve_reference(self):
        mock_resource = MagicMock()
        ref = ResourceReference(mock_resource,
                                self._setter_uuid,
                                self._device_port_spec_1)
        ref.resolve_reference('uuid-000')

        mock_resource.set_uuid.assert_called_with('uuid-000')
Example #8
0
    def test_look_up_resource_no_chain(self):
        """Tests if lookup failure registers a resource reference."""
        self.mock_vtm_lookup_on_empty_topology('get_chain', None)
        mock_referrer = MagicMock()
        self._vtm.look_up_resource(
                mock_referrer, 'chain_setter', {'chain_name': 'filter-001'})

        self._vtm.get_chain.assert_called_with('filter-001')
        self.assertIn(ResourceReference(
                mock_referrer, 'chain_setter', {'chain_name': 'filter-001'}),
                self._vtm._resource_references)
Example #9
0
    def test_look_up_resource_no_port_group(self):
        """Tests if lookup failure registers a resource reference."""
        self.mock_vtm_lookup_on_empty_topology('get_port_group', None)
        mock_referrer = MagicMock()
        self._vtm.look_up_resource(
                mock_referrer, 'port_group', {'port_group_name': 'pg-1'})

        self._vtm.get_port_group.assert_called_with('pg-1')
        self.assertIn(ResourceReference(
                mock_referrer, 'port_group', {'port_group_name': 'pg-1'}),
                self._vtm._resource_references)
Example #10
0
    def test_look_up_resource_no_device_port(self):
        """Tests if lookup failure registers a resource reference."""
        self.mock_vtm_lookup_on_empty_topology('get_device_port', None)
        mock_referrer = MagicMock()
        self._vtm.look_up_resource(
            mock_referrer, 'out_ports',
            [{'device_name': 'bridge-000-001', 'port_id': 1},
             '01e436f4-d6be-4218-8fca-415207da604d'])

        self._vtm.get_device_port.assert_called_with('bridge-000-001', 1)
        self.assertIn(ResourceReference(
                mock_referrer, 'out_ports',
                [{'device_name': 'bridge-000-001', 'port_id': 1},
                 '01e436f4-d6be-4218-8fca-415207da604d']),
                self._vtm._resource_references)