Make targetEntity a property
[policy/models.git] / models-interactions / model-actors / actor.appclcm / src / test / java / org / onap / policy / controlloop / actor / appclcm / AppcLcmOperationTest.java
index 9744d82..f3b3cc2 100644 (file)
 
 package org.onap.policy.controlloop.actor.appclcm;
 
+import static org.assertj.core.api.Assertions.assertThat;
 import static org.assertj.core.api.Assertions.assertThatIllegalArgumentException;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotEquals;
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertSame;
 import static org.junit.Assert.assertTrue;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
 
 import java.util.Arrays;
+import java.util.List;
 import java.util.Map;
 import java.util.Set;
 import java.util.concurrent.CompletableFuture;
 import java.util.concurrent.atomic.AtomicBoolean;
 import java.util.stream.Collectors;
-import org.apache.commons.lang3.tuple.Pair;
 import org.junit.After;
 import org.junit.AfterClass;
 import org.junit.Before;
@@ -55,6 +56,7 @@ import org.onap.policy.common.utils.coder.StandardCoder;
 import org.onap.policy.controlloop.ControlLoopOperation;
 import org.onap.policy.controlloop.actor.test.BasicBidirectionalTopicOperation;
 import org.onap.policy.controlloop.actorserviceprovider.OperationOutcome;
+import org.onap.policy.controlloop.actorserviceprovider.OperationProperties;
 import org.onap.policy.controlloop.actorserviceprovider.controlloop.ControlLoopEventContext;
 import org.onap.policy.controlloop.actorserviceprovider.impl.BidirectionalTopicOperation.Status;
 import org.onap.policy.controlloop.actorserviceprovider.parameters.BidirectionalTopicConfig;
@@ -64,7 +66,7 @@ import org.onap.policy.controlloop.policy.Target;
 import org.onap.policy.simulators.AppcLcmTopicServer;
 import org.onap.policy.simulators.TopicServer;
 
-public class AppcLcmOperationTest extends BasicBidirectionalTopicOperation {
+public class AppcLcmOperationTest extends BasicBidirectionalTopicOperation<AppcLcmDmaapWrapper> {
 
     private static final String EXPECTED_EXCEPTION = "expected exception";
     private static final String PAYLOAD_KEY1 = "key-A";
@@ -104,8 +106,7 @@ public class AppcLcmOperationTest extends BasicBidirectionalTopicOperation {
         super.tearDownBasic();
     }
 
-    @SuppressWarnings("rawtypes")
-    protected TopicServer makeServer(TopicSink sink, TopicSource source) {
+    protected TopicServer<AppcLcmDmaapWrapper> makeServer(TopicSink sink, TopicSource source) {
         return new AppcLcmTopicServer(sink, source);
     }
 
@@ -129,17 +130,18 @@ public class AppcLcmOperationTest extends BasicBidirectionalTopicOperation {
 
         outcome = oper.start().get();
         assertEquals(PolicyResult.SUCCESS, outcome.getResult());
+        assertTrue(outcome.getResponse() instanceof AppcLcmDmaapWrapper);
     }
 
     @Test
     public void testConstructor() {
         assertEquals(DEFAULT_ACTOR, oper.getActorName());
         assertEquals(DEFAULT_OPERATION, oper.getName());
+    }
 
-        // missing target entity
-        params = params.toBuilder().targetEntity("").build();
-        assertThatIllegalArgumentException().isThrownBy(() -> new AppcLcmOperation(params, config))
-                        .withMessage("missing targetEntity");
+    @Test
+    public void testGetPropertyNames() {
+        assertThat(oper.getPropertyNames()).isEqualTo(List.of(OperationProperties.AAI_TARGET_ENTITY));
     }
 
     @Test
@@ -165,16 +167,17 @@ public class AppcLcmOperationTest extends BasicBidirectionalTopicOperation {
 
         assertTrue(executor.runAll(100));
         assertTrue(future2.isDone());
-        assertEquals(PolicyResult.SUCCESS, future2.get().getResult());
+        outcome = future2.get();
+        assertEquals(PolicyResult.SUCCESS, outcome.getResult());
     }
 
     @Test
     public void testMakeRequest() {
-        Pair<String, AppcLcmDmaapWrapper> result = oper.makeRequest(2);
-        String subreq = result.getLeft();
+        oper.generateSubRequestId(2);
+        String subreq = oper.getSubRequestId();
         assertNotNull(subreq);
 
-        AppcLcmDmaapWrapper request = result.getRight();
+        AppcLcmDmaapWrapper request = oper.makeRequest(2);
         assertEquals("DefaultOperation", request.getBody().getInput().getAction());
 
         AppcLcmCommonHeader header = request.getBody().getInput().getCommonHeader();
@@ -185,11 +188,8 @@ public class AppcLcmOperationTest extends BasicBidirectionalTopicOperation {
 
         assertEquals("{vnf-id=my-target}", request.getBody().getInput().getActionIdentifiers().toString());
 
-        // a subsequent request should have a different sub-request id
-        result = oper.makeRequest(2);
-        assertNotEquals(subreq, result.getLeft());
-        assertNotNull(result.getLeft());
-        assertEquals(result.getLeft(), result.getRight().getBody().getInput().getCommonHeader().getSubRequestId());
+        request = oper.makeRequest(2);
+        assertEquals(subreq, request.getBody().getInput().getCommonHeader().getSubRequestId());
     }
 
     @Test
@@ -198,13 +198,14 @@ public class AppcLcmOperationTest extends BasicBidirectionalTopicOperation {
         params = params.toBuilder().operation(AppcLcmConstants.OPERATION_CONFIG_MODIFY).build();
         oper = new AppcLcmOperation(params, config);
 
-        AppcLcmDmaapWrapper req = oper.makeRequest(2).getRight();
+        oper.generateSubRequestId(2);
+        AppcLcmDmaapWrapper req = oper.makeRequest(2);
         assertEquals("{\"key-A\":\"value-A\"}", req.getBody().getInput().getPayload());
 
         // coder exception
         oper = new AppcLcmOperation(params, config) {
             @Override
-            protected Coder makeCoder() {
+            protected Coder getCoder() {
                 return new StandardCoder() {
                     @Override
                     public String encode(Object object) throws CoderException {
@@ -214,13 +215,16 @@ public class AppcLcmOperationTest extends BasicBidirectionalTopicOperation {
             }
         };
 
+        oper.generateSubRequestId(2);
+
         assertThatIllegalArgumentException().isThrownBy(() -> oper.makeRequest(2))
                         .withMessage("Cannot convert payload");
     }
 
     @Test
     public void testGetExpectedKeyValues() {
-        AppcLcmDmaapWrapper request = oper.makeRequest(2).getRight();
+        oper.generateSubRequestId(2);
+        AppcLcmDmaapWrapper request = oper.makeRequest(2);
         assertEquals(Arrays.asList(request.getBody().getInput().getCommonHeader().getSubRequestId()),
                         oper.getExpectedKeyValues(50, request));
     }
@@ -259,21 +263,25 @@ public class AppcLcmOperationTest extends BasicBidirectionalTopicOperation {
         oper.setOutcome(outcome, PolicyResult.SUCCESS, response);
         assertEquals(PolicyResult.SUCCESS, outcome.getResult());
         assertEquals(MY_MESSAGE, outcome.getMessage());
+        assertSame(response, outcome.getResponse());
 
         // failure
         oper.setOutcome(outcome, PolicyResult.FAILURE, response);
         assertEquals(PolicyResult.FAILURE, outcome.getResult());
         assertEquals(MY_MESSAGE, outcome.getMessage());
+        assertSame(response, outcome.getResponse());
 
         // null message
         response.getBody().getOutput().getStatus().setMessage(null);
         oper.setOutcome(outcome, PolicyResult.SUCCESS, response);
         assertEquals(ControlLoopOperation.SUCCESS_MSG, outcome.getMessage());
+        assertSame(response, outcome.getResponse());
 
         // null status
         response.getBody().getOutput().setStatus(null);
         oper.setOutcome(outcome, PolicyResult.SUCCESS, response);
         assertEquals(ControlLoopOperation.SUCCESS_MSG, outcome.getMessage());
+        assertSame(response, outcome.getResponse());
     }
 
     @Test