diff options
author | Jim Hahn <jrh3@att.com> | 2020-08-04 16:27:18 -0400 |
---|---|---|
committer | Jim Hahn <jrh3@att.com> | 2020-08-06 19:19:46 -0400 |
commit | deed677c3dc8751209d50e7d35132c929fe6800d (patch) | |
tree | 01f3149d4a03206e134d889d50834ae8d141a0ce /models-interactions/model-actors/actor.cds/src/test | |
parent | 364ef26929f06637bca03dd7bfb5e8ac69b611f8 (diff) |
Modify Actors to use properties when provided
Modified the Actors to use properties when the application provides them
instead of going to the event context for the data. This sometimes entailed
moving code out of the Operation subclass constructor that used or validated
the context data.
Combined some property names and renamed others.
Changed VF Count from AtomicInteger to Integer.
Issue-ID: POLICY-2746
Change-Id: Ib8730538309bb77d2f4f6161e9a20a49362d8972
Signed-off-by: Jim Hahn <jrh3@att.com>
Diffstat (limited to 'models-interactions/model-actors/actor.cds/src/test')
-rw-r--r-- | models-interactions/model-actors/actor.cds/src/test/java/org/onap/policy/controlloop/actor/cds/GrpcOperationTest.java | 132 |
1 files changed, 128 insertions, 4 deletions
diff --git a/models-interactions/model-actors/actor.cds/src/test/java/org/onap/policy/controlloop/actor/cds/GrpcOperationTest.java b/models-interactions/model-actors/actor.cds/src/test/java/org/onap/policy/controlloop/actor/cds/GrpcOperationTest.java index 06f239b63..2e9935f82 100644 --- a/models-interactions/model-actors/actor.cds/src/test/java/org/onap/policy/controlloop/actor/cds/GrpcOperationTest.java +++ b/models-interactions/model-actors/actor.cds/src/test/java/org/onap/policy/controlloop/actor/cds/GrpcOperationTest.java @@ -24,6 +24,7 @@ import static org.assertj.core.api.Assertions.assertThatIllegalArgumentException import static org.junit.Assert.assertEquals; 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.ArgumentMatchers.eq; @@ -31,6 +32,7 @@ import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; +import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -49,6 +51,7 @@ import org.junit.Test; import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.onap.aai.domain.yang.GenericVnf; +import org.onap.aai.domain.yang.Pnf; import org.onap.aai.domain.yang.ServiceInstance; import org.onap.ccsdk.cds.controllerblueprints.processing.api.ExecutionServiceInput; import org.onap.ccsdk.cds.controllerblueprints.processing.api.ExecutionServiceOutput; @@ -187,6 +190,37 @@ public class GrpcOperationTest { assertTrue(outcome.getResponse() instanceof ExecutionServiceOutput); } + /** + * Tests "success" case with simulator using properties. + */ + @Test + public void testSuccessViaProperties() throws Exception { + ControlLoopEventContext context = new ControlLoopEventContext(onset); + loadCqData(context); + + Map<String, Object> payload = Map.of("artifact_name", "my_artifact", "artifact_version", "1.0"); + + params = ControlLoopOperationParams.builder() + .actor(CdsActorConstants.CDS_ACTOR).operation("subscribe").context(context) + .actorService(new ActorService()).targetEntity(TARGET_ENTITY).target(target).retry(0) + .timeoutSec(5).executor(blockingExecutor).payload(payload).preprocessed(true).build(); + + cdsProps.setHost("localhost"); + cdsProps.setPort(sim.getPort()); + cdsProps.setTimeout(3); + + GrpcConfig config = new GrpcConfig(blockingExecutor, cdsProps); + + operation = new GrpcOperation(params, config); + + // set the properties + operation.setProperty(OperationProperties.OPT_CDS_GRPC_AAI_PROPERTIES, Collections.emptyMap()); + + OperationOutcome outcome = operation.start().get(); + assertEquals(PolicyResult.SUCCESS, outcome.getResult()); + assertTrue(outcome.getResponse() instanceof ExecutionServiceOutput); + } + @Test public void testGetPropertyNames() { @@ -198,9 +232,10 @@ public class GrpcOperationTest { // @formatter:off assertThat(operation.getPropertyNames()).isEqualTo( List.of( - OperationProperties.AAI_MODEL_INVARIANT_GENERIC_VNF, - OperationProperties.AAI_RESOURCE_SERVICE_INSTANCE, - OperationProperties.EVENT_ADDITIONAL_PARAMS)); + OperationProperties.AAI_RESOURCE_VNF, + OperationProperties.AAI_SERVICE, + OperationProperties.EVENT_ADDITIONAL_PARAMS, + OperationProperties.OPT_CDS_GRPC_AAI_PROPERTIES)); // @formatter:on /* @@ -213,11 +248,77 @@ public class GrpcOperationTest { assertThat(operation.getPropertyNames()).isEqualTo( List.of( OperationProperties.AAI_PNF, - OperationProperties.EVENT_ADDITIONAL_PARAMS)); + OperationProperties.EVENT_ADDITIONAL_PARAMS, + OperationProperties.OPT_CDS_GRPC_AAI_PROPERTIES)); // @formatter:on } @Test + public void testGetPnf() { + ControlLoopEventContext context = new ControlLoopEventContext(onset); + params = params.toBuilder().context(context).build(); + operation = new GrpcOperation(params, config); + + // in neither property nor context + assertThatIllegalArgumentException().isThrownBy(() -> operation.getPnfData()) + .withMessage("missing PNF data"); + + // only in context + Pnf pnf = new Pnf(); + params.getContext().setProperty(AaiGetPnfOperation.getKey(params.getTargetEntity()), pnf); + assertSame(pnf, operation.getPnfData()); + + // both - should choose the property + Pnf pnf2 = new Pnf(); + operation.setProperty(OperationProperties.AAI_PNF, pnf2); + assertSame(pnf2, operation.getPnfData()); + } + + @Test + public void testGetServiceInstanceId() { + ControlLoopEventContext context = new ControlLoopEventContext(onset); + params = params.toBuilder().context(context).build(); + operation = new GrpcOperation(params, config); + + // in neither property nor custom query + context.setProperty(AaiCqResponse.CONTEXT_KEY, mock(AaiCqResponse.class)); + assertThatIllegalArgumentException().isThrownBy(() -> operation.getServiceInstanceId()) + .withMessage("Target service instance could not be found"); + + // only in custom query + loadCqData(params.getContext()); + assertEquals(MY_SVC_ID, operation.getServiceInstanceId()); + + // both - should choose the property + ServiceInstance serviceInstance = new ServiceInstance(); + serviceInstance.setServiceInstanceId("another-service-id"); + operation.setProperty(OperationProperties.AAI_SERVICE, serviceInstance); + assertEquals("another-service-id", operation.getServiceInstanceId()); + } + + @Test + public void testGetVnfId() { + ControlLoopEventContext context = new ControlLoopEventContext(onset); + params = params.toBuilder().context(context).build(); + operation = new GrpcOperation(params, config); + + // in neither property nor custom query + context.setProperty(AaiCqResponse.CONTEXT_KEY, mock(AaiCqResponse.class)); + assertThatIllegalArgumentException().isThrownBy(() -> operation.getVnfId()) + .withMessage("Target generic vnf could not be found"); + + // only in custom query + loadCqData(params.getContext()); + assertEquals(MY_VNF, operation.getVnfId()); + + // both - should choose the property + GenericVnf vnf = new GenericVnf(); + vnf.setVnfId("another-vnf-id"); + operation.setProperty(OperationProperties.AAI_RESOURCE_VNF, vnf); + assertEquals("another-vnf-id", operation.getVnfId()); + } + + @Test public void testStartPreprocessorAsync() throws InterruptedException, ExecutionException, TimeoutException { AtomicBoolean guardStarted = new AtomicBoolean(); @@ -317,6 +418,29 @@ public class GrpcOperationTest { assertThatIllegalArgumentException().isThrownBy(() -> operation.startOperationAsync(1, params.makeOutcome())); } + @Test + public void testGetAdditionalEventParams() { + operation = new GrpcOperation(params, config); + + // in neither property nor context + assertNull(operation.getAdditionalEventParams()); + + final Map<String, String> eventParams = Collections.emptyMap(); + + // only in context + onset.setAdditionalEventParams(eventParams); + assertSame(eventParams, operation.getAdditionalEventParams()); + + // both - should choose the property, even if it's null + operation.setProperty(OperationProperties.EVENT_ADDITIONAL_PARAMS, null); + assertNull(operation.getAdditionalEventParams()); + + // both - should choose the property + final Map<String, String> propParams = Collections.emptyMap(); + operation.setProperty(OperationProperties.EVENT_ADDITIONAL_PARAMS, propParams); + assertSame(propParams, operation.getAdditionalEventParams()); + } + private void verifyOperation(ControlLoopEventContext context) { Map<String, Object> payloadMap = Map.of(CdsActorConstants.KEY_CBA_NAME, CDS_BLUEPRINT_NAME, |