From 6ad41e3ccd398a2721f41ad61c80b7bb03f7d127 Mon Sep 17 00:00:00 2001 From: Ittay Stern Date: Mon, 31 Dec 2018 17:21:27 +0200 Subject: Merge from ECOMP's repository Main Features -------------- - Async-Instantiation jobs mechanism major update; still WIP (package `org.onap.vid.job`) - New features in View/Edit: Activate fabric configuration; show related networks; soft delete - Support AAI service-tree traversal (`AAIServiceTree`) - In-memory cache for SDC models and certain A&AI queries (`CacheProviderWithLoadingCache`) - Upgrade TOSCA Parser and add parsing options; fix malformed TOSCA models - Resolve Cloud-Owner values for MSO - Pass X-ONAP headers to MSO Infrastructure -------------- - Remove codehaus' jackson mapper; use soley fasterxml 2.9.7 - Surefire invokes both TestNG and JUnit tests - Support Kotlin source files - AaiController2 which handles errors in a "Spring manner" - Inline generated-sources and remove jsonschema2pojo Quality -------- - Cumulative bug fixes (A&AI API, UI timeouts, and many more) - Many Sonar issues cleaned-up - Some unused classes removed - Minor changes in vid-automation project, allowing some API verification to run Hard Merges ------------ - HTTP Clients (MSO, A&AI, WebConfig, OutgoingRequestHeadersTest) - Moved `package org.onap.vid.controllers` to `controller`, without plural -- just to keep semantic sync with ECOMP. Reference commit in ECOMP: 3d1141625 Issue-ID: VID-378 Change-Id: I9c8d1e74caa41815891d441fc0760bb5f29c5788 Signed-off-by: Ittay Stern --- .../onap/vid/services/AAITreeNodeBuilderTest.java | 131 +++++++++++++++++++++ 1 file changed, 131 insertions(+) create mode 100644 vid-app-common/src/test/java/org/onap/vid/services/AAITreeNodeBuilderTest.java (limited to 'vid-app-common/src/test/java/org/onap/vid/services/AAITreeNodeBuilderTest.java') diff --git a/vid-app-common/src/test/java/org/onap/vid/services/AAITreeNodeBuilderTest.java b/vid-app-common/src/test/java/org/onap/vid/services/AAITreeNodeBuilderTest.java new file mode 100644 index 000000000..5eac5f924 --- /dev/null +++ b/vid-app-common/src/test/java/org/onap/vid/services/AAITreeNodeBuilderTest.java @@ -0,0 +1,131 @@ +package org.onap.vid.services; + +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; +import org.mockito.Mock; +import org.mockito.MockitoAnnotations; +import org.onap.vid.aai.AaiClientInterface; +import org.onap.vid.model.aaiTree.AAITreeNode; +import org.onap.vid.utils.Unchecked; +import org.testng.Assert; +import org.testng.annotations.BeforeTest; +import org.testng.annotations.Test; + +import java.io.IOException; +import java.util.HashMap; +import java.util.concurrent.ConcurrentLinkedQueue; +import java.util.concurrent.ConcurrentSkipListSet; +import java.util.concurrent.ThreadPoolExecutor; +import java.util.concurrent.atomic.AtomicInteger; + +import static java.util.Comparator.comparing; +import static org.mockito.Mockito.when; +import static org.onap.vid.services.AAIServiceTree.AAI_TREE_PATHS; + +public class AAITreeNodeBuilderTest { + + AAITreeNodeBuilder aaiTreeNodeBuilder; + + @Mock + AaiClientInterface aaiClientMock; + + @Mock + ThreadPoolExecutor threadPoolMock; + + + @BeforeTest + public void initMocks() { + MockitoAnnotations.initMocks(this); + aaiTreeNodeBuilder = new AAITreeNodeBuilder(aaiClientMock); + } + + @Test + public void buildNode_buildGroupNode_NodeIsAsExpected(){ + ConcurrentSkipListSet nodesAccumulator = new ConcurrentSkipListSet<>(comparing(AAITreeNode::getUniqueNodeKey)); + ConcurrentLinkedQueue visitedNodes = new ConcurrentLinkedQueue<>(); + when(aaiClientMock.typedAaiGet(Unchecked.toURI("anyUrl"), JsonNode.class)).thenReturn(createGroupJson()); + + AAITreeNode groupNode = aaiTreeNodeBuilder.buildNode("instance-group", + "anyUrl", + nodesAccumulator, + threadPoolMock, + visitedNodes, + new AtomicInteger(0), + AAI_TREE_PATHS).get(0); + + AAITreeNode expectedGroupNode = createExpectedGroupNode(); + assertNodeIsAsExpected(expectedGroupNode,groupNode); + } + + private void assertNodeIsAsExpected(AAITreeNode expectedGroupNode, AAITreeNode groupNode) { + Assert.assertEquals(groupNode.getId(), expectedGroupNode.getId()); + Assert.assertEquals(groupNode.getType(), expectedGroupNode.getType()); + Assert.assertEquals(groupNode.getName(), expectedGroupNode.getName()); + Assert.assertEquals(groupNode.getModelVersionId(), expectedGroupNode.getModelVersionId()); + Assert.assertEquals(groupNode.getModelInvariantId(), expectedGroupNode.getModelInvariantId()); + Assert.assertEquals(groupNode.getInMaint(), expectedGroupNode.getInMaint()); + Assert.assertEquals(groupNode.getAdditionalProperties(), expectedGroupNode.getAdditionalProperties()); + } + + private AAITreeNode createExpectedGroupNode() { + AAITreeNode expectedNode = new AAITreeNode(); + expectedNode.setId("c4fcf022-31a0-470a-b5b8-c18335b7af32"); + expectedNode.setType("instance-group"); + expectedNode.setName("Test vE-Flex"); + expectedNode.setModelVersionId("Test vE-Flex"); + expectedNode.setModelInvariantId("dd182d7d-6949-4b90-b3cc-5befe400742e"); + expectedNode.setInMaint(false); + HashMap additionalProperties = new HashMap<>(); + additionalProperties.put("inMaint","false"); + additionalProperties.put("description","Test vE-Flex instance-group"); + additionalProperties.put("instance-group-type","ha"); + additionalProperties.put("instance-group-role","test-IG-role"); + additionalProperties.put("resource-version","1533315433086"); + additionalProperties.put("instance-group-function","vTSBC Customer Landing Network Collection"); + expectedNode.setAdditionalProperties(additionalProperties); + + + return expectedNode; + } + + private JsonNode createGroupJson() { + ObjectMapper objectMapper = new ObjectMapper(); + JsonNode groupNode = null; + try { + groupNode = objectMapper.readTree("" + + "{" + + " \"id\": \"c4fcf022-31a0-470a-b5b8-c18335b7af32\"," + + " \"instance-group-role\": \"test-IG-role\"," + + " \"description\": \"Test vE-Flex instance-group\"," + + " \"instance-group-type\": \"ha\"," + + " \"resource-version\": \"1533315433086\"," + + " \"instance-group-name\": \"Test vE-Flex\"," + + " \"model-invariant-id\": \"dd182d7d-6949-4b90-b3cc-5befe400742e\"," + + " \"model-version-id\": \"Test vE-Flex\"," + + " \"inMaint\": \"false\"," + + " \"instance-group-function\": \"vTSBC Customer Landing Network Collection\"," + + " \"relationship-list\": {" + + " \"relationship\": [{" + + " \"related-to\": \"generic-vnf\"," + + " \"relationship-label\": \"org.onap.relationships.inventory.MemberOf\" ," + + " \"related-link\": \"/aai/v14/network/generic-vnfs/generic-vnf/8c54c369-2876-4423-9b33-80f783f29082\" ," + + " \"relationship-data\": [{" + + " \"relationship-key\": \"generic-vnf.vnf-id\"," + + " \"relationship-value\": \"8c54c369-2876-4423-9b33-80f783f29082\"" + + " }" + + " ]," + + " \"related-to-property\": [{" + + " \"property-key\": \"generic-vnf.vnf-name\"," + + " \"property-value\": \"zrdm5bffad01\"" + + " }" + + " ]" + + " }" + + " ]" + + " }" + + " }"); + } catch (IOException e) { + e.printStackTrace(); + } + return groupNode; + } +} -- cgit 1.2.3-korg