Merge "delete all .class files" into stable/beryllium
[nemo.git] / nemo-impl / src / test / java / org / opendaylight / nemo / intent / action / ActionResolverTest.java
1 /*\r
2  * Copyright (c) 2016 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 \r
9 package org.opendaylight.nemo.intent.action;\r
10 \r
11 \r
12 import junit.framework.TestCase;\r
13 import org.junit.Assert;\r
14 import org.junit.Before;\r
15 import org.junit.Test;\r
16 import static org.mockito.Mockito.*;\r
17 import static org.junit.Assert.*;\r
18 \r
19 import  java.io.*;\r
20 //import  java.util.*;\r
21 \r
22 import org.junit.runner.RunWith;\r
23 import org.opendaylight.controller.md.sal.binding.api.DataBroker;\r
24 import org.opendaylight.nemo.intent.IntentResolutionException;\r
25 import org.opendaylight.nemo.intent.IntentResolverUtils;\r
26 import org.opendaylight.nemo.intent.NodeMapper;\r
27 import org.opendaylight.nemo.intent.computation.VNComputationUnit;\r
28 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.networks.VirtualNetwork;\r
29 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.networks.virtual.network.virtual.links.VirtualLink;\r
30 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.networks.virtual.network.virtual.links.VirtualLinkBuilder;\r
31 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.networks.virtual.network.virtual.nodes.VirtualNode;\r
32 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.networks.virtual.network.virtual.paths.VirtualPath;\r
33 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.networks.virtual.network.virtual.paths.VirtualPathBuilder;\r
34 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.node.instance.VirtualPort;\r
35 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.node.instance.VirtualPortBuilder;\r
36 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.intent.mapping.result.rev151010.intent.vn.mapping.results.UserIntentVnMapping;\r
37 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
38 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
39 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
40 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
41 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.*;\r
42 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.engine.common.rev151010.*;\r
43 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.Connection;\r
44 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.Flow;\r
45 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.Node;\r
46 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.operations.Operation;\r
47 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.users.User;\r
48 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.connection.instance.Property;\r
49 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.action.instance.parameter.values.IntValue;\r
50 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.action.instance.parameter.values.StringValue;\r
51 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.operation.instance.Action;\r
52 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.action.instance.ParameterValues;\r
53 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.property.instance.PropertyValues;\r
54 //import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.property.instance.property.values.IntValue;\r
55 //import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.*;\r
56 //import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.ConnectionId;\r
57 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.networks.virtual.network.VirtualLinks;\r
58 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.networks.virtual.network.VirtualNodes;\r
59 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.networks.virtual.network.VirtualPaths;\r
60 //import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.Objects;\r
61 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.flow.instance.MatchItem;\r
62 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.match.item.instance.MatchItemValue;\r
63 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.node.instance.SubNode;\r
64 \r
65 import org.slf4j.Logger;\r
66 import org.slf4j.LoggerFactory;\r
67 import org.powermock.api.mockito.PowerMockito;\r
68 import org.powermock.api.support.membermodification.MemberMatcher;\r
69 import org.powermock.api.support.membermodification.MemberModifier;\r
70 import org.powermock.core.classloader.annotations.PrepareForTest;\r
71 import org.powermock.modules.junit4.PowerMockRunner;\r
72 \r
73 import javax.lang.model.type.ArrayType;\r
74 //import java.sql.Connection;\r
75 import java.lang.reflect.Array;\r
76 import java.util.*;\r
77 import java.lang.*;\r
78 \r
79 import java.lang.reflect.Method;\r
80 import java.lang.reflect.Field;\r
81 \r
82 \r
83 \r
84 /**\r
85  * Created by Thomas Liu on 2015/12/7.\r
86  */\r
87 @RunWith(PowerMockRunner.class)\r
88 @PrepareForTest({ActionResolverUtils.class,IntentResolverUtils.class})\r
89 public class ActionResolverTest extends TestCase {\r
90 \r
91     private ActionResolver actionResolverTest;\r
92     private DataBroker dataBroker;\r
93     private Map<UserId, VNComputationUnit> vnComputationUnits;\r
94 \r
95     private User user;\r
96     private Operation operation;\r
97     private Node node;\r
98     private Connection connection;\r
99     private Flow flow;\r
100     private VirtualNetwork virtualNetwork;\r
101     private  UserIntentVnMapping userIntentVnMapping;\r
102     private UserId userId ;\r
103 \r
104     List<Action> actions;\r
105     private Action action;\r
106     List<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.action.instance.parameter.values.IntValue> parameterValues1;\r
107     private org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.action.instance.parameter.values.IntValue intValue1;\r
108     List<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.property.instance.property.values.IntValue> parameterValues2;\r
109     private org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.property.instance.property.values.IntValue intValue2;\r
110     private ParameterValues parametervalues;\r
111     private PropertyValues propertyValues;\r
112     private Property property,property2;\r
113     private List<Property> properties;\r
114     private List<IntentVnMappingResult> intentVnMappingResults;\r
115     private ConnectionId connectionId;\r
116     private List<VirtualResource> virtualResources;\r
117     private VirtualLinks virtualLink;\r
118     private List<VirtualLink> virtualLinks;\r
119     private VirtualResourceEntityId virtualResourceEntityId;\r
120     private Class class1;\r
121     private Method method;\r
122     private Field field;\r
123 \r
124 \r
125     //deny\r
126     private List<Node> nodes;\r
127     private List<VirtualNode> nodes2;\r
128 \r
129     private List<VirtualNode> virtualNodes;\r
130     //private List<IntentVnMappingResult> intentVnMappingResults;\r
131     private org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.Objects objects;\r
132     private VirtualNodes virtualNode;\r
133     private List<MatchItem> matchItem;\r
134     private MatchItemValue matchItemValue;\r
135     private NodeId nodeId;\r
136     private List<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.node.instance.Property> properties2;\r
137     private List<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.property.instance.property.values.StringValue> stringValue;\r
138 \r
139     //gothrough\r
140     private List<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.action.instance.parameter.values.StringValue> stringValue2;\r
141     private List<Node> nodes3;\r
142     private List<Node> nodes4;\r
143     private org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.Objects objects2;\r
144     private VirtualPaths virtualPath;\r
145     private List<VirtualPath> virtualPaths;\r
146     private List<SubNode> subNodes;\r
147     private List<VirtualPort> virtualPorts1,virtualPorts2;\r
148 \r
149 \r
150 \r
151     @org.junit.Before\r
152     public void setUp() throws Exception {\r
153         userId = new UserId("11111111-1111-1111-1111-111111111111");\r
154         dataBroker = mock(DataBroker.class);\r
155         vnComputationUnits = new HashMap<UserId, VNComputationUnit>();\r
156         vnComputationUnits.put(userId, mock(VNComputationUnit.class));\r
157         actionResolverTest = new ActionResolver(dataBroker,vnComputationUnits);\r
158 \r
159 \r
160         user = mock(User.class);\r
161         operation = mock(Operation.class);\r
162         node = mock(Node.class);\r
163         connection = mock(Connection.class);\r
164         flow = mock(Flow.class);\r
165         virtualNetwork = mock(VirtualNetwork.class);\r
166         userIntentVnMapping = mock(UserIntentVnMapping.class);\r
167 \r
168 \r
169 \r
170         actions = new ArrayList<Action>();\r
171         actions.add(mock(Action.class));\r
172         parameterValues1 = new ArrayList<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.action.instance.parameter.values.IntValue>(){{ add(mock(org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.action.instance.parameter.values.IntValue.class)); }};\r
173         parameterValues2 = new ArrayList<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.property.instance.property.values.IntValue>(){{ add(mock(org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.property.instance.property.values.IntValue.class)); }};\r
174         parametervalues = mock(ParameterValues.class);\r
175         property = mock(Property.class);\r
176         properties = new ArrayList<Property>(){{add(mock(Property.class));}};\r
177         propertyValues = mock(PropertyValues.class);\r
178         intentVnMappingResults = new ArrayList<IntentVnMappingResult>(){{add(mock(IntentVnMappingResult.class));}};\r
179         connectionId = mock(ConnectionId.class);\r
180         virtualResources = new ArrayList<VirtualResource>(){{add(mock(VirtualResource.class));}};\r
181         virtualLink = mock(VirtualLinks.class);\r
182         virtualLinks = new ArrayList<VirtualLink>(){{add(mock(VirtualLink.class));}};\r
183         virtualResourceEntityId = mock(VirtualResourceEntityId.class);\r
184 \r
185         //deny\r
186         nodes = new ArrayList<Node>(){{add(mock(Node.class));}};\r
187         //nodes2 = new ArrayList<VirtualNode>(){{add(mock(VirtualNode.class));}};\r
188         virtualNodes = new ArrayList<VirtualNode>(){{add(mock(VirtualNode.class));}};\r
189         //intentVnMappingResults = new ArrayList<IntentVnMappingResult>(){{add(mock(IntentVnMappingResult.class));}};\r
190         objects = mock(org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.Objects.class);\r
191         virtualNode = mock(VirtualNodes.class);\r
192         matchItem = new ArrayList<MatchItem>(){{add(mock(MatchItem.class));}};\r
193         matchItemValue = mock(MatchItemValue.class);\r
194         nodeId = mock(NodeId.class);\r
195         properties2 = new ArrayList<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.node.instance.Property>(){{add(mock(org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.node.instance.Property.class));}};\r
196         stringValue = new ArrayList<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.property.instance.property.values.StringValue>(){{add(mock(org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.property.instance.property.values.StringValue.class));}};\r
197 \r
198 \r
199         //gothrough\r
200         stringValue2 = new ArrayList<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.action.instance.parameter.values.StringValue>(){{add(mock(org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.action.instance.parameter.values.StringValue.class));}};\r
201         nodes3 = new ArrayList<Node>(){{add(mock(Node.class));}};\r
202         nodes4 = new ArrayList<Node>(){{add(mock(Node.class));}};\r
203         objects2 = mock(org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.Objects.class);\r
204         virtualPath = mock(VirtualPaths.class);\r
205         virtualPaths = new ArrayList<VirtualPath>(){{add(mock(VirtualPath.class));}};\r
206         subNodes = new ArrayList<SubNode>(){{add(mock(SubNode.class));}};\r
207         virtualPorts1 = new ArrayList<VirtualPort>();\r
208         virtualPorts2 = new ArrayList<VirtualPort>();\r
209         class1 = ActionResolver.class;\r
210 \r
211     }\r
212 \r
213     @org.junit.Test\r
214     public void testResolveActions() throws Exception {\r
215         actionResolverTest.resolveActions(user,operation,node,virtualNetwork, userIntentVnMapping);\r
216     }\r
217 \r
218     @org.junit.Test\r
219     public void testResolveActions1() throws Exception {\r
220         when(operation.getAction()).thenReturn(actions);\r
221         Action qosBandwidthAction = mock(Action.class);\r
222         PowerMockito.mockStatic(ActionResolverUtils.class);\r
223         PowerMockito.when(ActionResolverUtils.getAction(any(List.class), any(ActionName.class))).thenReturn(qosBandwidthAction);\r
224         //test resolveQosBandwidthAction()\r
225         when(qosBandwidthAction.getParameterValues()).thenReturn(parametervalues);\r
226         when(parametervalues.getIntValue()).thenReturn(parameterValues1);\r
227         IntValue parameterValue = parameterValues1.get(0);\r
228         when(parameterValue.getValue()).thenReturn(1L);\r
229         when(connection.getProperty()).thenReturn(properties);\r
230         Property property = mock(Property.class);\r
231         PowerMockito.mockStatic(IntentResolverUtils.class);\r
232         PowerMockito.when(IntentResolverUtils.getConnectionProperty(any(List.class), any(PropertyName.class))).thenReturn(property);\r
233         when(property.getPropertyValues()).thenReturn(propertyValues);\r
234         when(propertyValues.getIntValue()).thenReturn(parameterValues2);\r
235         intValue2 = parameterValues2.get(0);\r
236         when(intValue2.getValue()).thenReturn(2L);\r
237         when(userIntentVnMapping.getIntentVnMappingResult()).thenReturn(intentVnMappingResults);\r
238         IntentVnMappingResult intentVnMappingResult = mock(IntentVnMappingResult.class);\r
239         when(connection.getConnectionId()).thenReturn(connectionId);\r
240         PowerMockito.when(IntentResolverUtils.getIntentVnMappingResult(any(List.class), any(IntentId.class))).thenReturn(intentVnMappingResult);\r
241         when(intentVnMappingResult.getVirtualResource()).thenReturn(virtualResources);\r
242         when(virtualNetwork.getVirtualLinks()).thenReturn(virtualLink);\r
243         when(virtualLink.getVirtualLink()).thenReturn(virtualLinks);\r
244         when(virtualResources.get(0).getVirtualResourceEntityId()).thenReturn(virtualResourceEntityId);\r
245         when(virtualResourceEntityId.getValue()).thenReturn("11111111-1111-1111-1111-111111111111");\r
246         when(virtualLinks.get(0).getLinkId()).thenReturn(new VirtualLinkId("11111111-1111-1111-1111-111111111111"));\r
247         actionResolverTest.resolveActions(user,operation,connection,virtualNetwork, userIntentVnMapping);\r
248     }\r
249 \r
250     @org.junit.Test\r
251     public void testResolveActionsDeny() throws Exception {\r
252         //deny\r
253         when(operation.getAction()).thenReturn(actions);\r
254         Action denyAction = mock(Action.class);\r
255         PowerMockito.mockStatic(ActionResolverUtils.class);\r
256         PowerMockito.when(ActionResolverUtils.getAction(any(List.class), any(ActionName.class))).thenReturn(denyAction);\r
257         when(user.getObjects()).thenReturn(objects);\r
258         when(objects.getNode()).thenReturn(nodes);\r
259         when(virtualNetwork.getVirtualNodes()).thenReturn(virtualNode);\r
260         when(virtualNode.getVirtualNode()).thenReturn(virtualNodes);\r
261         when(userIntentVnMapping.getIntentVnMappingResult()).thenReturn(intentVnMappingResults);\r
262         VirtualNode sourceVirtualNode = mock(VirtualNode.class);\r
263         PowerMockito.when(ActionResolverUtils.getSourceVirtualRouterOfFlow(virtualNodes, flow, nodes, intentVnMappingResults)).thenReturn(sourceVirtualNode);\r
264         VirtualNode destinationVirtualNode = mock(VirtualNode.class);\r
265         PowerMockito.when(ActionResolverUtils.getDestinationVirtualRouterOfFlow(virtualNodes, flow, nodes, intentVnMappingResults)).thenReturn(destinationVirtualNode);\r
266         when(user.getUserId()).thenReturn(userId);\r
267         VNComputationUnit vnComputationUnit = vnComputationUnits.get(userId);\r
268         //List<VirtualPath>  virtualPath = new ArrayList<VirtualPath>(){{ add(mock(VirtualPath.class));}};\r
269         VirtualPath virtualPath = mock(VirtualPath.class);\r
270         VirtualNodeId vnodeIds = mock(VirtualNodeId.class);\r
271         VirtualNodeId vnodeIdd = mock(VirtualNodeId.class);\r
272         when(sourceVirtualNode.getNodeId()).thenReturn(vnodeIds);\r
273         when(destinationVirtualNode.getNodeId()).thenReturn(vnodeIdd);\r
274         when(vnComputationUnit.computePath(vnodeIds, vnodeIdd)).thenReturn(virtualPath);\r
275         List<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.path.instance.VirtualLink> virtualLinks = new ArrayList<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.path.instance.VirtualLink>(){{add(mock(org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.path.instance.VirtualLink.class));}};\r
276         when(virtualPath.getVirtualLink()).thenReturn(virtualLinks);\r
277         VirtualPaths virtualPaths = mock(VirtualPaths.class);\r
278         List<VirtualPath> virtualPathList = new ArrayList<VirtualPath>();\r
279         when(virtualNetwork.getVirtualPaths()).thenReturn(virtualPaths);\r
280         when(virtualPaths.getVirtualPath()).thenReturn(virtualPathList);\r
281         when(virtualPath.getPathId()).thenReturn(new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.engine.common.rev151010.VirtualPathId("11111111-1111-1111-1111-111111111111"));\r
282         when(operation.getOperationId()).thenReturn(new OperationId("11111111-1111-1111-1111-111111111111"));\r
283         actionResolverTest.resolveActions(user,operation,flow,virtualNetwork, userIntentVnMapping);\r
284     }\r
285     @org.junit.Test\r
286     public void testResolveActionsAllow() throws Exception\r
287     {\r
288 \r
289         //allow\r
290         when(operation.getAction()).thenReturn(actions);\r
291         Action allowAction = mock(Action.class);\r
292         PowerMockito.mockStatic(ActionResolverUtils.class);\r
293         PowerMockito.when(ActionResolverUtils.getAction(any(List.class), any(ActionName.class))).thenReturn(null);\r
294         PowerMockito.when(ActionResolverUtils.getAction(any(List.class), any(ActionName.class))).thenReturn(allowAction);\r
295 \r
296         when(user.getObjects()).thenReturn(objects);\r
297         when(objects.getNode()).thenReturn(nodes);\r
298         when(virtualNetwork.getVirtualNodes()).thenReturn(virtualNode);\r
299         when(virtualNode.getVirtualNode()).thenReturn(virtualNodes);\r
300         when(userIntentVnMapping.getIntentVnMappingResult()).thenReturn(intentVnMappingResults);\r
301         VirtualNode sourceVirtualNode = mock(VirtualNode.class);\r
302         PowerMockito.when(ActionResolverUtils.getSourceVirtualRouterOfFlow(virtualNodes, flow, nodes, intentVnMappingResults)).thenReturn(sourceVirtualNode);\r
303         VirtualNode destinationVirtualNode = mock(VirtualNode.class);\r
304         PowerMockito.when(ActionResolverUtils.getDestinationVirtualRouterOfFlow(virtualNodes, flow, nodes, intentVnMappingResults)).thenReturn(destinationVirtualNode);\r
305         when(user.getUserId()).thenReturn(userId);\r
306         VNComputationUnit vnComputationUnit = vnComputationUnits.get(userId);\r
307         //List<VirtualPath>  virtualPath = new ArrayList<VirtualPath>(){{ add(mock(VirtualPath.class));}};\r
308         VirtualPath virtualPath = mock(VirtualPath.class);\r
309         VirtualNodeId vnodeIds = mock(VirtualNodeId.class);\r
310         VirtualNodeId vnodeIdd = mock(VirtualNodeId.class);\r
311         when(sourceVirtualNode.getNodeId()).thenReturn(vnodeIds);\r
312         when(destinationVirtualNode.getNodeId()).thenReturn(vnodeIdd);\r
313         when(vnComputationUnit.computePath(vnodeIds, vnodeIdd)).thenReturn(virtualPath);\r
314         List<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.path.instance.VirtualLink> virtualLinks = new ArrayList<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.path.instance.VirtualLink>(){{add(mock(org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.path.instance.VirtualLink.class));}};\r
315         when(virtualPath.getVirtualLink()).thenReturn(virtualLinks);\r
316         VirtualPaths virtualPaths = mock(VirtualPaths.class);\r
317         List<VirtualPath> virtualPathList = new ArrayList<VirtualPath>();\r
318         when(virtualNetwork.getVirtualPaths()).thenReturn(virtualPaths);\r
319         when(virtualPaths.getVirtualPath()).thenReturn(virtualPathList);\r
320         when(virtualPath.getPathId()).thenReturn(new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.engine.common.rev151010.VirtualPathId("11111111-1111-1111-1111-111111111111"));\r
321         when(operation.getOperationId()).thenReturn(new OperationId("11111111-1111-1111-1111-111111111111"));\r
322         actionResolverTest.resolveActions(user,operation,flow,virtualNetwork, userIntentVnMapping);\r
323     }\r
324 \r
325     @org.junit.Test\r
326     public void testResolveActionsGoChain() throws Exception {\r
327         Node nodex = mock(Node.class);\r
328         Action goThroughAction = mock(Action.class);\r
329         method = class1.getDeclaredMethod("resolveGoThroughChainGroupAction",new Class[]{\r
330                 User.class,\r
331                 Operation.class,\r
332                 Flow.class,\r
333                 Action.class,\r
334                 Node.class,\r
335                 VirtualNetwork.class,\r
336                 UserIntentVnMapping.class\r
337         });\r
338         method.setAccessible(true);\r
339         /*ParameterValues parameterValue = mock(ParameterValues.class);\r
340         List<StringValue> parameterValues = new ArrayList<StringValue>();\r
341         StringValue stringValue = mock(StringValue.class);\r
342         parameterValues.add(stringValue);\r
343         when(goThroughAction.getParameterValues()).thenReturn(parameterValue);\r
344         when(parameterValue.getStringValue()).thenReturn(parameterValues);\r
345         List<Node> nodes = new ArrayList<Node>();\r
346 \r
347         nodes.add(nodex);\r
348         when(user.getObjects()).thenReturn(objects);\r
349         when(objects.getNode()).thenReturn(nodes);\r
350         when(stringValue.getValue()).thenReturn(new String("11111111-1111-1111-1111-111111111111"));\r
351         //PowerMockito.mockStatic(IntentResolverUtils.class);\r
352         //PowerMockito.when(IntentResolverUtils.getNode(any(List.class), any(NodeId.class))).thenReturn(nodex);\r
353         when(nodex.getNodeId()).thenReturn(new NodeId("11111111-1111-1111-1111-111111111111"));\r
354         when(nodex.getNodeType()).thenReturn(new NodeType("chain-group"));*/\r
355 \r
356         when(user.getObjects()).thenReturn(objects2);\r
357         when(objects2.getNode()).thenReturn(nodes3);\r
358         when(virtualNetwork.getVirtualNodes()).thenReturn(virtualNode);\r
359         when(virtualNode.getVirtualNode()).thenReturn(virtualNodes);\r
360         when(virtualNetwork.getVirtualLinks()).thenReturn(virtualLink);\r
361         when(virtualLink.getVirtualLink()).thenReturn(virtualLinks);\r
362         when(virtualNetwork.getVirtualPaths()).thenReturn(virtualPath);\r
363         when(virtualPath.getVirtualPath()).thenReturn(virtualPaths);\r
364         when(userIntentVnMapping.getIntentVnMappingResult()).thenReturn(intentVnMappingResults);\r
365 \r
366         when(nodex.getSubNode()).thenReturn(new ArrayList<SubNode>());\r
367         PowerMockito.mockStatic(IntentResolverUtils.class);\r
368         PowerMockito.when(IntentResolverUtils.checkAllLayer2OperatingMode(any(List.class), any(List.class))).thenReturn(false);\r
369         when(nodex.getSubNode()).thenReturn(new ArrayList<SubNode>());\r
370         PowerMockito.when(IntentResolverUtils.checkAllLayer3OperatingMode(any(List.class), any(List.class))).thenReturn(true);\r
371         IntentVnMappingResult intentVnMappingResult = mock(IntentVnMappingResult.class);\r
372         when(nodex.getNodeId()).thenReturn(new NodeId("11111111-1111-1111-1111-111111111111"));\r
373         PowerMockito.when(IntentResolverUtils.getIntentVnMappingResult(any(List.class), any(IntentId.class))).thenReturn(intentVnMappingResult);\r
374         VirtualNode sourceVirtualNode = mock(VirtualNode.class);\r
375         PowerMockito.mockStatic(ActionResolverUtils.class);\r
376         PowerMockito.when(ActionResolverUtils.getSourceVirtualRouterOfFlow(virtualNodes, flow, nodes3, intentVnMappingResults)).thenReturn(sourceVirtualNode);\r
377         VirtualNode destinationVirtualNode = mock(VirtualNode.class);\r
378         PowerMockito.when(ActionResolverUtils.getDestinationVirtualRouterOfFlow(virtualNodes, flow, nodes3, intentVnMappingResults)).thenReturn(destinationVirtualNode);\r
379         List<VirtualResource> virtualResources1 = new ArrayList<VirtualResource>(){{add(mock(VirtualResource.class));}};\r
380         when(intentVnMappingResult.getVirtualResource()).thenReturn(new ArrayList<VirtualResource>());\r
381         PowerMockito.when(ActionResolverUtils.sortVirtualResources(any(List.class))).thenReturn(virtualResources1);\r
382         when(virtualResources1.get(0).getParentVirtualResourceEntityId()).thenReturn(new VirtualResourceEntityId("11111111-1111-1111-1111-111111111111"));\r
383         VirtualNode virtualNode = mock(VirtualNode.class);\r
384         PowerMockito.mockStatic(IntentResolverUtils.class);\r
385         PowerMockito.when(IntentResolverUtils.getVirtualNode(any(List.class), any(VirtualNodeId.class))).thenReturn(virtualNode);\r
386         when(virtualResources1.get(0).getParentVirtualResourceEntityId()).thenReturn(new VirtualResourceEntityId("11111111-1111-1111-1111-111111111111"));\r
387         VirtualNode virtualNode1 = mock(VirtualNode.class);\r
388         PowerMockito.when(IntentResolverUtils.getVirtualNode(any(List.class), any(VirtualNodeId.class))).thenReturn(virtualNode1);\r
389         VirtualLink virtualLink = mock(VirtualLink.class);\r
390         when(sourceVirtualNode.getNodeId()).thenReturn(mock(VirtualNodeId.class));\r
391         when(virtualNode.getNodeId()).thenReturn(mock(VirtualNodeId.class));\r
392         PowerMockito.when(IntentResolverUtils.getVirtualLink(any(List.class), any(VirtualNodeId.class), any(VirtualNodeId.class))).thenReturn(virtualLink);\r
393         when(virtualNode.getNodeId()).thenReturn(mock(VirtualNodeId.class));\r
394         when(sourceVirtualNode.getNodeId()).thenReturn(mock(VirtualNodeId.class));\r
395         when(virtualNode.getNodeId()).thenReturn(mock(VirtualNodeId.class));\r
396         when(sourceVirtualNode.getNodeId()).thenReturn(mock(VirtualNodeId.class));\r
397         when(virtualLink.getLinkId()).thenReturn(mock(VirtualLinkId.class));\r
398         when(virtualNode1.getNodeId()).thenReturn(mock(VirtualNodeId.class));\r
399         when(destinationVirtualNode.getNodeId()).thenReturn(mock(VirtualNodeId.class));\r
400         when(destinationVirtualNode.getNodeId()).thenReturn(mock(VirtualNodeId.class));\r
401         when(virtualNode1.getNodeId()).thenReturn(mock(VirtualNodeId.class));\r
402         when(virtualNode1.getNodeId()).thenReturn(mock(VirtualNodeId.class));\r
403         when(destinationVirtualNode.getNodeId()).thenReturn(mock(VirtualNodeId.class));\r
404         when(virtualLink.getLinkId()).thenReturn(mock(VirtualLinkId.class));\r
405         when(operation.getOperationId()).thenReturn(new OperationId("11111111-1111-1111-1111-111111111111"));\r
406         method.invoke(actionResolverTest,user,operation,flow,goThroughAction,nodex,virtualNetwork, userIntentVnMapping);\r
407     }\r
408 \r
409 \r
410     @org.junit.Test\r
411     public void testResolveActionsGoNormal() throws Exception {\r
412         //ResolveActions()\r
413         field = class1.getDeclaredField("vnComputationUnits");\r
414         Map<UserId, VNComputationUnit> vnComputationUnits = new HashMap<UserId, VNComputationUnit>();\r
415         VNComputationUnit vnComputationUnit = mock(VNComputationUnit.class);\r
416         vnComputationUnits.put(userId,vnComputationUnit);\r
417         field.setAccessible(true);\r
418         field.set(actionResolverTest,vnComputationUnits);\r
419         Node nodex = mock(Node.class);\r
420         Action goThroughAction = mock(Action.class);\r
421         method = class1.getDeclaredMethod("resolveGoThroughNormalGroupAction",new Class[]{\r
422                 User.class,\r
423                 Operation.class,\r
424                 Flow.class,\r
425                 Action.class,\r
426                 VirtualNetwork.class,\r
427                 UserIntentVnMapping.class\r
428         });\r
429         method.setAccessible(true);\r
430         IntentVnMappingResult intentVnMappingResult = mock(IntentVnMappingResult.class);\r
431         when(user.getObjects()).thenReturn(objects2);\r
432         when(objects2.getNode()).thenReturn(nodes3);\r
433         when(goThroughAction.getParameterValues()).thenReturn(parametervalues);\r
434         when(parametervalues.getStringValue()).thenReturn(stringValue2);\r
435         when(stringValue2.get(0).getValue()).thenReturn(new String("11111111-1111-1111-1111-111111111111"));\r
436         PowerMockito.mockStatic(IntentResolverUtils.class);\r
437         PowerMockito.when(IntentResolverUtils.getNode(any(List.class), any(NodeId.class))).thenReturn(nodex);\r
438         when(virtualNetwork.getVirtualNodes()).thenReturn(virtualNode);\r
439         when(virtualNode.getVirtualNode()).thenReturn(virtualNodes);\r
440         when(userIntentVnMapping.getIntentVnMappingResult()).thenReturn(intentVnMappingResults);\r
441         PowerMockito.mockStatic(ActionResolverUtils.class);\r
442         PowerMockito.when(ActionResolverUtils.sortParameterValues(any(List.class))).thenReturn(stringValue2);\r
443         when(stringValue2.get(0).getValue()).thenReturn(new String("11111111-1111-1111-1111-111111111111"));\r
444         when(intentVnMappingResults.get(0).getVirtualResource()).thenReturn(virtualResources);\r
445         when(stringValue.get(0).getValue()).thenReturn(new String("11111111-1111-1111-1111-111111111111"));\r
446         PowerMockito.mockStatic(IntentResolverUtils.class);\r
447         PowerMockito.when(IntentResolverUtils.getIntentVnMappingResult(any(List.class), any(IntentId.class))).thenReturn(intentVnMappingResult);\r
448         when(intentVnMappingResult.getVirtualResource()).thenReturn(virtualResources);\r
449 \r
450         when(virtualResources.get(0).getVirtualResourceType()).thenReturn(VirtualResource.VirtualResourceType.Vnode);\r
451         when(virtualResources.get(0).getVirtualResourceEntityId()).thenReturn(virtualResourceEntityId);\r
452         when(virtualResourceEntityId.getValue()).thenReturn("11111111-1111-1111-1111-111111111111");\r
453 \r
454         PowerMockito.when(IntentResolverUtils.getVirtualNode(any(List.class), any(VirtualNodeId.class))).thenReturn(virtualNodes.get(0));\r
455         VirtualNode sourceVirtualNode = mock(VirtualNode.class);\r
456         PowerMockito.mockStatic(ActionResolverUtils.class);\r
457         PowerMockito.when(ActionResolverUtils.getSourceVirtualRouterOfFlow(virtualNodes, flow, nodes3, intentVnMappingResults)).thenReturn(sourceVirtualNode);\r
458         VirtualNode destinationVirtualNode = mock(VirtualNode.class);\r
459         PowerMockito.when(ActionResolverUtils.getDestinationVirtualRouterOfFlow(virtualNodes, flow, nodes3, intentVnMappingResults)).thenReturn(destinationVirtualNode);\r
460         when(user.getUserId()).thenReturn(userId);\r
461 \r
462         VirtualPath virtualPath1 = mock(VirtualPath.class);\r
463 \r
464         VirtualNodeId virtualNodeId1 = new VirtualNodeId("11111111-1111-1111-1111-111111111111");\r
465         VirtualNodeId virtualNodeId2 = new VirtualNodeId("11111111-1111-1111-1111-111111111112");\r
466         when(sourceVirtualNode.getNodeId()).thenReturn(virtualNodeId1);\r
467         when(virtualNodes.get(0).getNodeId()).thenReturn(virtualNodeId2);\r
468         when(sourceVirtualNode.getNodeId()).thenReturn(virtualNodeId1);\r
469         when(virtualNodes.get(0).getNodeId()).thenReturn(virtualNodeId2);\r
470         when(vnComputationUnit.computePath(virtualNodeId1,virtualNodeId2)).thenReturn(virtualPath1);\r
471 \r
472         when(destinationVirtualNode.getNodeId()).thenReturn(virtualNodeId1);\r
473         when(virtualNodes.get(0).getNodeId()).thenReturn(virtualNodeId2);\r
474         when(virtualNodes.get(0).getNodeId()).thenReturn(virtualNodeId2);\r
475         when(destinationVirtualNode.getNodeId()).thenReturn(virtualNodeId1);\r
476         when(vnComputationUnit.computePath(virtualNodeId2,virtualNodeId1)).thenReturn(virtualPath1);\r
477         VirtualPaths virtualPaths = mock(VirtualPaths.class);\r
478         List<VirtualPath> virtualPathList = new ArrayList<VirtualPath>();\r
479         when(virtualNetwork.getVirtualPaths()).thenReturn(virtualPaths);\r
480         when(virtualPaths.getVirtualPath()).thenReturn(virtualPathList);\r
481 \r
482 \r
483 \r
484 \r
485 \r
486         //method.invoke(actionResolverTest,user,operation,flow,goThroughAction,virtualNetwork, userIntentVnMapping);\r
487         /*when(operation.getAction()).thenReturn(actions);\r
488         when(actions.get(0).getActionName()).thenReturn(new ActionName("go-through"));\r
489         when(actions.get(0).getParameterValues()).thenReturn(parametervalues);\r
490         when(parametervalues.getStringValue()).thenReturn(stringValue2);\r
491 \r
492         //resolveGoThroughAction()\r
493         when(user.getObjects()).thenReturn(objects);\r
494         when(objects.getNode()).thenReturn(nodes4);\r
495         when(stringValue2.get(0).getValue()).thenReturn(new String("11111111-1111-1111-1111-111111111111"));\r
496         when(nodes4.get(0).getNodeId()).thenReturn(new NodeId("11111111-1111-1111-1111-111111111111"));\r
497 \r
498         //normal\r
499         when(nodes4.get(0).getNodeType()).thenReturn(new NodeType("aaa-group"));\r
500         //resolveGoThroughNormalGroupAction()\r
501         when(user.getObjects()).thenReturn(objects2);\r
502         when(objects2.getNode()).thenReturn(nodes4);\r
503         when(actions.get(0).getParameterValues()).thenReturn(parametervalues);\r
504         when(parametervalues.getStringValue()).thenReturn(stringValue2);\r
505 \r
506         when(stringValue2.get(0).getValue()).thenReturn(new String("11111111-1111-1111-1111-111111111111"));\r
507         when(nodes4.get(0).getNodeId()).thenReturn(new NodeId("11111111-1111-1111-1111-111111111111"));\r
508 \r
509         when(virtualNetwork.getVirtualNodes()).thenReturn(virtualNode);\r
510         when(virtualNode.getVirtualNode()).thenReturn(virtualNodes);\r
511 \r
512 \r
513 \r
514 \r
515         when(userIntentVnMapping.getIntentVnMappingResult()).thenReturn(intentVnMappingResults);\r
516 \r
517         when(stringValue2.get(0).getValue()).thenReturn(new String("11111111-1111-1111-1111-111111111111"));\r
518         when(intentVnMappingResults.get(0).getIntentId()).thenReturn(new IntentId("11111111-1111-1111-1111-111111111111"));\r
519         when(intentVnMappingResults.get(0).getVirtualResource()).thenReturn(virtualResources);\r
520         when(virtualResources.get(0).getVirtualResourceType()).thenReturn(VirtualResource.VirtualResourceType.Vnode);\r
521         when(virtualResources.get(0).getVirtualResourceEntityId()).thenReturn(virtualResourceEntityId);\r
522         when(virtualResourceEntityId.getValue()).thenReturn("11111111-1111-1111-1111-111111111111");\r
523 \r
524         when(virtualNodes.get(0).getNodeId()).thenReturn(new VirtualNodeId("11111111-1111-1111-1111-111111111111"));\r
525         when(virtualNodes.get(0).getNodeType()).thenReturn(VirtualNode.NodeType.Vrouter);\r
526 \r
527         //getSourceVirtualRouterOfFlow()\r
528         when(flow.getMatchItem()).thenReturn(matchItem);//matchItem\r
529         when(matchItem.get(0).getMatchItemName()).thenReturn(new MatchItemName("src-ip"));\r
530         when(matchItem.get(0).getMatchItemValue()).thenReturn(matchItemValue);//matchItemValue\r
531         when(matchItemValue.getStringValue()).thenReturn(new String("src-ip"));\r
532         when(nodes.get(0).getNodeType()).thenReturn(new NodeType("l2-group"));\r
533         when(nodes.get(0).getProperty()).thenReturn(properties2);\r
534         when(properties2.get(0).getPropertyName()).thenReturn(new PropertyName("ip-prefix"));\r
535         when(properties2.get(0).getPropertyValues()).thenReturn(propertyValues);\r
536         when(propertyValues.getStringValue()).thenReturn(stringValue);\r
537         when(stringValue.get(0).getValue()).thenReturn(new String("src-ip"));\r
538         when(nodes.get(0).getNodeId()).thenReturn(nodeId);\r
539         when(nodeId.getValue()).thenReturn(new String("11111111-1111-1111-1111-111111111111"));\r
540         when(intentVnMappingResults.get(0).getIntentId()).thenReturn(new IntentId("11111111-1111-1111-1111-111111111111"));\r
541         when(intentVnMappingResults.get(0).getVirtualResource()).thenReturn(virtualResources);\r
542         when(virtualResources.get(0).getVirtualResourceType()).thenReturn(VirtualResource.VirtualResourceType.Vport);\r
543         when(virtualResources.get(0).getParentVirtualResourceEntityId()).thenReturn(virtualResourceEntityId);\r
544         when(virtualResourceEntityId.getValue()).thenReturn(new String("11111111-1111-1111-1111-111111111111"));\r
545         when(virtualNodes.get(0).getNodeId()).thenReturn(new VirtualNodeId("11111111-1111-1111-1111-111111111111"));\r
546         when(virtualNodes.get(0).getNodeType()).thenReturn(VirtualNode.NodeType.Vrouter);\r
547 \r
548         //getDestinationVirtualRouterOfFlow()\r
549         when(flow.getMatchItem()).thenReturn(matchItem);//matchItem\r
550         when(matchItem.get(0).getMatchItemName()).thenReturn(new MatchItemName("dst-ip"));\r
551         when(matchItem.get(0).getMatchItemValue()).thenReturn(matchItemValue);//matchItemValue\r
552         when(matchItemValue.getStringValue()).thenReturn(new String("dst-ip"));\r
553         when(nodes.get(0).getNodeType()).thenReturn(new NodeType("l2-group"));\r
554         when(nodes.get(0).getProperty()).thenReturn(properties2);\r
555         when(properties2.get(0).getPropertyName()).thenReturn(new PropertyName("ip-prefix"));\r
556         when(properties2.get(0).getPropertyValues()).thenReturn(propertyValues);\r
557         when(propertyValues.getStringValue()).thenReturn(stringValue);\r
558         when(stringValue.get(0).getValue()).thenReturn(new String("src-ip"));\r
559         when(nodes.get(0).getNodeId()).thenReturn(nodeId);\r
560         when(nodeId.getValue()).thenReturn(new String("11111111-1111-1111-1111-111111111111"));\r
561         when(intentVnMappingResults.get(0).getIntentId()).thenReturn(new IntentId("11111111-1111-1111-1111-111111111111"));\r
562         when(intentVnMappingResults.get(0).getVirtualResource()).thenReturn(virtualResources);\r
563         when(virtualResources.get(0).getVirtualResourceType()).thenReturn(VirtualResource.VirtualResourceType.Vport);\r
564         when(virtualResources.get(0).getParentVirtualResourceEntityId()).thenReturn(virtualResourceEntityId);\r
565         when(virtualResourceEntityId.getValue()).thenReturn(new String("11111111-1111-1111-1111-111111111111"));\r
566         when(virtualNodes.get(0).getNodeId()).thenReturn(new VirtualNodeId("11111111-1111-1111-1111-111111111111"));\r
567         when(virtualNodes.get(0).getNodeType()).thenReturn(VirtualNode.NodeType.Vrouter);\r
568 \r
569 \r
570         //actionResolverTest.resolveActions(user,operation,flow,virtualNetwork, userIntentVnMapping);*/\r
571 \r
572 \r
573     }\r
574 \r
575 \r
576 }