From c6012167b9692eb38bcb479f233543e93c51c998 Mon Sep 17 00:00:00 2001 From: Jim Hahn Date: Thu, 2 Jul 2020 09:30:52 -0400 Subject: Rename XxxActorServiceProvider to XxxActor Renamed the actors and their test classes. Addressed review comments: - some license dates Issue-ID: POLICY-2684 Change-Id: Ic9d83e146ef36bb305496d541166cb9f80544025 Signed-off-by: Jim Hahn --- .../policy/controlloop/actor/sdnr/SdnrActor.java | 304 +++++++++++++++++++++ .../actor/sdnr/SdnrActorServiceProvider.java | 304 --------------------- ...licy.controlloop.actorserviceprovider.spi.Actor | 2 +- .../actor/sdnr/SdnrActorServiceProviderTest.java | 203 -------------- .../controlloop/actor/sdnr/SdnrActorTest.java | 203 ++++++++++++++ 5 files changed, 508 insertions(+), 508 deletions(-) create mode 100644 models-interactions/model-actors/actor.sdnr/src/main/java/org/onap/policy/controlloop/actor/sdnr/SdnrActor.java delete mode 100644 models-interactions/model-actors/actor.sdnr/src/main/java/org/onap/policy/controlloop/actor/sdnr/SdnrActorServiceProvider.java delete mode 100644 models-interactions/model-actors/actor.sdnr/src/test/java/org/onap/policy/controlloop/actor/sdnr/SdnrActorServiceProviderTest.java create mode 100644 models-interactions/model-actors/actor.sdnr/src/test/java/org/onap/policy/controlloop/actor/sdnr/SdnrActorTest.java (limited to 'models-interactions/model-actors/actor.sdnr/src') diff --git a/models-interactions/model-actors/actor.sdnr/src/main/java/org/onap/policy/controlloop/actor/sdnr/SdnrActor.java b/models-interactions/model-actors/actor.sdnr/src/main/java/org/onap/policy/controlloop/actor/sdnr/SdnrActor.java new file mode 100644 index 000000000..b9f477d30 --- /dev/null +++ b/models-interactions/model-actors/actor.sdnr/src/main/java/org/onap/policy/controlloop/actor/sdnr/SdnrActor.java @@ -0,0 +1,304 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP + * ================================================================================ + * Copyright (C) 2018 Wipro Limited Intellectual Property. All rights reserved. + * Modifications Copyright (C) 2019-2020 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * 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. + * ============LICENSE_END========================================================= + */ + +package org.onap.policy.controlloop.actor.sdnr; + +import com.google.common.collect.ImmutableList; +import com.google.common.collect.ImmutableMap; +import java.util.Collections; +import java.util.List; +import org.apache.commons.lang3.tuple.Pair; +import org.onap.policy.controlloop.ControlLoopOperation; +import org.onap.policy.controlloop.ControlLoopResponse; +import org.onap.policy.controlloop.VirtualControlLoopEvent; +import org.onap.policy.controlloop.actorserviceprovider.Operator; +import org.onap.policy.controlloop.actorserviceprovider.impl.BidirectionalTopicActor; +import org.onap.policy.controlloop.actorserviceprovider.impl.BidirectionalTopicOperator; +import org.onap.policy.controlloop.actorserviceprovider.parameters.BidirectionalTopicActorParams; +import org.onap.policy.controlloop.policy.Policy; +import org.onap.policy.controlloop.policy.PolicyResult; +import org.onap.policy.sdnr.PciCommonHeader; +import org.onap.policy.sdnr.PciRequest; +import org.onap.policy.sdnr.PciRequestWrapper; +import org.onap.policy.sdnr.PciResponse; +import org.onap.policy.sdnr.PciResponseCode; +import org.onap.policy.sdnr.PciResponseWrapper; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * SDNR is an unusual actor in that it uses a single, generic operator to initiate all + * operation types. The action taken is always the same, only the operation name changes. + */ +public class SdnrActor extends BidirectionalTopicActor { + + public static final String NAME = "SDNR"; + + // TODO old code: remove lines down to **HERE** + + private static final Logger logger = LoggerFactory.getLogger(SdnrActor.class); + + // Strings for targets + private static final String TARGET_VNF = "VNF"; + + // Strings for recipes + private static final String RECIPE_MODIFY = "ModifyConfig"; + + /* To be used in future releases when pci ModifyConfig is used */ + private static final String SDNR_REQUEST_PARAMS = "request-parameters"; + private static final String SDNR_CONFIG_PARAMS = "configuration-parameters"; + + private static final ImmutableList recipes = ImmutableList.of(RECIPE_MODIFY); + private static final ImmutableMap> targets = new ImmutableMap.Builder>() + .put(RECIPE_MODIFY, ImmutableList.of(TARGET_VNF)).build(); + private static final ImmutableMap> payloads = new ImmutableMap.Builder>() + .put(RECIPE_MODIFY, ImmutableList.of(SDNR_REQUEST_PARAMS, SDNR_CONFIG_PARAMS)).build(); + + // **HERE** + + /** + * Constructor. + */ + public SdnrActor() { + super(NAME, BidirectionalTopicActorParams.class); + + addOperator(new BidirectionalTopicOperator(NAME, SdnrOperation.NAME, this, SdnrOperation.SELECTOR_KEYS, + SdnrOperation::new)); + } + + @Override + public Operator getOperator(String name) { + /* + * All operations are managed by the same operator, regardless of the name. + */ + return super.getOperator(SdnrOperation.NAME); + } + + // TODO old code: remove lines down to **HERE** + + @Override + public String actor() { + return NAME; + } + + @Override + public List recipes() { + return ImmutableList.copyOf(recipes); + } + + @Override + public List recipeTargets(String recipe) { + return ImmutableList.copyOf(targets.getOrDefault(recipe, Collections.emptyList())); + } + + @Override + public List recipePayloads(String recipe) { + return ImmutableList.copyOf(payloads.getOrDefault(recipe, Collections.emptyList())); + } + + /** + * Constructs an SDNR request conforming to the pci API. The actual request is + * constructed and then placed in a wrapper object used to send through DMAAP. + * + * @param onset + * the event that is reporting the alert for policy to perform an + * action + * @param operation + * the control loop operation specifying the actor, operation, + * target, etc. + * @param policy + * the policy the was specified from the yaml generated by CLAMP or + * through the Policy GUI/API + * @return an SDNR request conforming to the pci API using the DMAAP wrapper + */ + + public static PciRequestWrapper constructRequest(VirtualControlLoopEvent onset, ControlLoopOperation operation, + Policy policy) { + + /* Construct an SDNR request using pci Model */ + + /* + * The actual pci request is placed in a wrapper used to send through dmaap. The + * current version is 2.0 as of R1. + */ + PciRequestWrapper dmaapRequest = new PciRequestWrapper(); + dmaapRequest.setVersion("1.0"); + dmaapRequest.setCorrelationId(onset.getRequestId() + "-" + operation.getSubRequestId()); + dmaapRequest.setRpcName(policy.getRecipe().toLowerCase()); + dmaapRequest.setType("request"); + + /* This is the actual request that is placed in the dmaap wrapper. */ + final PciRequest sdnrRequest = new PciRequest(); + + /* The common header is a required field for all SDNR requests. */ + PciCommonHeader requestCommonHeader = new PciCommonHeader(); + requestCommonHeader.setRequestId(onset.getRequestId()); + requestCommonHeader.setSubRequestId(operation.getSubRequestId()); + + sdnrRequest.setCommonHeader(requestCommonHeader); + sdnrRequest.setPayload(onset.getPayload()); + + /* + * An action is required for all SDNR requests, this will be the recipe + * specified in the policy. + */ + sdnrRequest.setAction(policy.getRecipe()); + + /* + * Once the pci request is constructed, add it into the body of the dmaap + * wrapper. + */ + dmaapRequest.setBody(sdnrRequest); + logger.info("SDNR Request to be sent is {}", dmaapRequest); + + /* Return the request to be sent through dmaap. */ + return dmaapRequest; + } + + /** + * Parses the operation attempt using the subRequestId of SDNR response. + * + * @param subRequestId + * the sub id used to send to SDNR, Policy sets this using the + * operation attempt + * + * @return the current operation attempt + */ + public static Integer parseOperationAttempt(String subRequestId) { + Integer operationAttempt; + try { + operationAttempt = Integer.parseInt(subRequestId); + } catch (NumberFormatException e) { + logger.debug("A NumberFormatException was thrown in parsing the operation attempt {}", subRequestId); + return null; + } + return operationAttempt; + } + + /** + * Processes the SDNR pci response sent from SDNR. Determines if the SDNR + * operation was successful/unsuccessful and maps this to the corresponding + * Policy result. + * + * @param dmaapResponse + * the dmaap wrapper message that contains the actual SDNR reponse + * inside the body field + * + * @return an key-value pair that contains the Policy result and SDNR response + * message + */ + public static Pair processResponse( + PciResponseWrapper dmaapResponse) { + + logger.info("SDNR processResponse called : {}", dmaapResponse); + + /* The actual SDNR response is inside the wrapper's body field. */ + PciResponse sdnrResponse = dmaapResponse.getBody(); + + /* The message returned in the SDNR response. */ + String message; + + /* The Policy result determined from the SDNR Response. */ + PolicyResult result; + + /* + * If there is no status, Policy cannot determine if the request was successful. + */ + if (sdnrResponse.getStatus() == null) { + message = "Policy was unable to parse SDN-R response status field (it was null)."; + return Pair.of(PolicyResult.FAILURE_EXCEPTION, message); + } + + /* + * If there is no code, Policy cannot determine if the request was successful. + */ + String responseValue = PciResponseCode.toResponseValue(sdnrResponse.getStatus().getCode()); + if (responseValue == null) { + message = "Policy was unable to parse SDN-R response status code field."; + return Pair.of(PolicyResult.FAILURE_EXCEPTION, message); + } + logger.info("SDNR Response Code is {}", responseValue); + + /* Save the SDNR response's message for Policy notification message. */ + message = sdnrResponse.getStatus().getValue(); + logger.info("SDNR Response Message is {}", message); + + /* + * Response and Payload are just printed and no further action needed in + * casablanca release + */ + String rspPayload = sdnrResponse.getPayload(); + logger.info("SDNR Response Payload is {}", rspPayload); + + /* Maps the SDNR response result to a Policy result. */ + switch (responseValue) { + case PciResponseCode.ACCEPTED: + /* Nothing to do if code is accept, continue processing */ + result = null; + break; + case PciResponseCode.SUCCESS: + result = PolicyResult.SUCCESS; + break; + case PciResponseCode.FAILURE: + result = PolicyResult.FAILURE; + break; + case PciResponseCode.REJECT: + case PciResponseCode.ERROR: + default: + result = PolicyResult.FAILURE_EXCEPTION; + } + return Pair.of(result, message); + } + + /** + * Converts the SDNR response to ControlLoopResponse object. + * + * @param dmaapResponse + * the dmaap wrapper message that contains the actual SDNR reponse + * inside the body field + * + * @return a ControlLoopResponse object to send to DCAE_CL_RSP topic + */ + public static ControlLoopResponse getControlLoopResponse(PciResponseWrapper dmaapResponse, + VirtualControlLoopEvent event) { + + logger.info("SDNR getClosedLoopResponse called : {} {}", dmaapResponse, event); + + /* The actual SDNR response is inside the wrapper's body field. */ + PciResponse sdnrResponse = dmaapResponse.getBody(); + + /* The ControlLoop response determined from the SDNR Response and input event. */ + ControlLoopResponse clRsp = new ControlLoopResponse(); + clRsp.setPayload(sdnrResponse.getPayload()); + clRsp.setFrom(NAME); + clRsp.setTarget("DCAE"); + clRsp.setClosedLoopControlName(event.getClosedLoopControlName()); + clRsp.setPolicyName(event.getPolicyName()); + clRsp.setPolicyVersion(event.getPolicyVersion()); + clRsp.setRequestId(event.getRequestId()); + clRsp.setVersion(event.getVersion()); + logger.info("SDNR getClosedLoopResponse clRsp : {}", clRsp); + + return clRsp; + } + + // **HERE** +} diff --git a/models-interactions/model-actors/actor.sdnr/src/main/java/org/onap/policy/controlloop/actor/sdnr/SdnrActorServiceProvider.java b/models-interactions/model-actors/actor.sdnr/src/main/java/org/onap/policy/controlloop/actor/sdnr/SdnrActorServiceProvider.java deleted file mode 100644 index a43dcf774..000000000 --- a/models-interactions/model-actors/actor.sdnr/src/main/java/org/onap/policy/controlloop/actor/sdnr/SdnrActorServiceProvider.java +++ /dev/null @@ -1,304 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * SdnrActorServiceProvider - * ================================================================================ - * Copyright (C) 2018 Wipro Limited Intellectual Property. All rights reserved. - * Modifications Copyright (C) 2019-2020 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * 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. - * ============LICENSE_END========================================================= - */ - -package org.onap.policy.controlloop.actor.sdnr; - -import com.google.common.collect.ImmutableList; -import com.google.common.collect.ImmutableMap; -import java.util.Collections; -import java.util.List; -import org.apache.commons.lang3.tuple.Pair; -import org.onap.policy.controlloop.ControlLoopOperation; -import org.onap.policy.controlloop.ControlLoopResponse; -import org.onap.policy.controlloop.VirtualControlLoopEvent; -import org.onap.policy.controlloop.actorserviceprovider.Operator; -import org.onap.policy.controlloop.actorserviceprovider.impl.BidirectionalTopicActor; -import org.onap.policy.controlloop.actorserviceprovider.impl.BidirectionalTopicOperator; -import org.onap.policy.controlloop.actorserviceprovider.parameters.BidirectionalTopicActorParams; -import org.onap.policy.controlloop.policy.Policy; -import org.onap.policy.controlloop.policy.PolicyResult; -import org.onap.policy.sdnr.PciCommonHeader; -import org.onap.policy.sdnr.PciRequest; -import org.onap.policy.sdnr.PciRequestWrapper; -import org.onap.policy.sdnr.PciResponse; -import org.onap.policy.sdnr.PciResponseCode; -import org.onap.policy.sdnr.PciResponseWrapper; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * SDNR is an unusual actor in that it uses a single, generic operator to initiate all - * operation types. The action taken is always the same, only the operation name changes. - */ -public class SdnrActorServiceProvider extends BidirectionalTopicActor { - - public static final String NAME = "SDNR"; - - // TODO old code: remove lines down to **HERE** - - private static final Logger logger = LoggerFactory.getLogger(SdnrActorServiceProvider.class); - - // Strings for targets - private static final String TARGET_VNF = "VNF"; - - // Strings for recipes - private static final String RECIPE_MODIFY = "ModifyConfig"; - - /* To be used in future releases when pci ModifyConfig is used */ - private static final String SDNR_REQUEST_PARAMS = "request-parameters"; - private static final String SDNR_CONFIG_PARAMS = "configuration-parameters"; - - private static final ImmutableList recipes = ImmutableList.of(RECIPE_MODIFY); - private static final ImmutableMap> targets = new ImmutableMap.Builder>() - .put(RECIPE_MODIFY, ImmutableList.of(TARGET_VNF)).build(); - private static final ImmutableMap> payloads = new ImmutableMap.Builder>() - .put(RECIPE_MODIFY, ImmutableList.of(SDNR_REQUEST_PARAMS, SDNR_CONFIG_PARAMS)).build(); - - // **HERE** - - /** - * Constructor. - */ - public SdnrActorServiceProvider() { - super(NAME, BidirectionalTopicActorParams.class); - - addOperator(new BidirectionalTopicOperator(NAME, SdnrOperation.NAME, this, SdnrOperation.SELECTOR_KEYS, - SdnrOperation::new)); - } - - @Override - public Operator getOperator(String name) { - /* - * All operations are managed by the same operator, regardless of the name. - */ - return super.getOperator(SdnrOperation.NAME); - } - - // TODO old code: remove lines down to **HERE** - - @Override - public String actor() { - return NAME; - } - - @Override - public List recipes() { - return ImmutableList.copyOf(recipes); - } - - @Override - public List recipeTargets(String recipe) { - return ImmutableList.copyOf(targets.getOrDefault(recipe, Collections.emptyList())); - } - - @Override - public List recipePayloads(String recipe) { - return ImmutableList.copyOf(payloads.getOrDefault(recipe, Collections.emptyList())); - } - - /** - * Constructs an SDNR request conforming to the pci API. The actual request is - * constructed and then placed in a wrapper object used to send through DMAAP. - * - * @param onset - * the event that is reporting the alert for policy to perform an - * action - * @param operation - * the control loop operation specifying the actor, operation, - * target, etc. - * @param policy - * the policy the was specified from the yaml generated by CLAMP or - * through the Policy GUI/API - * @return an SDNR request conforming to the pci API using the DMAAP wrapper - */ - - public static PciRequestWrapper constructRequest(VirtualControlLoopEvent onset, ControlLoopOperation operation, - Policy policy) { - - /* Construct an SDNR request using pci Model */ - - /* - * The actual pci request is placed in a wrapper used to send through dmaap. The - * current version is 2.0 as of R1. - */ - PciRequestWrapper dmaapRequest = new PciRequestWrapper(); - dmaapRequest.setVersion("1.0"); - dmaapRequest.setCorrelationId(onset.getRequestId() + "-" + operation.getSubRequestId()); - dmaapRequest.setRpcName(policy.getRecipe().toLowerCase()); - dmaapRequest.setType("request"); - - /* This is the actual request that is placed in the dmaap wrapper. */ - final PciRequest sdnrRequest = new PciRequest(); - - /* The common header is a required field for all SDNR requests. */ - PciCommonHeader requestCommonHeader = new PciCommonHeader(); - requestCommonHeader.setRequestId(onset.getRequestId()); - requestCommonHeader.setSubRequestId(operation.getSubRequestId()); - - sdnrRequest.setCommonHeader(requestCommonHeader); - sdnrRequest.setPayload(onset.getPayload()); - - /* - * An action is required for all SDNR requests, this will be the recipe - * specified in the policy. - */ - sdnrRequest.setAction(policy.getRecipe()); - - /* - * Once the pci request is constructed, add it into the body of the dmaap - * wrapper. - */ - dmaapRequest.setBody(sdnrRequest); - logger.info("SDNR Request to be sent is {}", dmaapRequest); - - /* Return the request to be sent through dmaap. */ - return dmaapRequest; - } - - /** - * Parses the operation attempt using the subRequestId of SDNR response. - * - * @param subRequestId - * the sub id used to send to SDNR, Policy sets this using the - * operation attempt - * - * @return the current operation attempt - */ - public static Integer parseOperationAttempt(String subRequestId) { - Integer operationAttempt; - try { - operationAttempt = Integer.parseInt(subRequestId); - } catch (NumberFormatException e) { - logger.debug("A NumberFormatException was thrown in parsing the operation attempt {}", subRequestId); - return null; - } - return operationAttempt; - } - - /** - * Processes the SDNR pci response sent from SDNR. Determines if the SDNR - * operation was successful/unsuccessful and maps this to the corresponding - * Policy result. - * - * @param dmaapResponse - * the dmaap wrapper message that contains the actual SDNR reponse - * inside the body field - * - * @return an key-value pair that contains the Policy result and SDNR response - * message - */ - public static Pair processResponse( - PciResponseWrapper dmaapResponse) { - - logger.info("SDNR processResponse called : {}", dmaapResponse); - - /* The actual SDNR response is inside the wrapper's body field. */ - PciResponse sdnrResponse = dmaapResponse.getBody(); - - /* The message returned in the SDNR response. */ - String message; - - /* The Policy result determined from the SDNR Response. */ - PolicyResult result; - - /* - * If there is no status, Policy cannot determine if the request was successful. - */ - if (sdnrResponse.getStatus() == null) { - message = "Policy was unable to parse SDN-R response status field (it was null)."; - return Pair.of(PolicyResult.FAILURE_EXCEPTION, message); - } - - /* - * If there is no code, Policy cannot determine if the request was successful. - */ - String responseValue = PciResponseCode.toResponseValue(sdnrResponse.getStatus().getCode()); - if (responseValue == null) { - message = "Policy was unable to parse SDN-R response status code field."; - return Pair.of(PolicyResult.FAILURE_EXCEPTION, message); - } - logger.info("SDNR Response Code is {}", responseValue); - - /* Save the SDNR response's message for Policy notification message. */ - message = sdnrResponse.getStatus().getValue(); - logger.info("SDNR Response Message is {}", message); - - /* - * Response and Payload are just printed and no further action needed in - * casablanca release - */ - String rspPayload = sdnrResponse.getPayload(); - logger.info("SDNR Response Payload is {}", rspPayload); - - /* Maps the SDNR response result to a Policy result. */ - switch (responseValue) { - case PciResponseCode.ACCEPTED: - /* Nothing to do if code is accept, continue processing */ - result = null; - break; - case PciResponseCode.SUCCESS: - result = PolicyResult.SUCCESS; - break; - case PciResponseCode.FAILURE: - result = PolicyResult.FAILURE; - break; - case PciResponseCode.REJECT: - case PciResponseCode.ERROR: - default: - result = PolicyResult.FAILURE_EXCEPTION; - } - return Pair.of(result, message); - } - - /** - * Converts the SDNR response to ControlLoopResponse object. - * - * @param dmaapResponse - * the dmaap wrapper message that contains the actual SDNR reponse - * inside the body field - * - * @return a ControlLoopResponse object to send to DCAE_CL_RSP topic - */ - public static ControlLoopResponse getControlLoopResponse(PciResponseWrapper dmaapResponse, - VirtualControlLoopEvent event) { - - logger.info("SDNR getClosedLoopResponse called : {} {}", dmaapResponse, event); - - /* The actual SDNR response is inside the wrapper's body field. */ - PciResponse sdnrResponse = dmaapResponse.getBody(); - - /* The ControlLoop response determined from the SDNR Response and input event. */ - ControlLoopResponse clRsp = new ControlLoopResponse(); - clRsp.setPayload(sdnrResponse.getPayload()); - clRsp.setFrom(NAME); - clRsp.setTarget("DCAE"); - clRsp.setClosedLoopControlName(event.getClosedLoopControlName()); - clRsp.setPolicyName(event.getPolicyName()); - clRsp.setPolicyVersion(event.getPolicyVersion()); - clRsp.setRequestId(event.getRequestId()); - clRsp.setVersion(event.getVersion()); - logger.info("SDNR getClosedLoopResponse clRsp : {}", clRsp); - - return clRsp; - } - - // **HERE** -} diff --git a/models-interactions/model-actors/actor.sdnr/src/main/resources/META-INF/services/org.onap.policy.controlloop.actorserviceprovider.spi.Actor b/models-interactions/model-actors/actor.sdnr/src/main/resources/META-INF/services/org.onap.policy.controlloop.actorserviceprovider.spi.Actor index c8d5e4c41..af71a9ff3 100644 --- a/models-interactions/model-actors/actor.sdnr/src/main/resources/META-INF/services/org.onap.policy.controlloop.actorserviceprovider.spi.Actor +++ b/models-interactions/model-actors/actor.sdnr/src/main/resources/META-INF/services/org.onap.policy.controlloop.actorserviceprovider.spi.Actor @@ -1 +1 @@ -org.onap.policy.controlloop.actor.sdnr.SdnrActorServiceProvider +org.onap.policy.controlloop.actor.sdnr.SdnrActor diff --git a/models-interactions/model-actors/actor.sdnr/src/test/java/org/onap/policy/controlloop/actor/sdnr/SdnrActorServiceProviderTest.java b/models-interactions/model-actors/actor.sdnr/src/test/java/org/onap/policy/controlloop/actor/sdnr/SdnrActorServiceProviderTest.java deleted file mode 100644 index 799872d08..000000000 --- a/models-interactions/model-actors/actor.sdnr/src/test/java/org/onap/policy/controlloop/actor/sdnr/SdnrActorServiceProviderTest.java +++ /dev/null @@ -1,203 +0,0 @@ -/*- - * SdnrActorServiceProviderTest - * ================================================================================ - * Copyright (C) 2018 Wipro Limited Intellectual Property. All rights reserved. - * Modifications Copyright (C) 2019 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * 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. - * ============LICENSE_END========================================================= - */ - -package org.onap.policy.controlloop.actor.sdnr; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertSame; -import static org.junit.Assert.assertTrue; - -import java.time.Instant; -import java.util.Arrays; -import java.util.HashMap; -import java.util.UUID; -import java.util.stream.Collectors; -import org.junit.Test; -import org.onap.policy.controlloop.ControlLoopEventStatus; -import org.onap.policy.controlloop.ControlLoopOperation; -import org.onap.policy.controlloop.ControlLoopResponse; -import org.onap.policy.controlloop.ControlLoopTargetType; -import org.onap.policy.controlloop.VirtualControlLoopEvent; -import org.onap.policy.controlloop.actor.test.BasicActor; -import org.onap.policy.controlloop.actorserviceprovider.Operator; -import org.onap.policy.controlloop.policy.Policy; -import org.onap.policy.controlloop.policy.Target; -import org.onap.policy.controlloop.policy.TargetType; -import org.onap.policy.sdnr.PciRequest; -import org.onap.policy.sdnr.PciResponse; -import org.onap.policy.sdnr.PciResponseWrapper; -import org.onap.policy.sdnr.util.Serialization; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -public class SdnrActorServiceProviderTest extends BasicActor { - - private static final String MODIFY_CONFIG = "ModifyConfig"; - - private static final Logger logger = LoggerFactory.getLogger(SdnrActorServiceProviderTest.class); - - private static final VirtualControlLoopEvent onsetEvent; - private static final ControlLoopOperation operation; - private static final Policy policy; - - static { - /* - * Construct an onset. Using dummy AAI details since the code mandates AAI details. - */ - onsetEvent = new VirtualControlLoopEvent(); - onsetEvent.setClosedLoopControlName("closedLoopControlName-Test"); - onsetEvent.setRequestId(UUID.randomUUID()); - onsetEvent.setClosedLoopEventClient("tca.instance00001"); - onsetEvent.setTargetType(ControlLoopTargetType.VNF); - onsetEvent.setTarget("generic-vnf.vnf-name"); - onsetEvent.setFrom("DCAE"); - onsetEvent.setClosedLoopAlarmStart(Instant.now()); - onsetEvent.setAai(new HashMap<>()); - onsetEvent.getAai().put("generic-vnf.vnf-name", "notused"); - onsetEvent.setClosedLoopEventStatus(ControlLoopEventStatus.ONSET); - onsetEvent.setPayload("some payload"); - - /* Construct an operation with an SDNR actor and ModifyConfig operation. */ - operation = new ControlLoopOperation(); - operation.setActor("SDNR"); - operation.setOperation(MODIFY_CONFIG); - operation.setTarget("VNF"); - operation.setEnd(Instant.now()); - operation.setSubRequestId("1"); - - /* Construct a policy specifying to modify configuration. */ - policy = new Policy(); - policy.setName("Modify PCI Config"); - policy.setDescription("Upon getting the trigger event, modify pci config"); - policy.setActor("SDNR"); - policy.setTarget(new Target(TargetType.VNF)); - policy.getTarget().setResourceID("Eace933104d443b496b8.nodes.heat.vpg"); - policy.setRecipe(MODIFY_CONFIG); - policy.setPayload(null); - policy.setRetry(2); - policy.setTimeout(300); - - } - - @Test - public void testConstructor() { - SdnrActorServiceProvider prov = new SdnrActorServiceProvider(); - assertEquals(0, prov.getSequenceNumber()); - - // verify that it has the operators we expect - var expected = Arrays.asList(SdnrOperation.NAME).stream().sorted().collect(Collectors.toList()); - var actual = prov.getOperationNames().stream().sorted().collect(Collectors.toList()); - - assertEquals(expected.toString(), actual.toString()); - } - - @Test - public void testActorService() { - // verify that it all plugs into the ActorService - verifyActorService(SdnrActorServiceProvider.NAME, "service.yaml"); - } - - @Test - public void testGetOperator() { - SdnrActorServiceProvider sp = new SdnrActorServiceProvider(); - - // should always return the same operator regardless of the name - Operator oper = sp.getOperator("unknown"); - assertNotNull(oper); - assertSame(oper, sp.getOperator("another")); - } - - @Test - public void testGetControlLoopResponse() { - PciRequest sdnrRequest; - sdnrRequest = SdnrActorServiceProvider.constructRequest(onsetEvent, operation, policy).getBody(); - PciResponse sdnrResponse = new PciResponse(sdnrRequest); - sdnrResponse.getStatus().setCode(200); - sdnrResponse.getStatus().setValue("SDNR success"); - sdnrResponse.setPayload("sdnr payload "); - /* Print out request as json to make sure serialization works */ - String jsonResponse = Serialization.gsonPretty.toJson(sdnrResponse); - logger.info(jsonResponse); - PciResponseWrapper pciResponseWrapper = new PciResponseWrapper(); - pciResponseWrapper.setBody(sdnrResponse); - - ControlLoopResponse clRsp = SdnrActorServiceProvider.getControlLoopResponse(pciResponseWrapper, onsetEvent); - assertEquals(clRsp.getClosedLoopControlName(), onsetEvent.getClosedLoopControlName()); - assertEquals(clRsp.getRequestId(), onsetEvent.getRequestId()); - assertEquals(clRsp.getPolicyName(), onsetEvent.getPolicyName()); - assertEquals(clRsp.getPolicyVersion(), onsetEvent.getPolicyVersion()); - assertEquals(clRsp.getVersion(), onsetEvent.getVersion()); - assertEquals("SDNR", clRsp.getFrom()); - assertEquals("DCAE", clRsp.getTarget()); - assertEquals(clRsp.getPayload(), sdnrResponse.getPayload()); - } - - @Test - public void testConstructModifyConfigRequest() { - - PciRequest sdnrRequest; - sdnrRequest = SdnrActorServiceProvider.constructRequest(onsetEvent, operation, policy).getBody(); - - /* The service provider must return a non null SDNR request */ - assertNotNull(sdnrRequest); - - /* A common header is required and cannot be null */ - assertNotNull(sdnrRequest.getCommonHeader()); - assertEquals(sdnrRequest.getCommonHeader().getRequestId(), onsetEvent.getRequestId()); - - /* An action is required and cannot be null */ - assertNotNull(sdnrRequest.getAction()); - assertEquals(MODIFY_CONFIG, sdnrRequest.getAction()); - - /* A payload is required and cannot be null */ - assertNotNull(sdnrRequest.getPayload()); - assertEquals("some payload", sdnrRequest.getPayload()); - - logger.debug("SDNR Request: \n" + sdnrRequest.toString()); - - /* Print out request as json to make sure serialization works */ - String jsonRequest = Serialization.gsonPretty.toJson(sdnrRequest); - logger.debug("JSON Output: \n" + jsonRequest); - - /* The JSON string must contain the following fields */ - assertTrue(jsonRequest.contains("CommonHeader")); - assertTrue(jsonRequest.contains("Action")); - assertTrue(jsonRequest.contains(MODIFY_CONFIG)); - assertTrue(jsonRequest.contains("payload")); - - PciResponse sdnrResponse = new PciResponse(sdnrRequest); - sdnrResponse.getStatus().setCode(200); - sdnrResponse.getStatus().setValue("SDNR success"); - /* Print out request as json to make sure serialization works */ - String jsonResponse = Serialization.gsonPretty.toJson(sdnrResponse); - logger.debug("JSON Output: \n" + jsonResponse); - } - - @Test - public void testMethods() { - SdnrActorServiceProvider sp = new SdnrActorServiceProvider(); - - assertEquals("SDNR", sp.actor()); - assertEquals(1, sp.recipes().size()); - assertEquals("VNF", sp.recipeTargets(MODIFY_CONFIG).get(0)); - assertEquals(2, sp.recipePayloads(MODIFY_CONFIG).size()); - } -} diff --git a/models-interactions/model-actors/actor.sdnr/src/test/java/org/onap/policy/controlloop/actor/sdnr/SdnrActorTest.java b/models-interactions/model-actors/actor.sdnr/src/test/java/org/onap/policy/controlloop/actor/sdnr/SdnrActorTest.java new file mode 100644 index 000000000..48c16d05a --- /dev/null +++ b/models-interactions/model-actors/actor.sdnr/src/test/java/org/onap/policy/controlloop/actor/sdnr/SdnrActorTest.java @@ -0,0 +1,203 @@ +/*- + * ONAP + * ================================================================================ + * Copyright (C) 2018 Wipro Limited Intellectual Property. All rights reserved. + * Modifications Copyright (C) 2019-2020 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * 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. + * ============LICENSE_END========================================================= + */ + +package org.onap.policy.controlloop.actor.sdnr; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertSame; +import static org.junit.Assert.assertTrue; + +import java.time.Instant; +import java.util.Arrays; +import java.util.HashMap; +import java.util.UUID; +import java.util.stream.Collectors; +import org.junit.Test; +import org.onap.policy.controlloop.ControlLoopEventStatus; +import org.onap.policy.controlloop.ControlLoopOperation; +import org.onap.policy.controlloop.ControlLoopResponse; +import org.onap.policy.controlloop.ControlLoopTargetType; +import org.onap.policy.controlloop.VirtualControlLoopEvent; +import org.onap.policy.controlloop.actor.test.BasicActor; +import org.onap.policy.controlloop.actorserviceprovider.Operator; +import org.onap.policy.controlloop.policy.Policy; +import org.onap.policy.controlloop.policy.Target; +import org.onap.policy.controlloop.policy.TargetType; +import org.onap.policy.sdnr.PciRequest; +import org.onap.policy.sdnr.PciResponse; +import org.onap.policy.sdnr.PciResponseWrapper; +import org.onap.policy.sdnr.util.Serialization; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class SdnrActorTest extends BasicActor { + + private static final String MODIFY_CONFIG = "ModifyConfig"; + + private static final Logger logger = LoggerFactory.getLogger(SdnrActorTest.class); + + private static final VirtualControlLoopEvent onsetEvent; + private static final ControlLoopOperation operation; + private static final Policy policy; + + static { + /* + * Construct an onset. Using dummy AAI details since the code mandates AAI details. + */ + onsetEvent = new VirtualControlLoopEvent(); + onsetEvent.setClosedLoopControlName("closedLoopControlName-Test"); + onsetEvent.setRequestId(UUID.randomUUID()); + onsetEvent.setClosedLoopEventClient("tca.instance00001"); + onsetEvent.setTargetType(ControlLoopTargetType.VNF); + onsetEvent.setTarget("generic-vnf.vnf-name"); + onsetEvent.setFrom("DCAE"); + onsetEvent.setClosedLoopAlarmStart(Instant.now()); + onsetEvent.setAai(new HashMap<>()); + onsetEvent.getAai().put("generic-vnf.vnf-name", "notused"); + onsetEvent.setClosedLoopEventStatus(ControlLoopEventStatus.ONSET); + onsetEvent.setPayload("some payload"); + + /* Construct an operation with an SDNR actor and ModifyConfig operation. */ + operation = new ControlLoopOperation(); + operation.setActor("SDNR"); + operation.setOperation(MODIFY_CONFIG); + operation.setTarget("VNF"); + operation.setEnd(Instant.now()); + operation.setSubRequestId("1"); + + /* Construct a policy specifying to modify configuration. */ + policy = new Policy(); + policy.setName("Modify PCI Config"); + policy.setDescription("Upon getting the trigger event, modify pci config"); + policy.setActor("SDNR"); + policy.setTarget(new Target(TargetType.VNF)); + policy.getTarget().setResourceID("Eace933104d443b496b8.nodes.heat.vpg"); + policy.setRecipe(MODIFY_CONFIG); + policy.setPayload(null); + policy.setRetry(2); + policy.setTimeout(300); + + } + + @Test + public void testConstructor() { + SdnrActor prov = new SdnrActor(); + assertEquals(0, prov.getSequenceNumber()); + + // verify that it has the operators we expect + var expected = Arrays.asList(SdnrOperation.NAME).stream().sorted().collect(Collectors.toList()); + var actual = prov.getOperationNames().stream().sorted().collect(Collectors.toList()); + + assertEquals(expected.toString(), actual.toString()); + } + + @Test + public void testActorService() { + // verify that it all plugs into the ActorService + verifyActorService(SdnrActor.NAME, "service.yaml"); + } + + @Test + public void testGetOperator() { + SdnrActor sp = new SdnrActor(); + + // should always return the same operator regardless of the name + Operator oper = sp.getOperator("unknown"); + assertNotNull(oper); + assertSame(oper, sp.getOperator("another")); + } + + @Test + public void testGetControlLoopResponse() { + PciRequest sdnrRequest; + sdnrRequest = SdnrActor.constructRequest(onsetEvent, operation, policy).getBody(); + PciResponse sdnrResponse = new PciResponse(sdnrRequest); + sdnrResponse.getStatus().setCode(200); + sdnrResponse.getStatus().setValue("SDNR success"); + sdnrResponse.setPayload("sdnr payload "); + /* Print out request as json to make sure serialization works */ + String jsonResponse = Serialization.gsonPretty.toJson(sdnrResponse); + logger.info(jsonResponse); + PciResponseWrapper pciResponseWrapper = new PciResponseWrapper(); + pciResponseWrapper.setBody(sdnrResponse); + + ControlLoopResponse clRsp = SdnrActor.getControlLoopResponse(pciResponseWrapper, onsetEvent); + assertEquals(clRsp.getClosedLoopControlName(), onsetEvent.getClosedLoopControlName()); + assertEquals(clRsp.getRequestId(), onsetEvent.getRequestId()); + assertEquals(clRsp.getPolicyName(), onsetEvent.getPolicyName()); + assertEquals(clRsp.getPolicyVersion(), onsetEvent.getPolicyVersion()); + assertEquals(clRsp.getVersion(), onsetEvent.getVersion()); + assertEquals("SDNR", clRsp.getFrom()); + assertEquals("DCAE", clRsp.getTarget()); + assertEquals(clRsp.getPayload(), sdnrResponse.getPayload()); + } + + @Test + public void testConstructModifyConfigRequest() { + + PciRequest sdnrRequest; + sdnrRequest = SdnrActor.constructRequest(onsetEvent, operation, policy).getBody(); + + /* The service provider must return a non null SDNR request */ + assertNotNull(sdnrRequest); + + /* A common header is required and cannot be null */ + assertNotNull(sdnrRequest.getCommonHeader()); + assertEquals(sdnrRequest.getCommonHeader().getRequestId(), onsetEvent.getRequestId()); + + /* An action is required and cannot be null */ + assertNotNull(sdnrRequest.getAction()); + assertEquals(MODIFY_CONFIG, sdnrRequest.getAction()); + + /* A payload is required and cannot be null */ + assertNotNull(sdnrRequest.getPayload()); + assertEquals("some payload", sdnrRequest.getPayload()); + + logger.debug("SDNR Request: \n" + sdnrRequest.toString()); + + /* Print out request as json to make sure serialization works */ + String jsonRequest = Serialization.gsonPretty.toJson(sdnrRequest); + logger.debug("JSON Output: \n" + jsonRequest); + + /* The JSON string must contain the following fields */ + assertTrue(jsonRequest.contains("CommonHeader")); + assertTrue(jsonRequest.contains("Action")); + assertTrue(jsonRequest.contains(MODIFY_CONFIG)); + assertTrue(jsonRequest.contains("payload")); + + PciResponse sdnrResponse = new PciResponse(sdnrRequest); + sdnrResponse.getStatus().setCode(200); + sdnrResponse.getStatus().setValue("SDNR success"); + /* Print out request as json to make sure serialization works */ + String jsonResponse = Serialization.gsonPretty.toJson(sdnrResponse); + logger.debug("JSON Output: \n" + jsonResponse); + } + + @Test + public void testMethods() { + SdnrActor sp = new SdnrActor(); + + assertEquals("SDNR", sp.actor()); + assertEquals(1, sp.recipes().size()); + assertEquals("VNF", sp.recipeTargets(MODIFY_CONFIG).get(0)); + assertEquals(2, sp.recipePayloads(MODIFY_CONFIG).size()); + } +} -- cgit 1.2.3-korg