2 * Copyright (c) 2016 Huawei, Inc. and others. All rights reserved.
\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
9 package org.opendaylight.nemo.intent.action;
\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
20 //import java.util.*;
\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
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
73 import javax.lang.model.type.ArrayType;
\r
74 //import java.sql.Connection;
\r
75 import java.lang.reflect.Array;
\r
79 import java.lang.reflect.Method;
\r
80 import java.lang.reflect.Field;
\r
85 * Created by Thomas Liu on 2015/12/7.
\r
87 @RunWith(PowerMockRunner.class)
\r
88 @PrepareForTest({ActionResolverUtils.class,IntentResolverUtils.class})
\r
89 public class ActionResolverTest extends TestCase {
\r
91 private ActionResolver actionResolverTest;
\r
92 private DataBroker dataBroker;
\r
93 private Map<UserId, VNComputationUnit> vnComputationUnits;
\r
96 private Operation operation;
\r
98 private Connection connection;
\r
100 private VirtualNetwork virtualNetwork;
\r
101 private UserIntentVnMapping userIntentVnMapping;
\r
102 private UserId userId ;
\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
126 private List<Node> nodes;
\r
127 private List<VirtualNode> nodes2;
\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
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
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
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
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
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
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
214 public void testResolveActions() throws Exception {
\r
215 actionResolverTest.resolveActions(user,operation,node,virtualNetwork, userIntentVnMapping);
\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
251 public void testResolveActionsDeny() throws Exception {
\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
286 public void testResolveActionsAllow() throws Exception
\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
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
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
335 VirtualNetwork.class,
\r
336 UserIntentVnMapping.class
\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
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
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
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
411 public void testResolveActionsGoNormal() throws Exception {
\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
426 VirtualNetwork.class,
\r
427 UserIntentVnMapping.class
\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
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
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
462 VirtualPath virtualPath1 = mock(VirtualPath.class);
\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
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
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
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
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
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
509 when(virtualNetwork.getVirtualNodes()).thenReturn(virtualNode);
\r
510 when(virtualNode.getVirtualNode()).thenReturn(virtualNodes);
\r
515 when(userIntentVnMapping.getIntentVnMappingResult()).thenReturn(intentVnMappingResults);
\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
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
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
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
570 //actionResolverTest.resolveActions(user,operation,flow,virtualNetwork, userIntentVnMapping);*/
\r