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