Test new actors against simulators
[policy/models.git] / models-interactions / model-actors / actor.appc / src / test / java / org / onap / policy / controlloop / actor / appc / AppcOperationTest.java
index 8a86b34..7f7ac7a 100644 (file)
@@ -29,7 +29,11 @@ import static org.junit.Assert.assertSame;
 import java.util.Arrays;
 import java.util.Map;
 import java.util.TreeMap;
+import org.apache.commons.lang3.tuple.Pair;
+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;
@@ -41,30 +45,57 @@ 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, operator) {
+        oper = new AppcOperation(params, config) {
             @Override
-            protected Request makeRequest(int attempt) {
+            protected Pair<String, Request> makeRequest(int attempt) {
                 return oper.makeRequest(attempt, MY_VNF);
             }
         };
     }
 
+    @After
+    @Override
+    public void tearDown() {
+        super.tearDown();
+    }
+
     @Test
-    public void testAppcOperation() {
+    public void testConstructor() {
         assertEquals(DEFAULT_ACTOR, oper.getActorName());
         assertEquals(DEFAULT_OPERATION, oper.getName());
     }
 
+    @Test
+    public void testStartPreprocessorAsync() {
+        assertNotNull(oper.startPreprocessorAsync());
+    }
+
     @Test
     public void testMakeRequest() {
-        Request request = oper.makeRequest(2, MY_VNF);
+        Pair<String, Request> result = oper.makeRequest(2, MY_VNF);
+        String subreq = result.getLeft();
+        assertNotNull(subreq);
+
+        Request request = result.getRight();
         assertEquals(DEFAULT_OPERATION, request.getAction());
 
         assertNotNull(request.getPayload());
@@ -73,26 +104,29 @@ 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());
+        result = oper.makeRequest(2, MY_VNF);
+        assertNotEquals(subreq, result.getLeft());
+
+        assertNotNull(result.getLeft());
+        assertEquals(result.getLeft(), result.getRight().getCommonHeader().getSubRequestId());
 
         // repeat using a null payload
         params = params.toBuilder().payload(null).build();
-        oper = new AppcOperation(params, operator) {
+        oper = new AppcOperation(params, config) {
             @Override
-            protected Request makeRequest(int attempt) {
+            protected Pair<String, Request> makeRequest(int attempt) {
                 return oper.makeRequest(attempt, MY_VNF);
             }
         };
-        assertEquals(Map.of(AppcOperation.VNF_ID_KEY, MY_VNF), oper.makeRequest(2, MY_VNF).getPayload());
+        assertEquals(Map.of(AppcOperation.VNF_ID_KEY, MY_VNF), oper.makeRequest(2, MY_VNF).getRight().getPayload());
     }
 
     @Test
     public void testConvertPayload() {
-        Request request = oper.makeRequest(2, MY_VNF);
+        Request request = oper.makeRequest(2, MY_VNF).getRight();
 
         // @formatter:off
         assertEquals(
@@ -106,18 +140,18 @@ public class AppcOperationTest extends BasicAppcOperation {
         /*
          * insert invalid json text into the payload.
          */
-        Map<String, String> payload = new TreeMap<>(params.getPayload());
+        Map<String, Object> payload = new TreeMap<>(params.getPayload());
         payload.put("invalid-key", "{invalid json");
 
         params = params.toBuilder().payload(payload).build();
 
-        oper = new AppcOperation(params, operator) {
+        oper = new AppcOperation(params, config) {
             @Override
-            protected Request makeRequest(int attempt) {
+            protected Pair<String, Request> makeRequest(int attempt) {
                 return oper.makeRequest(attempt, MY_VNF);
             }
         };
-        request = oper.makeRequest(2, MY_VNF);
+        request = oper.makeRequest(2, MY_VNF).getRight();
 
         // @formatter:off
         assertEquals(
@@ -126,11 +160,36 @@ public class AppcOperationTest extends BasicAppcOperation {
                     KEY2, Map.of("output", "world")),
             request.getPayload());
         // @formatter:on
+
+
+        /*
+         * insert null item into the payload.
+         */
+        payload = new TreeMap<>();
+        payload.put(KEY1, "abc");
+        payload.put(KEY2, null);
+        payload.put(KEY3, "def");
+        params = params.toBuilder().payload(payload).build();
+
+        oper = new AppcOperation(params, config) {
+            @Override
+            protected Pair<String, Request> makeRequest(int attempt) {
+                return oper.makeRequest(attempt, MY_VNF);
+            }
+        };
+        request = oper.makeRequest(2, MY_VNF).getRight();
+
+        payload.put(AppcOperation.VNF_ID_KEY, MY_VNF);
+        payload.put(KEY1, "abc");
+        payload.put(KEY2, null);
+        payload.put(KEY3, "def");
+
+        assertEquals(payload, request.getPayload());
     }
 
     @Test
     public void testGetExpectedKeyValues() {
-        Request request = oper.makeRequest(2, MY_VNF);
+        Request request = oper.makeRequest(2, MY_VNF).getRight();
         assertEquals(Arrays.asList(request.getCommonHeader().getSubRequestId()),
                         oper.getExpectedKeyValues(50, request));
     }
@@ -139,10 +198,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