Include response in OperationOutcome 43/108343/3
authorJim Hahn <jrh3@att.com>
Wed, 27 May 2020 14:49:39 +0000 (10:49 -0400)
committerJim Hahn <jrh3@att.com>
Wed, 27 May 2020 20:31:35 +0000 (16:31 -0400)
Added the response field and modified the actors to populate it.

Issue-ID: POLICY-2592
Change-Id: I24487b6fbc23b69bde4a95acd470864d8231c49d
Signed-off-by: Jim Hahn <jrh3@att.com>
31 files changed:
models-interactions/model-actors/actor.aai/src/test/java/org/onap/policy/controlloop/actor/aai/AaiCustomQueryOperationTest.java
models-interactions/model-actors/actor.aai/src/test/java/org/onap/policy/controlloop/actor/aai/AaiGetPnfOperationTest.java
models-interactions/model-actors/actor.aai/src/test/java/org/onap/policy/controlloop/actor/aai/AaiGetTenantOperationTest.java
models-interactions/model-actors/actor.appc/src/main/java/org/onap/policy/controlloop/actor/appc/AppcOperation.java
models-interactions/model-actors/actor.appc/src/test/java/org/onap/policy/controlloop/actor/appc/AppcOperationTest.java
models-interactions/model-actors/actor.appc/src/test/java/org/onap/policy/controlloop/actor/appc/ModifyConfigOperationTest.java
models-interactions/model-actors/actor.appclcm/src/main/java/org/onap/policy/controlloop/actor/appclcm/AppcLcmOperation.java
models-interactions/model-actors/actor.appclcm/src/test/java/org/onap/policy/controlloop/actor/appclcm/AppcLcmOperationTest.java
models-interactions/model-actors/actor.cds/src/main/java/org/onap/policy/controlloop/actor/cds/CdsActorServiceManager.java
models-interactions/model-actors/actor.cds/src/test/java/org/onap/policy/controlloop/actor/cds/GrpcActorServiceManagerTest.java
models-interactions/model-actors/actor.guard/src/main/java/org/onap/policy/controlloop/actor/guard/GuardOperation.java
models-interactions/model-actors/actor.guard/src/test/java/org/onap/policy/controlloop/actor/guard/GuardOperationTest.java
models-interactions/model-actors/actor.sdnc/src/test/java/org/onap/policy/controlloop/actor/sdnc/BandwidthOnDemandOperationTest.java
models-interactions/model-actors/actor.sdnc/src/test/java/org/onap/policy/controlloop/actor/sdnc/BasicSdncOperation.java
models-interactions/model-actors/actor.sdnc/src/test/java/org/onap/policy/controlloop/actor/sdnc/RerouteOperationTest.java
models-interactions/model-actors/actor.sdnr/src/main/java/org/onap/policy/controlloop/actor/sdnr/SdnrOperation.java
models-interactions/model-actors/actor.sdnr/src/test/java/org/onap/policy/controlloop/actor/sdnr/SdnrOperationTest.java
models-interactions/model-actors/actor.so/src/main/java/org/onap/policy/controlloop/actor/so/SoOperation.java
models-interactions/model-actors/actor.so/src/test/java/org/onap/policy/controlloop/actor/so/SoOperationTest.java
models-interactions/model-actors/actor.so/src/test/java/org/onap/policy/controlloop/actor/so/VfModuleCreateTest.java
models-interactions/model-actors/actor.so/src/test/java/org/onap/policy/controlloop/actor/so/VfModuleDeleteTest.java
models-interactions/model-actors/actor.vfc/src/main/java/org/onap/policy/controlloop/actor/vfc/VfcOperation.java
models-interactions/model-actors/actor.vfc/src/test/java/org/onap/policy/controlloop/actor/vfc/RestartTest.java
models-interactions/model-actors/actor.vfc/src/test/java/org/onap/policy/controlloop/actor/vfc/VfcOperationTest.java
models-interactions/model-actors/actorServiceProvider/src/main/java/org/onap/policy/controlloop/actorserviceprovider/OperationOutcome.java
models-interactions/model-actors/actorServiceProvider/src/main/java/org/onap/policy/controlloop/actorserviceprovider/impl/BidirectionalTopicOperation.java
models-interactions/model-actors/actorServiceProvider/src/main/java/org/onap/policy/controlloop/actorserviceprovider/impl/HttpOperation.java
models-interactions/model-actors/actorServiceProvider/src/test/java/org/onap/policy/controlloop/actorserviceprovider/OperationOutcomeTest.java
models-interactions/model-actors/actorServiceProvider/src/test/java/org/onap/policy/controlloop/actorserviceprovider/impl/BidirectionalTopicOperationTest.java
models-interactions/model-actors/actorServiceProvider/src/test/java/org/onap/policy/controlloop/actorserviceprovider/impl/HttpOperationTest.java
models-interactions/model-actors/actorServiceProvider/src/test/java/org/onap/policy/controlloop/actorserviceprovider/impl/OperationPartialTest.java

index 243a0c6..ca6cfb2 100644 (file)
@@ -20,6 +20,7 @@
 
 package org.onap.policy.controlloop.actor.aai;
 
+import static org.assertj.core.api.Assertions.assertThat;
 import static org.assertj.core.api.Assertions.assertThatCode;
 import static org.assertj.core.api.Assertions.assertThatIllegalArgumentException;
 import static org.junit.Assert.assertEquals;
@@ -123,6 +124,9 @@ public class AaiCustomQueryOperationTest extends BasicAaiOperation<Map<String, S
 
         outcome = oper.start().get();
         assertEquals(PolicyResult.SUCCESS, outcome.getResult());
+
+        String resp = outcome.getResponse();
+        assertThat(resp).isNotNull().contains("relationship-list");
     }
 
     @Test
index 2270240..d197789 100644 (file)
@@ -92,6 +92,7 @@ public class AaiGetPnfOperationTest extends BasicAaiOperation<Void> {
 
         outcome = oper.start().get();
         assertEquals(PolicyResult.SUCCESS, outcome.getResult());
+        assertTrue(outcome.getResponse() instanceof StandardCoderObject);
     }
 
     /**
index 496d2ea..1e9a1d9 100644 (file)
@@ -92,6 +92,7 @@ public class AaiGetTenantOperationTest extends BasicAaiOperation<Void> {
 
         outcome = oper.start().get();
         assertEquals(PolicyResult.SUCCESS, outcome.getResult());
+        assertTrue(outcome.getResponse() instanceof StandardCoderObject);
     }
 
     /**
index 75a4c9f..14ab355 100644 (file)
@@ -171,6 +171,8 @@ public abstract class AppcOperation extends BidirectionalTopicOperation<Request,
      */
     @Override
     public OperationOutcome setOutcome(OperationOutcome outcome, PolicyResult result, Response response) {
+        outcome.setResponse(response);
+
         if (response.getStatus() == null || response.getStatus().getDescription() == null) {
             return setOutcome(outcome, result);
         }
index 4c6477d..b2d012a 100644 (file)
@@ -212,6 +212,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
@@ -219,12 +220,14 @@ 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());
         }
     }
 
index 4f4f506..0e29dd2 100644 (file)
@@ -42,6 +42,7 @@ import org.junit.Test;
 import org.onap.aai.domain.yang.GenericVnf;
 import org.onap.policy.aai.AaiCqResponse;
 import org.onap.policy.appc.Request;
+import org.onap.policy.appc.Response;
 import org.onap.policy.common.utils.coder.CoderException;
 import org.onap.policy.controlloop.actorserviceprovider.OperationOutcome;
 import org.onap.policy.controlloop.actorserviceprovider.controlloop.ControlLoopEventContext;
@@ -108,6 +109,7 @@ public class ModifyConfigOperationTest extends BasicAppcOperation {
 
         outcome = oper.start().get();
         assertEquals(PolicyResult.SUCCESS, outcome.getResult());
+        assertTrue(outcome.getResponse() instanceof Response);
     }
 
     @Test
index e34d3c5..3e5ed2c 100644 (file)
@@ -182,6 +182,8 @@ public class AppcLcmOperation extends BidirectionalTopicOperation<AppcLcmDmaapWr
      */
     @Override
     public OperationOutcome setOutcome(OperationOutcome outcome, PolicyResult result, AppcLcmDmaapWrapper response) {
+        outcome.setResponse(response);
+
         AppcLcmResponseStatus status = getStatus(response);
         if (status == null) {
             return setOutcome(outcome, result);
index b2a44af..c5ec58a 100644 (file)
@@ -25,6 +25,7 @@ import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
 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;
@@ -127,6 +128,7 @@ public class AppcLcmOperationTest extends BasicBidirectionalTopicOperation {
 
         outcome = oper.start().get();
         assertEquals(PolicyResult.SUCCESS, outcome.getResult());
+        assertTrue(outcome.getResponse() instanceof AppcLcmDmaapWrapper);
     }
 
     @Test
@@ -163,7 +165,8 @@ 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
@@ -258,21 +261,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
index 2afa9fa..d0f5bd2 100644 (file)
@@ -62,10 +62,12 @@ public class CdsActorServiceManager implements CdsProcessorListener {
                 break;
             case EVENT_COMPONENT_EXECUTED:
                 outcome.setResult(PolicyResult.SUCCESS);
+                outcome.setResponse(message);
                 future.complete(outcome);
                 break;
             default:
                 outcome.setResult(PolicyResult.FAILURE);
+                outcome.setResponse(message);
                 future.complete(outcome);
                 break;
         }
index 83473a8..908b05c 100644 (file)
@@ -22,6 +22,7 @@ package org.onap.policy.controlloop.actor.cds;
 import static org.assertj.core.api.Assertions.assertThatThrownBy;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertSame;
 import static org.junit.Assert.assertTrue;
 
 import java.util.concurrent.CompletableFuture;
@@ -59,8 +60,9 @@ public class GrpcActorServiceManagerTest {
         Status status = Status.newBuilder().setEventType(EventType.EVENT_COMPONENT_EXECUTED).build();
         output = ExecutionServiceOutput.newBuilder().setStatus(status).build();
         manager.onMessage(output);
-        assertEquals(PolicyResult.SUCCESS, future.get(2, TimeUnit.SECONDS).getResult());
-        assertTrue(future.isDone());
+        OperationOutcome outcome = future.get(2, TimeUnit.SECONDS);
+        assertEquals(PolicyResult.SUCCESS, outcome.getResult());
+        assertSame(output, outcome.getResponse());
     }
 
     @Test
@@ -79,8 +81,9 @@ public class GrpcActorServiceManagerTest {
         Status status = Status.newBuilder().setEventType(EventType.EVENT_COMPONENT_FAILURE).build();
         output = ExecutionServiceOutput.newBuilder().setStatus(status).build();
         manager.onMessage(output);
-        assertEquals(PolicyResult.FAILURE, future.get(2, TimeUnit.SECONDS).getResult());
-        assertTrue(future.isDone());
+        OperationOutcome outcome = future.get(2, TimeUnit.SECONDS);
+        assertEquals(PolicyResult.FAILURE, outcome.getResult());
+        assertSame(output, outcome.getResponse());
     }
 
     @Test
@@ -89,6 +92,5 @@ public class GrpcActorServiceManagerTest {
         Exception exception = new Exception("something failed");
         manager.onError(exception);
         assertTrue(future.isCompletedExceptionally());
-        assertTrue(future.isDone());
     }
 }
index 3a7821e..da1f956 100644 (file)
@@ -142,6 +142,8 @@ public class GuardOperation extends HttpOperation<DecisionResponse> {
     protected CompletableFuture<OperationOutcome> postProcessResponse(OperationOutcome outcome, String url,
                     Response rawResponse, DecisionResponse response) {
 
+        outcome.setResponse(response);
+
         // determine the result
         String status = response.getStatus();
         if (status == null) {
index 58d54a5..daf4dff 100644 (file)
@@ -24,6 +24,8 @@ 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.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertSame;
 import static org.junit.Assert.assertTrue;
 import static org.mockito.ArgumentMatchers.any;
 import static org.mockito.Mockito.mock;
@@ -119,6 +121,7 @@ public class GuardOperationTest extends BasicHttpOperation<DecisionRequest> {
 
         outcome = oper.start().get();
         assertEquals(PolicyResult.SUCCESS, outcome.getResult());
+        assertTrue(outcome.getResponse() instanceof DecisionResponse);
     }
 
     /**
@@ -135,6 +138,7 @@ public class GuardOperationTest extends BasicHttpOperation<DecisionRequest> {
 
         outcome = oper.start().get();
         assertEquals(PolicyResult.FAILURE, outcome.getResult());
+        assertTrue(outcome.getResponse() instanceof DecisionResponse);
     }
 
     @Test
@@ -159,7 +163,9 @@ public class GuardOperationTest extends BasicHttpOperation<DecisionRequest> {
         executor.runAll(100);
         assertTrue(future2.isDone());
 
-        assertEquals(PolicyResult.SUCCESS, future2.get().getResult());
+        outcome = future2.get();
+        assertEquals(PolicyResult.SUCCESS, outcome.getResult());
+        assertEquals(resp, outcome.getResponse());
 
         assertNotNull(oper.getSubRequestId());
         assertEquals(oper.getSubRequestId(), future2.get().getSubRequestId());
@@ -181,7 +187,9 @@ public class GuardOperationTest extends BasicHttpOperation<DecisionRequest> {
         // should already be done
         assertTrue(future2.isDone());
 
-        assertEquals(PolicyResult.SUCCESS, future2.get().getResult());
+        outcome = future2.get();
+        assertEquals(PolicyResult.SUCCESS, outcome.getResult());
+        assertNull(outcome.getResponse());
 
         // ensure callbacks were invoked
         verify(started).accept(any());
@@ -246,6 +254,7 @@ public class GuardOperationTest extends BasicHttpOperation<DecisionRequest> {
         oper.postProcessResponse(outcome, BASE_URI, rawResponse, response);
         assertEquals(expectedResult, outcome.getResult());
         assertEquals(expectedMessage, outcome.getMessage());
+        assertSame(response, outcome.getResponse());
     }
 
     @Override
index 2b85670..95b4bd7 100644 (file)
@@ -21,6 +21,7 @@
 package org.onap.policy.controlloop.actor.sdnc;
 
 import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
 
 import java.util.Map;
 import org.junit.AfterClass;
@@ -32,6 +33,7 @@ import org.onap.policy.controlloop.actorserviceprovider.parameters.HttpConfig;
 import org.onap.policy.controlloop.actorserviceprovider.parameters.HttpParams;
 import org.onap.policy.controlloop.policy.PolicyResult;
 import org.onap.policy.sdnc.SdncRequest;
+import org.onap.policy.sdnc.SdncResponse;
 
 public class BandwidthOnDemandOperationTest extends BasicSdncOperation {
 
@@ -80,6 +82,7 @@ public class BandwidthOnDemandOperationTest extends BasicSdncOperation {
 
         outcome = oper.start().get();
         assertEquals(PolicyResult.SUCCESS, outcome.getResult());
+        assertTrue(outcome.getResponse() instanceof SdncResponse);
     }
 
     @Test
index bb1285e..9216942 100644 (file)
@@ -126,9 +126,11 @@ public abstract class BasicSdncOperation extends BasicHttpOperation<SdncRequest>
         executor.runAll(100);
         assertTrue(future2.isDone());
 
-        assertEquals(PolicyResult.SUCCESS, future2.get().getResult());
+        outcome = future2.get();
+        assertEquals(PolicyResult.SUCCESS, outcome.getResult());
+        assertTrue(outcome.getResponse() instanceof SdncResponse);
 
-        assertNotNull(future2.get().getSubRequestId());
+        assertNotNull(outcome.getSubRequestId());
 
         return requestCaptor.getValue().getEntity();
     }
index 678648d..142f107 100644 (file)
@@ -21,6 +21,7 @@
 package org.onap.policy.controlloop.actor.sdnc;
 
 import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
 
 import java.util.Map;
 import org.junit.AfterClass;
@@ -32,6 +33,7 @@ import org.onap.policy.controlloop.actorserviceprovider.parameters.HttpConfig;
 import org.onap.policy.controlloop.actorserviceprovider.parameters.HttpParams;
 import org.onap.policy.controlloop.policy.PolicyResult;
 import org.onap.policy.sdnc.SdncRequest;
+import org.onap.policy.sdnc.SdncResponse;
 
 public class RerouteOperationTest extends BasicSdncOperation {
 
@@ -74,6 +76,7 @@ public class RerouteOperationTest extends BasicSdncOperation {
 
         outcome = oper.start().get();
         assertEquals(PolicyResult.SUCCESS, outcome.getResult());
+        assertTrue(outcome.getResponse() instanceof SdncResponse);
     }
 
     @Test
index 40face7..d0bb38e 100644 (file)
@@ -118,20 +118,22 @@ public class SdnrOperation extends BidirectionalTopicOperation<PciMessage, PciMe
      */
     @Override
     public OperationOutcome setOutcome(OperationOutcome outcome, PolicyResult result, PciMessage responseWrapper) {
+        outcome.setResponse(responseWrapper);
+
         if (responseWrapper.getBody() == null || responseWrapper.getBody().getOutput() == null) {
             outcome.setControlLoopResponse(makeControlLoopResponse(null));
             return setOutcome(outcome, result);
         }
 
-        PciResponse response = responseWrapper.getBody().getOutput();
-        if (response.getStatus() == null || response.getStatus().getValue() == null) {
-            outcome.setControlLoopResponse(makeControlLoopResponse(response.getPayload()));
+        PciResponse pciResponse = responseWrapper.getBody().getOutput();
+        if (pciResponse.getStatus() == null || pciResponse.getStatus().getValue() == null) {
+            outcome.setControlLoopResponse(makeControlLoopResponse(pciResponse.getPayload()));
             return setOutcome(outcome, result);
         }
 
         outcome.setResult(result);
-        outcome.setMessage(response.getStatus().getValue());
-        outcome.setControlLoopResponse(makeControlLoopResponse(response.getPayload()));
+        outcome.setMessage(pciResponse.getStatus().getValue());
+        outcome.setControlLoopResponse(makeControlLoopResponse(pciResponse.getPayload()));
         return outcome;
     }
 
index 2bb0d94..370d676 100644 (file)
@@ -135,6 +135,7 @@ public class SdnrOperationTest extends BasicSdnrOperation {
 
         outcome = operation.start().get();
         assertEquals(PolicyResult.SUCCESS, outcome.getResult());
+        assertTrue(outcome.getResponse() instanceof PciMessage);
 
         ControlLoopResponse clresp = outcome.getControlLoopResponse();
         assertNotNull(clresp);
@@ -243,5 +244,6 @@ public class SdnrOperationTest extends BasicSdnrOperation {
         assertSame(outcome, operation.setOutcome(outcome, PolicyResult.SUCCESS, response));
         assertEquals(PolicyResult.SUCCESS, outcome.getResult());
         assertNotNull(outcome.getMessage());
+        assertSame(response, outcome.getResponse());
     }
 }
index a26f6a7..7f8a5c5 100644 (file)
@@ -229,6 +229,7 @@ public abstract class SoOperation extends HttpOperation<SoResponse> {
         if (getCount++ >= getMaxGets()) {
             logger.warn("{}: execeeded 'get' limit {} for {}", getFullName(), getMaxGets(), params.getRequestId());
             setOutcome(outcome, PolicyResult.FAILURE_TIMEOUT);
+            outcome.setResponse(response);
             outcome.setMessage(SO_RESPONSE_CODE + " " + outcome.getMessage());
             return CompletableFuture.completedFuture(outcome);
         }
@@ -316,6 +317,7 @@ public abstract class SoOperation extends HttpOperation<SoResponse> {
         // set default result and message
         setOutcome(outcome, result);
 
+        outcome.setResponse(response);
         outcome.setMessage(rawResponse.getStatus() + " " + outcome.getMessage());
         return outcome;
     }
index 6445218..9e72c8a 100644 (file)
@@ -176,6 +176,7 @@ public class SoOperationTest extends BasicSoOperation {
         assertSame(outcome, future2.get());
         assertEquals(PolicyResult.SUCCESS, outcome.getResult());
         assertNotNull(oper.getSubRequestId());
+        assertSame(response, outcome.getResponse());
 
         // failed
         oper.generateSubRequestId(2);
@@ -186,6 +187,7 @@ public class SoOperationTest extends BasicSoOperation {
         assertSame(outcome, future2.get());
         assertEquals(PolicyResult.FAILURE, outcome.getResult());
         assertNotNull(oper.getSubRequestId());
+        assertSame(response, outcome.getResponse());
 
         // no request id in the response
         oper.generateSubRequestId(2);
@@ -291,6 +293,7 @@ public class SoOperationTest extends BasicSoOperation {
 
         assertEquals(PolicyResult.SUCCESS, outcome.getResult());
         assertEquals("200 " + ControlLoopOperation.SUCCESS_MSG, outcome.getMessage());
+        assertSame(response, outcome.getResponse());
 
         // failure case
         when(rawResponse.getStatus()).thenReturn(500);
@@ -298,6 +301,7 @@ public class SoOperationTest extends BasicSoOperation {
 
         assertEquals(PolicyResult.FAILURE, outcome.getResult());
         assertEquals("500 " + ControlLoopOperation.FAILED_MSG, outcome.getMessage());
+        assertSame(response, outcome.getResponse());
     }
 
     @Test
index def1074..2b3e116 100644 (file)
@@ -53,6 +53,7 @@ import org.onap.policy.controlloop.actorserviceprovider.OperationOutcome;
 import org.onap.policy.controlloop.actorserviceprovider.parameters.ControlLoopOperationParams;
 import org.onap.policy.controlloop.policy.PolicyResult;
 import org.onap.policy.so.SoRequest;
+import org.onap.policy.so.SoResponse;
 
 public class VfModuleCreateTest extends BasicSoOperation {
     private static final String MODEL_NAME2 = "my-model-name-B";
@@ -96,6 +97,7 @@ public class VfModuleCreateTest extends BasicSoOperation {
 
         outcome = oper.start().get();
         assertEquals(PolicyResult.SUCCESS, outcome.getResult());
+        assertTrue(outcome.getResponse() instanceof SoResponse);
     }
 
     @Test
@@ -187,6 +189,10 @@ public class VfModuleCreateTest extends BasicSoOperation {
         outcome = future2.get(5, TimeUnit.SECONDS);
         assertEquals(PolicyResult.SUCCESS, outcome.getResult());
 
+        SoResponse resp = outcome.getResponse();
+        assertNotNull(resp);
+        assertEquals(REQ_ID.toString(), resp.getRequestReferences().getRequestId());
+
         assertEquals(origCount + 1, oper.getVfCount());
     }
 
index 0ec1a1d..86242f0 100644 (file)
@@ -130,6 +130,7 @@ public class VfModuleDeleteTest extends BasicSoOperation {
 
         outcome = oper.start().get();
         assertEquals(PolicyResult.SUCCESS, outcome.getResult());
+        assertTrue(outcome.getResponse() instanceof SoResponse);
     }
 
     @Test
@@ -219,6 +220,10 @@ public class VfModuleDeleteTest extends BasicSoOperation {
         outcome = future2.get(5, TimeUnit.SECONDS);
         assertEquals(PolicyResult.SUCCESS, outcome.getResult());
 
+        SoResponse resp = outcome.getResponse();
+        assertNotNull(resp);
+        assertEquals(REQ_ID.toString(), resp.getRequestReferences().getRequestId());
+
         assertEquals(origCount - 1, oper.getVfCount());
     }
 
index 827109d..573ee26 100644 (file)
@@ -119,6 +119,7 @@ public abstract class VfcOperation extends HttpOperation<VfcResponse> {
         if (getCount++ >= getMaxGets()) {
             logger.warn("{}: execeeded 'get' limit {} for {}", getFullName(), getMaxGets(), params.getRequestId());
             setOutcome(outcome, PolicyResult.FAILURE_TIMEOUT);
+            outcome.setResponse(response);
             outcome.setMessage(VFC_RESPONSE_CODE + " " + outcome.getMessage());
             return CompletableFuture.completedFuture(outcome);
         }
@@ -179,6 +180,7 @@ public abstract class VfcOperation extends HttpOperation<VfcResponse> {
         // set default result and message
         setOutcome(outcome, result);
 
+        outcome.setResponse(response);
         outcome.setMessage(rawResponse.getStatus() + " " + outcome.getMessage());
         return outcome;
     }
index 5fe4973..d8ba7e4 100644 (file)
@@ -22,6 +22,7 @@ package org.onap.policy.controlloop.actor.vfc;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
 
 import java.util.concurrent.CompletableFuture;
 import org.apache.commons.lang3.tuple.Pair;
@@ -33,6 +34,7 @@ import org.onap.policy.common.endpoints.http.client.HttpClientFactoryInstance;
 import org.onap.policy.controlloop.actorserviceprovider.OperationOutcome;
 import org.onap.policy.controlloop.policy.PolicyResult;
 import org.onap.policy.vfc.VfcRequest;
+import org.onap.policy.vfc.VfcResponse;
 
 public class RestartTest extends BasicVfcOperation {
     private Restart restartOper;
@@ -72,6 +74,7 @@ public class RestartTest extends BasicVfcOperation {
 
         outcome = restartOper.start().get();
         assertEquals(PolicyResult.SUCCESS, outcome.getResult());
+        assertTrue(outcome.getResponse() instanceof VfcResponse);
     }
 
     @Test
index 4d98b97..0b58fd4 100644 (file)
@@ -82,30 +82,30 @@ public class VfcOperationTest extends BasicVfcOperation {
 
         response.setResponseDescriptor(new VfcResponseDescriptor());
         response.setJobId("sampleJobId");
+
+        // null status
         CompletableFuture<OperationOutcome> future2 = oper.postProcessResponse(outcome, PATH, rawResponse, response);
         assertFalse(future2.isDone());
-        // assertSame(outcome, future2.get()); TODO Hanging
-        assertEquals(PolicyResult.SUCCESS, outcome.getResult());
 
         response.getResponseDescriptor().setStatus("FinisHeD");
         future2 = oper.postProcessResponse(outcome, PATH, rawResponse, response);
         assertTrue(future2.isDone());
         assertSame(outcome, future2.get());
         assertEquals(PolicyResult.SUCCESS, outcome.getResult());
+        assertSame(response, outcome.getResponse());
 
+        // failed
         response.getResponseDescriptor().setStatus("eRRor");
         future2 = oper.postProcessResponse(outcome, PATH, rawResponse, response);
         assertTrue(future2.isDone());
         assertSame(outcome, future2.get());
         assertEquals(PolicyResult.FAILURE, outcome.getResult());
+        assertSame(response, outcome.getResponse());
 
-        // failed
-        /*
-         * response.getResponseDescriptor().setStatus("anything but finished"); future2 =
-         * oper.postProcessResponse(outcome, PATH, rawResponse, response);
-         * assertTrue(future2.isDone()); assertSame(outcome, future2.get());
-         * assertEquals(PolicyResult.FAILURE, outcome.getResult());
-         */
+        // unfinished
+        response.getResponseDescriptor().setStatus("anything but finished");
+        future2 = oper.postProcessResponse(outcome, PATH, rawResponse, response);
+        assertFalse(future2.isDone());
     }
 
     @Test
index e2d94b3..0fd2c0b 100644 (file)
@@ -43,6 +43,7 @@ public class OperationOutcome {
     private PolicyResult result = PolicyResult.SUCCESS;
     private String message;
     private boolean finalOutcome;
+    private Object response;
     private ControlLoopResponse controlLoopResponse;
 
     /**
@@ -60,6 +61,7 @@ public class OperationOutcome {
         this.result = source.result;
         this.message = source.message;
         this.finalOutcome = source.finalOutcome;
+        this.response = source.response;
         this.controlLoopResponse = source.controlLoopResponse;
     }
 
@@ -85,6 +87,11 @@ public class OperationOutcome {
         return clo;
     }
 
+    @SuppressWarnings("unchecked")
+    public <T> T getResponse() {
+        return (T) response;
+    }
+
     /**
      * Determines if this outcome is for the given actor and operation.
      *
index 9decd8a..8285a56 100644 (file)
@@ -250,6 +250,7 @@ public abstract class BidirectionalTopicOperation<Q, S> extends OperationPartial
      * @return the updated operation
      */
     public OperationOutcome setOutcome(OperationOutcome outcome, PolicyResult result, S response) {
+        outcome.setResponse(response);
         return setOutcome(outcome, result);
     }
 
index e83fe8c..1acc1ff 100644 (file)
@@ -217,6 +217,7 @@ public abstract class HttpOperation<T> extends OperationPartial {
     public OperationOutcome setOutcome(OperationOutcome outcome, PolicyResult result, Response rawResponse,
                     T response) {
 
+        outcome.setResponse(response);
         return setOutcome(outcome, result);
     }
 
index 77d2253..c60a0f0 100644 (file)
@@ -42,6 +42,7 @@ public class OperationOutcomeTest {
     private static final String SUB_REQ_ID = "my-sub-request-id";
     private static final PolicyResult RESULT = PolicyResult.FAILURE_GUARD;
     private static final String MESSAGE = "my-message";
+    private static final String RESPONSE = "my-response";
 
     private ControlLoopResponse response;
     private OperationOutcome outcome;
@@ -70,6 +71,7 @@ public class OperationOutcomeTest {
         assertEquals(SUB_REQ_ID, outcome2.getSubRequestId());
         assertEquals(RESULT, outcome2.getResult());
         assertEquals(MESSAGE, outcome2.getMessage());
+        assertSame(RESPONSE, outcome2.getResponse());
         assertSame(response, outcome2.getControlLoopResponse());
     }
 
@@ -142,6 +144,7 @@ public class OperationOutcomeTest {
         outcome.setStart(START);
         outcome.setSubRequestId(SUB_REQ_ID);
         outcome.setTarget(TARGET);
+        outcome.setResponse(RESPONSE);
         outcome.setControlLoopResponse(response);
     }
 }
index 55782a3..84a4d5d 100644 (file)
@@ -38,6 +38,7 @@ import java.util.Arrays;
 import java.util.List;
 import java.util.concurrent.CompletableFuture;
 import java.util.function.BiConsumer;
+import lombok.EqualsAndHashCode;
 import lombok.Getter;
 import lombok.Setter;
 import org.junit.Before;
@@ -85,6 +86,7 @@ public class BidirectionalTopicOperationTest {
     private ControlLoopOperationParams params;
     private OperationOutcome outcome;
     private StandardCoderObject stdResponse;
+    private MyResponse response;
     private String responseText;
     private PseudoExecutor executor;
     private int ntimes;
@@ -109,7 +111,9 @@ public class BidirectionalTopicOperationTest {
         params = ControlLoopOperationParams.builder().actor(ACTOR).operation(OPERATION).executor(executor).build();
         outcome = params.makeOutcome();
 
-        responseText = coder.encode(new MyResponse());
+        response = new MyResponse();
+        response.setRequestId(REQ_ID);
+        responseText = coder.encode(response);
         stdResponse = coder.decode(responseText, StandardCoderObject.class);
 
         ntimes = 1;
@@ -159,6 +163,7 @@ public class BidirectionalTopicOperationTest {
 
         assertSame(outcome, future.get());
         assertEquals(PolicyResult.SUCCESS, outcome.getResult());
+        assertEquals(response, outcome.getResponse());
 
         verify(forwarder).unregister(eq(Arrays.asList(REQ_ID)), eq(listenerCaptor.getValue()));
     }
@@ -258,6 +263,7 @@ public class BidirectionalTopicOperationTest {
 
         assertSame(outcome, oper2.processResponse(outcome, TEXT, null));
         assertEquals(PolicyResult.SUCCESS, outcome.getResult());
+        assertEquals(TEXT, outcome.getResponse());
     }
 
     /**
@@ -270,6 +276,7 @@ public class BidirectionalTopicOperationTest {
 
         assertSame(outcome, oper2.processResponse(outcome, responseText, stdResponse));
         assertEquals(PolicyResult.SUCCESS, outcome.getResult());
+        assertEquals(stdResponse, outcome.getResponse());
     }
 
     /**
@@ -286,6 +293,7 @@ public class BidirectionalTopicOperationTest {
 
         assertSame(outcome, oper.processResponse(outcome, responseText, stdResponse));
         assertEquals(PolicyResult.FAILURE, outcome.getResult());
+        assertEquals(resp, outcome.getResponse());
     }
 
     /**
@@ -295,6 +303,7 @@ public class BidirectionalTopicOperationTest {
     public void testProcessResponseDecodeOk() throws CoderException {
         assertSame(outcome, oper.processResponse(outcome, responseText, stdResponse));
         assertEquals(PolicyResult.SUCCESS, outcome.getResult());
+        assertEquals(response, outcome.getResponse());
     }
 
     /**
@@ -344,8 +353,9 @@ public class BidirectionalTopicOperationTest {
 
     @Getter
     @Setter
+    @EqualsAndHashCode
     public static class MyResponse {
-        private String requestId = REQ_ID;
+        private String requestId;
         private String output;
     }
 
index 81238de..eb1aa88 100644 (file)
@@ -256,6 +256,7 @@ public class HttpOperationTest {
         callback.get().completed(response);
 
         assertSame(outcome, future2.get(5, TimeUnit.SECONDS));
+        assertSame(TEXT, outcome.getResponse());
 
         assertEquals(PolicyResult.SUCCESS, outcome.getResult());
     }
@@ -290,6 +291,7 @@ public class HttpOperationTest {
         assertTrue(result.isDone());
         assertSame(outcome, result.get());
         assertEquals(PolicyResult.SUCCESS, outcome.getResult());
+        assertSame(TEXT, outcome.getResponse());
     }
 
     /**
@@ -302,6 +304,7 @@ public class HttpOperationTest {
         assertTrue(result.isDone());
         assertSame(outcome, result.get());
         assertEquals(PolicyResult.FAILURE, outcome.getResult());
+        assertSame(TEXT, outcome.getResponse());
     }
 
     /**
@@ -317,6 +320,7 @@ public class HttpOperationTest {
         assertTrue(result.isDone());
         assertSame(outcome, result.get());
         assertEquals(PolicyResult.SUCCESS, outcome.getResult());
+        assertEquals(Integer.valueOf(10), outcome.getResponse());
     }
 
     /**
@@ -357,6 +361,7 @@ public class HttpOperationTest {
         assertNotNull(outcome);
         assertEquals(1, nget);
         assertEquals(PolicyResult.SUCCESS, outcome.getResult());
+        assertTrue(outcome.getResponse() instanceof MyResponse);
     }
 
     /**
@@ -373,6 +378,7 @@ public class HttpOperationTest {
         assertNotNull(outcome);
         assertEquals(1, ndelete);
         assertEquals(PolicyResult.SUCCESS, outcome.getResult());
+        assertTrue(outcome.getResponse() instanceof String);
     }
 
     /**
@@ -388,6 +394,7 @@ public class HttpOperationTest {
         assertNotNull(outcome);
         assertEquals(1, npost);
         assertEquals(PolicyResult.SUCCESS, outcome.getResult());
+        assertTrue(outcome.getResponse() instanceof MyResponse);
     }
 
     /**
@@ -404,6 +411,7 @@ public class HttpOperationTest {
         assertNotNull(outcome);
         assertEquals(1, nput);
         assertEquals(PolicyResult.SUCCESS, outcome.getResult());
+        assertTrue(outcome.getResponse() instanceof MyResponse);
     }
 
     @Test
index 75463b9..f5fd9fb 100644 (file)
@@ -1027,6 +1027,10 @@ public class OperationPartialTest {
         assertEquals(ControlLoopOperation.SUCCESS_MSG, outcome.getMessage());
         assertEquals(PolicyResult.SUCCESS, outcome.getResult());
 
+        oper.setOutcome(outcome, PolicyResult.SUCCESS);
+        assertEquals(ControlLoopOperation.SUCCESS_MSG, outcome.getMessage());
+        assertEquals(PolicyResult.SUCCESS, outcome.getResult());
+
         for (PolicyResult result : FAILURE_RESULTS) {
             outcome = new OperationOutcome();
             oper.setOutcome(outcome, result);