Modified one test file
[nemo.git] / nemo-impl / src / test / java / org / opendaylight / nemo / intent / NodeMapperTest.java
1 /*\r
2  * Copyright (c) 2015 Huawei, Inc. and others. All rights reserved.\r
3  *\r
4  * This program and the accompanying materials are made available under the\r
5  * terms of the Eclipse Public License v1.0 which accompanies this distribution,\r
6  * and is available at http://www.eclipse.org/legal/epl-v10.html\r
7  */\r
8 package org.opendaylight.nemo.intent;\r
9 \r
10 import junit.framework.TestCase;\r
11 import org.junit.Assert;\r
12 import org.junit.Before;\r
13 import org.junit.Test;\r
14 \r
15 import static org.junit.Assert.*;\r
16 import com.google.common.base.Optional;\r
17 import com.google.common.util.concurrent.CheckedFuture;\r
18 import org.junit.runner.RunWith;\r
19 import org.opendaylight.controller.md.sal.binding.api.DataBroker;\r
20 import org.opendaylight.controller.md.sal.binding.api.ReadOnlyTransaction;\r
21 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;\r
22 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.engine.common.rev151010.PhysicalPortId;\r
23 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpAddress;\r
24 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpPrefix;\r
25 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv4Prefix;\r
26 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev100924.MacAddress;\r
27 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.physical.network.rev151010.physical.host.instance.IpAddresses;\r
28 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.networks.virtual.network.VirtualNodes;\r
29 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.engine.common.rev151010.PhysicalNodeId;\r
30 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.physical.network.rev151010.PhysicalNetwork;\r
31 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.physical.network.rev151010.attribute.instance.AttributeValue;\r
32 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.physical.network.rev151010.attribute.instance.AttributeValueBuilder;\r
33 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.physical.network.rev151010.physical.network.PhysicalHosts;\r
34 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.physical.network.rev151010.physical.network.physical.hosts.PhysicalHost;\r
35 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.networks.VirtualNetwork;\r
36 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.networks.virtual.network.virtual.arps.VirtualArp;\r
37 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.networks.virtual.network.virtual.arps.VirtualArpBuilder;\r
38 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.networks.virtual.network.virtual.links.VirtualLink;\r
39 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.networks.virtual.network.virtual.links.VirtualLinkBuilder;\r
40 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.networks.virtual.network.virtual.nodes.VirtualNode;\r
41 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.networks.virtual.network.virtual.nodes.VirtualNodeBuilder;\r
42 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.networks.virtual.network.virtual.paths.VirtualPath;\r
43 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.networks.virtual.network.virtual.paths.VirtualPathBuilder;\r
44 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.node.instance.*;\r
45 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.port.instance.*;\r
46 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.port.instance.PhysicalResourceRequirement;\r
47 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.port.instance.PhysicalResourceRequirementBuilder;\r
48 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.intent.mapping.result.rev151010.intent.vn.mapping.results.UserIntentVnMapping;\r
49 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.intent.mapping.result.rev151010.intent.vn.mapping.results.user.intent.vn.mapping.IntentVnMappingResult;\r
50 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.intent.mapping.result.rev151010.intent.vn.mapping.results.user.intent.vn.mapping.IntentVnMappingResultBuilder;\r
51 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.intent.mapping.result.rev151010.intent.vn.mapping.results.user.intent.vn.mapping.intent.vn.mapping.result.VirtualResource;\r
52 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.intent.mapping.result.rev151010.intent.vn.mapping.results.user.intent.vn.mapping.intent.vn.mapping.result.VirtualResourceBuilder;\r
53 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.IntentId;\r
54 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.NodeType;\r
55 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.networks.virtual.network.VirtualArps;\r
56 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.PropertyName;\r
57 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.engine.common.rev151010.*;\r
58 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.Node;\r
59 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.Objects;\r
60 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.users.User;\r
61 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.node.instance.Property;\r
62 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.node.instance.SubNode;\r
63 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.property.instance.property.values.StringValue;\r
64 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;\r
65 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.networks.virtual.network.VirtualPaths;\r
66 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.node.instance.VirtualPort;\r
67 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.networks.virtual.network.VirtualLinks;\r
68 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.NodeId;\r
69 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.property.instance.PropertyValues;\r
70 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.engine.common.rev151010.VirtualResourceEntityId;\r
71 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.engine.common.rev151010.VirtualNodeId;\r
72 import org.slf4j.Logger;\r
73 import org.slf4j.LoggerFactory;\r
74 import org.powermock.api.mockito.PowerMockito;\r
75 import org.powermock.api.support.membermodification.MemberMatcher;\r
76 import org.powermock.api.support.membermodification.MemberModifier;\r
77 import org.powermock.core.classloader.annotations.PrepareForTest;\r
78 import org.powermock.modules.junit4.PowerMockRunner;\r
79 \r
80 import java.lang.reflect.Method;\r
81 import java.util.*;\r
82 import java.util.concurrent.ExecutionException;\r
83 \r
84 import static org.junit.Assert.assertTrue;\r
85 import static org.mockito.Mockito.*;\r
86 /**\r
87  * Created by zhangmeng on 2015/12/22.\r
88  */\r
89 @RunWith(PowerMockRunner.class)\r
90 @PrepareForTest({NodeMapper.class,IntentResolverUtils.class})\r
91 public class NodeMapperTest extends TestCase {\r
92     private DataBroker dataBroker ;\r
93     private NodeMapper nodeMapper ;\r
94     @Before\r
95     public void setUp() throws Exception {\r
96         dataBroker = mock(DataBroker.class);\r
97         nodeMapper = new NodeMapper(dataBroker);\r
98     }\r
99 \r
100     @Test\r
101     public void testResolveNode() throws Exception {\r
102         User user = mock(User.class);\r
103         Node node = mock(Node.class);\r
104         VirtualNetwork virtualNetwork = mock(VirtualNetwork.class);\r
105         UserIntentVnMapping userIntentVnMapping = mock(UserIntentVnMapping.class);\r
106         NodeType nodeType = mock(NodeType.class);\r
107 \r
108         when(node.getNodeType())\r
109                 .thenReturn(new NodeType("host"));\r
110         //get into method "resolveHost" args(user,node,virtualNetwork,userIntentVnMapping)\r
111         VirtualNodes virtualNodes = mock(VirtualNodes.class);\r
112         VirtualNode virtualNode = mock(VirtualNode.class);\r
113         IpAddress ipAddress = mock(IpAddress.class);\r
114         IpAddresses ipAddresses = mock(IpAddresses.class);\r
115         MacAddress macAddress = mock(MacAddress.class);\r
116         PhysicalPortId physicalPortId = mock(PhysicalPortId.class);\r
117         ReadOnlyTransaction readOnlyTransaction = mock(ReadOnlyTransaction.class);\r
118         PhysicalNodeId physicalNodeId = mock(PhysicalNodeId.class);\r
119         PhysicalHost physicalHost = mock(PhysicalHost.class);\r
120         IntentVnMappingResult intentVnMappingResult = mock(IntentVnMappingResult.class);\r
121         PhysicalHosts physicalHosts_resolveHost = mock(PhysicalHosts.class);\r
122         VirtualArps virtualArps = mock(VirtualArps.class);\r
123         NodeId nodeId = mock(NodeId.class);\r
124         Optional<PhysicalHosts> result_resolveHost = Optional.of(physicalHosts_resolveHost);\r
125         CheckedFuture checkedFuture = mock(CheckedFuture.class);\r
126         List<PhysicalHost> physicalHostList_resolveHost = new ArrayList<PhysicalHost>();\r
127         List<VirtualNode> virtualNodeList_resolveHost = new ArrayList<VirtualNode>();\r
128         List<IpAddress> ipAddressList = new ArrayList<IpAddress>();\r
129         List<IntentVnMappingResult> intentVnMappingResultList = new ArrayList<IntentVnMappingResult>();\r
130 \r
131 //        virtualNodeList_resolveHost.add(virtualNode);\r
132         ipAddressList.add(ipAddress);\r
133 \r
134         when(dataBroker.newReadOnlyTransaction()).thenReturn(readOnlyTransaction);\r
135         when(readOnlyTransaction.read(any(LogicalDatastoreType.class), any(InstanceIdentifier.class))).thenReturn(checkedFuture);\r
136         when(checkedFuture.get()).thenReturn(result_resolveHost);\r
137         when(physicalHosts_resolveHost.getPhysicalHost()).thenReturn(physicalHostList_resolveHost);\r
138             //powermock\r
139         PowerMockito.mockStatic(IntentResolverUtils.class);\r
140         PowerMockito.when(IntentResolverUtils.getPhysicalHost(physicalHostList_resolveHost, node)).thenReturn(physicalHost);\r
141         Assert.assertTrue(physicalHost != null);\r
142         when(physicalHost.getNodeId()).thenReturn(physicalNodeId);\r
143         when(physicalNodeId.getValue()).thenReturn(new String("00001111-0000-0000-0000-000011112222"));\r
144         when(virtualNetwork.getVirtualNodes()).thenReturn(virtualNodes);\r
145         when(virtualNodes.getVirtualNode()).thenReturn(virtualNodeList_resolveHost);\r
146         when(virtualNetwork.getVirtualArps()).thenReturn(virtualArps);\r
147         when(virtualArps.getVirtualArp()).thenReturn(new ArrayList<VirtualArp>());\r
148         when(physicalHost.getMacAddress()).thenReturn(macAddress);\r
149         when(physicalHost.getPortId()).thenReturn(physicalPortId);\r
150         when(physicalPortId.getValue()).thenReturn(new String("portid"));\r
151         when(physicalHost.getIpAddresses()).thenReturn(ipAddresses);\r
152         when(ipAddresses.getIpAddress()).thenReturn(ipAddressList);\r
153         when(userIntentVnMapping.getIntentVnMappingResult()).thenReturn(intentVnMappingResultList);\r
154         when(node.getNodeId()).thenReturn(nodeId);\r
155         when(nodeId.getValue()).thenReturn(new String("00001111-0000-0000-0000-000011112222"));\r
156 \r
157         nodeMapper.resolveNode(user, node, virtualNetwork, userIntentVnMapping);\r
158         verify(nodeId).getValue();\r
159     }\r
160 \r
161     @Test\r
162     public void testResolveNode1() throws Exception {\r
163         User user = mock(User.class);\r
164         Node node = mock(Node.class);\r
165         VirtualNetwork virtualNetwork = mock(VirtualNetwork.class);\r
166         UserIntentVnMapping userIntentVnMapping = mock(UserIntentVnMapping.class);\r
167         NodeType nodeType = mock(NodeType.class);\r
168 \r
169         Node node1 = mock(Node.class);\r
170         Node node2 = mock(Node.class);\r
171         SubNode subNode = mock(SubNode.class);\r
172         SubNode subNode1 = mock(SubNode.class);\r
173         NodeId nodeId = mock(NodeId.class);\r
174         NodeId node1_id = mock(NodeId.class);\r
175         NodeId node2_id = mock(NodeId.class);\r
176         NodeId subnodeId = mock(NodeId.class);\r
177         NodeId subnodeId1 = mock(NodeId.class);\r
178         VirtualNode virtualNode = mock(VirtualNode.class);\r
179         VirtualNode virtualNode1 = mock(VirtualNode.class);\r
180         Property property = mock(Property.class);\r
181         VirtualNodes virtualNodes_temp = mock(VirtualNodes.class);\r
182         VirtualResource virtualResource = mock(VirtualResource.class);\r
183         IntentVnMappingResult intentVnMappingResult = mock(IntentVnMappingResult.class);\r
184         VirtualResourceEntityId virtualResourceEntityId = mock(VirtualResourceEntityId.class);\r
185         Property locationProperty = mock(Property.class);\r
186         Property ipPrefixProperty = mock(Property.class);\r
187         PropertyValues propertyValues = mock(PropertyValues.class);\r
188         VirtualNodeId virtualNodeId = mock(VirtualNodeId.class);\r
189         VirtualLinks virtualLinks_temp = mock(VirtualLinks.class);\r
190         VirtualPort virtualPort = mock(VirtualPort.class);\r
191         StringValue stringValue = mock(StringValue.class);\r
192         Objects objects = mock(Objects.class);\r
193         List<SubNode> subNodes = new ArrayList<SubNode>();\r
194         List<Node> nodeList = new ArrayList<Node>();\r
195         List<VirtualResource> virtualResourceList = new ArrayList<VirtualResource>();\r
196         List<Property> propertyList = new ArrayList<Property>();\r
197         List<VirtualNode> virtualNodes = new ArrayList<VirtualNode>();\r
198         List<IntentVnMappingResult> intentVnMappingResultList = new ArrayList<IntentVnMappingResult>();\r
199         List<StringValue> stringValueList = new ArrayList<StringValue>();\r
200         List<VirtualLink> virtualLinks = new ArrayList<VirtualLink>();\r
201         List<VirtualPort> virtualPortList = new ArrayList<VirtualPort>();\r
202 \r
203         subNodes.add(subNode);\r
204         subNodes.add(subNode1);\r
205         stringValueList.add(stringValue);\r
206         virtualResourceList.add(virtualResource);\r
207         Assert.assertTrue(subNodes.size() == 2);\r
208         Assert.assertTrue(subNodes.get(0) == subNode && subNodes.get(1) == subNode1);\r
209 \r
210         when(node.getNodeType()).thenReturn(new NodeType("l2-group"));\r
211         when(user.getObjects()).thenReturn(objects);\r
212         when(objects.getNode()).thenReturn(nodeList);\r
213         when(node.getSubNode()).thenReturn(subNodes);\r
214         when(node.getNodeId()).thenReturn(nodeId);\r
215         when(node.getProperty()).thenReturn(propertyList);\r
216         when(virtualNetwork.getVirtualNodes()).thenReturn(virtualNodes_temp);\r
217         when(virtualNodes_temp.getVirtualNode()).thenReturn(virtualNodes);\r
218         when(userIntentVnMapping.getIntentVnMappingResult()).thenReturn(intentVnMappingResultList);\r
219         //get into for circle subnodes\r
220         when(subNode.getNodeId()).thenReturn(subnodeId);\r
221         when(subNode1.getNodeId()).thenReturn(subnodeId1);\r
222             //power mock\r
223         PowerMockito.mockStatic(IntentResolverUtils.class);\r
224         PowerMockito.when(IntentResolverUtils.getNode(nodeList, subNode.getNodeId())).thenReturn(node1);\r
225         PowerMockito.when(IntentResolverUtils.getNode(nodeList, subNode1.getNodeId())).thenReturn(node2);\r
226         when(node1.getNodeType()).thenReturn(new NodeType("test1"));\r
227         when(node2.getNodeType()).thenReturn(new NodeType("test2"));\r
228         when(node1.getNodeId()).thenReturn(node1_id);\r
229         when(node2.getNodeId()).thenReturn(node2_id);\r
230         when(node1_id.getValue()).thenReturn(new String("00001111-0000-0000-0000-000011112222"));\r
231         when(node2_id.getValue()).thenReturn(new String("00001111-0000-0000-0000-000011112222"));\r
232         PowerMockito.when(IntentResolverUtils.getIntentVnMappingResult(intentVnMappingResultList,\r
233                 new IntentId(node1.getNodeId().getValue())))\r
234                 .thenReturn(intentVnMappingResult);\r
235         PowerMockito.when(IntentResolverUtils.getIntentVnMappingResult(intentVnMappingResultList,\r
236                 new IntentId(node2.getNodeId().getValue()))).\r
237                 thenReturn(intentVnMappingResult);\r
238         when(intentVnMappingResult.getVirtualResource()).thenReturn(virtualResourceList);\r
239         when(virtualResource.getParentVirtualResourceEntityId()).thenReturn(virtualResourceEntityId);\r
240         when(virtualResourceEntityId.getValue()).thenReturn(new String("00001111-1111-0000-0000-000011112222"));\r
241         PowerMockito.when(IntentResolverUtils.getVirtualNode(virtualNodes,\r
242                 new VirtualNodeId(intentVnMappingResult.getVirtualResource().get(0).getParentVirtualResourceEntityId().getValue())))\r
243                 .thenReturn(virtualNode)\r
244                 .thenReturn(virtualNode1);\r
245         PowerMockito.when(IntentResolverUtils.getNodeProperty(node.getProperty(), new PropertyName("location")))\r
246                 .thenReturn(locationProperty);\r
247         PowerMockito.when(IntentResolverUtils.getNodeProperty(node.getProperty(), new PropertyName("ip-prefix")))\r
248                 .thenReturn(locationProperty);//use locationProperty instead of ipPrefixProperty\r
249         when(locationProperty.getPropertyValues()).thenReturn(propertyValues);\r
250         when(propertyValues.getStringValue()).thenReturn(stringValueList);\r
251         when(stringValue.getValue())\r
252                 .thenReturn(new String("1"))\r
253                 .thenReturn(new String("192.168.1.1/24"));\r
254 \r
255         when(virtualNetwork.getVirtualLinks()).thenReturn(virtualLinks_temp);\r
256         when(virtualLinks_temp.getVirtualLink()).thenReturn(virtualLinks);\r
257         when(virtualNode.getVirtualPort()).thenReturn(virtualPortList);\r
258         when(virtualNode.getNodeId()).thenReturn(virtualNodeId);\r
259         when(virtualNode1.getNodeId()).thenReturn(virtualNodeId);\r
260         when(virtualNode1.getVirtualPort()).thenReturn(virtualPortList);\r
261         when(nodeId.getValue()).thenReturn(new String("00001111-1111-0000-0000-000011112222"));\r
262 \r
263 \r
264         nodeMapper.resolveNode(user, node, virtualNetwork, userIntentVnMapping);\r
265         verify(stringValue,times(2)).getValue();\r
266 \r
267     }\r
268     @Test\r
269     public void testResolveNode2() throws Exception {\r
270         User user = mock(User.class);\r
271         Node node = mock(Node.class);\r
272         VirtualNetwork virtualNetwork = mock(VirtualNetwork.class);\r
273         UserIntentVnMapping userIntentVnMapping = mock(UserIntentVnMapping.class);\r
274 \r
275         when(node.getNodeType()).thenReturn(new NodeType("l3-group"));\r
276 \r
277         nodeMapper.resolveNode(user, node, virtualNetwork, userIntentVnMapping);\r
278     }\r
279 \r
280     @Test\r
281     public void testResolveNode3() throws Exception {\r
282         User user = mock(User.class);\r
283         Node node = mock(Node.class);\r
284         VirtualNetwork virtualNetwork = mock(VirtualNetwork.class);\r
285         UserIntentVnMapping userIntentVnMapping = mock(UserIntentVnMapping.class);\r
286 \r
287         NodeId nodeId = mock(NodeId.class);\r
288         Property property = mock(Property.class);\r
289         Property property1 = mock(Property.class);\r
290         StringValue stringValue = mock(StringValue.class);\r
291         PhysicalNodeId physicalNodeId = mock(PhysicalNodeId.class);\r
292         VirtualNodes virtualNodes_temp = mock(VirtualNodes.class);\r
293         PropertyValues propertyValues = mock(PropertyValues.class);\r
294         List<VirtualNode> virtualNodes = new ArrayList<VirtualNode>();\r
295         List<StringValue> stringValueList = new ArrayList<StringValue>();\r
296         List<IntentVnMappingResult> intentVnMappingResultList = new ArrayList<IntentVnMappingResult>();\r
297 \r
298         stringValueList.add(stringValue);\r
299 \r
300         PowerMockito.mockStatic(IntentResolverUtils.class);\r
301         PowerMockito.when(IntentResolverUtils.checkExternalLayer3Group(node))\r
302                 .thenReturn(false)\r
303                 .thenReturn(true);\r
304         when(node.getNodeType()).thenReturn(new NodeType("ext-group"));\r
305         //test false\r
306         nodeMapper.resolveNode(user, node, virtualNetwork, userIntentVnMapping);\r
307         //true\r
308         when(node.getProperty()).thenReturn(new ArrayList<Property>());\r
309         PowerMockito.when(IntentResolverUtils.getNodeProperty(node.getProperty(), new PropertyName("location")))\r
310                 .thenReturn(property);\r
311         PowerMockito.when(IntentResolverUtils.generatePhysicalNodeIdFromNodeLocationProperty(property))\r
312                 .thenReturn(physicalNodeId);\r
313         when(physicalNodeId.getValue()).thenReturn(new String("test"));\r
314         when(virtualNetwork.getVirtualNodes()).thenReturn(virtualNodes_temp);\r
315         when(virtualNodes_temp.getVirtualNode()).thenReturn(virtualNodes);\r
316         PowerMockito.when(IntentResolverUtils.getNodeProperty(node.getProperty(), new PropertyName("ip-prefix")))\r
317                 .thenReturn(property1);\r
318         when(property1.getPropertyValues()).thenReturn(propertyValues);\r
319         when(propertyValues.getStringValue()).thenReturn(stringValueList);\r
320         when(stringValue.getValue())\r
321                 .thenReturn("192.168.1.1/24")\r
322                 .thenReturn("Test");\r
323         when(property.getPropertyValues()).thenReturn(propertyValues);\r
324         when(node.getNodeId()).thenReturn(nodeId);\r
325         when(nodeId.getValue()).thenReturn(new String("00001111-1111-0000-0000-000011112222"));\r
326         when(userIntentVnMapping.getIntentVnMappingResult()).thenReturn(intentVnMappingResultList);\r
327         nodeMapper.resolveNode(user, node, virtualNetwork, userIntentVnMapping);\r
328         verify(stringValue,times(2)).getValue();\r
329     }\r
330     @Test\r
331     public void testResolveNode4() throws Exception {\r
332         User user = mock(User.class);\r
333         Node node = mock(Node.class);\r
334         VirtualNetwork virtualNetwork = mock(VirtualNetwork.class);\r
335         UserIntentVnMapping userIntentVnMapping = mock(UserIntentVnMapping.class);\r
336 \r
337         SubNode subNode = mock(SubNode.class);\r
338         SubNode subNode1 = mock(SubNode.class);\r
339         NodeId nodeId = mock(NodeId.class);\r
340         Objects objects = mock(Objects.class);\r
341         IntentVnMappingResult intentVnMappingResult = mock(IntentVnMappingResult.class);\r
342         IntentVnMappingResult intentVnMappingResult_elseif = mock(IntentVnMappingResult.class);\r
343         VirtualResource virtualResource = mock(VirtualResource.class);\r
344         VirtualLink virtualLink = mock(VirtualLink.class);\r
345         VirtualNode virtualNode = mock(VirtualNode.class);\r
346         VirtualNodes virtualNodes_temp = mock(VirtualNodes.class);\r
347         VirtualPaths virtualPaths_temp = mock(VirtualPaths.class);\r
348         VirtualLinks virtualLinks_temp = mock(VirtualLinks.class);\r
349         VirtualResourceEntityId virtualResourceEntityId = mock(VirtualResourceEntityId.class);\r
350         List<Node> nodes = new ArrayList<Node>();\r
351         List<SubNode> subNodes = new ArrayList<SubNode>();\r
352         List<IntentVnMappingResult> intentVnMappingResults = new ArrayList<IntentVnMappingResult>();\r
353         List<VirtualResource> virtualResourceList = new ArrayList<VirtualResource>();\r
354         List<VirtualNode> virtualNodes = new ArrayList<VirtualNode>();\r
355         List<VirtualLink> virtualLinks = new ArrayList<VirtualLink>();\r
356         List<VirtualPath> virtualPaths = new ArrayList<VirtualPath>();\r
357         List<VirtualPort> virtualPortList = new ArrayList<VirtualPort>();\r
358 \r
359         virtualResourceList.add(virtualResource);\r
360 \r
361         when(node.getNodeType()).thenReturn(new NodeType("chain-group"));\r
362         when(node.getSubNode()).thenReturn(subNodes);\r
363         when(node.getNodeId()).thenReturn(nodeId);\r
364 \r
365         //test null\r
366         Assert.assertTrue(subNodes.isEmpty());\r
367         nodeMapper.resolveNode(user, node, virtualNetwork, userIntentVnMapping);\r
368 \r
369         //test not null\r
370         subNodes.add(subNode);\r
371 \r
372         when(userIntentVnMapping.getIntentVnMappingResult()).thenReturn(intentVnMappingResults);\r
373         //test size=1\r
374         when(subNode.getNodeId()).thenReturn(nodeId);\r
375         when(subNode1.getNodeId()).thenReturn(nodeId);\r
376         when(nodeId.getValue()).thenReturn("00001111-0000-0000-0000-000011112222");\r
377         PowerMockito.mockStatic(IntentResolverUtils.class);\r
378         PowerMockito.when(IntentResolverUtils.getIntentVnMappingResult(intentVnMappingResults, new IntentId(subNode.getNodeId().getValue())))\r
379                 .thenReturn(intentVnMappingResult);\r
380         when(intentVnMappingResult.getVirtualResource()).thenReturn(virtualResourceList);\r
381         nodeMapper.resolveNode(user, node, virtualNetwork, userIntentVnMapping);\r
382         verify(node).getNodeId();\r
383         //test size > 1\r
384         subNodes.add(subNode1);\r
385         PowerMockito.when(IntentResolverUtils.sortSubNodes(subNodes)).thenReturn(subNodes);\r
386         when(user.getObjects()).thenReturn(objects);\r
387         when(objects.getNode()).thenReturn(nodes);\r
388 //        Iterator<SubNode> iterator = subNodes.iterator();\r
389 //        Assert.assertTrue(subNode == iterator.next());\r
390 //        Assert.assertTrue(subNode1 == iterator.next());\r
391 //        PowerMockito.doNothing().when(IntentResolverUtils.class):IntentResolverUtils.checkAllLayer2OperatingMode(subNodes, nodes);\r
392         PowerMockito.when(IntentResolverUtils.checkAllLayer2OperatingMode(subNodes, nodes))\r
393                 .thenReturn(true)\r
394                 .thenReturn(false);\r
395         PowerMockito.when(IntentResolverUtils.checkAllLayer3OperatingMode(subNodes, nodes))\r
396                 .thenReturn(false)\r
397                 .thenReturn(true);\r
398 \r
399         nodeMapper.resolveNode(user, node, virtualNetwork, userIntentVnMapping);\r
400         nodeMapper.resolveNode(user, node, virtualNetwork, userIntentVnMapping);\r
401         verify(node, times(3)).getNodeId();\r
402         //test else if\r
403         when(virtualNetwork.getVirtualNodes()).thenReturn(virtualNodes_temp);\r
404         when(virtualNodes_temp.getVirtualNode()).thenReturn(virtualNodes);\r
405         when(virtualNetwork.getVirtualLinks()).thenReturn(virtualLinks_temp);\r
406         when(virtualLinks_temp.getVirtualLink()).thenReturn(virtualLinks);\r
407         when(virtualNetwork.getVirtualPaths()).thenReturn(virtualPaths_temp);\r
408         when(virtualPaths_temp.getVirtualPath()).thenReturn(virtualPaths);\r
409         PowerMockito.when(IntentResolverUtils.getIntentVnMappingResult(intentVnMappingResults, new IntentId(subNode1.getNodeId().getValue())))\r
410                 .thenReturn(intentVnMappingResult);\r
411         when(virtualResource.getParentVirtualResourceEntityId()).thenReturn(virtualResourceEntityId);\r
412         when(virtualResourceEntityId.getValue()).thenReturn(new String("00001111-1111-0000-0000-000011112222"));\r
413         PowerMockito.when(IntentResolverUtils.getVirtualLink(any(List.class), any(VirtualNodeId.class), any(VirtualNodeId.class)))\r
414                 .thenReturn(null);\r
415         PowerMockito.when(IntentResolverUtils.getVirtualNode(any(List.class), any(VirtualNodeId.class)))\r
416                 .thenReturn(virtualNode);\r
417         when(virtualNode.getVirtualPort()).thenReturn(virtualPortList);\r
418 \r
419         nodeMapper.resolveNode(user, node, virtualNetwork, userIntentVnMapping);\r
420 \r
421     }\r
422 \r
423     @Test\r
424     public void testResolveNode5() throws Exception {\r
425         User user = mock(User.class);\r
426         Node node = mock(Node.class);\r
427         VirtualNetwork virtualNetwork = mock(VirtualNetwork.class);\r
428         UserIntentVnMapping userIntentVnMapping = mock(UserIntentVnMapping.class);\r
429 \r
430         NodeId nodeId = mock(NodeId.class);\r
431         Property locationProperty = mock(Property.class);\r
432         Property operatingModeProperty = mock(Property.class);\r
433         StringValue stringValue = mock(StringValue.class);\r
434         PhysicalNodeId physicalNodeId = mock(PhysicalNodeId.class);\r
435         PropertyValues propertyValues = mock(PropertyValues.class);\r
436         VirtualNodes virtualNodes_temp = mock(VirtualNodes.class);\r
437         List<StringValue> stringValueList = new ArrayList<StringValue>();\r
438         List<VirtualNode> virtualNodes = new ArrayList<VirtualNode>();\r
439         List<IntentVnMappingResult> intentVnMappingResultList = new ArrayList<IntentVnMappingResult>();\r
440 \r
441         stringValueList.add(stringValue);\r
442 \r
443         when(node.getNodeType())\r
444                 .thenReturn(new NodeType("fw"))\r
445                 .thenReturn(new NodeType("lb"))\r
446                 .thenReturn(new NodeType("cache"));\r
447 \r
448         when(node.getProperty()).thenReturn(new ArrayList<Property>());\r
449         PowerMockito.mockStatic(IntentResolverUtils.class);\r
450         PowerMockito.when(IntentResolverUtils.getNodeProperty(node.getProperty(), new PropertyName("location")))\r
451                 .thenReturn(locationProperty);\r
452         PowerMockito.when(IntentResolverUtils.getNodeProperty(node.getProperty(), new PropertyName("operating-mode")))\r
453                 .thenReturn(operatingModeProperty);\r
454         PowerMockito.when(IntentResolverUtils.generatePhysicalNodeIdFromNodeLocationProperty(locationProperty))\r
455                 .thenReturn(physicalNodeId);\r
456         when(physicalNodeId.getValue()).thenReturn(new String("test"));\r
457         when(operatingModeProperty.getPropertyValues()).thenReturn(propertyValues);\r
458         when(propertyValues.getStringValue()).thenReturn(stringValueList);\r
459         when(stringValue.getValue())\r
460                 .thenReturn(new String("layer3"))\r
461                 .thenReturn(new String("layer2"));\r
462         when(virtualNetwork.getVirtualNodes()).thenReturn(virtualNodes_temp);\r
463         when(virtualNodes_temp.getVirtualNode()).thenReturn(virtualNodes);\r
464         when(locationProperty.getPropertyValues()).thenReturn(propertyValues);\r
465         when(node.getNodeId()).thenReturn(nodeId);\r
466         when(nodeId.getValue()).thenReturn(new String("00001111-1111-0000-0000-000011112222"));\r
467         when(userIntentVnMapping.getIntentVnMappingResult()).thenReturn(intentVnMappingResultList);\r
468 \r
469         nodeMapper.resolveNode(user, node, virtualNetwork, userIntentVnMapping);\r
470         verify(node).getNodeId();\r
471     }\r
472     @Test\r
473     public void testResolveExternalLayer2Group() throws Exception {\r
474         Class<NodeMapper> class1 = NodeMapper.class;\r
475         Method method = class1.getDeclaredMethod("resolveExternalLayer2Group", new Class[]{\r
476                 User.class,\r
477                 Node.class,\r
478                 VirtualNetwork.class,\r
479                 UserIntentVnMapping.class,\r
480                 boolean.class\r
481         });\r
482         method.setAccessible(true);\r
483 \r
484         boolean generatingVirtualRouter = true;\r
485         User user = mock(User.class);\r
486         Node node = mock(Node.class);\r
487         Property property = mock(Property.class);\r
488         Property property1 = mock(Property.class);\r
489         NodeId nodeId = mock(NodeId.class);\r
490         VirtualNetwork virtualNetwork = mock(VirtualNetwork.class);\r
491         UserIntentVnMapping userIntentVnMapping = mock(UserIntentVnMapping.class);\r
492         PhysicalNodeId physicalNodeId = mock(PhysicalNodeId.class);\r
493         VirtualNodes virtualNodes_temp = mock(VirtualNodes.class);\r
494         PropertyValues propertyValues = mock(PropertyValues.class);\r
495         StringValue stringValue = mock(StringValue.class);\r
496 \r
497         List<Property> propertyList = new ArrayList<Property>();\r
498         List<VirtualNode> virtualNodes = new ArrayList<VirtualNode>();\r
499         List<StringValue> stringValueList = new ArrayList<StringValue>();\r
500         List<IntentVnMappingResult> intentVnMappingResultList = new ArrayList<IntentVnMappingResult>();\r
501 \r
502         stringValueList.add(stringValue);\r
503 \r
504         when(node.getProperty()).thenReturn(propertyList);\r
505         PowerMockito.mockStatic(IntentResolverUtils.class);\r
506         PowerMockito.when(IntentResolverUtils.getNodeProperty(node.getProperty(), new PropertyName("location")))\r
507                 .thenReturn(property);\r
508         PowerMockito.when(IntentResolverUtils.generatePhysicalNodeIdFromNodeLocationProperty(property))\r
509                 .thenReturn(physicalNodeId);\r
510         when(physicalNodeId.getValue()).thenReturn(new String("test"));\r
511         when(virtualNetwork.getVirtualNodes()).thenReturn(virtualNodes_temp);\r
512         when(virtualNodes_temp.getVirtualNode()).thenReturn(virtualNodes);\r
513         PowerMockito.when(IntentResolverUtils.getNodeProperty(node.getProperty(), new PropertyName("ip-prefix")))\r
514                 .thenReturn(property1);\r
515         when(property1.getPropertyValues()).thenReturn(propertyValues);\r
516         when(propertyValues.getStringValue()).thenReturn(stringValueList);\r
517         when(stringValue.getValue())\r
518                 .thenReturn(new String("192.168.1.1/24"))\r
519                 .thenReturn(new String("test"));\r
520         when(property.getPropertyValues()).thenReturn(propertyValues);\r
521         when(node.getNodeId()).thenReturn(nodeId);\r
522         when(nodeId.getValue()).thenReturn(new String("00001111-1111-0000-0000-000011112222"));\r
523         when(userIntentVnMapping.getIntentVnMappingResult()).thenReturn(intentVnMappingResultList);\r
524 \r
525         method.invoke(nodeMapper, user, node, virtualNetwork, userIntentVnMapping, generatingVirtualRouter);\r
526         verify(node).getNodeId();\r
527 \r
528     }\r
529 }