/* * Copyright (C) 2015 Orange * * This software is distributed under the terms and conditions of the 'GNU GENERAL PUBLIC LICENSE * Version 2' license which can be found in the file 'LICENSE.txt' in this package distribution or * at 'http://www.gnu.org/licenses/gpl-2.0-standalone.html'. */ package com.orange.cepheus.broker; import com.orange.ngsi.model.*; import org.springframework.http.MediaType; import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter; import org.springframework.mock.http.MockHttpOutputMessage; import java.io.IOException; import java.net.URI; import java.net.URISyntaxException; import java.util.ArrayList; import java.util.Collections; import java.util.List; import static com.orange.ngsi.model.CodeEnum.CODE_200; /** * Helpers for tests */ public class Util { static public RegisterContext createRegistrationContext() throws Exception { return createRegistrationContext("SENSOR1", "string", false, "http://providingApplication", "temp"); } static public RegisterContext createRegistrationContext(String entityId, String entityType, boolean entityIsPattern, String providingApp, String attr) throws Exception { RegisterContext registerContext = new RegisterContext(); registerContext.setDuration("PT1M"); ContextRegistration contextRegistration = new ContextRegistration(); contextRegistration.setEntityIdList(Collections.singletonList(new EntityId(entityId, entityType, entityIsPattern))); contextRegistration.setContextRegistrationAttributeList(Collections.singletonList(new ContextRegistrationAttribute(attr, false))); contextRegistration.setProvidingApplication(new URI(providingApp)); registerContext.setContextRegistrationList(Collections.singletonList(contextRegistration)); return registerContext; } static public NotifyContext createNotifyContextTempSensor(float randomValue) throws URISyntaxException { NotifyContext notifyContext = new NotifyContext("1", new URI("http://iotAgent")); ContextElementResponse contextElementResponse = new ContextElementResponse(); contextElementResponse.setContextElement(createTemperatureContextElement(randomValue)); contextElementResponse.setStatusCode(new StatusCode(CODE_200)); notifyContext.setContextElementResponseList(Collections.singletonList(contextElementResponse)); return notifyContext; } static public ContextElement createTemperatureContextElement(float randomValue) { ContextElement contextElement = new ContextElement(); contextElement.setEntityId(new EntityId("S1", "TempSensor", false)); ContextAttribute contextAttribute = new ContextAttribute("temp", "float", 15.5 + randomValue); contextElement.setContextAttributeList(Collections.singletonList(contextAttribute)); return contextElement; } static public ContextElement createTemperaturePressureContextElement() { ContextElement contextElement = new ContextElement(); contextElement.setEntityId(new EntityId("S1", "TempSensor", false)); List<ContextAttribute> contextAttributeList = new ArrayList<>(); contextAttributeList.add(new ContextAttribute("temp", "float", 15.5)); contextAttributeList.add(new ContextAttribute("pressure", "int", 1015)); contextElement.setContextAttributeList(contextAttributeList); return contextElement; } static public UpdateContext createUpdateContextTempSensor(float randomValue) throws URISyntaxException { UpdateContext updateContext = new UpdateContext(UpdateAction.UPDATE); updateContext.setContextElements(Collections.singletonList(createTemperatureContextElement(randomValue))); return updateContext; } static public UpdateContextResponse createUpdateContextResponseTempSensor() throws URISyntaxException { ContextElementResponse contextElementResponse = new ContextElementResponse(); contextElementResponse.setContextElement(createTemperatureContextElement(0)); contextElementResponse.setStatusCode(new StatusCode(CODE_200)); UpdateContextResponse updateContextResponse = new UpdateContextResponse(); updateContextResponse.setErrorCode(new StatusCode(CODE_200)); updateContextResponse.setContextElementResponses(Collections.singletonList(contextElementResponse)); return updateContextResponse; } static public ContextElement createPressureContextElement() { ContextElement contextElement = new ContextElement(); contextElement.setEntityId(new EntityId("P1", "PressureSensor", false)); ContextAttribute contextAttribute = new ContextAttribute("pressure", "int", 999); contextElement.setContextAttributeList(Collections.singletonList(contextAttribute)); return contextElement; } static public UpdateContext createUpdateContextPressureSensor() throws URISyntaxException { UpdateContext updateContext = new UpdateContext(UpdateAction.UPDATE); updateContext.setContextElements(Collections.singletonList(createPressureContextElement())); return updateContext; } static public ContextElement createWrongAttributTemperatureContextElement(float randomValue) { ContextElement contextElement = new ContextElement(); contextElement.setEntityId(new EntityId("S1", "TempSensor", false)); ContextAttribute contextAttribute = new ContextAttribute("pressure", "string", "low"); contextElement.setContextAttributeList(Collections.singletonList(contextAttribute)); return contextElement; } static public UpdateContext createUpdateContextTempSensorWithWrongAttribut(float randomValue) throws URISyntaxException { UpdateContext updateContext = new UpdateContext(UpdateAction.UPDATE); updateContext.setContextElements(Collections.singletonList(createWrongAttributTemperatureContextElement(randomValue))); return updateContext; } static public SubscribeContext createSubscribeContextTemperature() throws URISyntaxException { SubscribeContext subscribeContext = new SubscribeContext(); List<EntityId> entityIdList = new ArrayList<>(); EntityId entityId = new EntityId("Room1","Room",false); entityIdList.add(entityId); subscribeContext.setEntityIdList(entityIdList); List<String> attributes = new ArrayList<>(); attributes.add("temperature"); subscribeContext.setAttributeList(attributes); subscribeContext.setReference(new URI("http://localhost:1028/accumulate")); subscribeContext.setDuration("P1M"); List<NotifyCondition> notifyConditionList = new ArrayList<>(); List<String> condValues = new ArrayList<>(); condValues.add("PT10S"); NotifyCondition notifyCondition = new NotifyCondition(NotifyConditionEnum.ONTIMEINTERVAL,condValues); notifyConditionList.add(notifyCondition); subscribeContext.setNotifyConditionList(notifyConditionList); return subscribeContext; } static public SubscribeContext createSubscribeContext(String entityId, String entityType, boolean entityIsPattern, String reference, String attr) throws Exception { SubscribeContext subscribeContext = new SubscribeContext(); subscribeContext.setDuration("PT1M"); subscribeContext.setEntityIdList(Collections.singletonList(new EntityId(entityId, entityType, entityIsPattern))); subscribeContext.setAttributeList(Collections.singletonList(attr)); subscribeContext.setReference(new URI(reference)); return subscribeContext; } static public SubscribeContextResponse createSubscribeContextResponseTemperature() { SubscribeContextResponse subscribeContextResponse = new SubscribeContextResponse(); SubscribeResponse subscribeResponse = new SubscribeResponse(); subscribeResponse.setDuration("P1M"); subscribeResponse.setSubscriptionId("12345678"); subscribeContextResponse.setSubscribeResponse(subscribeResponse); return subscribeContextResponse; } static public UpdateContextSubscription createUpdateSubscribeContext() { UpdateContextSubscription updateContextSubscription = new UpdateContextSubscription(); updateContextSubscription.setDuration("P3M"); updateContextSubscription.setSubscriptionId("12345678"); return updateContextSubscription; } static public RegisterContext createRegisterContextTemperature() throws URISyntaxException { RegisterContext registerContext = new RegisterContext(); ContextRegistration contextRegistration = new ContextRegistration(new URI("http://localhost:1028/accumulate")); EntityId entityId = new EntityId("Room*", "Room", true); contextRegistration.setEntityIdList(Collections.singletonList(entityId)); ContextRegistrationAttribute attribute = new ContextRegistrationAttribute("temperature", false); attribute.setType("float"); contextRegistration.setContextRegistrationAttributeList(Collections.singletonList(attribute)); registerContext.setContextRegistrationList(Collections.singletonList(contextRegistration)); registerContext.setDuration("PT10S"); return registerContext; } static public UpdateContext createUpdateContextTempSensorAndPressure() throws URISyntaxException { UpdateContext updateContext = new UpdateContext(UpdateAction.UPDATE); updateContext.setContextElements(Collections.singletonList(createTemperaturePressureContextElement())); return updateContext; } static public UpdateContextResponse createUpdateContextResponseTempSensorAndPressure() throws URISyntaxException { ContextElementResponse contextElementResponse = new ContextElementResponse(); contextElementResponse.setContextElement(createTemperaturePressureContextElement()); contextElementResponse.setStatusCode(new StatusCode(CODE_200)); UpdateContextResponse updateContextResponse = new UpdateContextResponse(); updateContextResponse.setContextElementResponses(Collections.singletonList(contextElementResponse)); return updateContextResponse; } static public QueryContext createQueryContextTemperature() { QueryContext queryContext = new QueryContext(); queryContext.setEntityIdList(Collections.singletonList(new EntityId("S*", "TempSensor", true))); queryContext.setAttributeList(Collections.singletonList("temp")); return queryContext; } static public QueryContextResponse createQueryContextResponseTemperature() { QueryContextResponse queryContextResponse = new QueryContextResponse(); ContextElementResponse contextElementResponse = new ContextElementResponse(createTemperatureContextElement(0), new StatusCode(CODE_200)); queryContextResponse.setContextElementResponses(Collections.singletonList(contextElementResponse)); return queryContextResponse; } static public String json(MappingJackson2HttpMessageConverter mapping, Object o) throws IOException { MockHttpOutputMessage mockHttpOutputMessage = new MockHttpOutputMessage(); mapping.write(o, MediaType.APPLICATION_JSON, mockHttpOutputMessage); return mockHttpOutputMessage.getBodyAsString(); } }