aboutsummaryrefslogtreecommitdiffstats
path: root/models-interactions/model-actors/actor.so/src/test
diff options
context:
space:
mode:
authorJim Hahn <jrh3@att.com>2020-08-04 16:27:18 -0400
committerJim Hahn <jrh3@att.com>2020-08-06 19:19:46 -0400
commitdeed677c3dc8751209d50e7d35132c929fe6800d (patch)
tree01f3149d4a03206e134d889d50834ae8d141a0ce /models-interactions/model-actors/actor.so/src/test
parent364ef26929f06637bca03dd7bfb5e8ac69b611f8 (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.so/src/test')
-rw-r--r--models-interactions/model-actors/actor.so/src/test/java/org/onap/policy/controlloop/actor/so/SoOperationTest.java146
-rw-r--r--models-interactions/model-actors/actor.so/src/test/java/org/onap/policy/controlloop/actor/so/VfModuleCreateTest.java55
-rw-r--r--models-interactions/model-actors/actor.so/src/test/java/org/onap/policy/controlloop/actor/so/VfModuleDeleteTest.java45
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
}