diff options
Diffstat (limited to 'tosca-controlloop/participant/participant-impl/participant-impl-simulator/src/test/java/org/onap/policy')
9 files changed, 341 insertions, 50 deletions
diff --git a/tosca-controlloop/participant/participant-impl/participant-impl-simulator/src/test/java/org/onap/policy/clamp/controlloop/participant/simulator/main/intermediary/TestControlLoopUpdateListener.java b/tosca-controlloop/participant/participant-impl/participant-impl-simulator/src/test/java/org/onap/policy/clamp/controlloop/participant/simulator/main/intermediary/TestControlLoopUpdateListener.java new file mode 100644 index 000000000..a307d3457 --- /dev/null +++ b/tosca-controlloop/participant/participant-impl/participant-impl-simulator/src/test/java/org/onap/policy/clamp/controlloop/participant/simulator/main/intermediary/TestControlLoopUpdateListener.java @@ -0,0 +1,91 @@ +/*- + * ============LICENSE_START======================================================= + * Copyright (C) 2021 Nordix Foundation. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +package org.onap.policy.clamp.controlloop.participant.simulator.main.intermediary; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotEquals; + +import java.io.FileNotFoundException; +import java.io.IOException; +import org.junit.BeforeClass; +import org.junit.Test; +import org.onap.policy.clamp.controlloop.common.exception.ControlLoopException; +import org.onap.policy.clamp.controlloop.models.controlloop.concepts.ControlLoopOrderedState; +import org.onap.policy.clamp.controlloop.models.messages.dmaap.participant.ParticipantControlLoopUpdate; +import org.onap.policy.clamp.controlloop.participant.intermediary.comm.ControlLoopUpdateListener; +import org.onap.policy.clamp.controlloop.participant.simulator.main.parameters.CommonTestData; +import org.onap.policy.clamp.controlloop.participant.simulator.main.rest.TestListenerUtils; +import org.onap.policy.common.endpoints.event.comm.Topic.CommInfrastructure; +import org.onap.policy.common.utils.coder.CoderException; + +/** + * Class to perform unit test of {@link ControlLoopUpdateListener}. + */ +public class TestControlLoopUpdateListener { + private static ControlLoopUpdateListener clUpdateListener; + private static final CommInfrastructure INFRA = CommInfrastructure.NOOP; + private static final String TOPIC = "my-topic"; + static CommonTestData commonTestData = new CommonTestData(); + + /** + * Method for setup. + * + * @throws ParticipantException if some error occurs while starting up the participant + * @throws FileNotFoundException if the file is missing + * @throws IOException if IO exception occurs + */ + @BeforeClass + public static void setUp() throws ControlLoopException, FileNotFoundException, IOException { + TestListenerUtils.initParticipantHandler(); + clUpdateListener = new ControlLoopUpdateListener(TestListenerUtils.getParticipantHandler()); + } + + @Test + public void testControlLoopUpdateListener_ParticipantIdNoMatch() throws CoderException { + ParticipantControlLoopUpdate participantControlLoopUpdateMsg = prepareMsg("DummyName"); + clUpdateListener.onTopicEvent(INFRA, TOPIC, null, participantControlLoopUpdateMsg); + + // Verify the content in participantHandler + assertNotEquals(participantControlLoopUpdateMsg.getParticipantId().getName(), + TestListenerUtils.getParticipantHandler().getParticipantId().getName()); + } + + @Test + public void testControlLoopUpdateListener() throws CoderException { + ParticipantControlLoopUpdate participantControlLoopUpdateMsg = prepareMsg("org.onap.PM_CDS_Blueprint"); + clUpdateListener.onTopicEvent(INFRA, TOPIC, null, participantControlLoopUpdateMsg); + + // Verify the content in participantHandler + assertEquals(TestListenerUtils.getParticipantHandler().getParticipantId(), + participantControlLoopUpdateMsg.getParticipantId()); + assertThat(TestListenerUtils.getParticipantHandler().getControlLoopHandler().getControlLoops() + .getControlLoopList()).hasSize(1); + } + + private ParticipantControlLoopUpdate prepareMsg(final String participantName) { + ParticipantControlLoopUpdate participantControlLoopUpdateMsg; + participantControlLoopUpdateMsg = TestListenerUtils.createControlLoopUpdateMsg(); + participantControlLoopUpdateMsg.getParticipantId().setName(participantName); + participantControlLoopUpdateMsg.getControlLoop().setOrderedState(ControlLoopOrderedState.PASSIVE); + return participantControlLoopUpdateMsg; + } +} diff --git a/tosca-controlloop/participant/participant-impl/participant-impl-simulator/src/test/java/org/onap/policy/clamp/controlloop/participant/simulator/main/parameters/CommonTestData.java b/tosca-controlloop/participant/participant-impl/participant-impl-simulator/src/test/java/org/onap/policy/clamp/controlloop/participant/simulator/main/parameters/CommonTestData.java index e0e001743..0a8754256 100644 --- a/tosca-controlloop/participant/participant-impl/participant-impl-simulator/src/test/java/org/onap/policy/clamp/controlloop/participant/simulator/main/parameters/CommonTestData.java +++ b/tosca-controlloop/participant/participant-impl/participant-impl-simulator/src/test/java/org/onap/policy/clamp/controlloop/participant/simulator/main/parameters/CommonTestData.java @@ -182,9 +182,7 @@ public class CommonTestData { * @return participant Id */ public static ToscaConceptIdentifier getParticipantId() { - final ToscaConceptIdentifier participantId = new ToscaConceptIdentifier(); - participantId.setName("CDSParticipant0"); - participantId.setVersion("1.0.0"); + final ToscaConceptIdentifier participantId = new ToscaConceptIdentifier("org.onap.PM_CDS_Blueprint", "1.0.0"); return participantId; } diff --git a/tosca-controlloop/participant/participant-impl/participant-impl-simulator/src/test/java/org/onap/policy/clamp/controlloop/participant/simulator/main/parameters/TestParticipantSimulatorParameterHandler.java b/tosca-controlloop/participant/participant-impl/participant-impl-simulator/src/test/java/org/onap/policy/clamp/controlloop/participant/simulator/main/parameters/TestParticipantSimulatorParameterHandler.java index f8b11d723..e94939af8 100644 --- a/tosca-controlloop/participant/participant-impl/participant-impl-simulator/src/test/java/org/onap/policy/clamp/controlloop/participant/simulator/main/parameters/TestParticipantSimulatorParameterHandler.java +++ b/tosca-controlloop/participant/participant-impl/participant-impl-simulator/src/test/java/org/onap/policy/clamp/controlloop/participant/simulator/main/parameters/TestParticipantSimulatorParameterHandler.java @@ -20,6 +20,7 @@ package org.onap.policy.clamp.controlloop.participant.simulator.main.parameters; +import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatThrownBy; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; @@ -89,16 +90,15 @@ public class TestParticipantSimulatorParameterHandler { public void testParticipantVersion() throws ControlLoopException { final String[] participantConfigParameters = { "-v" }; final ParticipantSimulatorCommandLineArguments arguments = new ParticipantSimulatorCommandLineArguments(); - final String version = arguments.parse(participantConfigParameters); - assertTrue(version.startsWith("ONAP Tosca defined control loop Participant")); + assertThat(arguments.parse(participantConfigParameters)).startsWith( + "ONAP Tosca defined control loop Participant"); } @Test public void testParticipantHelp() throws ControlLoopException { final String[] participantConfigParameters = { "-h" }; final ParticipantSimulatorCommandLineArguments arguments = new ParticipantSimulatorCommandLineArguments(); - final String help = arguments.parse(participantConfigParameters); - assertTrue(help.startsWith("usage:")); + assertThat(arguments.parse(participantConfigParameters)).startsWith("usage:"); } @Test diff --git a/tosca-controlloop/participant/participant-impl/participant-impl-simulator/src/test/java/org/onap/policy/clamp/controlloop/participant/simulator/main/parameters/TestParticipantSimulatorParameters.java b/tosca-controlloop/participant/participant-impl/participant-impl-simulator/src/test/java/org/onap/policy/clamp/controlloop/participant/simulator/main/parameters/TestParticipantSimulatorParameters.java index dcfbe94b7..2f47641a9 100644 --- a/tosca-controlloop/participant/participant-impl/participant-impl-simulator/src/test/java/org/onap/policy/clamp/controlloop/participant/simulator/main/parameters/TestParticipantSimulatorParameters.java +++ b/tosca-controlloop/participant/participant-impl/participant-impl-simulator/src/test/java/org/onap/policy/clamp/controlloop/participant/simulator/main/parameters/TestParticipantSimulatorParameters.java @@ -23,8 +23,8 @@ package org.onap.policy.clamp.controlloop.participant.simulator.main.parameters; import static org.assertj.core.api.Assertions.assertThat; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertTrue; +import java.util.Map; import org.junit.Test; import org.onap.policy.common.parameters.GroupValidationResult; @@ -57,7 +57,7 @@ public class TestParticipantSimulatorParameters { final GroupValidationResult validationResult = participantParameters.validate(); assertFalse(validationResult.isValid()); assertEquals(null, participantParameters.getName()); - assertTrue(validationResult.getResult().contains("is null")); + assertThat(validationResult.getResult()).contains("is null"); } @Test @@ -68,8 +68,8 @@ public class TestParticipantSimulatorParameters { final GroupValidationResult validationResult = participantParameters.validate(); assertFalse(validationResult.isValid()); assertEquals("", participantParameters.getName()); - assertTrue(validationResult.getResult().contains( - "field \"name\" type \"java.lang.String\" value \"\" INVALID, " + "must be a non-blank string")); + assertThat(validationResult.getResult()).contains( + "field \"name\" type \"java.lang.String\" value \"\" INVALID, " + "must be a non-blank string"); } @Test @@ -81,4 +81,36 @@ public class TestParticipantSimulatorParameters { assertThat(participantParameters.validate().isValid()).isTrue(); assertEquals("ParticipantNewGroup", participantParameters.getName()); } + + @Test + public void testParticipantParameterGroup_EmptyParticipantIntermediaryParameters() { + final Map<String, Object> map = + commonTestData.getParticipantParameterGroupMap(CommonTestData.PARTICIPANT_GROUP_NAME); + map.replace("intermediaryParameters", commonTestData.getIntermediaryParametersMap(true)); + final ParticipantSimulatorParameters participantParameters = + commonTestData.toObject(map, ParticipantSimulatorParameters.class); + final GroupValidationResult validationResult = participantParameters.validate(); + assertFalse(validationResult.isValid()); + assertThat(validationResult.getResult()).contains( + "\"org.onap.policy.clamp.controlloop.participant.simulator.main.parameters." + + "ParticipantSimulatorParameters\"" + + " INVALID, parameter group has status INVALID"); + } + + @Test + public void testParticipantParameterGroupp_EmptyTopicParameters() { + final Map<String, Object> map = + commonTestData.getParticipantParameterGroupMap(CommonTestData.PARTICIPANT_GROUP_NAME); + final Map<String, Object> intermediaryParametersMap = commonTestData.getIntermediaryParametersMap(false); + intermediaryParametersMap.put("clampControlLoopTopics", commonTestData.getTopicParametersMap(true)); + map.replace("intermediaryParameters", intermediaryParametersMap); + + final ParticipantSimulatorParameters participantParameters = + commonTestData.toObject(map, ParticipantSimulatorParameters.class); + final GroupValidationResult validationResult = participantParameters.validate(); + assertFalse(validationResult.isValid()); + assertThat(validationResult.getResult()) + .contains("\"org.onap.policy.common.endpoints.parameters.TopicParameterGroup\" INVALID, " + + "parameter group has status INVALID"); + } } diff --git a/tosca-controlloop/participant/participant-impl/participant-impl-simulator/src/test/java/org/onap/policy/clamp/controlloop/participant/simulator/main/rest/CommonParticipantRestServer.java b/tosca-controlloop/participant/participant-impl/participant-impl-simulator/src/test/java/org/onap/policy/clamp/controlloop/participant/simulator/main/rest/CommonParticipantRestServer.java index 7aae32629..ae004de49 100644 --- a/tosca-controlloop/participant/participant-impl/participant-impl-simulator/src/test/java/org/onap/policy/clamp/controlloop/participant/simulator/main/rest/CommonParticipantRestServer.java +++ b/tosca-controlloop/participant/participant-impl/participant-impl-simulator/src/test/java/org/onap/policy/clamp/controlloop/participant/simulator/main/rest/CommonParticipantRestServer.java @@ -21,7 +21,7 @@ package org.onap.policy.clamp.controlloop.participant.simulator.main.rest; -import static org.junit.Assert.assertTrue; +import static org.assertj.core.api.Assertions.assertThat; import java.io.File; import java.io.FileNotFoundException; @@ -127,8 +127,7 @@ public class CommonParticipantRestServer { */ protected void testSwagger(final String endpoint) throws Exception { final Invocation.Builder invocationBuilder = sendFqeRequest(httpPrefix + "swagger.yaml", true); - final String resp = invocationBuilder.get(String.class); - assertTrue(resp.contains(ENDPOINT_PREFIX + endpoint + ":")); + assertThat(invocationBuilder.get(String.class)).contains(ENDPOINT_PREFIX + endpoint + ":"); } /** diff --git a/tosca-controlloop/participant/participant-impl/participant-impl-simulator/src/test/java/org/onap/policy/clamp/controlloop/participant/simulator/main/rest/RestControllerTest.java b/tosca-controlloop/participant/participant-impl/participant-impl-simulator/src/test/java/org/onap/policy/clamp/controlloop/participant/simulator/main/rest/RestControllerTest.java index c7a39c48b..1311eee35 100644 --- a/tosca-controlloop/participant/participant-impl/participant-impl-simulator/src/test/java/org/onap/policy/clamp/controlloop/participant/simulator/main/rest/RestControllerTest.java +++ b/tosca-controlloop/participant/participant-impl/participant-impl-simulator/src/test/java/org/onap/policy/clamp/controlloop/participant/simulator/main/rest/RestControllerTest.java @@ -27,14 +27,37 @@ import javax.ws.rs.Produces; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; import javax.ws.rs.core.Response.ResponseBuilder; +import org.junit.AfterClass; import org.junit.Before; +import org.junit.BeforeClass; import org.junit.Test; +import org.mockito.Mockito; +import org.onap.policy.clamp.controlloop.participant.simulator.simulation.SimulationHandler; +import org.onap.policy.common.utils.services.Registry; public class RestControllerTest { private RestController ctlr; private ResponseBuilder bldr; + /** + * Setup before class, instantiate SimulationHandler. + * + */ + @BeforeClass + public static void setUpBeforeClass() throws Exception { + Registry.newRegistry(); + Registry.register(SimulationHandler.class.getName(), Mockito.mock(SimulationHandler.class)); + } + + @AfterClass + public static void teardownAfterClass() throws Exception { + Registry.unregister(SimulationHandler.class.getName()); + } + + /** + * set Up. + */ @Before public void setUp() { ctlr = new RestController(); diff --git a/tosca-controlloop/participant/participant-impl/participant-impl-simulator/src/test/java/org/onap/policy/clamp/controlloop/participant/simulator/main/rest/TestListenerUtils.java b/tosca-controlloop/participant/participant-impl/participant-impl-simulator/src/test/java/org/onap/policy/clamp/controlloop/participant/simulator/main/rest/TestListenerUtils.java index 7b7dd2d84..3ee39d57e 100644 --- a/tosca-controlloop/participant/participant-impl/participant-impl-simulator/src/test/java/org/onap/policy/clamp/controlloop/participant/simulator/main/rest/TestListenerUtils.java +++ b/tosca-controlloop/participant/participant-impl/participant-impl-simulator/src/test/java/org/onap/policy/clamp/controlloop/participant/simulator/main/rest/TestListenerUtils.java @@ -22,18 +22,29 @@ package org.onap.policy.clamp.controlloop.participant.simulator.main.rest; import static org.junit.Assert.assertTrue; +import java.io.File; import java.io.FileNotFoundException; +import java.time.Instant; import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.Set; import java.util.UUID; +import lombok.Getter; import org.onap.policy.clamp.controlloop.models.controlloop.concepts.ControlLoop; import org.onap.policy.clamp.controlloop.models.controlloop.concepts.ControlLoopElement; import org.onap.policy.clamp.controlloop.models.controlloop.concepts.ControlLoopOrderedState; import org.onap.policy.clamp.controlloop.models.controlloop.concepts.ControlLoopState; +import org.onap.policy.clamp.controlloop.models.controlloop.concepts.ParticipantState; +import org.onap.policy.clamp.controlloop.models.messages.dmaap.participant.ParticipantControlLoopStateChange; +import org.onap.policy.clamp.controlloop.models.messages.dmaap.participant.ParticipantControlLoopUpdate; +import org.onap.policy.clamp.controlloop.models.messages.dmaap.participant.ParticipantStateChange; +import org.onap.policy.clamp.controlloop.participant.intermediary.handler.ParticipantHandler; import org.onap.policy.clamp.controlloop.participant.simulator.main.parameters.CommonTestData; +import org.onap.policy.clamp.controlloop.participant.simulator.main.parameters.ParticipantSimulatorParameters; +import org.onap.policy.clamp.controlloop.participant.simulator.simulation.SimulationProvider; import org.onap.policy.common.utils.coder.Coder; +import org.onap.policy.common.utils.coder.CoderException; import org.onap.policy.common.utils.coder.StandardCoder; import org.onap.policy.common.utils.coder.YamlJsonTranslator; import org.onap.policy.common.utils.resources.ResourceUtils; @@ -48,11 +59,28 @@ public class TestListenerUtils { private static final YamlJsonTranslator yamlTranslator = new YamlJsonTranslator(); private static final Coder CODER = new StandardCoder(); static CommonTestData commonTestData = new CommonTestData(); - private static RestController restController; private static final Logger LOGGER = LoggerFactory.getLogger(TestListenerUtils.class); private TestListenerUtils() {} + @Getter + private static ParticipantHandler participantHandler; + + /** + * Method to initialize participantHandler. + */ + public static void initParticipantHandler() { + + final ParticipantSimulatorParameters participantParameters = commonTestData.toObject( + commonTestData.getParticipantParameterGroupMap(CommonTestData.PARTICIPANT_GROUP_NAME), + ParticipantSimulatorParameters.class); + + SimulationProvider simulationProvider = + new SimulationProvider(participantParameters.getIntermediaryParameters()); + + participantHandler = simulationProvider.getIntermediaryApi().getParticipantHandler(); + } + /** * Method to create a controlLoop from a yaml file. * @@ -60,10 +88,10 @@ public class TestListenerUtils { */ public static ControlLoop createControlLoop() { ControlLoop controlLoop = new ControlLoop(); - List<ControlLoopElement> elements = new ArrayList<>(); + List<ControlLoopElement> elements = new ArrayList<>(); ToscaServiceTemplate toscaServiceTemplate = testControlLoopRead(); - Map<String, ToscaNodeTemplate> nodeTemplatesMap = toscaServiceTemplate - .getToscaTopologyTemplate().getNodeTemplates(); + Map<String, ToscaNodeTemplate> nodeTemplatesMap = + toscaServiceTemplate.getToscaTopologyTemplate().getNodeTemplates(); for (Map.Entry<String, ToscaNodeTemplate> toscaInputEntry : nodeTemplatesMap.entrySet()) { ControlLoopElement clElement = new ControlLoopElement(); clElement.setId(UUID.randomUUID()); @@ -91,9 +119,107 @@ public class TestListenerUtils { return controlLoop; } + /** + * Method to create ParticipantStateChange message from the arguments passed. + * + * @param participantState participant State + * + * @return ParticipantStateChange message + */ + public static ParticipantStateChange createParticipantStateChangeMsg(final ParticipantState participantState) { + final ParticipantStateChange participantStateChangeMsg = new ParticipantStateChange(); + ToscaConceptIdentifier participantId = new ToscaConceptIdentifier("org.onap.PM_CDS_Blueprint", "1.0.0"); + + participantStateChangeMsg.setParticipantId(participantId); + participantStateChangeMsg.setTimestamp(Instant.now()); + participantStateChangeMsg.setState(participantState); + + return participantStateChangeMsg; + } + + /** + * Method to create ControlLoopStateChange message from the arguments passed. + * + * @param controlLoopOrderedState controlLoopOrderedState + * + * @return ParticipantControlLoopStateChange message + */ + public static ParticipantControlLoopStateChange createControlLoopStateChangeMsg( + final ControlLoopOrderedState controlLoopOrderedState) { + final ParticipantControlLoopStateChange participantClStateChangeMsg = new ParticipantControlLoopStateChange(); + + ToscaConceptIdentifier controlLoopId = new ToscaConceptIdentifier("PMSHInstance0", "1.0.0"); + ToscaConceptIdentifier participantId = new ToscaConceptIdentifier("org.onap.PM_CDS_Blueprint", "1.0.0"); + + participantClStateChangeMsg.setControlLoopId(controlLoopId); + participantClStateChangeMsg.setParticipantId(participantId); + participantClStateChangeMsg.setTimestamp(Instant.now()); + participantClStateChangeMsg.setOrderedState(controlLoopOrderedState); + + return participantClStateChangeMsg; + } + + /** + * Method to create ControlLoopUpdateMsg. + * + * @return ParticipantControlLoopUpdate message + */ + public static ParticipantControlLoopUpdate createControlLoopUpdateMsg() { + final ParticipantControlLoopUpdate clUpdateMsg = new ParticipantControlLoopUpdate(); + ToscaConceptIdentifier controlLoopId = new ToscaConceptIdentifier("PMSHInstance0", "1.0.0."); + ToscaConceptIdentifier participantId = new ToscaConceptIdentifier("org.onap.PM_CDS_Blueprint", "1.0.0"); + + clUpdateMsg.setControlLoopId(controlLoopId); + clUpdateMsg.setParticipantId(participantId); + + ControlLoop controlLoop = new ControlLoop(); + List<ControlLoopElement> elements = new ArrayList<>(); + ToscaServiceTemplate toscaServiceTemplate = testControlLoopRead(); + Map<String, ToscaNodeTemplate> nodeTemplatesMap = + toscaServiceTemplate.getToscaTopologyTemplate().getNodeTemplates(); + for (Map.Entry<String, ToscaNodeTemplate> toscaInputEntry : nodeTemplatesMap.entrySet()) { + ControlLoopElement clElement = new ControlLoopElement(); + clElement.setId(UUID.randomUUID()); + + ToscaConceptIdentifier clElementParticipantId = new ToscaConceptIdentifier(); + clElementParticipantId.setName(toscaInputEntry.getKey()); + clElementParticipantId.setVersion(toscaInputEntry.getValue().getVersion()); + clElement.setParticipantId(clElementParticipantId); + + clElement.setDefinition(clElementParticipantId); + clElement.setState(ControlLoopState.UNINITIALISED); + clElement.setDescription(toscaInputEntry.getValue().getDescription()); + clElement.setOrderedState(ControlLoopOrderedState.UNINITIALISED); + elements.add(clElement); + } + controlLoop.setElements(elements); + controlLoop.setName("PMSHInstance0"); + controlLoop.setVersion("1.0.0"); + controlLoop.setDefinition(controlLoopId); + clUpdateMsg.setControlLoop(controlLoop); + clUpdateMsg.setControlLoopDefinition(toscaServiceTemplate); + + return clUpdateMsg; + } + + /** + * Method to create ParticipantControlLoopUpdate using the arguments passed. + * + * @param jsonFilePath the path of the controlloop content + * + * @return ParticipantControlLoopUpdate message + * @throws CoderException exception while reading the file to object + */ + public static ParticipantControlLoopUpdate createParticipantClUpdateMsgFromJson(String jsonFilePath) + throws CoderException { + ParticipantControlLoopUpdate participantControlLoopUpdateMsg = + CODER.decode(new File(jsonFilePath), ParticipantControlLoopUpdate.class); + return participantControlLoopUpdateMsg; + } + private static ToscaServiceTemplate testControlLoopRead() { - Set<String> controlLoopDirectoryContents = ResourceUtils - .getDirectoryContents("src/test/resources/rest/servicetemplates"); + Set<String> controlLoopDirectoryContents = + ResourceUtils.getDirectoryContents("src/test/resources/rest/servicetemplates"); boolean atLeastOneControlLoopTested = false; ToscaServiceTemplate toscaServiceTemplate = null; diff --git a/tosca-controlloop/participant/participant-impl/participant-impl-simulator/src/test/java/org/onap/policy/clamp/controlloop/participant/simulator/main/rest/TestSimulationRestController.java b/tosca-controlloop/participant/participant-impl/participant-impl-simulator/src/test/java/org/onap/policy/clamp/controlloop/participant/simulator/main/rest/TestSimulationRestController.java index 7adc88d09..1b2b87cfb 100644 --- a/tosca-controlloop/participant/participant-impl/participant-impl-simulator/src/test/java/org/onap/policy/clamp/controlloop/participant/simulator/main/rest/TestSimulationRestController.java +++ b/tosca-controlloop/participant/participant-impl/participant-impl-simulator/src/test/java/org/onap/policy/clamp/controlloop/participant/simulator/main/rest/TestSimulationRestController.java @@ -1,6 +1,6 @@ /*- * ============LICENSE_START======================================================= - * Copyright (C) 2019 Nordix Foundation. + * Copyright (C) 2021 Nordix Foundation. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -20,12 +20,14 @@ package org.onap.policy.clamp.controlloop.participant.simulator.main.rest; +import static org.assertj.core.api.Assertions.assertThat; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; -import java.util.ArrayList; import java.util.List; import javax.ws.rs.client.Entity; import javax.ws.rs.client.Invocation; +import javax.ws.rs.core.GenericType; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; import org.junit.AfterClass; @@ -36,8 +38,12 @@ import org.onap.policy.clamp.controlloop.models.controlloop.concepts.ControlLoop import org.onap.policy.clamp.controlloop.models.controlloop.concepts.ControlLoopOrderedState; import org.onap.policy.clamp.controlloop.models.controlloop.concepts.Participant; import org.onap.policy.clamp.controlloop.models.controlloop.concepts.ParticipantState; +import org.onap.policy.clamp.controlloop.models.messages.dmaap.participant.ParticipantControlLoopUpdate; import org.onap.policy.clamp.controlloop.models.messages.rest.TypedSimpleResponse; +import org.onap.policy.clamp.controlloop.participant.intermediary.comm.ControlLoopUpdateListener; import org.onap.policy.clamp.controlloop.participant.simulator.main.parameters.CommonTestData; +import org.onap.policy.clamp.controlloop.participant.simulator.simulation.SimulationHandler; +import org.onap.policy.clamp.controlloop.participant.simulator.simulation.SimulationProvider; import org.onap.policy.common.endpoints.event.comm.Topic.CommInfrastructure; import org.onap.policy.models.tosca.authorative.concepts.ToscaConceptIdentifier; @@ -45,20 +51,30 @@ import org.onap.policy.models.tosca.authorative.concepts.ToscaConceptIdentifier; * Class to perform unit test of {@link TestSimulationRestController}. */ public class TestSimulationRestController extends CommonParticipantRestServer { + + private static ControlLoopUpdateListener clUpdateListener; private static final String PARTICIPANTS_ENDPOINT = "participants"; private static final String ELEMENTS_ENDPOINT = "elements"; private static final CommInfrastructure INFRA = CommInfrastructure.NOOP; private static final String TOPIC = "my-topic"; static CommonTestData commonTestData = new CommonTestData(); - private static RestController restController; /** - * Setup before class, instantiate SimulationProvider. + * Setup before class. * */ @BeforeClass public static void setUpBeforeClass() throws Exception { CommonParticipantRestServer.setUpBeforeClass(); + clUpdateListener = new ControlLoopUpdateListener( + SimulationHandler.getInstance() + .getSimulationProvider() + .getIntermediaryApi() + .getParticipantHandler()); + ParticipantControlLoopUpdate participantControlLoopUpdateMsg = + TestListenerUtils.createControlLoopUpdateMsg(); + participantControlLoopUpdateMsg.getControlLoop().setOrderedState(ControlLoopOrderedState.PASSIVE); + clUpdateListener.onTopicEvent(INFRA, TOPIC, null, participantControlLoopUpdateMsg); } @AfterClass @@ -88,35 +104,38 @@ public class TestSimulationRestController extends CommonParticipantRestServer { // GET REST call for querying the participants Invocation.Builder invocationBuilder = - super.sendRequest(PARTICIPANTS_ENDPOINT + "/" + participant.getKey().getName() - + "/" + participant.getVersion()); + super.sendRequest(PARTICIPANTS_ENDPOINT + "/" + participant.getKey().getName() + + "/" + participant.getVersion()); Response rawresp = invocationBuilder.buildGet().invoke(); - // Response is not OK, as handling is not done - assertEquals(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode(), rawresp.getStatus()); + assertEquals(Response.Status.OK.getStatusCode(), rawresp.getStatus()); + List<Participant> returnValue = rawresp.readEntity(new GenericType<List<Participant>>() {}); + assertNotNull(returnValue); + assertThat(returnValue).hasSize(1); + // Verify the result of GET participants with what is stored + assertEquals(participant.getDefinition(), returnValue.get(0).getDefinition()); } @Test public void testQueryControlLoopElements() throws Exception { // GET REST call for querying the controlLoop elements - Invocation.Builder invocationBuilder = - super.sendRequest(ELEMENTS_ENDPOINT + "/" + "PMSHInstance0" + "/" + "1.0.0"); + Invocation.Builder invocationBuilder = super.sendRequest(ELEMENTS_ENDPOINT + "/" + + "PMSHInstance0" + "/" + "1.0.0"); Response rawresp = invocationBuilder.buildGet().invoke(); - // Response is not OK, as handling is not done - assertEquals(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode(), rawresp.getStatus()); + assertEquals(Response.Status.OK.getStatusCode(), rawresp.getStatus()); + List<ControlLoopElement> returnValue = rawresp.readEntity(new GenericType<List<ControlLoopElement>>() {}); + assertNotNull(returnValue); + // Verify the result of GET controlloop elements with what is stored + assertThat(returnValue).hasSize(4); + assertEquals("org.onap.PM_Subscription_Handler", returnValue.get(0).getDefinition().getName()); } @Test public void testUpdateParticipant() throws Exception { - Participant participant = new Participant(); - ToscaConceptIdentifier participantId = CommonTestData.getParticipantId(); - participant.setDefinition(participantId); - participant.setName(participantId.getName()); - participant.setVersion(participantId.getVersion()); - - List<Participant> participants = new ArrayList<>(); - participants.add(participant); + SimulationProvider provider = SimulationHandler.getInstance().getSimulationProvider(); + List<Participant> participants = provider.getParticipants(CommonTestData.getParticipantId().getName(), + CommonTestData.getParticipantId().getVersion()); assertEquals(ParticipantState.UNKNOWN, participants.get(0).getParticipantState()); // Change the state of the participant to PASSIVE from UNKNOWN participants.get(0).setParticipantState(ParticipantState.PASSIVE); @@ -126,14 +145,19 @@ public class TestSimulationRestController extends CommonParticipantRestServer { Invocation.Builder invocationBuilder = sendRequest(PARTICIPANTS_ENDPOINT); Response rawresp = invocationBuilder.put(entParticipant); TypedSimpleResponse<Participant> resp = rawresp.readEntity(TypedSimpleResponse.class); - // Response is not OK, as handling is not done - assertEquals(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode(), rawresp.getStatus()); + assertEquals(Response.Status.OK.getStatusCode(), rawresp.getStatus()); + assertNotNull(resp.getResponse()); + // Verify the response and state returned by PUT REST call for updating participants + assertThat(resp.toString()).contains("definition={name=org.onap.PM_CDS_Blueprint, version=1.0.0}"); + assertThat(resp.toString()).contains("participantState=PASSIVE"); } @Test public void testUpdateControlLoopElement() throws Exception { ControlLoop controlLoop = TestListenerUtils.createControlLoop(); - List<ControlLoopElement> controlLoopElements = controlLoop.getElements(); + SimulationProvider provider = SimulationHandler.getInstance().getSimulationProvider(); + List<ControlLoopElement> controlLoopElements = provider.getControlLoopElements( + controlLoop.getDefinition().getName(), controlLoop.getDefinition().getVersion()); // Check the initial state on the ControlLoopElement, which is UNINITIALISED assertEquals(ControlLoopOrderedState.UNINITIALISED, controlLoopElements.get(0).getOrderedState()); @@ -146,8 +170,10 @@ public class TestSimulationRestController extends CommonParticipantRestServer { Invocation.Builder invocationBuilder = sendRequest(ELEMENTS_ENDPOINT); Response rawresp = invocationBuilder.put(entClElement); TypedSimpleResponse<ControlLoopElement> resp = rawresp.readEntity(TypedSimpleResponse.class); - // Response is not OK, as handling is not done - assertEquals(Response.Status.INTERNAL_SERVER_ERROR.getStatusCode(), rawresp.getStatus()); + assertEquals(Response.Status.OK.getStatusCode(), rawresp.getStatus()); + assertNotNull(resp.getResponse()); + // Verify the response and state returned by PUT REST call for updating participants + assertThat(resp.toString()).contains("definition={name=org.onap.PM_Subscription_Handler, version=0.0.0}"); + assertThat(resp.toString()).contains("orderedState=PASSIVE"); } } - diff --git a/tosca-controlloop/participant/participant-impl/participant-impl-simulator/src/test/java/org/onap/policy/clamp/controlloop/participant/simulator/main/startstop/TestMain.java b/tosca-controlloop/participant/participant-impl/participant-impl-simulator/src/test/java/org/onap/policy/clamp/controlloop/participant/simulator/main/startstop/TestMain.java index 137bec205..5a5ad8931 100644 --- a/tosca-controlloop/participant/participant-impl/participant-impl-simulator/src/test/java/org/onap/policy/clamp/controlloop/participant/simulator/main/startstop/TestMain.java +++ b/tosca-controlloop/participant/participant-impl/participant-impl-simulator/src/test/java/org/onap/policy/clamp/controlloop/participant/simulator/main/startstop/TestMain.java @@ -23,13 +23,9 @@ package org.onap.policy.clamp.controlloop.participant.simulator.main.startstop; import static org.assertj.core.api.Assertions.assertThatCode; import static org.assertj.core.api.Assertions.assertThatThrownBy; import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; -import org.junit.AfterClass; -import org.junit.BeforeClass; import org.junit.Test; -import org.onap.policy.clamp.controlloop.common.ControlLoopConstants; import org.onap.policy.clamp.controlloop.common.exception.ControlLoopRuntimeException; import org.onap.policy.common.utils.resources.MessageConstants; |