2 * Copyright (c) 2015 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.opendaylight.controller.md.sal.binding.api.DataBroker;
\r
23 import org.opendaylight.nemo.intent.IntentResolutionException;
\r
24 import org.opendaylight.nemo.intent.IntentResolverUtils;
\r
25 import org.opendaylight.nemo.intent.computation.VNComputationUnit;
\r
26 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.networks.VirtualNetwork;
\r
27 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.networks.virtual.network.virtual.links.VirtualLink;
\r
28 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.networks.virtual.network.virtual.links.VirtualLinkBuilder;
\r
29 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.networks.virtual.network.virtual.nodes.VirtualNode;
\r
30 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.networks.virtual.network.virtual.paths.VirtualPath;
\r
31 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.networks.virtual.network.virtual.paths.VirtualPathBuilder;
\r
32 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.node.instance.VirtualPort;
\r
33 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.node.instance.VirtualPortBuilder;
\r
34 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.intent.mapping.result.rev151010.intent.vn.mapping.results.UserIntentVnMapping;
\r
35 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
36 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
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.intent.vn.mapping.result.VirtualResource;
\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.intent.vn.mapping.result.VirtualResourceBuilder;
\r
39 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.*;
\r
40 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.engine.common.rev151010.*;
\r
41 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.Connection;
\r
42 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.Flow;
\r
43 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.Node;
\r
44 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.operations.Operation;
\r
45 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.users.User;
\r
46 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.connection.instance.Property;
\r
47 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.action.instance.parameter.values.IntValue;
\r
48 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.action.instance.parameter.values.StringValue;
\r
49 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.operation.instance.Action;
\r
50 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.action.instance.ParameterValues;
\r
51 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.property.instance.PropertyValues;
\r
52 //import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.property.instance.property.values.IntValue;
\r
53 //import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.*;
\r
54 //import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.ConnectionId;
\r
55 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.networks.virtual.network.VirtualLinks;
\r
56 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.networks.virtual.network.VirtualNodes;
\r
57 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.networks.virtual.network.VirtualPaths;
\r
58 //import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.Objects;
\r
59 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.flow.instance.MatchItem;
\r
60 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.match.item.instance.MatchItemValue;
\r
61 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.node.instance.SubNode;
\r
63 import org.slf4j.Logger;
\r
64 import org.slf4j.LoggerFactory;
\r
66 import javax.lang.model.type.ArrayType;
\r
67 //import java.sql.Connection;
\r
68 import java.lang.reflect.Array;
\r
75 * Created by Thomas Liu on 2015/12/7.
\r
77 public class ActionResolverTest extends TestCase {
\r
79 private ActionResolver actionResolverTest;
\r
80 private DataBroker dataBroker;
\r
81 private Map<UserId, VNComputationUnit> vnComputationUnits;
\r
84 private Operation operation;
\r
86 private Connection connection;
\r
88 private VirtualNetwork virtualNetwork;
\r
89 private UserIntentVnMapping userIntentVnMapping;
\r
91 List<Action> actions;
\r
92 private Action action;
\r
93 List<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.action.instance.parameter.values.IntValue> parameterValues1;
\r
94 private org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.action.instance.parameter.values.IntValue intValue1;
\r
95 List<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.property.instance.property.values.IntValue> parameterValues2;
\r
96 private org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.property.instance.property.values.IntValue intValue2;
\r
97 private ParameterValues parametervalues;
\r
98 private PropertyValues propertyValues;
\r
99 private Property property,property2;
\r
100 private List<Property> properties;
\r
101 private List<IntentVnMappingResult> intentVnMappingResults;
\r
102 private ConnectionId connectionId;
\r
103 private List<VirtualResource> virtualResources;
\r
104 private VirtualLinks virtualLink;
\r
105 private List<VirtualLink> virtualLinks;
\r
106 private VirtualResourceEntityId virtualResourceEntityId;
\r
110 private List<Node> nodes;
\r
111 private List<VirtualNode> nodes2;
\r
113 private List<VirtualNode> virtualNodes;
\r
114 //private List<IntentVnMappingResult> intentVnMappingResults;
\r
115 private org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.Objects objects;
\r
116 private VirtualNodes virtualNode;
\r
117 private List<MatchItem> matchItem;
\r
118 private MatchItemValue matchItemValue;
\r
119 private NodeId nodeId;
\r
120 private List<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.node.instance.Property> properties2;
\r
121 private List<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.property.instance.property.values.StringValue> stringValue;
\r
124 private List<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.action.instance.parameter.values.StringValue> stringValue2;
\r
125 private List<Node> nodes3;
\r
126 private List<Node> nodes4;
\r
127 private org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.Objects objects2;
\r
128 private VirtualPaths virtualPath;
\r
129 private List<VirtualPath> virtualPaths;
\r
130 private List<SubNode> subNodes;
\r
131 private List<VirtualPort> virtualPorts1,virtualPorts2;
\r
136 public void setUp() throws Exception {
\r
137 dataBroker = mock(DataBroker.class);
\r
138 vnComputationUnits = new HashMap<UserId, VNComputationUnit>();
\r
139 vnComputationUnits.put(mock(UserId.class), mock(VNComputationUnit.class));
\r
140 actionResolverTest = new ActionResolver(dataBroker,vnComputationUnits);
\r
143 user = mock(User.class);
\r
144 operation = mock(Operation.class);
\r
145 node = mock(Node.class);
\r
146 connection = mock(Connection.class);
\r
147 flow = mock(Flow.class);
\r
148 virtualNetwork = mock(VirtualNetwork.class);
\r
149 userIntentVnMapping = mock(UserIntentVnMapping.class);
\r
152 actions = new ArrayList<Action>();
\r
153 actions.add(mock(Action.class));
\r
154 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
155 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
156 parametervalues = mock(ParameterValues.class);
\r
157 property = mock(Property.class);
\r
158 properties = new ArrayList<Property>(){{add(mock(Property.class));}};
\r
159 propertyValues = mock(PropertyValues.class);
\r
160 intentVnMappingResults = new ArrayList<IntentVnMappingResult>(){{add(mock(IntentVnMappingResult.class));}};
\r
161 connectionId = mock(ConnectionId.class);
\r
162 virtualResources = new ArrayList<VirtualResource>(){{add(mock(VirtualResource.class));}};
\r
163 virtualLink = mock(VirtualLinks.class);
\r
164 virtualLinks = new ArrayList<VirtualLink>(){{add(mock(VirtualLink.class));}};
\r
165 virtualResourceEntityId = mock(VirtualResourceEntityId.class);
\r
168 nodes = new ArrayList<Node>(){{add(mock(Node.class));}};
\r
169 //nodes2 = new ArrayList<VirtualNode>(){{add(mock(VirtualNode.class));}};
\r
170 virtualNodes = new ArrayList<VirtualNode>(){{add(mock(VirtualNode.class));}};
\r
171 //intentVnMappingResults = new ArrayList<IntentVnMappingResult>(){{add(mock(IntentVnMappingResult.class));}};
\r
172 objects = mock(org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.Objects.class);
\r
173 virtualNode = mock(VirtualNodes.class);
\r
174 matchItem = new ArrayList<MatchItem>(){{add(mock(MatchItem.class));}};
\r
175 matchItemValue = mock(MatchItemValue.class);
\r
176 nodeId = mock(NodeId.class);
\r
177 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
178 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
182 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
183 nodes3 = new ArrayList<Node>(){{add(mock(Node.class));}};
\r
184 nodes4 = new ArrayList<Node>(){{add(mock(Node.class));}};
\r
185 objects2 = mock(org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.Objects.class);
\r
186 virtualPath = mock(VirtualPaths.class);
\r
187 virtualPaths = new ArrayList<VirtualPath>(){{add(mock(VirtualPath.class));}};
\r
188 subNodes = new ArrayList<SubNode>(){{add(mock(SubNode.class));}};
\r
189 virtualPorts1 = new ArrayList<VirtualPort>();
\r
190 virtualPorts2 = new ArrayList<VirtualPort>();
\r
195 public void testResolveActions() throws Exception {
\r
196 actionResolverTest.resolveActions(user,operation,node,virtualNetwork, userIntentVnMapping);
\r
201 public void testResolveActions1() throws Exception {
\r
202 when(operation.getAction()).thenReturn(actions);
\r
203 when(actions.get(0).getActionName()).thenReturn(new ActionName("qos-bandwidth"));
\r
204 action = actions.get(0);
\r
205 when(action.getParameterValues()).thenReturn(parametervalues);
\r
206 when(parametervalues.getIntValue()).thenReturn(parameterValues1);
\r
207 intValue1 = parameterValues1.get(0);
\r
208 when(intValue1.getValue()).thenReturn(new Long(1));
\r
209 when(connection.getProperty()).thenReturn(properties);
\r
210 when(properties.get(0).getPropertyName()).thenReturn(new PropertyName("bandwidth"));
\r
211 property2 = properties.get(0);
\r
212 when(property2.getPropertyValues()).thenReturn(propertyValues);
\r
213 when(propertyValues.getIntValue()).thenReturn(parameterValues2);
\r
214 intValue2 = parameterValues2.get(0);
\r
215 when(intValue2.getValue()).thenReturn(new Long(2));
\r
216 when(userIntentVnMapping.getIntentVnMappingResult()).thenReturn(intentVnMappingResults);
\r
217 when(connection.getConnectionId()).thenReturn(connectionId);
\r
218 when(intentVnMappingResults.get(0).getIntentId()).thenReturn(new IntentId(connectionId));
\r
219 when(intentVnMappingResults.get(0).getVirtualResource()).thenReturn(virtualResources);
\r
220 when(virtualNetwork.getVirtualLinks()).thenReturn(virtualLink);
\r
221 when(virtualLink.getVirtualLink()).thenReturn(virtualLinks);
\r
222 when(virtualResources.get(0).getVirtualResourceEntityId()).thenReturn(virtualResourceEntityId);
\r
223 when(virtualResourceEntityId.getValue()).thenReturn("11111111-1111-1111-1111-111111111111");
\r
224 when(virtualLinks.get(0).getLinkId()).thenReturn(new VirtualLinkId("11111111-1111-1111-1111-111111111111"));
\r
225 actionResolverTest.resolveActions(user,operation,connection,virtualNetwork, userIntentVnMapping);
\r
230 public void testResolveActionsDeny() throws Exception {
\r
233 when(operation.getAction()).thenReturn(actions);
\r
234 when(actions.get(0).getActionName()).thenReturn(new ActionName("deny"));
\r
235 when(user.getObjects()).thenReturn(objects);
\r
236 when(objects.getNode()).thenReturn(nodes);
\r
237 when(virtualNetwork.getVirtualNodes()).thenReturn(virtualNode);
\r
238 when(virtualNode.getVirtualNode()).thenReturn(virtualNodes);
\r
239 when(userIntentVnMapping.getIntentVnMappingResult()).thenReturn(intentVnMappingResults);
\r
240 when(flow.getMatchItem()).thenReturn(matchItem);//matchItem
\r
241 when(matchItem.get(0).getMatchItemName()).thenReturn(new MatchItemName("src-ip"));
\r
242 when(matchItem.get(0).getMatchItemValue()).thenReturn(matchItemValue);//matchItemValue
\r
243 when(matchItemValue.getStringValue()).thenReturn(new String("src-ip"));
\r
244 when(nodes.get(0).getNodeType()).thenReturn(new NodeType("l2-group"));
\r
245 when(nodes.get(0).getProperty()).thenReturn(properties2);
\r
246 when(properties2.get(0).getPropertyName()).thenReturn(new PropertyName("ip-prefix"));
\r
247 when(properties2.get(0).getPropertyValues()).thenReturn(propertyValues);
\r
248 when(propertyValues.getStringValue()).thenReturn(stringValue);
\r
249 when(stringValue.get(0).getValue()).thenReturn(new String("src-ip"));
\r
250 when(nodes.get(0).getNodeId()).thenReturn(nodeId);
\r
251 when(nodeId.getValue()).thenReturn(new String("11111111-1111-1111-1111-111111111111"));
\r
252 when(intentVnMappingResults.get(0).getIntentId()).thenReturn(new IntentId("11111111-1111-1111-1111-111111111111"));
\r
253 when(intentVnMappingResults.get(0).getVirtualResource()).thenReturn(virtualResources);
\r
254 when(virtualResources.get(0).getVirtualResourceType()).thenReturn(VirtualResource.VirtualResourceType.Vport);
\r
255 when(virtualResources.get(0).getParentVirtualResourceEntityId()).thenReturn(virtualResourceEntityId);
\r
256 when(virtualResourceEntityId.getValue()).thenReturn(new String("11111111-1111-1111-1111-111111111111"));
\r
257 when(virtualNodes.get(0).getNodeId()).thenReturn(new VirtualNodeId("11111111-1111-1111-1111-111111111111"));
\r
258 when(virtualNodes.get(0).getNodeType()).thenReturn(VirtualNode.NodeType.Vrouter);
\r
260 when(flow.getMatchItem()).thenReturn(matchItem);//matchItem
\r
261 when(matchItem.get(0).getMatchItemName()).thenReturn(new MatchItemName("src-ip"));
\r
262 when(matchItem.get(0).getMatchItemValue()).thenReturn(matchItemValue);//matchItemValue
\r
263 when(matchItemValue.getStringValue()).thenReturn(new String("src-ip"));
\r
264 when(nodes.get(0).getNodeType()).thenReturn(new NodeType("l2-group"));
\r
265 when(nodes.get(0).getProperty()).thenReturn(properties2);
\r
266 when(properties2.get(0).getPropertyName()).thenReturn(new PropertyName("ip-prefix"));
\r
267 when(properties2.get(0).getPropertyValues()).thenReturn(propertyValues);
\r
268 when(propertyValues.getStringValue()).thenReturn(stringValue);
\r
269 when(stringValue.get(0).getValue()).thenReturn(new String("src-ip"));
\r
270 when(nodes.get(0).getNodeId()).thenReturn(nodeId);
\r
271 when(nodeId.getValue()).thenReturn(new String("11111111-1111-1111-1111-111111111111"));
\r
272 when(intentVnMappingResults.get(0).getIntentId()).thenReturn(new IntentId("11111111-1111-1111-1111-111111111111"));
\r
273 when(intentVnMappingResults.get(0).getVirtualResource()).thenReturn(virtualResources);
\r
274 when(virtualResources.get(0).getVirtualResourceType()).thenReturn(VirtualResource.VirtualResourceType.Vport);
\r
275 when(virtualResources.get(0).getParentVirtualResourceEntityId()).thenReturn(virtualResourceEntityId);
\r
276 when(virtualResourceEntityId.getValue()).thenReturn(new String("11111111-1111-1111-1111-111111111111"));
\r
277 when(virtualNodes.get(0).getNodeId()).thenReturn(new VirtualNodeId("11111111-1111-1111-1111-111111111111"));
\r
278 when(virtualNodes.get(0).getNodeType()).thenReturn(VirtualNode.NodeType.Vrouter);
\r
280 when(virtualNodes.get(0).getNodeId()).thenReturn(new VirtualNodeId("11111111-1111-1111-1111-111111111111"));
\r
281 when(operation.getOperationId()).thenReturn(new OperationId("11111111-1111-1111-1111-111111111111"));
\r
282 //actionResolverTest.resolveActions(user,operation,flow,virtualNetwork, userIntentVnMapping);
\r
292 public void testResolveActionsAllow() throws Exception
\r
296 when(operation.getAction()).thenReturn(actions);
\r
297 when(actions.get(0).getActionName()).thenReturn(new ActionName("allow"));
\r
298 when(user.getObjects()).thenReturn(objects);
\r
299 when(objects.getNode()).thenReturn(nodes);
\r
300 when(virtualNetwork.getVirtualNodes()).thenReturn(virtualNode);
\r
301 when(virtualNode.getVirtualNode()).thenReturn(virtualNodes);
\r
302 when(userIntentVnMapping.getIntentVnMappingResult()).thenReturn(intentVnMappingResults);
\r
306 when(flow.getMatchItem()).thenReturn(matchItem);//matchItem
\r
307 when(matchItem.get(0).getMatchItemName()).thenReturn(new MatchItemName("src-ip"));
\r
308 when(matchItem.get(0).getMatchItemValue()).thenReturn(matchItemValue);//matchItemValue
\r
309 when(matchItemValue.getStringValue()).thenReturn(new String("src-ip"));
\r
310 when(nodes.get(0).getNodeType()).thenReturn(new NodeType("l2-group"));
\r
311 when(nodes.get(0).getProperty()).thenReturn(properties2);
\r
312 when(properties2.get(0).getPropertyName()).thenReturn(new PropertyName("ip-prefix"));
\r
313 when(properties2.get(0).getPropertyValues()).thenReturn(propertyValues);
\r
314 when(propertyValues.getStringValue()).thenReturn(stringValue);
\r
315 when(stringValue.get(0).getValue()).thenReturn(new String("src-ip"));
\r
316 when(nodes.get(0).getNodeId()).thenReturn(nodeId);
\r
317 when(nodeId.getValue()).thenReturn(new String("11111111-1111-1111-1111-111111111111"));
\r
318 when(intentVnMappingResults.get(0).getIntentId()).thenReturn(new IntentId("11111111-1111-1111-1111-111111111111"));
\r
319 when(intentVnMappingResults.get(0).getVirtualResource()).thenReturn(virtualResources);
\r
320 when(virtualResources.get(0).getVirtualResourceType()).thenReturn(VirtualResource.VirtualResourceType.Vport);
\r
321 when(virtualResources.get(0).getParentVirtualResourceEntityId()).thenReturn(virtualResourceEntityId);
\r
322 when(virtualResourceEntityId.getValue()).thenReturn(new String("11111111-1111-1111-1111-111111111111"));
\r
323 System.out.println("1");
\r
324 when(virtualNodes.get(0).getNodeId()).thenReturn(new VirtualNodeId("11111111-1111-1111-1111-111111111111"));
\r
325 System.out.println("2");
\r
326 when(virtualNodes.get(0).getNodeType()).thenReturn(VirtualNode.NodeType.Vrouter);
\r
327 System.out.println("3");
\r
328 //when(flow.getFlowId()).thenReturn(new FlowId("11111111-1111-1111-1111-111111111111"));
\r
332 when(flow.getMatchItem()).thenReturn(matchItem);//matchItem
\r
333 when(matchItem.get(0).getMatchItemName()).thenReturn(new MatchItemName("dst-ip"));
\r
334 when(matchItem.get(0).getMatchItemValue()).thenReturn(matchItemValue);//matchItemValue
\r
335 when(matchItemValue.getStringValue()).thenReturn(new String("dst-ip"));
\r
336 when(nodes.get(0).getNodeType()).thenReturn(new NodeType("l2-group"));
\r
337 when(nodes.get(0).getProperty()).thenReturn(properties2);
\r
338 when(properties2.get(0).getPropertyName()).thenReturn(new PropertyName("ip-prefix"));
\r
339 when(properties2.get(0).getPropertyValues()).thenReturn(propertyValues);
\r
340 when(propertyValues.getStringValue()).thenReturn(stringValue);
\r
341 when(stringValue.get(0).getValue()).thenReturn(new String("src-ip"));
\r
342 when(nodes.get(0).getNodeId()).thenReturn(nodeId);
\r
343 when(nodeId.getValue()).thenReturn(new String("11111111-1111-1111-1111-111111111111"));
\r
344 when(intentVnMappingResults.get(0).getIntentId()).thenReturn(new IntentId("11111111-1111-1111-1111-111111111111"));
\r
345 when(intentVnMappingResults.get(0).getVirtualResource()).thenReturn(virtualResources);
\r
346 when(virtualResources.get(0).getVirtualResourceType()).thenReturn(VirtualResource.VirtualResourceType.Vport);
\r
347 when(virtualResources.get(0).getParentVirtualResourceEntityId()).thenReturn(virtualResourceEntityId);
\r
348 when(virtualResourceEntityId.getValue()).thenReturn(new String("11111111-1111-1111-1111-111111111111"));
\r
349 when(virtualNodes.get(0).getNodeId()).thenReturn(new VirtualNodeId("11111111-1111-1111-1111-111111111111"));
\r
350 when(virtualNodes.get(0).getNodeType()).thenReturn(VirtualNode.NodeType.Vrouter);
\r
351 actionResolverTest.resolveActions(user,operation,flow,virtualNetwork, userIntentVnMapping);
\r
357 public void testResolveActionsGoChain() throws Exception {
\r
359 when(operation.getAction()).thenReturn(actions);
\r
360 when(actions.get(0).getActionName()).thenReturn(new ActionName("go-through"));
\r
361 when(actions.get(0).getParameterValues()).thenReturn(parametervalues);
\r
362 when(parametervalues.getStringValue()).thenReturn(stringValue2);
\r
364 //resolveGoThroughAction()
\r
365 when(user.getObjects()).thenReturn(objects);
\r
366 when(objects.getNode()).thenReturn(nodes3);
\r
367 when(stringValue2.get(0).getValue()).thenReturn(new String("11111111-1111-1111-1111-111111111111"));
\r
368 when(nodes3.get(0).getNodeId()).thenReturn(new NodeId("11111111-1111-1111-1111-111111111111"));
\r
371 when(nodes3.get(0).getNodeType()).thenReturn(new NodeType("chain-group"));
\r
372 //resolveGoThroughChainGroupAction()
\r
373 when(user.getObjects()).thenReturn(objects2);
\r
374 when(objects2.getNode()).thenReturn(nodes3);
\r
375 when(virtualNetwork.getVirtualNodes()).thenReturn(virtualNode);
\r
376 when(virtualNode.getVirtualNode()).thenReturn(virtualNodes);
\r
377 when(virtualNetwork.getVirtualLinks()).thenReturn(virtualLink);
\r
378 when(virtualLink.getVirtualLink()).thenReturn(virtualLinks);
\r
379 when(virtualNetwork.getVirtualPaths()).thenReturn(virtualPath);
\r
380 when(virtualPath.getVirtualPath()).thenReturn(virtualPaths);
\r
381 when(userIntentVnMapping.getIntentVnMappingResult()).thenReturn(intentVnMappingResults);
\r
383 //when(nodes3.get(0).getSubNode()).thenReturn(new ArrayList<SubNode>());
\r
384 when(nodes3.get(0).getSubNode()).thenReturn(subNodes);
\r
385 when(subNodes.get(0).getNodeId()).thenReturn(new NodeId("11111111-1111-1111-1111-111111111111"));
\r
386 when(nodes3.get(0).getNodeId()).thenReturn(new NodeId("11111111-1111-1111-1111-111111111111"));
\r
387 when(nodes3.get(0).getProperty()).thenReturn(properties2);
\r
388 when(properties2.get(0).getPropertyName()).thenReturn(new PropertyName("operating-mode"));
\r
389 when(properties2.get(0).getPropertyValues()).thenReturn(propertyValues);
\r
390 when(propertyValues.getStringValue()).thenReturn(stringValue);
\r
391 when(stringValue.get(0).getValue()).thenReturn(new String("layer1"));
\r
392 when(nodes3.get(0).getSubNode()).thenReturn(subNodes);
\r
393 when(subNodes.get(0).getNodeId()).thenReturn(new NodeId("11111111-1111-1111-1111-111111111111"));
\r
394 when(nodes3.get(0).getNodeId()).thenReturn(new NodeId("11111111-1111-1111-1111-111111111111"));
\r
395 when(nodes3.get(0).getProperty()).thenReturn(properties2);
\r
396 when(properties2.get(0).getPropertyName()).thenReturn(new PropertyName("operating-mode"));
\r
397 when(properties2.get(0).getPropertyValues()).thenReturn(propertyValues);
\r
398 when(propertyValues.getStringValue()).thenReturn(stringValue);
\r
399 when(stringValue.get(0).getValue()).thenReturn(new String("layer3"));
\r
400 when(nodes3.get(0).getNodeId()).thenReturn(new NodeId("11111111-1111-1111-1111-111111111111"));
\r
401 when(intentVnMappingResults.get(0).getIntentId()).thenReturn(new IntentId("11111111-1111-1111-1111-111111111111"));
\r
403 //getSourceVirtualRouterOfFlow()
\r
404 when(flow.getMatchItem()).thenReturn(matchItem);//matchItem
\r
405 when(matchItem.get(0).getMatchItemName()).thenReturn(new MatchItemName("src-ip"));
\r
406 when(matchItem.get(0).getMatchItemValue()).thenReturn(matchItemValue);//matchItemValue
\r
407 when(matchItemValue.getStringValue()).thenReturn(new String("src-ip"));
\r
408 when(nodes.get(0).getNodeType()).thenReturn(new NodeType("l2-group"));
\r
409 when(nodes.get(0).getProperty()).thenReturn(properties2);
\r
410 when(properties2.get(0).getPropertyName()).thenReturn(new PropertyName("ip-prefix"));
\r
411 when(properties2.get(0).getPropertyValues()).thenReturn(propertyValues);
\r
412 when(propertyValues.getStringValue()).thenReturn(stringValue);
\r
413 when(stringValue.get(0).getValue()).thenReturn(new String("src-ip"));
\r
414 when(nodes.get(0).getNodeId()).thenReturn(nodeId);
\r
415 when(nodeId.getValue()).thenReturn(new String("11111111-1111-1111-1111-111111111111"));
\r
416 when(intentVnMappingResults.get(0).getIntentId()).thenReturn(new IntentId("11111111-1111-1111-1111-111111111111"));
\r
417 when(intentVnMappingResults.get(0).getVirtualResource()).thenReturn(virtualResources);
\r
418 when(virtualResources.get(0).getVirtualResourceType()).thenReturn(VirtualResource.VirtualResourceType.Vport);
\r
419 when(virtualResources.get(0).getParentVirtualResourceEntityId()).thenReturn(virtualResourceEntityId);
\r
420 when(virtualResourceEntityId.getValue()).thenReturn(new String("11111111-1111-1111-1111-111111111111"));
\r
421 when(virtualNodes.get(0).getNodeId()).thenReturn(new VirtualNodeId("11111111-1111-1111-1111-111111111111"));
\r
422 when(virtualNodes.get(0).getNodeType()).thenReturn(VirtualNode.NodeType.Vrouter);
\r
424 //getDestinationVirtualRouterOfFlow()
\r
425 when(flow.getMatchItem()).thenReturn(matchItem);//matchItem
\r
426 when(matchItem.get(0).getMatchItemName()).thenReturn(new MatchItemName("dst-ip"));
\r
427 when(matchItem.get(0).getMatchItemValue()).thenReturn(matchItemValue);//matchItemValue
\r
428 when(matchItemValue.getStringValue()).thenReturn(new String("dst-ip"));
\r
429 when(nodes.get(0).getNodeType()).thenReturn(new NodeType("l2-group"));
\r
430 when(nodes.get(0).getProperty()).thenReturn(properties2);
\r
431 when(properties2.get(0).getPropertyName()).thenReturn(new PropertyName("ip-prefix"));
\r
432 when(properties2.get(0).getPropertyValues()).thenReturn(propertyValues);
\r
433 when(propertyValues.getStringValue()).thenReturn(stringValue);
\r
434 when(stringValue.get(0).getValue()).thenReturn(new String("src-ip"));
\r
435 when(nodes.get(0).getNodeId()).thenReturn(nodeId);
\r
436 when(nodeId.getValue()).thenReturn(new String("11111111-1111-1111-1111-111111111111"));
\r
437 when(intentVnMappingResults.get(0).getIntentId()).thenReturn(new IntentId("11111111-1111-1111-1111-111111111111"));
\r
438 when(intentVnMappingResults.get(0).getVirtualResource()).thenReturn(virtualResources);
\r
439 when(virtualResources.get(0).getVirtualResourceType()).thenReturn(VirtualResource.VirtualResourceType.Vport);
\r
440 when(virtualResources.get(0).getParentVirtualResourceEntityId()).thenReturn(virtualResourceEntityId);
\r
441 when(virtualResourceEntityId.getValue()).thenReturn(new String("11111111-1111-1111-1111-111111111111"));
\r
442 when(virtualNodes.get(0).getNodeId()).thenReturn(new VirtualNodeId("11111111-1111-1111-1111-111111111111"));
\r
443 when(virtualNodes.get(0).getNodeType()).thenReturn(VirtualNode.NodeType.Vrouter);
\r
446 when(intentVnMappingResults.get(0).getVirtualResource()).thenReturn(virtualResources);
\r
449 when(virtualResources.get(0).getParentVirtualResourceEntityId()).thenReturn(virtualResourceEntityId);
\r
450 when(virtualResourceEntityId.getValue()).thenReturn(new String("11111111-1111-1111-1111-111111111111"));
\r
451 when(virtualNodes.get(0).getNodeId()).thenReturn(new VirtualNodeId("11111111-1111-1111-1111-111111111111"));
\r
453 when(virtualResources.get(0).getParentVirtualResourceEntityId()).thenReturn(virtualResourceEntityId);
\r
454 when(virtualResourceEntityId.getValue()).thenReturn(new String("11111111-1111-1111-1111-111111111112"));
\r
455 when(virtualNodes.get(0).getNodeId()).thenReturn(new VirtualNodeId("11111111-1111-1111-1111-111111111112"));
\r
457 when(virtualNodes.get(0).getNodeId()).thenReturn(new VirtualNodeId("11111111-1111-1111-1111-111111111111"));
\r
458 when(virtualNodes.get(0).getNodeId()).thenReturn(new VirtualNodeId("11111111-1111-1111-1111-111111111112"));
\r
459 when(virtualLinks.get(0).getSrcNodeId()).thenReturn(new VirtualNodeId("11111111-1111-1111-1111-111111113111"));
\r
460 when(virtualLinks.get(0).getDestNodeId()).thenReturn(new VirtualNodeId("11111111-1111-1111-1111-111111131112"));
\r
461 when(virtualNodes.get(0).getVirtualPort()).thenReturn(virtualPorts1);
\r
462 when(virtualNodes.get(0).getVirtualPort()).thenReturn(virtualPorts2);
\r
463 when(virtualNodes.get(0).getNodeId()).thenReturn(new VirtualNodeId("11111111-1111-1111-1111-111111111111"));
\r
464 when(virtualNodes.get(0).getNodeId()).thenReturn(new VirtualNodeId("11111111-1111-1111-1111-111111111112"));
\r
465 when(virtualNodes.get(0).getNodeId()).thenReturn(new VirtualNodeId("11111111-1111-1111-1111-111111111112"));
\r
466 when(virtualNodes.get(0).getNodeId()).thenReturn(new VirtualNodeId("11111111-1111-1111-1111-111111111111"));
\r
469 when(operation.getOperationId()).thenReturn(new OperationId("11111111-1111-1111-1111-111111131112"));
\r
474 actionResolverTest.resolveActions(user,operation,flow,virtualNetwork, userIntentVnMapping);
\r
479 public void testResolveActionsGoNormal() throws Exception {
\r
481 when(operation.getAction()).thenReturn(actions);
\r
482 when(actions.get(0).getActionName()).thenReturn(new ActionName("go-through"));
\r
483 when(actions.get(0).getParameterValues()).thenReturn(parametervalues);
\r
484 when(parametervalues.getStringValue()).thenReturn(stringValue2);
\r
486 //resolveGoThroughAction()
\r
487 when(user.getObjects()).thenReturn(objects);
\r
488 when(objects.getNode()).thenReturn(nodes4);
\r
489 when(stringValue2.get(0).getValue()).thenReturn(new String("11111111-1111-1111-1111-111111111111"));
\r
490 when(nodes4.get(0).getNodeId()).thenReturn(new NodeId("11111111-1111-1111-1111-111111111111"));
\r
493 when(nodes4.get(0).getNodeType()).thenReturn(new NodeType("aaa-group"));
\r
494 //resolveGoThroughNormalGroupAction()
\r
495 when(user.getObjects()).thenReturn(objects2);
\r
496 when(objects2.getNode()).thenReturn(nodes4);
\r
497 when(actions.get(0).getParameterValues()).thenReturn(parametervalues);
\r
498 when(parametervalues.getStringValue()).thenReturn(stringValue2);
\r
500 when(stringValue2.get(0).getValue()).thenReturn(new String("11111111-1111-1111-1111-111111111111"));
\r
501 when(nodes4.get(0).getNodeId()).thenReturn(new NodeId("11111111-1111-1111-1111-111111111111"));
\r
503 when(virtualNetwork.getVirtualNodes()).thenReturn(virtualNode);
\r
504 when(virtualNode.getVirtualNode()).thenReturn(virtualNodes);
\r
509 when(userIntentVnMapping.getIntentVnMappingResult()).thenReturn(intentVnMappingResults);
\r
511 when(stringValue2.get(0).getValue()).thenReturn(new String("11111111-1111-1111-1111-111111111111"));
\r
512 when(intentVnMappingResults.get(0).getIntentId()).thenReturn(new IntentId("11111111-1111-1111-1111-111111111111"));
\r
513 when(intentVnMappingResults.get(0).getVirtualResource()).thenReturn(virtualResources);
\r
514 when(virtualResources.get(0).getVirtualResourceType()).thenReturn(VirtualResource.VirtualResourceType.Vnode);
\r
515 when(virtualResources.get(0).getVirtualResourceEntityId()).thenReturn(virtualResourceEntityId);
\r
516 when(virtualResourceEntityId.getValue()).thenReturn("11111111-1111-1111-1111-111111111111");
\r
518 when(virtualNodes.get(0).getNodeId()).thenReturn(new VirtualNodeId("11111111-1111-1111-1111-111111111111"));
\r
519 when(virtualNodes.get(0).getNodeType()).thenReturn(VirtualNode.NodeType.Vrouter);
\r
521 //getSourceVirtualRouterOfFlow()
\r
522 when(flow.getMatchItem()).thenReturn(matchItem);//matchItem
\r
523 when(matchItem.get(0).getMatchItemName()).thenReturn(new MatchItemName("src-ip"));
\r
524 when(matchItem.get(0).getMatchItemValue()).thenReturn(matchItemValue);//matchItemValue
\r
525 when(matchItemValue.getStringValue()).thenReturn(new String("src-ip"));
\r
526 when(nodes.get(0).getNodeType()).thenReturn(new NodeType("l2-group"));
\r
527 when(nodes.get(0).getProperty()).thenReturn(properties2);
\r
528 when(properties2.get(0).getPropertyName()).thenReturn(new PropertyName("ip-prefix"));
\r
529 when(properties2.get(0).getPropertyValues()).thenReturn(propertyValues);
\r
530 when(propertyValues.getStringValue()).thenReturn(stringValue);
\r
531 when(stringValue.get(0).getValue()).thenReturn(new String("src-ip"));
\r
532 when(nodes.get(0).getNodeId()).thenReturn(nodeId);
\r
533 when(nodeId.getValue()).thenReturn(new String("11111111-1111-1111-1111-111111111111"));
\r
534 when(intentVnMappingResults.get(0).getIntentId()).thenReturn(new IntentId("11111111-1111-1111-1111-111111111111"));
\r
535 when(intentVnMappingResults.get(0).getVirtualResource()).thenReturn(virtualResources);
\r
536 when(virtualResources.get(0).getVirtualResourceType()).thenReturn(VirtualResource.VirtualResourceType.Vport);
\r
537 when(virtualResources.get(0).getParentVirtualResourceEntityId()).thenReturn(virtualResourceEntityId);
\r
538 when(virtualResourceEntityId.getValue()).thenReturn(new String("11111111-1111-1111-1111-111111111111"));
\r
539 when(virtualNodes.get(0).getNodeId()).thenReturn(new VirtualNodeId("11111111-1111-1111-1111-111111111111"));
\r
540 when(virtualNodes.get(0).getNodeType()).thenReturn(VirtualNode.NodeType.Vrouter);
\r
542 //getDestinationVirtualRouterOfFlow()
\r
543 when(flow.getMatchItem()).thenReturn(matchItem);//matchItem
\r
544 when(matchItem.get(0).getMatchItemName()).thenReturn(new MatchItemName("dst-ip"));
\r
545 when(matchItem.get(0).getMatchItemValue()).thenReturn(matchItemValue);//matchItemValue
\r
546 when(matchItemValue.getStringValue()).thenReturn(new String("dst-ip"));
\r
547 when(nodes.get(0).getNodeType()).thenReturn(new NodeType("l2-group"));
\r
548 when(nodes.get(0).getProperty()).thenReturn(properties2);
\r
549 when(properties2.get(0).getPropertyName()).thenReturn(new PropertyName("ip-prefix"));
\r
550 when(properties2.get(0).getPropertyValues()).thenReturn(propertyValues);
\r
551 when(propertyValues.getStringValue()).thenReturn(stringValue);
\r
552 when(stringValue.get(0).getValue()).thenReturn(new String("src-ip"));
\r
553 when(nodes.get(0).getNodeId()).thenReturn(nodeId);
\r
554 when(nodeId.getValue()).thenReturn(new String("11111111-1111-1111-1111-111111111111"));
\r
555 when(intentVnMappingResults.get(0).getIntentId()).thenReturn(new IntentId("11111111-1111-1111-1111-111111111111"));
\r
556 when(intentVnMappingResults.get(0).getVirtualResource()).thenReturn(virtualResources);
\r
557 when(virtualResources.get(0).getVirtualResourceType()).thenReturn(VirtualResource.VirtualResourceType.Vport);
\r
558 when(virtualResources.get(0).getParentVirtualResourceEntityId()).thenReturn(virtualResourceEntityId);
\r
559 when(virtualResourceEntityId.getValue()).thenReturn(new String("11111111-1111-1111-1111-111111111111"));
\r
560 when(virtualNodes.get(0).getNodeId()).thenReturn(new VirtualNodeId("11111111-1111-1111-1111-111111111111"));
\r
561 when(virtualNodes.get(0).getNodeType()).thenReturn(VirtualNode.NodeType.Vrouter);
\r
564 //actionResolverTest.resolveActions(user,operation,flow,virtualNetwork, userIntentVnMapping);
\r