def setUp(self) -> None: self.fiware_header = FiwareHeader( service=settings.FIWARE_SERVICE, service_path=settings.FIWARE_SERVICEPATH) self.service_group_json = ServiceGroup( apikey=settings.FIWARE_SERVICEPATH.strip('/'), resource="/iot/json") self.service_group_ul = ServiceGroup( apikey=settings.FIWARE_SERVICEPATH.strip('/'), resource="/iot/d") # create a device configuration device_attr = DeviceAttribute(name='temperature', object_id='t', type="Number") device_command = DeviceCommand(name='heater', type="Boolean") self.device_json = Device(device_id='my_json_device', entity_name='my_json_device', entity_type='Thing', protocol='IoTA-JSON', transport='MQTT', apikey=self.service_group_json.apikey, attributes=[device_attr], commands=[device_command]) self.device_ul = Device(device_id='my_ul_device', entity_name='my_ul_device', entity_type='Thing', protocol='PDI-IoTA-UltraLight', transport='MQTT', apikey=self.service_group_ul.apikey, attributes=[device_attr], commands=[device_command]) self.mqttc = IoTAMQTTClient() def on_connect(mqttc, obj, flags, rc): mqttc.logger.info("rc: " + str(rc)) def on_connect_fail(mqttc, obj): mqttc.logger.info("Connect failed") def on_publish(mqttc, obj, mid): mqttc.logger.info("mid: " + str(mid)) def on_subscribe(mqttc, obj, mid, granted_qos): mqttc.logger.info("Subscribed: " + str(mid) + " " + str(granted_qos)) def on_log(mqttc, obj, level, string): mqttc.logger.info(string) self.mqttc.on_connect = on_connect self.mqttc.on_connect_fail = on_connect_fail self.mqttc.on_publish = on_publish self.mqttc.on_subscribe = on_subscribe self.mqttc.on_log = on_log
def tearDown(self) -> None: """ Cleanup test server """ self.clear_registry() clear_all(fiware_header=FiwareHeader( service=settings.FIWARE_SERVICE, service_path=settings.FIWARE_SERVICEPATH), cb_url=settings.CB_URL, iota_url=settings.IOTA_JSON_URL)
def clean_test(*, fiware_service: str, fiware_servicepath: str, cb_url: str = None, iota_url: Union[str, List[str]] = None, ql_url: str = None) -> Callable: """ Decorator to clean up the server before and after the test Note: This does not substitute a proper TearDown method, because a failing test will not execute the clean up after the error. Since this would mean an unnecessary error handling. We actually want a test to fail with proper messages. Args: fiware_service: tenant fiware_servicepath: tenant path cb_url: url of context broker service iota_url: url of IoT-Agent service ql_url: url of quantumleap service Returns: Decorator for clean tests """ fiware_header = FiwareHeader(service=fiware_service, service_path=fiware_servicepath) clear_all(fiware_header=fiware_header, cb_url=cb_url, iota_url=iota_url, ql_url=ql_url) # Inner decorator function def decorator(func): # Wrapper function for the decorated function @wraps(func) def wrapper(*args, **kwargs): return func(*args, **kwargs) return wrapper clear_all(fiware_header=fiware_header, cb_url=cb_url, iota_url=iota_url, ql_url=ql_url) return decorator
DEVICE_APIKEY = 'filip-example-device' # ApiKey of the ServiceGroup SERVICE_GROUP_APIKEY = 'filip-example-service-group' # Setting up logging logging.basicConfig(level='INFO', format='%(asctime)s %(name)s %(levelname)s: %(message)s') logger = logging.getLogger(__name__) if __name__ == '__main__': # # 1 FiwareHeader # Since we want to use the multi-tenancy concept of fiware we always start # with create a fiware header fiware_header = FiwareHeader(service=SERVICE, service_path=SERVICE_PATH) # # 2 Setup # # ## 2.1 Device creation # # First we create our device configuration using the models provided for # filip.models.ngsi_v2.iot # creating an attribute for incoming measurements from e.g. a sensor we do # add the metadata for units here using the unit models. You will later # notice that the library automatically will augment the provided # information about units. device_attr1 = DeviceAttribute(name='temperature', object_id='t', type="Number",