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>
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;
outcome = oper.start().get();
assertEquals(PolicyResult.SUCCESS, outcome.getResult());
+
+ String resp = outcome.getResponse();
+ assertThat(resp).isNotNull().contains("relationship-list");
}
@Test
outcome = oper.start().get();
assertEquals(PolicyResult.SUCCESS, outcome.getResult());
+ assertTrue(outcome.getResponse() instanceof StandardCoderObject);
}
/**
outcome = oper.start().get();
assertEquals(PolicyResult.SUCCESS, outcome.getResult());
+ assertTrue(outcome.getResponse() instanceof StandardCoderObject);
}
/**
*/
@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);
}
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
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());
}
}
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;
outcome = oper.start().get();
assertEquals(PolicyResult.SUCCESS, outcome.getResult());
+ assertTrue(outcome.getResponse() instanceof Response);
}
@Test
*/
@Override
public OperationOutcome setOutcome(OperationOutcome outcome, PolicyResult result, AppcLcmDmaapWrapper response) {
+ outcome.setResponse(response);
+
AppcLcmResponseStatus status = getStatus(response);
if (status == null) {
return setOutcome(outcome, result);
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;
outcome = oper.start().get();
assertEquals(PolicyResult.SUCCESS, outcome.getResult());
+ assertTrue(outcome.getResponse() instanceof AppcLcmDmaapWrapper);
}
@Test
assertTrue(executor.runAll(100));
assertTrue(future2.isDone());
- assertEquals(PolicyResult.SUCCESS, future2.get().getResult());
+ outcome = future2.get();
+ assertEquals(PolicyResult.SUCCESS, outcome.getResult());
}
@Test
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
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;
}
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;
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
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
Exception exception = new Exception("something failed");
manager.onError(exception);
assertTrue(future.isCompletedExceptionally());
- assertTrue(future.isDone());
}
}
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) {
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;
outcome = oper.start().get();
assertEquals(PolicyResult.SUCCESS, outcome.getResult());
+ assertTrue(outcome.getResponse() instanceof DecisionResponse);
}
/**
outcome = oper.start().get();
assertEquals(PolicyResult.FAILURE, outcome.getResult());
+ assertTrue(outcome.getResponse() instanceof DecisionResponse);
}
@Test
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());
// 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());
oper.postProcessResponse(outcome, BASE_URI, rawResponse, response);
assertEquals(expectedResult, outcome.getResult());
assertEquals(expectedMessage, outcome.getMessage());
+ assertSame(response, outcome.getResponse());
}
@Override
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;
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 {
outcome = oper.start().get();
assertEquals(PolicyResult.SUCCESS, outcome.getResult());
+ assertTrue(outcome.getResponse() instanceof SdncResponse);
}
@Test
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();
}
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;
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 {
outcome = oper.start().get();
assertEquals(PolicyResult.SUCCESS, outcome.getResult());
+ assertTrue(outcome.getResponse() instanceof SdncResponse);
}
@Test
*/
@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;
}
outcome = operation.start().get();
assertEquals(PolicyResult.SUCCESS, outcome.getResult());
+ assertTrue(outcome.getResponse() instanceof PciMessage);
ControlLoopResponse clresp = outcome.getControlLoopResponse();
assertNotNull(clresp);
assertSame(outcome, operation.setOutcome(outcome, PolicyResult.SUCCESS, response));
assertEquals(PolicyResult.SUCCESS, outcome.getResult());
assertNotNull(outcome.getMessage());
+ assertSame(response, outcome.getResponse());
}
}
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);
}
// set default result and message
setOutcome(outcome, result);
+ outcome.setResponse(response);
outcome.setMessage(rawResponse.getStatus() + " " + outcome.getMessage());
return outcome;
}
assertSame(outcome, future2.get());
assertEquals(PolicyResult.SUCCESS, outcome.getResult());
assertNotNull(oper.getSubRequestId());
+ assertSame(response, outcome.getResponse());
// failed
oper.generateSubRequestId(2);
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);
assertEquals(PolicyResult.SUCCESS, outcome.getResult());
assertEquals("200 " + ControlLoopOperation.SUCCESS_MSG, outcome.getMessage());
+ assertSame(response, outcome.getResponse());
// failure case
when(rawResponse.getStatus()).thenReturn(500);
assertEquals(PolicyResult.FAILURE, outcome.getResult());
assertEquals("500 " + ControlLoopOperation.FAILED_MSG, outcome.getMessage());
+ assertSame(response, outcome.getResponse());
}
@Test
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";
outcome = oper.start().get();
assertEquals(PolicyResult.SUCCESS, outcome.getResult());
+ assertTrue(outcome.getResponse() instanceof SoResponse);
}
@Test
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());
}
outcome = oper.start().get();
assertEquals(PolicyResult.SUCCESS, outcome.getResult());
+ assertTrue(outcome.getResponse() instanceof SoResponse);
}
@Test
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());
}
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);
}
// set default result and message
setOutcome(outcome, result);
+ outcome.setResponse(response);
outcome.setMessage(rawResponse.getStatus() + " " + outcome.getMessage());
return outcome;
}
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;
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;
outcome = restartOper.start().get();
assertEquals(PolicyResult.SUCCESS, outcome.getResult());
+ assertTrue(outcome.getResponse() instanceof VfcResponse);
}
@Test
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
private PolicyResult result = PolicyResult.SUCCESS;
private String message;
private boolean finalOutcome;
+ private Object response;
private ControlLoopResponse controlLoopResponse;
/**
this.result = source.result;
this.message = source.message;
this.finalOutcome = source.finalOutcome;
+ this.response = source.response;
this.controlLoopResponse = source.controlLoopResponse;
}
return clo;
}
+ @SuppressWarnings("unchecked")
+ public <T> T getResponse() {
+ return (T) response;
+ }
+
/**
* Determines if this outcome is for the given actor and operation.
*
* @return the updated operation
*/
public OperationOutcome setOutcome(OperationOutcome outcome, PolicyResult result, S response) {
+ outcome.setResponse(response);
return setOutcome(outcome, result);
}
public OperationOutcome setOutcome(OperationOutcome outcome, PolicyResult result, Response rawResponse,
T response) {
+ outcome.setResponse(response);
return setOutcome(outcome, result);
}
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;
assertEquals(SUB_REQ_ID, outcome2.getSubRequestId());
assertEquals(RESULT, outcome2.getResult());
assertEquals(MESSAGE, outcome2.getMessage());
+ assertSame(RESPONSE, outcome2.getResponse());
assertSame(response, outcome2.getControlLoopResponse());
}
outcome.setStart(START);
outcome.setSubRequestId(SUB_REQ_ID);
outcome.setTarget(TARGET);
+ outcome.setResponse(RESPONSE);
outcome.setControlLoopResponse(response);
}
}
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;
private ControlLoopOperationParams params;
private OperationOutcome outcome;
private StandardCoderObject stdResponse;
+ private MyResponse response;
private String responseText;
private PseudoExecutor executor;
private int ntimes;
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;
assertSame(outcome, future.get());
assertEquals(PolicyResult.SUCCESS, outcome.getResult());
+ assertEquals(response, outcome.getResponse());
verify(forwarder).unregister(eq(Arrays.asList(REQ_ID)), eq(listenerCaptor.getValue()));
}
assertSame(outcome, oper2.processResponse(outcome, TEXT, null));
assertEquals(PolicyResult.SUCCESS, outcome.getResult());
+ assertEquals(TEXT, outcome.getResponse());
}
/**
assertSame(outcome, oper2.processResponse(outcome, responseText, stdResponse));
assertEquals(PolicyResult.SUCCESS, outcome.getResult());
+ assertEquals(stdResponse, outcome.getResponse());
}
/**
assertSame(outcome, oper.processResponse(outcome, responseText, stdResponse));
assertEquals(PolicyResult.FAILURE, outcome.getResult());
+ assertEquals(resp, outcome.getResponse());
}
/**
public void testProcessResponseDecodeOk() throws CoderException {
assertSame(outcome, oper.processResponse(outcome, responseText, stdResponse));
assertEquals(PolicyResult.SUCCESS, outcome.getResult());
+ assertEquals(response, outcome.getResponse());
}
/**
@Getter
@Setter
+ @EqualsAndHashCode
public static class MyResponse {
- private String requestId = REQ_ID;
+ private String requestId;
private String output;
}
callback.get().completed(response);
assertSame(outcome, future2.get(5, TimeUnit.SECONDS));
+ assertSame(TEXT, outcome.getResponse());
assertEquals(PolicyResult.SUCCESS, outcome.getResult());
}
assertTrue(result.isDone());
assertSame(outcome, result.get());
assertEquals(PolicyResult.SUCCESS, outcome.getResult());
+ assertSame(TEXT, outcome.getResponse());
}
/**
assertTrue(result.isDone());
assertSame(outcome, result.get());
assertEquals(PolicyResult.FAILURE, outcome.getResult());
+ assertSame(TEXT, outcome.getResponse());
}
/**
assertTrue(result.isDone());
assertSame(outcome, result.get());
assertEquals(PolicyResult.SUCCESS, outcome.getResult());
+ assertEquals(Integer.valueOf(10), outcome.getResponse());
}
/**
assertNotNull(outcome);
assertEquals(1, nget);
assertEquals(PolicyResult.SUCCESS, outcome.getResult());
+ assertTrue(outcome.getResponse() instanceof MyResponse);
}
/**
assertNotNull(outcome);
assertEquals(1, ndelete);
assertEquals(PolicyResult.SUCCESS, outcome.getResult());
+ assertTrue(outcome.getResponse() instanceof String);
}
/**
assertNotNull(outcome);
assertEquals(1, npost);
assertEquals(PolicyResult.SUCCESS, outcome.getResult());
+ assertTrue(outcome.getResponse() instanceof MyResponse);
}
/**
assertNotNull(outcome);
assertEquals(1, nput);
assertEquals(PolicyResult.SUCCESS, outcome.getResult());
+ assertTrue(outcome.getResponse() instanceof MyResponse);
}
@Test
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);