1 package org.onap.vid.services;
3 import com.fasterxml.jackson.databind.JsonNode;
4 import com.fasterxml.jackson.databind.ObjectMapper;
5 import org.mockito.Mock;
6 import org.mockito.MockitoAnnotations;
7 import org.onap.vid.aai.AaiClientInterface;
8 import org.onap.vid.model.aaiTree.AAITreeNode;
9 import org.onap.vid.utils.Unchecked;
10 import org.testng.Assert;
11 import org.testng.annotations.BeforeTest;
12 import org.testng.annotations.Test;
14 import java.io.IOException;
15 import java.util.HashMap;
16 import java.util.concurrent.ConcurrentLinkedQueue;
17 import java.util.concurrent.ConcurrentSkipListSet;
18 import java.util.concurrent.ThreadPoolExecutor;
19 import java.util.concurrent.atomic.AtomicInteger;
21 import static java.util.Comparator.comparing;
22 import static org.mockito.Mockito.when;
23 import static org.onap.vid.services.AAIServiceTree.AAI_TREE_PATHS;
25 public class AAITreeNodeBuilderTest {
27 AAITreeNodeBuilder aaiTreeNodeBuilder;
30 AaiClientInterface aaiClientMock;
33 ThreadPoolExecutor threadPoolMock;
37 public void initMocks() {
38 MockitoAnnotations.initMocks(this);
39 aaiTreeNodeBuilder = new AAITreeNodeBuilder(aaiClientMock);
43 public void buildNode_buildGroupNode_NodeIsAsExpected(){
44 ConcurrentSkipListSet<AAITreeNode> nodesAccumulator = new ConcurrentSkipListSet<>(comparing(AAITreeNode::getUniqueNodeKey));
45 ConcurrentLinkedQueue<String> visitedNodes = new ConcurrentLinkedQueue<>();
46 when(aaiClientMock.typedAaiGet(Unchecked.toURI("anyUrl"), JsonNode.class)).thenReturn(createGroupJson());
48 AAITreeNode groupNode = aaiTreeNodeBuilder.buildNode("instance-group",
54 AAI_TREE_PATHS).get(0);
56 AAITreeNode expectedGroupNode = createExpectedGroupNode();
57 assertNodeIsAsExpected(expectedGroupNode,groupNode);
60 private void assertNodeIsAsExpected(AAITreeNode expectedGroupNode, AAITreeNode groupNode) {
61 Assert.assertEquals(groupNode.getId(), expectedGroupNode.getId());
62 Assert.assertEquals(groupNode.getType(), expectedGroupNode.getType());
63 Assert.assertEquals(groupNode.getName(), expectedGroupNode.getName());
64 Assert.assertEquals(groupNode.getModelVersionId(), expectedGroupNode.getModelVersionId());
65 Assert.assertEquals(groupNode.getModelInvariantId(), expectedGroupNode.getModelInvariantId());
66 Assert.assertEquals(groupNode.getInMaint(), expectedGroupNode.getInMaint());
67 Assert.assertEquals(groupNode.getAdditionalProperties(), expectedGroupNode.getAdditionalProperties());
70 private AAITreeNode createExpectedGroupNode() {
71 AAITreeNode expectedNode = new AAITreeNode();
72 expectedNode.setId("c4fcf022-31a0-470a-b5b8-c18335b7af32");
73 expectedNode.setType("instance-group");
74 expectedNode.setName("Test vE-Flex");
75 expectedNode.setModelVersionId("Test vE-Flex");
76 expectedNode.setModelInvariantId("dd182d7d-6949-4b90-b3cc-5befe400742e");
77 expectedNode.setInMaint(false);
78 HashMap<String,Object> additionalProperties = new HashMap<>();
79 additionalProperties.put("inMaint","false");
80 additionalProperties.put("description","Test vE-Flex instance-group");
81 additionalProperties.put("instance-group-type","ha");
82 additionalProperties.put("instance-group-role","test-IG-role");
83 additionalProperties.put("resource-version","1533315433086");
84 additionalProperties.put("instance-group-function","vTSBC Customer Landing Network Collection");
85 expectedNode.setAdditionalProperties(additionalProperties);
91 private JsonNode createGroupJson() {
92 ObjectMapper objectMapper = new ObjectMapper();
93 JsonNode groupNode = null;
95 groupNode = objectMapper.readTree("" +
97 " \"id\": \"c4fcf022-31a0-470a-b5b8-c18335b7af32\"," +
98 " \"instance-group-role\": \"test-IG-role\"," +
99 " \"description\": \"Test vE-Flex instance-group\"," +
100 " \"instance-group-type\": \"ha\"," +
101 " \"resource-version\": \"1533315433086\"," +
102 " \"instance-group-name\": \"Test vE-Flex\"," +
103 " \"model-invariant-id\": \"dd182d7d-6949-4b90-b3cc-5befe400742e\"," +
104 " \"model-version-id\": \"Test vE-Flex\"," +
105 " \"inMaint\": \"false\"," +
106 " \"instance-group-function\": \"vTSBC Customer Landing Network Collection\"," +
107 " \"relationship-list\": {" +
108 " \"relationship\": [{" +
109 " \"related-to\": \"generic-vnf\"," +
110 " \"relationship-label\": \"org.onap.relationships.inventory.MemberOf\" ," +
111 " \"related-link\": \"/aai/v14/network/generic-vnfs/generic-vnf/8c54c369-2876-4423-9b33-80f783f29082\" ," +
112 " \"relationship-data\": [{" +
113 " \"relationship-key\": \"generic-vnf.vnf-id\"," +
114 " \"relationship-value\": \"8c54c369-2876-4423-9b33-80f783f29082\"" +
117 " \"related-to-property\": [{" +
118 " \"property-key\": \"generic-vnf.vnf-name\"," +
119 " \"property-value\": \"zrdm5bffad01\"" +
126 } catch (IOException e) {