aboutsummaryrefslogtreecommitdiffstats
path: root/vid-app-common/src/test/java/org/onap/vid
diff options
context:
space:
mode:
authorIttay Stern <ittay.stern@att.com>2020-02-12 12:28:59 +0200
committerIttay Stern <ittay.stern@att.com>2020-02-20 19:12:02 +0200
commit3bfa1d957d77f9e40c47e654a629e73bd77fdfcd (patch)
tree4d44c84a3d85cd7d83068b42f9b4e011af6c8e86 /vid-app-common/src/test/java/org/onap/vid
parentd6eedb1f342ac32c8339b553848267e443410d57 (diff)
Topology tree: enrich vfModules data from other versions of same model
Depends on FLAG_EXP_TOPOLOGY_TREE_VFMODULE_NAMES_FROM_OTHER_TOSCA_VERSIONS Issue-ID: VID-771 Change-Id: Ib25c6cf7269614f2f4d332b3aa84b3307a59ebda Signed-off-by: Ittay Stern <ittay.stern@att.com>
Diffstat (limited to 'vid-app-common/src/test/java/org/onap/vid')
-rw-r--r--vid-app-common/src/test/java/org/onap/vid/services/AAIServiceIntegrativeTest.java2
-rw-r--r--vid-app-common/src/test/java/org/onap/vid/services/AAIServiceTreeIntegrativeTest.java14
-rw-r--r--vid-app-common/src/test/java/org/onap/vid/services/AAITreeNodesEnricherTest.java162
3 files changed, 168 insertions, 10 deletions
diff --git a/vid-app-common/src/test/java/org/onap/vid/services/AAIServiceIntegrativeTest.java b/vid-app-common/src/test/java/org/onap/vid/services/AAIServiceIntegrativeTest.java
index e447ac71c..934a4711b 100644
--- a/vid-app-common/src/test/java/org/onap/vid/services/AAIServiceIntegrativeTest.java
+++ b/vid-app-common/src/test/java/org/onap/vid/services/AAIServiceIntegrativeTest.java
@@ -65,7 +65,7 @@ public class AAIServiceIntegrativeTest extends TestWithAaiClient {
ExecutorService executorService = MoreExecutors.newDirectExecutorService();
AAIServiceTree aaiServiceTree = new AAIServiceTree(
new AAITreeNodeBuilder(aaiClient, logging),
- new AAITreeNodesEnricher(aaiClient, null),
+ new AAITreeNodesEnricher(aaiClient, null, null, null),
new AAITreeConverter(new ModelUtil()), null,
executorService
);
diff --git a/vid-app-common/src/test/java/org/onap/vid/services/AAIServiceTreeIntegrativeTest.java b/vid-app-common/src/test/java/org/onap/vid/services/AAIServiceTreeIntegrativeTest.java
index 02f127d71..03b5b24cb 100644
--- a/vid-app-common/src/test/java/org/onap/vid/services/AAIServiceTreeIntegrativeTest.java
+++ b/vid-app-common/src/test/java/org/onap/vid/services/AAIServiceTreeIntegrativeTest.java
@@ -56,6 +56,7 @@ import org.onap.vid.model.aaiTree.AAITreeNode;
import org.onap.vid.model.aaiTree.FailureAAITreeNode;
import org.onap.vid.model.aaiTree.ServiceInstance;
import org.onap.vid.model.aaiTree.Vnf;
+import org.onap.vid.properties.Features;
import org.onap.vid.testUtils.TestUtils;
import org.onap.vid.utils.Logging;
import org.springframework.http.HttpMethod;
@@ -304,7 +305,10 @@ public class AAIServiceTreeIntegrativeTest {
TestUtils.initMockitoMocks(this);
reboundLoggingWithMdcMock();
aaiTreeNodeBuilder = new AAITreeNodeBuilder(aaiClient, logging);
- aaiTreeNodesEnricher = new AAITreeNodesEnricher(aaiClient, serviceModelInflator);
+ aaiTreeNodesEnricher = new AAITreeNodesEnricher(aaiClient, null, featureManager, serviceModelInflator);
+
+ when(featureManager.isActive(Features.FLAG_EXP_TOPOLOGY_TREE_VFMODULE_NAMES_FROM_OTHER_TOSCA_VERSIONS))
+ .thenReturn(true);
}
private void reboundLoggingWithMdcMock() {
@@ -320,7 +324,7 @@ public class AAIServiceTreeIntegrativeTest {
when(aaiGetVersionByInvariantIdResponse.readEntity(String.class)).thenReturn(getVersionByInvariantIdResponseString);
- when(sdcService.getService(any())).thenReturn(mock(ServiceModel.class));
+ when(sdcService.getServiceModelOrThrow(any())).thenReturn(mock(ServiceModel.class));
when(serviceModelInflator.toNamesByVersionId(any())).thenReturn(ImmutableMap.of(
"11c6dc3e-cd6a-41b3-a50e-b5a10f7157d0", new ServiceModelInflator.Names("vnf-model-customization-name", "vnf-key-in-model")
));
@@ -372,11 +376,11 @@ public class AAIServiceTreeIntegrativeTest {
when(aaiGetVersionByInvariantIdResponse.readEntity(String.class)).
thenReturn(TestUtils.readFileAsString("/getTopology/serviceWithCR/service-design-and-creation.json"));
- when(sdcService.getService(any())).thenReturn(
+ when(sdcService.getServiceModelOrThrow(any())).thenReturn(
TestUtils.readJsonResourceFileAsObject("/getTopology/serviceWithCR/serviceWithCRModel.json", ServiceModel.class));
ServiceInstance serviceInstance = new AAIServiceTree(aaiTreeNodeBuilder,
- new AAITreeNodesEnricher(aaiClient, new ServiceModelInflator()), aaiTreeConverter, sdcService, executorService)
+ new AAITreeNodesEnricher(aaiClient, null, featureManager, new ServiceModelInflator()), aaiTreeConverter, sdcService, executorService)
.getServiceInstanceTopology("a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb", "Emanuel", "a565e6ad-75d1-4493-98f1-33234b5c17e2");
String expected = TestUtils.readFileAsString("/getTopology/serviceWithCR/getTopologyWithCR.json");
@@ -440,7 +444,7 @@ public class AAIServiceTreeIntegrativeTest {
when(aaiGetVersionByInvariantIdResponse.readEntity(String.class)).thenReturn(getVersionByInvariantIdResponseString);
- when(sdcService.getService(any())).thenReturn(mock(ServiceModel.class));
+ when(sdcService.getServiceModelOrThrow(any())).thenReturn(mock(ServiceModel.class));
when(serviceModelInflator.toNamesByVersionId(any())).thenReturn(ImmutableMap.of());
new AAIServiceTree(aaiTreeNodeBuilder, aaiTreeNodesEnricher, aaiTreeConverter, sdcService, executorService)
diff --git a/vid-app-common/src/test/java/org/onap/vid/services/AAITreeNodesEnricherTest.java b/vid-app-common/src/test/java/org/onap/vid/services/AAITreeNodesEnricherTest.java
index 8aba27932..29722563f 100644
--- a/vid-app-common/src/test/java/org/onap/vid/services/AAITreeNodesEnricherTest.java
+++ b/vid-app-common/src/test/java/org/onap/vid/services/AAITreeNodesEnricherTest.java
@@ -23,26 +23,36 @@ package org.onap.vid.services;
import static java.util.Collections.emptyList;
import static java.util.Collections.emptyMap;
import static java.util.stream.Collectors.toList;
+import static net.javacrumbs.jsonunit.JsonMatchers.jsonEquals;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.collection.IsIterableContainingInAnyOrder.containsInAnyOrder;
import static org.mockito.Matchers.any;
+import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.Streams;
+import java.util.Collection;
import java.util.List;
+import net.javacrumbs.jsonunit.core.Option;
import org.apache.commons.lang3.builder.ReflectionToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import org.jetbrains.annotations.NotNull;
import org.mockito.InjectMocks;
import org.mockito.Mock;
-import org.mockito.MockitoAnnotations;
import org.onap.vid.aai.AaiClientInterface;
+import org.onap.vid.aai.model.ModelVer;
import org.onap.vid.asdc.parser.ServiceModelInflator;
import org.onap.vid.asdc.parser.ServiceModelInflator.Names;
+import org.onap.vid.exceptions.GenericUncheckedException;
+import org.onap.vid.model.ServiceModel;
import org.onap.vid.model.aaiTree.AAITreeNode;
-import org.testng.annotations.BeforeTest;
+import org.onap.vid.model.aaiTree.NodeType;
+import org.onap.vid.properties.Features;
+import org.onap.vid.testUtils.TestUtils;
+import org.testng.annotations.BeforeMethod;
+import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
import org.togglz.core.manager.FeatureManager;
@@ -59,9 +69,9 @@ public class AAITreeNodesEnricherTest {
@InjectMocks
private AAITreeNodesEnricher aaiTreeNodesEnricher;
- @BeforeTest
+ @BeforeMethod
public void initMocks() {
- MockitoAnnotations.initMocks(this);
+ TestUtils.initMockitoMocks(this);
}
private final static String nullString = "null placeholder";
@@ -142,6 +152,150 @@ public class AAITreeNodesEnricherTest {
assertThat(toStrings(nodesUnderTest), containsInAnyOrder(toStringsArray(nodesWithVersionIdsAndCustomizationNames(versionIds, expectedNames))));
}
+ @DataProvider
+ public static Object[][] enrichVfModulesFilteredOutCases() {
+ AAITreeNode volumeGroup = new AAITreeNode();
+ volumeGroup.setType(NodeType.VOLUME_GROUP);
+
+ AAITreeNode vfModuleWithoutData = new AAITreeNode();
+ vfModuleWithoutData.setType(NodeType.VF_MODULE);
+
+ AAITreeNode vfModuleWithModelCustomizationName = new AAITreeNode();
+ vfModuleWithModelCustomizationName.setType(NodeType.VF_MODULE);
+ vfModuleWithModelCustomizationName.setModelCustomizationName("foo");
+
+ AAITreeNode vfModuleWithKeyInModel = new AAITreeNode();
+ vfModuleWithKeyInModel.setType(NodeType.VF_MODULE);
+ vfModuleWithKeyInModel.setKeyInModel("foo");
+
+ return new Object[][]{
+ {"no nodes", null, true},
+ {"no vfmodules", volumeGroup, true},
+ {"flag is off", vfModuleWithoutData, false},
+ {"all vfmodules with either getKeyInModel or getModelCustomizationId", vfModuleWithModelCustomizationName, true},
+ {"all vfmodules with either getKeyInModel or getModelCustomizationId", vfModuleWithKeyInModel, true},
+ };
+ }
+
+ @Test(dataProvider = "enrichVfModulesFilteredOutCases")
+ public void enrichVfModulesWithModelCustomizationNameFromOtherVersions_givenFilteredOutCases_doNothing(String reasonToSkip, AAITreeNode node, boolean flagState) {
+ when(featureManager.isActive(Features.FLAG_EXP_TOPOLOGY_TREE_VFMODULE_NAMES_FROM_OTHER_TOSCA_VERSIONS))
+ .thenReturn(flagState);
+
+ when(aaiClient.getSortedVersionsByInvariantId(any()))
+ .thenThrow(new AssertionError("did not expect reaching getSortedVersionsByInvariantId"));
+
+ List<AAITreeNode> nodes = (node == null) ? emptyList() : ImmutableList.of(node);
+ aaiTreeNodesEnricher.enrichVfModulesWithModelCustomizationNameFromOtherVersions(nodes, "modelInvariantId");
+ }
+
+ @FunctionalInterface
+ public interface Creator<T, R> {
+ R by(T t);
+ }
+
+ @Test
+ public void enrichVfModulesWithModelCustomizationNameFromOtherVersions() {
+ /*
+ Verifies the following
+
+ [*] aaiClient.getSortedVersionsByInvariantId response is exhausted
+ and all models fetched from sdc
+ -> we can see that model #1 info is populated in nodes
+ [*] relevant nodes enriched
+ [*] where data not found: nodes not enriched
+ [*] where data there already: node left pristine
+ [*] where node is not vfmodule: node left pristine
+
+ */
+
+ String modelInvariantId = "modelInvariantId";
+
+ ///////////// HELPERS
+
+ Creator<Integer, AAITreeNode> nodeMissingData = n -> {
+ AAITreeNode node = new AAITreeNode();
+ node.setType(NodeType.VF_MODULE);
+ node.setModelCustomizationId("model-customization-id-" + n);
+ return node;
+ };
+
+ Creator<Integer, AAITreeNode> nodeWithData = n -> {
+ AAITreeNode node = nodeMissingData.by(n);
+ node.setModelCustomizationName("modelCustomizationName-" + n);
+ node.setKeyInModel("modelKey-" + n);
+ return node;
+ };
+
+ Creator<Integer, ImmutableMap<String, Names>> namesMap = n -> ImmutableMap.of(
+ "model-customization-id-" + n,
+ new Names("modelCustomizationName-" + n, "modelKey-" + n)
+ );
+
+ Creator<Integer, ModelVer> modelVer = n -> {
+ ModelVer m = new ModelVer();
+ m.setModelVersion("model-version-" + n);
+ m.setModelVersionId("model-version-id-" + n);
+ return m;
+ };
+
+ ///////////// SET-UP
+
+ when(featureManager.isActive(Features.FLAG_EXP_TOPOLOGY_TREE_VFMODULE_NAMES_FROM_OTHER_TOSCA_VERSIONS))
+ .thenReturn(true);
+
+ /*
+ +-------------+----------+----------+----------+-----------+-----------+
+ | | model v1 | model v2 | model v3 | model v77 | model v99 |
+ +-------------+----------+----------+----------+-----------+-----------+
+ | in AAI list | v | v | v | v | |
+ | in SDC | v | v | v | | |
+ | in nodes | v | | v | v | v |
+ +-------------+----------+----------+----------+-----------+-----------+
+ */
+ when(aaiClient.getSortedVersionsByInvariantId(modelInvariantId))
+ .thenReturn(ImmutableList.of(modelVer.by(3), modelVer.by(77), modelVer.by(2), modelVer.by(1)));
+
+ ServiceModel serviceModel_1 = mock(ServiceModel.class);
+ when(sdcService.getServiceModelOrThrow("model-version-id-1")).thenReturn(serviceModel_1);
+ when(serviceModelInflator.toNamesByCustomizationId(serviceModel_1)).thenReturn(namesMap.by(1));
+
+ ServiceModel serviceModel_2 = mock(ServiceModel.class);
+ when(sdcService.getServiceModelOrThrow("model-version-id-2")).thenReturn(serviceModel_2);
+ when(serviceModelInflator.toNamesByCustomizationId(serviceModel_2)).thenReturn(namesMap.by(2));
+
+ ServiceModel serviceModel_3 = mock(ServiceModel.class);
+ when(sdcService.getServiceModelOrThrow("model-version-id-3")).thenReturn(serviceModel_3);
+ when(serviceModelInflator.toNamesByCustomizationId(serviceModel_3)).thenReturn(namesMap.by(3));
+
+ when(sdcService.getServiceModelOrThrow("model-version-id-77")).thenThrow(GenericUncheckedException.class);
+
+ AAITreeNode nodeWithDataAlready = nodeMissingData.by(1);
+ nodeWithDataAlready.setModelCustomizationName("significant-customization-name");
+ nodeWithDataAlready.setKeyInModel("significant-key-in-model");
+
+ AAITreeNode nodeNotVfModule = nodeMissingData.by(1);
+ nodeNotVfModule.setType(NodeType.GENERIC_VNF);
+
+ Collection<AAITreeNode> nodes = ImmutableList.of(
+ nodeMissingData.by(1), nodeMissingData.by(77),
+ nodeMissingData.by(3), nodeMissingData.by(99),
+ nodeWithDataAlready, nodeNotVfModule
+ );
+
+ ///////////// TEST
+
+ aaiTreeNodesEnricher.enrichVfModulesWithModelCustomizationNameFromOtherVersions(nodes, modelInvariantId);
+
+ assertThat(nodes, jsonEquals(ImmutableList.of(
+ nodeWithData.by(1),
+ nodeWithData.by(3),
+ nodeMissingData.by(77), // not in sdcService
+ nodeMissingData.by(99), // not in aaiClient
+ nodeWithDataAlready, // pristine
+ nodeNotVfModule // pristine
+ )).when(Option.IGNORING_ARRAY_ORDER));
+ }
@NotNull