def _ParseConnections( connections_body: List[Tuple[str, Any]]) -> Set[connection.Connection]: """Parses YAML defining connections between one entity and another. Entites are identified by GUID. Connections are always defined on the target entity. Args: connections_body: YAML body for the entity connections Returns: A set of Connection instances """ connections = set() for source_entity_guid, item_body in connections_body: if isinstance(item_body, str): connections.add( connection.Connection(item_body, source_entity_guid)) else: for connection_type in item_body: connections.add( connection.Connection(connection_type, source_entity_guid)) return connections
def testGoodConnectionType(self): parsed = _Helper([ path.join(_TESTCASE_PATH, 'GOOD', 'good_building_connections.yaml') ]) entity_code, entity = next(iter(parsed.items())) expected_connections = [ connection.Connection('FEEDS', 'ANOTHER-ENTITY-guid'), connection.Connection('CONTAINS', 'A-THIRD-ENTITY-guid') ] self.assertIn('connections', entity, 'entity does not have connections when expected') self.assertIsNotNone( self.config_universe.connection_universe, 'universe does not have a valid connections universe') instance = entity_instance.EntityInstance.FromYaml( entity_code, entity, code_to_guid_map={ 'ANOTHER-ENTITY': 'ANOTHER-ENTITY-guid', 'A-THIRD-ENTITY': 'A-THIRD-ENTITY-guid' }) self.assertTrue(self.init_validator.Validate(instance)) self.assertCountEqual(expected_connections, instance.connections)
def testGraphGoodConnection(self, mock_universe): target = entity_instance.EntityInstance( _ADD, 'VAV-123', connections=[connection.Connection('FEEDS', 'AHU-1')]) source = entity_instance.EntityInstance( _ADD, 'AHU-1', connections=[connection.Connection('FEEDS', 'AHU-1')]) instances = {'VAV-123': target, 'AHU-1': source} validator = entity_instance.GraphValidator(mock_universe, _INIT_CFG, instances) self.assertTrue(validator.Validate(target))
def testGraphOrphanConnection(self, mock_universe): target = entity_instance.EntityInstance( _ADD, 'VAV-123', connections=[connection.Connection('FEEDS', 'AHU-1')]) validator = entity_instance.GraphValidator(mock_universe, _INIT_CFG, {'VAV-123': target}) self.assertFalse(validator.Validate(target))
def testGraphGoodConnection(self): target = entity_instance.EntityInstance( _ADD, entity_id='CDM/123456', guid='VAV-123-guid', code='VAV-123', connections=[connection.Connection('FEEDS', 'AHU-1-guid')]) source = entity_instance.EntityInstance( _ADD, entity_id='CDM/987654', guid='AHU-1-guid', code='AHU-1', connections=[connection.Connection('FEEDS', 'AHU-1-guid')]) instances = {'VAV-123-guid': target, 'AHU-1-guid': source} validator = entity_instance.GraphValidator(self.config_universe, _INIT_CFG, instances) self.assertTrue(validator.Validate(target))
def testGraphOrphanConnectionOkOnUpdate(self, mock_universe): target = entity_instance.EntityInstance( _UPDATE, 'VAV-123', connections=[connection.Connection('FEEDS', 'AHU-1')], etag='123') validator = entity_instance.GraphValidator(mock_universe, _UPDATE_CFG, {'VAV-123': target}) self.assertTrue(validator.Validate(target))
def testGraphAllowsOrphanConnectionOnInit(self): target = entity_instance.EntityInstance( _UPDATE, 'VAV-123', connections=[connection.Connection('FEEDS', 'AHU-1')], etag='123') validator = entity_instance.GraphValidator(self.config_universe, _UPDATE_CFG, {'VAV-123': target}) self.assertTrue(validator.Validate(target))
def testGraphRejectsOrphanConnectionOnInit(self): target = entity_instance.EntityInstance( _ADD, entity_id='CDM/123456', guid='VAV-123-guid', code='VAV-123', connections=[connection.Connection('FEEDS', 'AHU-1-guid')]) validator = entity_instance.GraphValidator(self.config_universe, _INIT_CFG, {'VAV-123-guid': target}) self.assertFalse(validator.Validate(target))
def testGoodConnectionType(self): parsed = _Helper([ path.join(_TESTCASE_PATH, 'GOOD', 'good_building_connections.yaml') ]) parsed = dict(parsed) entity_name = list(parsed)[0] entity = dict(parsed[entity_name]) expected_connections = [ connection.Connection('FEEDS', 'ANOTHER-ENTITY'), connection.Connection('CONTAINS', 'A-THIRD-ENTITY') ] self.assertIn('connections', entity, 'entity does not have connections when expected') self.assertIsNotNone( self.config_universe.connection_universe, 'universe does not have a valid connections universe') instance = entity_instance.EntityInstance.FromYaml(entity) self.assertTrue(self.init_validator.Validate(instance)) self.assertCountEqual(expected_connections, instance.connections)
def _ParseConnections( connections_body: syaml.YAML) -> Set[connection.Connection]: """Parses YAML defining connections between one entity and other. Connections are always defined on the target entity. Args: connections_body: YAML body for the entity connections Returns: A set of Connection instances """ connections = set() for source_entity, item_body in connections_body.items(): if isinstance(item_body, str): connections.add(connection.Connection(item_body, source_entity)) else: for connection_type in item_body: connections.add(connection.Connection(connection_type, source_entity)) return connections
def _ParseConnections(self, connections_body): """Parses YAML defining the connections between an entity and other entities, which are the sources of the connections. Args: connections_body: YAML body for the entity connections Returns: A set of Connection instances """ connections = set() for source_entity, connection_type in connections_body.items(): connections.add(connection.Connection(connection_type, source_entity)) return connections