summaryrefslogtreecommitdiffstats
path: root/models-interactions/model-actors/actor.cds
diff options
context:
space:
mode:
Diffstat (limited to 'models-interactions/model-actors/actor.cds')
-rw-r--r--models-interactions/model-actors/actor.cds/src/main/java/org/onap/policy/controlloop/actor/cds/CdsActorServiceProvider.java41
-rw-r--r--models-interactions/model-actors/actor.cds/src/test/java/org/onap/policy/controlloop/actor/cds/CdsActorServiceProviderTest.java18
2 files changed, 35 insertions, 24 deletions
diff --git a/models-interactions/model-actors/actor.cds/src/main/java/org/onap/policy/controlloop/actor/cds/CdsActorServiceProvider.java b/models-interactions/model-actors/actor.cds/src/main/java/org/onap/policy/controlloop/actor/cds/CdsActorServiceProvider.java
index 1ad184e49..272b4e1c3 100644
--- a/models-interactions/model-actors/actor.cds/src/main/java/org/onap/policy/controlloop/actor/cds/CdsActorServiceProvider.java
+++ b/models-interactions/model-actors/actor.cds/src/main/java/org/onap/policy/controlloop/actor/cds/CdsActorServiceProvider.java
@@ -38,6 +38,7 @@ import org.onap.ccsdk.cds.controllerblueprints.common.api.CommonHeader;
import org.onap.ccsdk.cds.controllerblueprints.common.api.EventType;
import org.onap.ccsdk.cds.controllerblueprints.processing.api.ExecutionServiceInput;
import org.onap.ccsdk.cds.controllerblueprints.processing.api.ExecutionServiceOutput;
+import org.onap.policy.cds.CdsResponse;
import org.onap.policy.cds.api.CdsProcessorListener;
import org.onap.policy.cds.client.CdsProcessorGrpcClient;
import org.onap.policy.cds.properties.CdsServerProperties;
@@ -171,9 +172,9 @@ public class CdsActorServiceProvider implements Actor {
.isNullOrEmpty(cbaActionName);
}
- class CdsActorServiceManager implements CdsProcessorListener {
+ public class CdsActorServiceManager implements CdsProcessorListener {
- private final AtomicReference<String> cdsResponse = new AtomicReference<>();
+ private final AtomicReference<String> cdsStatus = new AtomicReference<>();
/**
* {@inheritDoc}.
@@ -184,16 +185,16 @@ public class CdsActorServiceProvider implements Actor {
EventType eventType = message.getStatus().getEventType();
switch (eventType) {
case EVENT_COMPONENT_FAILURE:
- cdsResponse.compareAndSet(null, CdsActorConstants.FAILED);
+ cdsStatus.compareAndSet(null, CdsActorConstants.FAILED);
break;
case EVENT_COMPONENT_PROCESSING:
- cdsResponse.compareAndSet(null, CdsActorConstants.PROCESSING);
+ cdsStatus.compareAndSet(null, CdsActorConstants.PROCESSING);
break;
case EVENT_COMPONENT_EXECUTED:
- cdsResponse.compareAndSet(null, CdsActorConstants.SUCCESS);
+ cdsStatus.compareAndSet(null, CdsActorConstants.SUCCESS);
break;
default:
- cdsResponse.compareAndSet(null, CdsActorConstants.FAILED);
+ cdsStatus.compareAndSet(null, CdsActorConstants.FAILED);
break;
}
}
@@ -204,7 +205,7 @@ public class CdsActorServiceProvider implements Actor {
@Override
public void onError(final Throwable throwable) {
Status status = Status.fromThrowable(throwable);
- cdsResponse.compareAndSet(null, CdsActorConstants.ERROR);
+ cdsStatus.compareAndSet(null, CdsActorConstants.ERROR);
LOGGER.error("Failed processing blueprint {} {}", status, throwable);
}
@@ -214,30 +215,36 @@ public class CdsActorServiceProvider implements Actor {
* @param cdsClient CDS grpc client object.
* @param cdsProps CDS properties.
* @param executionServiceInput a valid CDS grpc request object.
- * @return Status of the CDS request, null if timeout happens or onError is invoked for any reason.
+ * @return the cds response.
*/
- public String sendRequestToCds(CdsProcessorGrpcClient cdsClient, CdsServerProperties cdsProps,
- ExecutionServiceInput executionServiceInput) {
+ public CdsResponse sendRequestToCds(CdsProcessorGrpcClient cdsClient, CdsServerProperties cdsProps,
+ ExecutionServiceInput executionServiceInput) {
try {
LOGGER.trace("Start CdsActorServiceProvider.executeCdsBlueprintProcessor {}.", executionServiceInput);
// TO-DO: Handle requests asynchronously once the callback support is added to actors.
CountDownLatch countDownLatch = cdsClient.sendRequest(executionServiceInput);
boolean status = countDownLatch.await(cdsProps.getTimeout(), TimeUnit.SECONDS);
if (!status) {
- cdsResponse.compareAndSet(null, CdsActorConstants.TIMED_OUT);
+ cdsStatus.compareAndSet(null, CdsActorConstants.TIMED_OUT);
}
- LOGGER.info("CDS response {}", getCdsResponse());
+ LOGGER.info("CDS status response {}", getCdsStatus());
} catch (InterruptedException ex) {
LOGGER.error("Caught exception in executeCdsBlueprintProcessor in CdsActorServiceProvider: ", ex);
- cdsResponse.compareAndSet(null, CdsActorConstants.INTERRUPTED);
+ cdsStatus.compareAndSet(null, CdsActorConstants.INTERRUPTED);
Thread.currentThread().interrupt();
}
- LOGGER.info("Status of the CDS gRPC request is: {}", getCdsResponse());
- return getCdsResponse();
+ LOGGER.info("Status of the CDS gRPC request is: {}", getCdsStatus());
+
+ CdsResponse response = new CdsResponse();
+ response.setRequestId(
+ executionServiceInput != null && executionServiceInput.getCommonHeader() != null
+ ? executionServiceInput.getCommonHeader().getRequestId() : null);
+ response.setStatus(this.getCdsStatus());
+ return response;
}
- String getCdsResponse() {
- return cdsResponse.get();
+ String getCdsStatus() {
+ return cdsStatus.get();
}
}
}
diff --git a/models-interactions/model-actors/actor.cds/src/test/java/org/onap/policy/controlloop/actor/cds/CdsActorServiceProviderTest.java b/models-interactions/model-actors/actor.cds/src/test/java/org/onap/policy/controlloop/actor/cds/CdsActorServiceProviderTest.java
index 0152521af..28a1676ed 100644
--- a/models-interactions/model-actors/actor.cds/src/test/java/org/onap/policy/controlloop/actor/cds/CdsActorServiceProviderTest.java
+++ b/models-interactions/model-actors/actor.cds/src/test/java/org/onap/policy/controlloop/actor/cds/CdsActorServiceProviderTest.java
@@ -20,6 +20,7 @@ package org.onap.policy.controlloop.actor.cds;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import static org.mockito.Matchers.any;
import static org.mockito.Matchers.anyLong;
@@ -49,6 +50,7 @@ import org.onap.ccsdk.cds.controllerblueprints.common.api.EventType;
import org.onap.ccsdk.cds.controllerblueprints.common.api.Status;
import org.onap.ccsdk.cds.controllerblueprints.processing.api.ExecutionServiceInput;
import org.onap.ccsdk.cds.controllerblueprints.processing.api.ExecutionServiceOutput;
+import org.onap.policy.cds.CdsResponse;
import org.onap.policy.cds.client.CdsProcessorGrpcClient;
import org.onap.policy.cds.properties.CdsServerProperties;
import org.onap.policy.controlloop.ControlLoopOperation;
@@ -188,18 +190,20 @@ public class CdsActorServiceProviderTest {
when(cdsClient.sendRequest(any(ExecutionServiceInput.class))).thenReturn(countDownLatch);
CdsActorServiceProvider.CdsActorServiceManager cdsActorSvcMgr = cdsActor.new CdsActorServiceManager();
- String response = cdsActorSvcMgr
+ CdsResponse response = cdsActorSvcMgr
.sendRequestToCds(cdsClient, cdsProps, ExecutionServiceInput.newBuilder().build());
assertTrue(Thread.interrupted());
- assertEquals(response, CdsActorConstants.INTERRUPTED);
+ assertNotNull(response);
+ assertEquals(CdsActorConstants.INTERRUPTED, response.getStatus());
}
@Test
public void testSendRequestToCdsLatchTimedOut() {
CdsActorServiceProvider.CdsActorServiceManager cdsActorSvcMgr = cdsActor.new CdsActorServiceManager();
- String response = cdsActorSvcMgr
+ CdsResponse response = cdsActorSvcMgr
.sendRequestToCds(cdsClient, cdsProps, ExecutionServiceInput.newBuilder().build());
- assertEquals(response, CdsActorConstants.TIMED_OUT);
+ assertNotNull(response);
+ assertEquals(CdsActorConstants.TIMED_OUT, response.getStatus());
}
@Test
@@ -216,21 +220,21 @@ public class CdsActorServiceProviderTest {
// #1: Failure test
cdsActorSvcMgr.onMessage(message);
- assertEquals(cdsActorSvcMgr.getCdsResponse(), CdsActorConstants.FAILED);
+ assertEquals(CdsActorConstants.FAILED, cdsActorSvcMgr.getCdsStatus());
// #2: Success test
cdsActorSvcMgr = sendRequestToCds();
message = ExecutionServiceOutput.newBuilder()
.setStatus(Status.newBuilder().setEventType(EventType.EVENT_COMPONENT_EXECUTED).build()).build();
cdsActorSvcMgr.onMessage(message);
- assertEquals(cdsActorSvcMgr.getCdsResponse(), CdsActorConstants.SUCCESS);
+ assertEquals(CdsActorConstants.SUCCESS, cdsActorSvcMgr.getCdsStatus());
// #3: Processing test
cdsActorSvcMgr = sendRequestToCds();
message = ExecutionServiceOutput.newBuilder()
.setStatus(Status.newBuilder().setEventType(EventType.EVENT_COMPONENT_PROCESSING).build()).build();
cdsActorSvcMgr.onMessage(message);
- assertEquals(cdsActorSvcMgr.getCdsResponse(), CdsActorConstants.PROCESSING);
+ assertEquals(CdsActorConstants.PROCESSING, cdsActorSvcMgr.getCdsStatus());
}
private CdsActorServiceManager sendRequestToCds() {