Add nemo-impl partical test files
[nemo.git] / nemo-renderers / cli-renderer / src / test / java / org / opendaylight / nemo / renderer / cli / CliBuilderTest.java
1 /*
2  * Copyright (c) 2015 Huawei, Inc. and others. All rights reserved.
3  *
4  * This program and the accompanying materials are made available under the
5  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6  * and is available at http://www.eclipse.org/legal/epl-v10.html
7  */
8 package org.opendaylight.nemo.renderer.cli;
9
10 import junit.framework.TestCase;
11 import org.junit.Assert;
12 import org.junit.Before;
13 import org.junit.Test;
14 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
15 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.physical.network.rev151010.physical.path.instance.PhysicalLink;
16 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.NodeType;
17 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.Objects;
18 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.physical.network.rev151010.PhysicalNetwork;
19 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.physical.network.rev151010.physical.network.PhysicalLinks;
20 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.physical.network.rev151010.physical.network.PhysicalPaths;
21 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.physical.network.rev151010.physical.network.physical.nodes.PhysicalNode;
22 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.physical.network.rev151010.physical.network.physical.paths.PhysicalPath;
23 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.physical.network.rev151010.physical.network.physical.paths.PhysicalPathBuilder;
24 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.networks.VirtualNetwork;
25 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.intent.mapping.result.rev151010.intent.vn.mapping.results.UserIntentVnMapping;
26 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;
27 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;
28 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.intent.mapping.result.rev151010.vn.pn.mapping.results.UserVnPnMapping;
29 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.intent.mapping.result.rev151010.vn.pn.mapping.results.user.vn.pn.mapping.VnPnMappingResult;
30 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.ConnectionId;
31 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.NodeId;
32 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.engine.common.rev151010.PhysicalResourceEntityId;
33 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.engine.common.rev151010.PhysicalLinkId;
34 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.engine.common.rev151010.PhysicalNodeId;
35 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.engine.common.rev151010.PhysicalPortId;
36 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.engine.common.rev151010.VirtualResourceEntityId;
37 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.IntentId;
38 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.Connection;
39 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.Node;
40 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.users.User;
41 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.connection.instance.EndNode;
42 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.intent.mapping.result.rev151010.VirtualResourceInstance.VirtualResourceType;
43 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.engine.common.rev151010.PhysicalLinkId;
44 import org.slf4j.Logger;
45 import org.slf4j.LoggerFactory;
46
47 import java.lang.reflect.Modifier;
48 import java.util.ArrayList;
49 import java.util.List;
50
51 import static org.junit.Assert.*;
52 import static org.mockito.Mockito.*;
53 /**
54  * Created by zhangmeng on 2015/12/7.
55  */
56 public class CliBuilderTest extends TestCase {
57     private CliBuilder cliBuilder;
58     private DataBroker dataBroker;
59
60     @Before
61     public void setUp() throws Exception {
62         dataBroker = mock(DataBroker.class);
63         cliBuilder = new CliBuilder(dataBroker);
64     }
65
66     @Test
67     public void testInit() throws Exception {
68         List<PhysicalNode> physicalNodes = new ArrayList<PhysicalNode>();
69         cliBuilder.init(physicalNodes);
70     }
71
72     @Test//
73     public void testIsFullMeshTopology() throws Exception {
74 //        Object configElementOnePE ;
75 //        Object configElementAnother;
76 //        Class classes = cliBuilder.getClass().getDeclaringClass();
77 //
78 //            int i = classes.getModifiers();
79 //            String s = Modifier.toString(i);
80 //            configElementOnePE = classes.getConstructor().newInstance();
81 //            configElementAnother = classes.getConstructor().newInstance();
82 //
83 //
84 //        PhysicalNodeId physicalNodeId = mock(PhysicalNodeId.class);
85 //        PhysicalNodeId physicalNodeId1 = mock(PhysicalNodeId.class);
86 //        List<List> peersList = new ArrayList<List>();
87 //        List peers = new ArrayList();
88 //
89 //        peers.add(configElementOnePE);
90 //        peers.add(configElementAnother);
91 //        peersList.add(peers);
92 //
93 //        when(configElementOnePE.getPhysicalNodeId()).thenReturn(physicalNodeId);
94 //        when(configElementAnother.getPhysicalNodeId()).thenReturn(physicalNodeId1);
95 //
96 //        cliBuilder.isFullMeshTopology(peersList);
97
98 //        Class classes[] = CliBuilder.class.getClass().getDeclaredClasses();
99 //        Assert.assertTrue(classes.length == 1);
100 //        Class c = classes[0];
101
102
103     }
104
105     @Test
106     public void testUpdateCliExecutionSequence() throws Exception {
107         User user = mock(User.class);
108         VirtualNetwork virtualNetwork = mock(VirtualNetwork.class);
109         UserIntentVnMapping userIntentVnMapping = mock(UserIntentVnMapping.class);
110         UserVnPnMapping userVnPnMapping = mock(UserVnPnMapping.class);
111         PhysicalNetwork physicalNetwork = mock(PhysicalNetwork.class);
112         Objects objects = mock(Objects.class);
113         Connection connection = mock(Connection.class);
114         EndNode endnode = mock(EndNode.class);
115         EndNode endnode1 = mock(EndNode.class);
116         NodeId nodeId = mock(NodeId.class);
117         NodeId nodeId1 = mock(NodeId.class);
118         Node node = mock(Node.class);
119         NodeType nodeType = mock(NodeType.class);
120         IntentVnMappingResult intentVnMappingResult = mock(IntentVnMappingResult.class);
121         IntentId intentId = mock(IntentId.class);
122         VirtualResource virtualResource = mock(VirtualResource.class);
123         VnPnMappingResult vnPnMappingResult = mock(VnPnMappingResult.class);
124         VirtualResourceType virtualResourceType = VirtualResource.VirtualResourceType.Vport;
125         VirtualResourceEntityId virtualResourceEntityId = mock(VirtualResourceEntityId.class);
126         PhysicalResourceEntityId physicalResourceEntityId = mock(PhysicalResourceEntityId.class);
127         PhysicalResourceEntityId physicalResourceEntityId_parent = mock(PhysicalResourceEntityId.class);
128         PhysicalPaths physicalPaths = mock(PhysicalPaths.class);
129         PhysicalPath physicalPath = mock(PhysicalPath.class);
130         PhysicalLink physicalLink = mock(PhysicalLink.class);
131         PhysicalLinkId physicalLinkId = mock(PhysicalLinkId.class);
132         PhysicalLinkId physicalLinkId1 = mock(PhysicalLinkId.class);
133         PhysicalLinks physicalLinksInNetwork = mock(PhysicalLinks.class);
134         PhysicalNodeId physicalNodeId_src = mock(PhysicalNodeId.class);
135         PhysicalNodeId physicalNodeId_dst = mock(PhysicalNodeId.class);
136         org.opendaylight.yang.gen.v1.urn.opendaylight.params
137                 .xml.ns.yang.generic.physical.network.rev151010
138                 .physical.path.instance.PhysicalLink physicalLink_special =
139                 mock(org.opendaylight.yang.gen.v1.urn.opendaylight.params
140                         .xml.ns.yang.generic.physical.network.rev151010
141                         .physical.path.instance.PhysicalLink.class);
142         org.opendaylight.yang.gen.v1.urn.opendaylight.params
143                 .xml.ns.yang.generic.physical.network.rev151010
144                 .physical.path.instance.PhysicalLink physicalLink_special1 =
145                 mock(org.opendaylight.yang.gen.v1.urn.opendaylight.params
146                         .xml.ns.yang.generic.physical.network.rev151010
147                         .physical.path.instance.PhysicalLink.class);
148         org.opendaylight.yang.gen.v1.urn.opendaylight.params
149                 .xml.ns.yang.generic.physical.network.rev151010
150                 .physical.network.physical.links
151                 .PhysicalLink physicalLink_getSrcNodeIdforLinkInPath =
152                 mock(org.opendaylight.yang.gen.v1.urn.opendaylight.params
153                         .xml.ns.yang.generic.physical.network.rev151010
154                         .physical.network.physical.links
155                         .PhysicalLink.class);
156         List<PhysicalLink> physicalLinkList = new ArrayList<PhysicalLink>();
157         List<Connection> connectionList = new ArrayList<Connection>();
158         List<EndNode> endNodeList = new ArrayList<EndNode>();
159         List<Node> nodeList = new ArrayList<Node>();
160         List<IntentVnMappingResult> intentVnMappingResults = new ArrayList<IntentVnMappingResult>();
161         List<VirtualResource> virtualResources = new ArrayList<VirtualResource>();
162         List<VnPnMappingResult> vnPnMappingResults = new ArrayList<VnPnMappingResult>();
163         List<PhysicalPath> physicalPathList = new ArrayList<PhysicalPath>();
164         List< org.opendaylight.yang.gen.v1.urn.opendaylight.params
165                 .xml.ns.yang.generic.physical.network.rev151010
166                 .physical.path.instance.PhysicalLink> physicalLinks =
167                 new ArrayList<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.physical.network.rev151010.physical.path.instance.PhysicalLink>();
168         List<org.opendaylight.yang.gen.v1.urn.opendaylight.params
169                 .xml.ns.yang.generic.physical.network.rev151010
170                 .physical.network.physical.links.PhysicalLink>
171                 physicalLinksInNetworkList =
172                 new ArrayList<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.physical.network.rev151010.physical.network.physical.links.PhysicalLink>();
173
174
175         intentVnMappingResults.add(intentVnMappingResult);
176         connectionList.add(connection);
177         endNodeList.add(endnode);
178         nodeList.add(node);
179         virtualResources.add(virtualResource);
180         vnPnMappingResults.add(vnPnMappingResult);
181         physicalPathList.add(physicalPath);
182         physicalLinkList.add(physicalLink);
183         physicalLinks.add(physicalLink_special);
184         physicalLinks.add(physicalLink_special1);
185         physicalLinksInNetworkList.add(physicalLink_getSrcNodeIdforLinkInPath);
186 //        endNodeList.add(endnode1);
187
188         when(user.getObjects())
189                 .thenReturn(null)//test null
190                 .thenReturn(objects)//get into circle
191                 .thenReturn(objects)//List<Connection> connectionList = user.getObjects().getConnection();
192                 .thenReturn(objects);//used in method "isConnectTwoExtGroup"
193         //test null
194         cliBuilder.updateCliExecutionSequence(user, virtualNetwork, userIntentVnMapping, userVnPnMapping, physicalNetwork);
195         verify(user).getObjects();
196
197         //test not null
198         when(objects.getConnection()).thenReturn(connectionList);
199         when(connection.getEndNode())
200                 .thenReturn(endNodeList)
201                 .thenReturn(endNodeList);//used in method "isConnectTwoExtGroup"
202         ////get into method "isConnectTwoExtGroup"
203         when(endnode.getNodeId()).thenReturn(nodeId);
204         when(endnode1.getNodeId()).thenReturn(nodeId1);
205         when(objects.getNode()).thenReturn(nodeList);
206         when(node.getNodeId()).thenReturn(nodeId);//if(node.getNodeId().equals(nodeId))
207         when(node.getNodeType()).thenReturn(nodeType);
208         when(nodeType.getValue())
209                 .thenReturn(new String("null"))
210                 .thenReturn(new String("ext-group"));//test not null
211
212         endNodeList.add(endnode1);
213         Assert.assertTrue(endNodeList.size() == 2);
214         Assert.assertTrue(endNodeList.get(1) == endnode1 && endNodeList.get(0) == endnode);
215
216         //test null
217         cliBuilder.updateCliExecutionSequence(user, virtualNetwork, userIntentVnMapping, userVnPnMapping, physicalNetwork);
218         verify(nodeType).getValue();
219
220         ////get into method "getNodeVnPnMappingResult".  args(nodeId,userIntentVnMapping,userVnPnMapping)
221         when(userIntentVnMapping.getIntentVnMappingResult()).thenReturn(intentVnMappingResults);
222         when(intentVnMappingResult.getIntentId()).thenReturn(intentId);
223         when(nodeId.getValue()).thenReturn(new String("test"));
224         when(intentId.getValue()).thenReturn(new String("test"));
225         when(intentVnMappingResult.getVirtualResource()).thenReturn(virtualResources);
226         when(virtualResource.getVirtualResourceType()).thenReturn(virtualResourceType);
227         when(userVnPnMapping.getVnPnMappingResult()).thenReturn(vnPnMappingResults);
228         when(vnPnMappingResult.getVirtualResourceEntityId()).thenReturn(virtualResourceEntityId);
229         when(virtualResource.getVirtualResourceEntityId()).thenReturn(virtualResourceEntityId);
230         when(virtualResourceEntityId.getValue()).thenReturn(new String("test"));
231         //get out of method "getNodeVnPnMappingResult"  ....  and vnPnMappingResult is returned
232         when(vnPnMappingResult.getPhysicalResourceEntityId()).thenReturn(physicalResourceEntityId);
233         when(physicalResourceEntityId.getValue()).thenReturn(new String("test"));
234         when(vnPnMappingResult.getParentPhysicalResourceEntityId()).thenReturn(physicalResourceEntityId_parent);
235         when(physicalResourceEntityId_parent.getValue()).thenReturn(new String("test"));
236         /////get into method "getNodeVnPnMappingResult" again. args(nodeId,userIntentVnMapping,userVnPnMapping)
237         when(nodeId1.getValue()).thenReturn(new String("test"));
238         /*
239         get out of method "getNodeVnPnMappingResult"  ....  and vnPnMappingResult is returned
240                 no more when and return is needed!
241         */
242         ////get into method "getPhysicalPathforConnection" args (onePhysicalNodeId, otherPhysicalNodeId, physicalNetwork)
243         when(physicalNetwork.getPhysicalPaths()).thenReturn(physicalPaths);
244         when(physicalPaths.getPhysicalPath())
245                 .thenReturn(null)
246                 .thenReturn(physicalPathList);
247
248         cliBuilder.updateCliExecutionSequence(user, virtualNetwork, userIntentVnMapping, userVnPnMapping, physicalNetwork);
249
250         //////get into method "sortPhysicalLinksOfPhysicalPath" args(physicalPath)
251         when(physicalPath.getPhysicalLink())
252                 .thenReturn(physicalLinkList)//if ( physicalPath.getPhysicalLink().isEmpty()|| 1 == physicalPath.getPhysicalLink().size() )
253                 .thenReturn(physicalLinkList)
254                 .thenReturn(physicalLinks);//back to method "getPhysicalPathforConnection"
255         Assert.assertTrue(physicalLinkList.size() == 1);
256         ////get out of method "sortPhysicalLinksOfPhysicalPath" args(physicalPath)
257         when(physicalLink_special.getLinkId()).thenReturn(physicalLinkId);
258         when(physicalLink_special1.getLinkId()).thenReturn(physicalLinkId1);
259         //////get into method "getSrcNodeIdforLinkInPath"
260         PhysicalLinkId physicalLinkId_getSrcNodeIdforLinkInPath = mock(PhysicalLinkId.class);
261         when(physicalNetwork.getPhysicalLinks()).thenReturn(physicalLinksInNetwork);
262         when(physicalLinksInNetwork.getPhysicalLink()).thenReturn(physicalLinksInNetworkList);
263         when(physicalLink_getSrcNodeIdforLinkInPath.getLinkId()).thenReturn(physicalLinkId_getSrcNodeIdforLinkInPath);
264         when(physicalLinkId_getSrcNodeIdforLinkInPath.getValue()).thenReturn(new String("test"));
265         when(physicalLinkId.getValue()).thenReturn(new String("test"));
266         when(physicalLink_getSrcNodeIdforLinkInPath.getSrcNodeId()).thenReturn(physicalNodeId_src);
267         ////get out of  method "getSrcNodeIdforLinkInPath"
268         ////// get into method "getDestNodeIdforLinkInPath"
269         when(physicalLinkId1.getValue()).thenReturn(new String("test"));
270         when(physicalLink_getSrcNodeIdforLinkInPath.getDestNodeId()).thenReturn(physicalNodeId_dst);
271         //// return into method "getPhysicalPathforConnection"
272         when(physicalNodeId_src.getValue()).thenReturn(new String("test1"));
273         when(physicalNodeId_dst.getValue()).thenReturn(new String("test"));
274
275         cliBuilder.updateCliExecutionSequence(user, virtualNetwork, userIntentVnMapping, userVnPnMapping, physicalNetwork);
276
277     }
278
279     @Test
280     public void testClose() throws Exception {
281
282     }
283 }