Skip preprocessor step in Actors
[policy/models.git] / models-interactions / model-actors / actor.appc / src / test / java / org / onap / policy / controlloop / actor / appc / AppcOperationTest.java
index 8b71b61..4bbb057 100644 (file)
@@ -22,42 +22,61 @@ package org.onap.policy.controlloop.actor.appc;
 
 import static org.assertj.core.api.Assertions.assertThatIllegalArgumentException;
 import static org.junit.Assert.assertEquals;
-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 java.util.Arrays;
+import java.util.Collections;
 import java.util.Map;
 import java.util.TreeMap;
+import org.junit.After;
+import org.junit.AfterClass;
 import org.junit.Before;
+import org.junit.BeforeClass;
 import org.junit.Test;
 import org.onap.policy.appc.CommonHeader;
 import org.onap.policy.appc.Request;
 import org.onap.policy.appc.ResponseCode;
 import org.onap.policy.appc.ResponseStatus;
 import org.onap.policy.controlloop.actorserviceprovider.impl.BidirectionalTopicOperation.Status;
+import org.onap.policy.controlloop.actorserviceprovider.parameters.BidirectionalTopicConfig;
+import org.onap.policy.controlloop.actorserviceprovider.parameters.ControlLoopOperationParams;
 import org.onap.policy.controlloop.policy.PolicyResult;
 
 public class AppcOperationTest extends BasicAppcOperation {
     private AppcOperation oper;
 
+    @BeforeClass
+    public static void setUpBeforeClass() throws Exception {
+        // use same topic name for both sides
+        initBeforeClass(MY_SINK, MY_SINK);
+    }
+
+    @AfterClass
+    public static void tearDownAfterClass() {
+        destroyAfterClass();
+    }
+
     /**
      * Sets up.
      */
     @Before
+    @Override
     public void setUp() throws Exception {
         super.setUp();
 
-        oper = new AppcOperation(params, config) {
-            @Override
-            protected Request makeRequest(int attempt) {
-                return oper.makeRequest(attempt, MY_VNF);
-            }
-        };
+        oper = new MyOper(params, config);
+    }
+
+    @After
+    @Override
+    public void tearDown() {
+        super.tearDown();
     }
 
     @Test
-    public void testAppcOperation() {
+    public void testConstructor() {
         assertEquals(DEFAULT_ACTOR, oper.getActorName());
         assertEquals(DEFAULT_OPERATION, oper.getName());
     }
@@ -67,8 +86,21 @@ public class AppcOperationTest extends BasicAppcOperation {
         assertNotNull(oper.startPreprocessorAsync());
     }
 
+    /**
+     * Tests startPreprocessorAsync(), when preprocessing is disabled.
+     */
+    @Test
+    public void testStartPreprocessorAsyncDisabled() {
+        params = params.toBuilder().preprocessed(true).build();
+        assertNull(new MyOper(params, config).startPreprocessorAsync());
+    }
+
     @Test
     public void testMakeRequest() {
+        oper.generateSubRequestId(2);
+        String subreq = oper.getSubRequestId();
+        assertNotNull(subreq);
+
         Request request = oper.makeRequest(2, MY_VNF);
         assertEquals(DEFAULT_OPERATION, request.getAction());
 
@@ -78,20 +110,14 @@ public class AppcOperationTest extends BasicAppcOperation {
         assertNotNull(header);
         assertEquals(params.getRequestId(), header.getRequestId());
 
-        String subreq = header.getSubRequestId();
-        assertNotNull(subreq);
+        assertEquals(subreq, header.getSubRequestId());
 
-        // a subsequent request should have a different sub-request id
-        assertNotEquals(subreq, oper.makeRequest(2, MY_VNF).getCommonHeader().getSubRequestId());
+        request = oper.makeRequest(2, MY_VNF);
+        assertEquals(subreq, request.getCommonHeader().getSubRequestId());
 
         // repeat using a null payload
         params = params.toBuilder().payload(null).build();
-        oper = new AppcOperation(params, config) {
-            @Override
-            protected Request makeRequest(int attempt) {
-                return oper.makeRequest(attempt, MY_VNF);
-            }
-        };
+        oper = new MyOper(params, config);
         assertEquals(Map.of(AppcOperation.VNF_ID_KEY, MY_VNF), oper.makeRequest(2, MY_VNF).getPayload());
     }
 
@@ -116,12 +142,7 @@ public class AppcOperationTest extends BasicAppcOperation {
 
         params = params.toBuilder().payload(payload).build();
 
-        oper = new AppcOperation(params, config) {
-            @Override
-            protected Request makeRequest(int attempt) {
-                return oper.makeRequest(attempt, MY_VNF);
-            }
-        };
+        oper = new MyOper(params, config);
         request = oper.makeRequest(2, MY_VNF);
 
         // @formatter:off
@@ -142,12 +163,7 @@ public class AppcOperationTest extends BasicAppcOperation {
         payload.put(KEY3, "def");
         params = params.toBuilder().payload(payload).build();
 
-        oper = new AppcOperation(params, config) {
-            @Override
-            protected Request makeRequest(int attempt) {
-                return oper.makeRequest(attempt, MY_VNF);
-            }
-        };
+        oper = new MyOper(params, config);
         request = oper.makeRequest(2, MY_VNF);
 
         payload.put(AppcOperation.VNF_ID_KEY, MY_VNF);
@@ -160,6 +176,7 @@ public class AppcOperationTest extends BasicAppcOperation {
 
     @Test
     public void testGetExpectedKeyValues() {
+        oper.generateSubRequestId(2);
         Request request = oper.makeRequest(2, MY_VNF);
         assertEquals(Arrays.asList(request.getCommonHeader().getSubRequestId()),
                         oper.getExpectedKeyValues(50, request));
@@ -169,10 +186,9 @@ public class AppcOperationTest extends BasicAppcOperation {
     public void testDetmStatusStringResponse() {
         final ResponseStatus status = response.getStatus();
 
-        // null status
+        // null status (i.e., it's a Request, not a Response)
         response.setStatus(null);
-        assertThatIllegalArgumentException().isThrownBy(() -> oper.detmStatus("", response))
-                        .withMessage("APP-C response is missing the response status");
+        assertEquals(Status.STILL_WAITING, oper.detmStatus("", response));
         response.setStatus(status);
 
         // invalid code
@@ -207,6 +223,7 @@ public class AppcOperationTest extends BasicAppcOperation {
         assertSame(outcome, oper.setOutcome(outcome, PolicyResult.SUCCESS, response));
         assertEquals(PolicyResult.SUCCESS, outcome.getResult());
         assertNotNull(outcome.getMessage());
+        assertSame(response, outcome.getResponse());
         response.setStatus(status);
 
         // null description
@@ -214,12 +231,26 @@ public class AppcOperationTest extends BasicAppcOperation {
         assertSame(outcome, oper.setOutcome(outcome, PolicyResult.FAILURE, response));
         assertEquals(PolicyResult.FAILURE, outcome.getResult());
         assertNotNull(outcome.getMessage());
+        assertSame(response, outcome.getResponse());
         status.setDescription(MY_DESCRIPTION);
 
         for (PolicyResult result : PolicyResult.values()) {
             assertSame(outcome, oper.setOutcome(outcome, result, response));
             assertEquals(result, outcome.getResult());
             assertEquals(MY_DESCRIPTION, outcome.getMessage());
+            assertSame(response, outcome.getResponse());
+        }
+    }
+
+    private static class MyOper extends AppcOperation {
+
+        public MyOper(ControlLoopOperationParams params, BidirectionalTopicConfig config) {
+            super(params, config, Collections.emptyList());
+        }
+
+        @Override
+        protected Request makeRequest(int attempt) {
+            return makeRequest(attempt, MY_VNF);
         }
     }
 }