diff options
Diffstat (limited to 'models-interactions/model-actors/actor.so/src/test')
3 files changed, 206 insertions, 40 deletions
diff --git a/models-interactions/model-actors/actor.so/src/test/java/org/onap/policy/controlloop/actor/so/SoOperationTest.java b/models-interactions/model-actors/actor.so/src/test/java/org/onap/policy/controlloop/actor/so/SoOperationTest.java index 7314c59fa..e364246e4 100644 --- a/models-interactions/model-actors/actor.so/src/test/java/org/onap/policy/controlloop/actor/so/SoOperationTest.java +++ b/models-interactions/model-actors/actor.so/src/test/java/org/onap/policy/controlloop/actor/so/SoOperationTest.java @@ -36,12 +36,14 @@ import java.time.Month; import java.util.Collections; import java.util.List; import java.util.concurrent.CompletableFuture; +import java.util.function.BiConsumer; import java.util.function.Consumer; import java.util.function.Supplier; import org.junit.Before; import org.junit.Test; import org.onap.aai.domain.yang.CloudRegion; import org.onap.aai.domain.yang.GenericVnf; +import org.onap.aai.domain.yang.ModelVer; import org.onap.aai.domain.yang.ServiceInstance; import org.onap.aai.domain.yang.Tenant; import org.onap.policy.aai.AaiCqResponse; @@ -49,6 +51,7 @@ import org.onap.policy.common.utils.coder.Coder; import org.onap.policy.common.utils.coder.CoderException; import org.onap.policy.controlloop.ControlLoopOperation; import org.onap.policy.controlloop.actorserviceprovider.OperationOutcome; +import org.onap.policy.controlloop.actorserviceprovider.OperationProperties; import org.onap.policy.controlloop.policy.PolicyResult; import org.onap.policy.so.SoModelInfo; import org.onap.policy.so.SoRequest; @@ -63,6 +66,8 @@ public class SoOperationTest extends BasicSoOperation { private static final List<String> PROP_NAMES = Collections.emptyList(); + private static final String VERSION_ID = "1.2.3"; + private SoOperation oper; /** @@ -140,6 +145,24 @@ public class SoOperationTest extends BasicSoOperation { } /** + * Tests the VF Count methods when properties are being used. + * @throws Exception if an error occurs + */ + @Test + public void testGetVfCount_testSetVfCount_ViaProperties() throws Exception { + oper.setProperty(OperationProperties.DATA_VF_COUNT, VF_COUNT); + + // verify that the count was stored + assertEquals(VF_COUNT.intValue(), oper.getVfCount()); + + oper.setVfCount(VF_COUNT + 1); + + int count = oper.getProperty(OperationProperties.DATA_VF_COUNT); + assertEquals(VF_COUNT + 1, count); + assertEquals(VF_COUNT + 1, oper.getVfCount()); + } + + /** * Tests obtainVfCount() when it actually has to query. */ @Test @@ -286,55 +309,114 @@ public class SoOperationTest extends BasicSoOperation { } @Test - public void testGetVnfItem() { - // missing data + public void testGetItem() { AaiCqResponse cq = mock(AaiCqResponse.class); - assertThatIllegalArgumentException().isThrownBy(() -> oper.getVnfItem(cq, oper.prepareSoModelInfo())) - .withMessage("missing generic VNF"); + params.getContext().setProperty(AaiCqResponse.CONTEXT_KEY, cq); - // valid data - GenericVnf vnf = new GenericVnf(); - when(cq.getGenericVnfByVfModuleModelInvariantId(MODEL_INVAR_ID)).thenReturn(vnf); - assertSame(vnf, oper.getVnfItem(cq, oper.prepareSoModelInfo())); + // in neither property nor custom query + assertThatIllegalArgumentException().isThrownBy(() -> oper.getItem("propA", cq2 -> null, "not found")) + .withMessage("not found"); + + // only in custom query + assertEquals("valueB", oper.getItem("propB", cq2 -> "valueB", "failureB")); + + // both - should choose the property + oper.setProperty("propC", "valueC"); + assertEquals("valueC", oper.getItem("propC", cq2 -> "valueC2", "failureC")); + + // both - should choose the property, even if it's null + oper.setProperty("propD", null); + assertNull(oper.getItem("propD", cq2 -> "valueD2", "failureD")); } @Test - public void testGetServiceInstance() { - // missing data - AaiCqResponse cq = mock(AaiCqResponse.class); - assertThatIllegalArgumentException().isThrownBy(() -> oper.getServiceInstance(cq)) - .withMessage("missing VNF Service Item"); + public void testGetVnfItem() { + // @formatter:off + verifyItems(OperationProperties.AAI_VNF, GenericVnf::new, + (cq, instance) -> when(cq.getGenericVnfByVfModuleModelInvariantId(MODEL_INVAR_ID)).thenReturn(instance), + () -> oper.getVnfItem(oper.prepareSoModelInfo()), + "missing generic VNF"); + // @formatter:on + } - // valid data - ServiceInstance instance = new ServiceInstance(); - when(cq.getServiceInstance()).thenReturn(instance); - assertSame(instance, oper.getServiceInstance(cq)); + @Test + public void testGetServiceInstance() { + // @formatter:off + verifyItems(OperationProperties.AAI_SERVICE, ServiceInstance::new, + (cq, instance) -> when(cq.getServiceInstance()).thenReturn(instance), + () -> oper.getServiceInstance(), + "missing VNF Service Item"); + // @formatter:on } @Test public void testGetDefaultTenant() { - // missing data - AaiCqResponse cq = mock(AaiCqResponse.class); - assertThatIllegalArgumentException().isThrownBy(() -> oper.getDefaultTenant(cq)) - .withMessage("missing Tenant Item"); + // @formatter:off + verifyItems(OperationProperties.AAI_DEFAULT_TENANT, Tenant::new, + (cq, tenant) -> when(cq.getDefaultTenant()).thenReturn(tenant), + () -> oper.getDefaultTenant(), + "missing Default Tenant Item"); + // @formatter:on + } - // valid data - Tenant tenant = new Tenant(); - when(cq.getDefaultTenant()).thenReturn(tenant); - assertSame(tenant, oper.getDefaultTenant(cq)); + @Test + public void testGetVnfModel() { + GenericVnf vnf = new GenericVnf(); + vnf.setModelVersionId(VERSION_ID); + + // @formatter:off + verifyItems(OperationProperties.AAI_VNF_MODEL, ModelVer::new, + (cq, model) -> when(cq.getModelVerByVersionId(VERSION_ID)).thenReturn(model), + () -> oper.getVnfModel(vnf), + "missing generic VNF Model"); + // @formatter:on + } + + @Test + public void testGetServiceModel() { + ServiceInstance service = new ServiceInstance(); + service.setModelVersionId(VERSION_ID); + + // @formatter:off + verifyItems(OperationProperties.AAI_SERVICE_MODEL, ModelVer::new, + (cq, model) -> when(cq.getModelVerByVersionId(VERSION_ID)).thenReturn(model), + () -> oper.getServiceModel(service), + "missing Service Model"); + // @formatter:on } @Test public void testGetDefaultCloudRegion() { - // missing data + // @formatter:off + verifyItems(OperationProperties.AAI_DEFAULT_CLOUD_REGION, CloudRegion::new, + (cq, region) -> when(cq.getDefaultCloudRegion()).thenReturn(region), + () -> oper.getDefaultCloudRegion(), + "missing Default Cloud Region"); + // @formatter:on + } + + private <T> void verifyItems(String propName, Supplier<T> maker, BiConsumer<AaiCqResponse, T> setter, + Supplier<T> getter, String errmsg) { + AaiCqResponse cq = mock(AaiCqResponse.class); - assertThatIllegalArgumentException().isThrownBy(() -> oper.getDefaultCloudRegion(cq)) - .withMessage("missing Cloud Region"); + params.getContext().setProperty(AaiCqResponse.CONTEXT_KEY, cq); - // valid data - CloudRegion region = new CloudRegion(); - when(cq.getDefaultCloudRegion()).thenReturn(region); - assertSame(region, oper.getDefaultCloudRegion(cq)); + // in neither property nor custom query + assertThatIllegalArgumentException().isThrownBy(getter::get).withMessage(errmsg); + + // only in custom query + final T item1 = maker.get(); + setter.accept(cq, item1); + assertSame(item1, getter.get()); + + // both - should choose the property + final T item2 = maker.get(); + oper.setProperty(propName, item2); + assertSame(item2, getter.get()); + + // both - should choose the property, even if it's null + oper.setProperty(propName, null); + assertNull(getter.get()); } @Test diff --git a/models-interactions/model-actors/actor.so/src/test/java/org/onap/policy/controlloop/actor/so/VfModuleCreateTest.java b/models-interactions/model-actors/actor.so/src/test/java/org/onap/policy/controlloop/actor/so/VfModuleCreateTest.java index 012f8deff..9d80343e6 100644 --- a/models-interactions/model-actors/actor.so/src/test/java/org/onap/policy/controlloop/actor/so/VfModuleCreateTest.java +++ b/models-interactions/model-actors/actor.so/src/test/java/org/onap/policy/controlloop/actor/so/VfModuleCreateTest.java @@ -108,6 +108,51 @@ public class VfModuleCreateTest extends BasicSoOperation { assertTrue(outcome.getResponse() instanceof SoResponse); } + /** + * Tests "success" case with simulator, using properties instead of custom query data. + */ + @Test + public void testSuccessViaProperties() throws Exception { + HttpPollingParams opParams = HttpPollingParams.builder().clientName(MY_CLIENT) + .path("serviceInstantiation/v7/serviceInstances").pollPath("orchestrationRequests/v5/") + .maxPolls(2).build(); + config = new HttpPollingConfig(blockingExecutor, opParams, HttpClientFactoryInstance.getClientFactory()); + + params = params.toBuilder().retry(0).timeoutSec(5).executor(blockingExecutor).preprocessed(true).build(); + params.getContext().removeProperty(AaiCqResponse.CONTEXT_KEY); + + oper = new VfModuleCreate(params, config); + + // set the properties + ServiceInstance instance = new ServiceInstance(); + instance.setServiceInstanceId(SVC_INSTANCE_ID); + oper.setProperty(OperationProperties.AAI_SERVICE, instance); + + ModelVer modelVers = new ModelVer(); + modelVers.setModelName(MODEL_NAME2); + modelVers.setModelVersion(MODEL_VERS2); + + oper.setProperty(OperationProperties.AAI_SERVICE_MODEL, modelVers); + oper.setProperty(OperationProperties.AAI_VNF_MODEL, modelVers); + + GenericVnf vnf = new GenericVnf(); + vnf.setVnfId(VNF_ID); + oper.setProperty(OperationProperties.AAI_VNF, vnf); + + oper.setProperty(OperationProperties.AAI_DEFAULT_CLOUD_REGION, new CloudRegion()); + oper.setProperty(OperationProperties.AAI_DEFAULT_TENANT, new Tenant()); + + oper.setProperty(OperationProperties.DATA_VF_COUNT, VF_COUNT); + + // run the operation + outcome = oper.start().get(); + assertEquals(PolicyResult.SUCCESS, outcome.getResult()); + assertTrue(outcome.getResponse() instanceof SoResponse); + + int count = oper.getProperty(OperationProperties.DATA_VF_COUNT); + assertEquals(VF_COUNT + 1, count); + } + @Test public void testConstructor() { assertEquals(DEFAULT_ACTOR, oper.getActorName()); @@ -124,10 +169,12 @@ public class VfModuleCreateTest extends BasicSoOperation { // @formatter:off assertThat(oper.getPropertyNames()).isEqualTo( List.of( - OperationProperties.AAI_MODEL_SERVICE, - OperationProperties.AAI_MODEL_VNF, - OperationProperties.AAI_MODEL_CLOUD_REGION, - OperationProperties.AAI_MODEL_TENANT, + OperationProperties.AAI_SERVICE, + OperationProperties.AAI_SERVICE_MODEL, + OperationProperties.AAI_VNF, + OperationProperties.AAI_VNF_MODEL, + OperationProperties.AAI_DEFAULT_CLOUD_REGION, + OperationProperties.AAI_DEFAULT_TENANT, OperationProperties.DATA_VF_COUNT)); // @formatter:on } diff --git a/models-interactions/model-actors/actor.so/src/test/java/org/onap/policy/controlloop/actor/so/VfModuleDeleteTest.java b/models-interactions/model-actors/actor.so/src/test/java/org/onap/policy/controlloop/actor/so/VfModuleDeleteTest.java index cc2aafa74..9335f0141 100644 --- a/models-interactions/model-actors/actor.so/src/test/java/org/onap/policy/controlloop/actor/so/VfModuleDeleteTest.java +++ b/models-interactions/model-actors/actor.so/src/test/java/org/onap/policy/controlloop/actor/so/VfModuleDeleteTest.java @@ -137,6 +137,43 @@ public class VfModuleDeleteTest extends BasicSoOperation { assertTrue(outcome.getResponse() instanceof SoResponse); } + /** + * Tests "success" case with simulator, using properties instead of custom query data. + */ + @Test + public void testSuccessViaProperties() throws Exception { + HttpPollingParams opParams = HttpPollingParams.builder().clientName(MY_CLIENT).path("serviceInstances/v7") + .pollPath("orchestrationRequests/v5/").maxPolls(2).build(); + config = new HttpPollingConfig(blockingExecutor, opParams, HttpClientFactoryInstance.getClientFactory()); + + params = params.toBuilder().retry(0).timeoutSec(5).executor(blockingExecutor).preprocessed(true).build(); + params.getContext().removeProperty(AaiCqResponse.CONTEXT_KEY); + + oper = new VfModuleDelete(params, config); + + // set the properties + ServiceInstance instance = new ServiceInstance(); + instance.setServiceInstanceId(SVC_INSTANCE_ID); + oper.setProperty(OperationProperties.AAI_SERVICE, instance); + + GenericVnf vnf = new GenericVnf(); + vnf.setVnfId(VNF_ID); + oper.setProperty(OperationProperties.AAI_VNF, vnf); + + oper.setProperty(OperationProperties.AAI_DEFAULT_CLOUD_REGION, new CloudRegion()); + oper.setProperty(OperationProperties.AAI_DEFAULT_TENANT, new Tenant()); + + oper.setProperty(OperationProperties.DATA_VF_COUNT, VF_COUNT); + + // run the operation + outcome = oper.start().get(); + assertEquals(PolicyResult.SUCCESS, outcome.getResult()); + assertTrue(outcome.getResponse() instanceof SoResponse); + + int count = oper.getProperty(OperationProperties.DATA_VF_COUNT); + assertEquals(VF_COUNT - 1, count); + } + @Test public void testConstructor() { assertEquals(DEFAULT_ACTOR, oper.getActorName()); @@ -153,10 +190,10 @@ public class VfModuleDeleteTest extends BasicSoOperation { // @formatter:off assertThat(oper.getPropertyNames()).isEqualTo( List.of( - OperationProperties.AAI_MODEL_SERVICE, - OperationProperties.AAI_MODEL_VNF, - OperationProperties.AAI_MODEL_CLOUD_REGION, - OperationProperties.AAI_MODEL_TENANT, + OperationProperties.AAI_SERVICE, + OperationProperties.AAI_VNF, + OperationProperties.AAI_DEFAULT_CLOUD_REGION, + OperationProperties.AAI_DEFAULT_TENANT, OperationProperties.DATA_VF_COUNT)); // @formatter:on } |