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
8 package org.opendaylight.nemo.user.vnspacemanager.structurestyle.updateintent;
\r
10 import org.opendaylight.nemo.user.vnspacemanager.structurestyle.updateintent.UpdateNode;
\r
11 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.template.definitions.TemplateDefinition;
\r
13 import org.opendaylight.nemo.user.tenantmanager.TenantManage;
\r
14 import com.google.common.base.Optional;
\r
15 import com.google.common.util.concurrent.CheckedFuture;
\r
16 import com.google.common.util.concurrent.FutureCallback;
\r
17 import com.google.common.util.concurrent.Futures;
\r
18 import com.google.common.util.concurrent.ListenableFuture;
\r
19 import com.google.common.util.concurrent.SettableFuture;
\r
20 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
\r
21 import org.opendaylight.controller.md.sal.binding.api.WriteTransaction;
\r
22 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
\r
23 import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException;
\r
24 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.node.instance.SubNode;
\r
25 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.node.definitions.NodeDefinition;
\r
26 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.Objects;
\r
27 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.Node;
\r
28 import org.opendaylight.nemo.user.tenantmanager.TenantManage;
\r
29 import org.opendaylight.nemo.user.vnspacemanager.languagestyle.NEMOConstants;
\r
30 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.NodeType;
\r
31 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.UserId;
\r
32 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.Users;
\r
33 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.Objects;
\r
34 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.NodeBuilder;
\r
35 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.NodeKey;
\r
36 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.users.User;
\r
37 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.users.UserKey;
\r
38 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.NodeDefinitions;
\r
39 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.node.definitions.NodeDefinition;
\r
40 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.node.instance.Property;
\r
41 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.property.definitions.PropertyDefinition;
\r
42 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.property.instance.PropertyValues;
\r
43 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.property.instance.property.values.StringValue;
\r
44 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.node.definitions.NodeDefinition;
\r
45 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
\r
46 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.PropertyName;
\r
47 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.property.instance.PropertyValues;
\r
48 import org.opendaylight.controller.md.sal.binding.api.ReadOnlyTransaction;
\r
49 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.NodeId;
\r
50 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.NodeName;
\r
51 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.NodeKey;
\r
52 import org.slf4j.Logger;
\r
53 import org.slf4j.LoggerFactory;
\r
54 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
\r
55 import org.opendaylight.nemo.user.tenantmanager.TenantManage;
\r
56 import org.opendaylight.nemo.user.vnspacemanager.languagestyle.NEMOConstants;
\r
57 import org.opendaylight.nemo.user.vnspacemanager.languagestyle.updateintentlang.UpdateTemplateInstanceLang;
\r
58 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.*;
\r
59 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.Node;
\r
60 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.template.instances.TemplateInstanceBuilder;
\r
61 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.template.instances.TemplateInstanceKey;
\r
62 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.users.User;
\r
63 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.node.definitions.NodeDefinition;
\r
64 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.node.instance.Property;
\r
65 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.property.definitions.PropertyDefinition;
\r
66 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.property.instance.PropertyValues;
\r
67 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.property.instance.property.values.StringValue;
\r
68 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.template.rev151201.template.instance.grouping.TemplateParameter;
\r
69 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.template.rev151201.template.instance.grouping.TemplateParameterBuilder;
\r
70 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.template.rev151201.template.instance.grouping.TemplateParameterKey;
\r
71 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.template.rev151201.template.instance.grouping.template.parameter.ParameterValuesBuilder;
\r
72 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.template.rev151201.template.instance.grouping.template.parameter.parameter.values.*;
\r
73 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.template.instances.TemplateInstance;
\r
76 import java.util.LinkedList;
\r
77 import java.util.List;
\r
78 import java.util.Map;
\r
79 import java.lang.reflect.Field;
\r
80 import java.lang.reflect.Method;
\r
81 import java.util.HashMap;
\r
82 import java.util.List;
\r
83 import java.util.Map;
\r
84 import java.util.concurrent.ExecutionException;
\r
85 import java.util.concurrent.TimeUnit;
\r
86 import java.util.concurrent.TimeoutException;
\r
87 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.UserRoleName;
\r
88 import java.util.LinkedList;
\r
89 import org.junit.Assert;
\r
90 import org.junit.Before;
\r
91 import org.junit.Test;
\r
93 import java.util.List;
\r
95 import static org.mockito.Matchers.any;
\r
96 import static org.mockito.Mockito.mock;
\r
97 import static org.mockito.Mockito.times;
\r
98 import static org.mockito.Mockito.verify;
\r
99 import static org.mockito.Mockito.when;
\r
101 import com.google.common.util.concurrent.CheckedFuture;
\r
102 import static org.mockito.Mockito.doNothing;
\r
105 * Created by ldzd11 on 2015/12/18.
\r
107 public class UpdateNodeTest {
\r
109 private UpdateNode updateNode;
\r
111 private Node node2;
\r
112 private NodeName nodeName;
\r
113 private NodeName nodeName2;
\r
114 private List<Node> nodeList;
\r
115 private DataBroker dataBroker;
\r
116 private TenantManage tenantManage;
\r
117 private Property property;
\r
118 private List<Property> propertyList;
\r
119 private PropertyName propertyName;
\r
120 private PropertyName propertyName2;
\r
121 private StringValue stringValue;
\r
122 private List<StringValue> stringValues;
\r
123 private org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.property.instance.property.values.RangeValue rangeValue;
\r
124 private PropertyValues propertyValues;
\r
125 private ValueCheck valueCheck;
\r
126 private PropertyDefinition propertyDefinition;
\r
127 private NodeType nodeType;
\r
128 private NodeType nodeType2;
\r
129 private List<PropertyDefinition> propertyDefinitions;
\r
130 private UserId userId;
\r
131 private WriteTransaction writeTransaction;
\r
133 private NodeId nodeId;
\r
134 private NodeKey nodeKey;
\r
135 private Objects objects;
\r
136 private SubNode subNode;
\r
137 private UserRoleName userRoleName;
\r
138 private org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.property.instance.property.values.IntValue intValue;
\r
139 private List<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.property.instance.property.values.IntValue> intValueList;
\r
140 private List<SubNode> subNodeList;
\r
142 public void setUp() throws Exception {
\r
143 dataBroker = mock(DataBroker.class);
\r
144 tenantManage = mock(TenantManage.class);
\r
145 propertyValues = mock(PropertyValues.class);
\r
146 valueCheck = mock(ValueCheck.class);
\r
147 nodeId = mock(NodeId.class);
\r
148 nodeName = mock(NodeName.class);
\r
149 nodeName2 = mock(NodeName.class);
\r
151 propertyName = mock(PropertyName.class);
\r
152 propertyName2 = mock(PropertyName.class);
\r
154 property = mock(Property.class);
\r
155 propertyList = new ArrayList<Property>(1);
\r
156 propertyList.add(property);
\r
158 stringValue = mock(StringValue.class);
\r
159 stringValues = new ArrayList<StringValue>(1);
\r
160 stringValues.add(stringValue);
\r
161 nodeType = mock(NodeType.class);
\r
163 propertyDefinition= mock(PropertyDefinition.class);
\r
164 propertyDefinitions = new ArrayList<PropertyDefinition>(1);
\r
165 propertyDefinitions.add(propertyDefinition);
\r
167 node = mock(Node.class);
\r
168 node2 = mock(Node.class);
\r
169 userId = mock(UserId.class);
\r
170 user = mock(User.class);
\r
171 objects = mock(Objects.class);
\r
172 nodeKey = mock(NodeKey.class);
\r
174 nodeList = new ArrayList<Node>(1);
\r
175 nodeList.add(node2);
\r
176 writeTransaction = mock(WriteTransaction.class);
\r
178 subNode = mock(SubNode.class);
\r
179 subNodeList = new ArrayList<SubNode>();
\r
180 subNodeList.add(subNode);
\r
182 intValue = mock(org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.property.instance.property.values.IntValue.class);
\r
183 intValueList = new ArrayList<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.property.instance.property.values.IntValue>();
\r
184 intValueList.add(intValue);
\r
186 rangeValue = mock(org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.property.instance.property.values.RangeValue.class);
\r
190 updateNode = new UpdateNode(dataBroker,tenantManage);
\r
191 nodeType2 = mock(NodeType.class);
\r
192 userRoleName = mock(UserRoleName.class);
\r
199 public void testNodeHandling() throws Exception {
\r
201 Class<UpdateNode> class1 = UpdateNode.class;
\r
202 TemplateName templateName = new TemplateName("aaa");
\r
203 TemplateDefinition templateDefinition = mock(TemplateDefinition.class);
\r
204 Map<TemplateName, TemplateDefinition> map1 = new HashMap<TemplateName, TemplateDefinition>();
\r
205 map1.put(templateName, templateDefinition);
\r
206 // userTemplateDefinitionMap.put(userId, map1);
\r
207 //field1.set(field.get(updateNode), userTemplateDefinitionMap);
\r
209 when(tenantManage.getTempalteDefinition(userId)).thenReturn(map1);
\r
210 when(node.getNodeType()).thenReturn(nodeType);
\r
211 when(node.getNodeType().getValue()).thenReturn(new String("aaa"));
\r
213 when(tenantManage.getDefinitionDataStore(userId)).thenReturn(map1)
\r
214 ; when(node.getNodeType()).thenReturn(nodeType);
\r
215 when(node.getNodeType().getValue()).thenReturn(new String("aaa"));
\r
217 ///////////////////////////////////////////////////////////////
\r
218 when(tenantManage.getTempalteDefinition(userId)).thenReturn(null);
\r
219 when(tenantManage.getDefinitionDataStore(userId)).thenReturn(null);
\r
220 Map<UserId, User> map2 = new HashMap<UserId,User>();
\r
221 UserId userId1 = mock(UserId.class);
\r
222 User user1 = mock(User.class);
\r
223 map2.put(userId1, user1);
\r
224 when(tenantManage.getUsers()).thenReturn(map2);
\r
225 when(user1.getUserRole()).thenReturn(userRoleName);
\r
226 when(user1.getUserRole().getValue()).thenReturn(NEMOConstants.admin);
\r
227 when(user1.getUserId()).thenReturn(userId1);
\r
228 when(tenantManage.getDefinitionDataStore(user1.getUserId())).thenReturn(map1);
\r
229 when(tenantManage.getDefinitionDataStore(user1.getUserId())).thenReturn(map1);
\r
230 /////////////////////////////////////////////////////////////////////////////////
\r
233 //first nodeModel = true 79 if
\r
234 when(node.getSubNode()).thenReturn(subNodeList);
\r
235 Assert.assertEquals(updateNode.NodeHandling(userId, node), "Subnodes should not be included in template instance.");
\r
237 when(node.getSubNode()).thenReturn(null);
\r
238 when(node.getNodeId()).thenReturn(nodeId);
\r
239 when(node.getNodeId().getValue()).thenReturn(new String("00001111-0000-0000-0000-000011112222"));
\r
240 when(node.getNodeName()).thenReturn(nodeName);
\r
241 when(node.getNodeName().getValue()).thenReturn(new String("nodename"));
\r
242 when(node.getProperty()).thenReturn(propertyList);
\r
243 when(property.getPropertyName()).thenReturn(propertyName);
\r
244 when(property.getPropertyName().getValue()).thenReturn(new String("propertyname"));
\r
245 when(property.getPropertyValues()).thenReturn(propertyValues);
\r
247 when(property.getPropertyValues().getIntValue()).thenReturn(intValueList);
\r
250 when(intValue.getOrder()).thenReturn(a);
\r
251 when(intValue.getValue()).thenReturn(a);
\r
253 when(property.getPropertyValues().getStringValue()).thenReturn(stringValues);
\r
254 when(stringValue.getOrder()).thenReturn(a);
\r
255 when(stringValue.getValue()).thenReturn(new String("stringvalue"));
\r
257 when(property.getPropertyValues().getRangeValue()).thenReturn(rangeValue);
\r
258 when(property.getPropertyValues().getRangeValue().getMin()).thenReturn(a);
\r
259 when(property.getPropertyValues().getRangeValue().getMax()).thenReturn(b);
\r
261 UpdateTemplateInstance updateTemplateInstance = mock(UpdateTemplateInstance.class);
\r
262 Field field1 = class1.getDeclaredField("updateTemplateInstance");
\r
263 field1.setAccessible(true);
\r
264 field1.set(updateNode, updateTemplateInstance);
\r
265 when(updateTemplateInstance.checkTemplateInstance(any(UserId.class), any(TemplateInstance.class))).thenReturn(new String("success"));
\r
266 Assert.assertEquals(updateNode.NodeHandling(userId, node), "success");
\r
269 when(tenantManage.getTempalteDefinition(userId)).thenReturn(null);
\r
270 when(tenantManage.getDefinitionDataStore(userId)).thenReturn(null);
\r
271 Map<UserId, User> mapnull = new HashMap<UserId, User>();
\r
272 when(tenantManage.getUsers()).thenReturn(mapnull);
\r
274 //into checkDefinition
\r
275 CheckedFuture connectiondefinitionFuture = mock(CheckedFuture.class);
\r
276 ReadOnlyTransaction readOnlyTransaction = mock(ReadOnlyTransaction.class);
\r
277 when(dataBroker.newReadOnlyTransaction()).thenReturn(readOnlyTransaction);
\r
278 when(readOnlyTransaction.read(any(LogicalDatastoreType.class), any(InstanceIdentifier.class))).thenReturn(connectiondefinitionFuture);
\r
280 //Class<UpdateNode> class1 = UpdateNode.class;
\r
281 Class<GetDefinitions> class2 = GetDefinitions.class;
\r
282 Field field = class1.getDeclaredField("getDefinitions");
\r
283 field.setAccessible(true);
\r
284 Field field2 = class2.getDeclaredField("nodeDefinitionList");
\r
285 field2.setAccessible(true);
\r
288 List<NodeDefinition> nodeDefinitionList = new ArrayList<NodeDefinition>();
\r
289 NodeDefinition nodeDefinition = mock(NodeDefinition.class);
\r
290 when(nodeDefinition.getNodeType()).thenReturn(nodeType);
\r
291 nodeDefinitionList.add(nodeDefinition);
\r
293 field2.set(field.get(updateNode), nodeDefinitionList);
\r
294 // System.out.print("2");
\r
295 // Assert.assertTrue((List<NodeDefinition>) field1.get(field.get(updateNode)) == nodeDefinitionList);
\r
297 when(node.getNodeType()).thenReturn(nodeType);
\r
298 when(node.getProperty()).thenReturn(null);
\r
299 when(nodeDefinition.getPropertyDefinition()).thenReturn(null);
\r
301 //into checkinstance
\r
302 when(tenantManage.getNode(userId)).thenReturn(null);
\r
303 when(tenantManage.getNodeDataStore(userId)).thenReturn(null);
\r
304 //into else tenantManage.setNode
\r
305 when(node.getNodeId()).thenReturn(nodeId);
\r
306 doNothing().when(tenantManage).setNode(any(UserId.class), any(NodeId.class), any(Node.class));
\r
307 Assert.assertEquals(updateNode.NodeHandling(userId, node), null);
\r
310 public void testcheckInstance() throws Exception {
\r
311 Class<UpdateNode> class1 = UpdateNode.class;
\r
312 Method method = class1.getDeclaredMethod("checkInstance", new Class[]{UserId.class, Node.class});
\r
313 method.setAccessible(true);
\r
315 Class<TenantManage> class2 = TenantManage.class;
\r
316 Field field = class1.getDeclaredField("tenantManage");
\r
317 field.setAccessible(true);
\r
318 Field field1 = class2.getDeclaredField("userNodeMap");
\r
319 field1.setAccessible(true);
\r
321 Map<UserId, Map<NodeId, Node>> userNodeMap = new HashMap<UserId, Map<NodeId, Node>>();
\r
322 Map<UserId, Map<NodeId, Node>> userNodeMap2 = new HashMap<UserId, Map<NodeId, Node>>();
\r
324 Map<NodeId, Node> map1 = new HashMap<NodeId, Node>();
\r
325 map1.put(nodeId, node2);
\r
326 userNodeMap.put(userId, map1);
\r
327 field1.set(field.get(updateNode), userNodeMap);
\r
329 when(tenantManage.getNode(userId)).thenReturn(map1);
\r
330 when(node.getNodeId()).thenReturn(nodeId);
\r
331 when(node2.getNodeName()).thenReturn(nodeName);
\r
332 when(node.getNodeName()).thenReturn(nodeName2);
\r
333 Assert.assertEquals(method.invoke(updateNode, userId, node), "The node name should not be changed.");
\r
335 when(node2.getNodeName()).thenReturn(nodeName);
\r
336 when(node.getNodeName()).thenReturn(nodeName);
\r
337 when(node2.getNodeType()).thenReturn(nodeType2);
\r
338 when(node.getNodeType()).thenReturn(nodeType);
\r
339 Assert.assertEquals(method.invoke(updateNode, userId, node), "The node type should not be changed.");
\r
341 field1.set(field.get(updateNode), userNodeMap2);
\r
342 Field field2 = class2.getDeclaredField("user");
\r
343 field2.setAccessible(true);
\r
344 field2.set(field.get(updateNode), user);
\r
345 when(user.getObjects()).thenReturn(objects);
\r
346 when(user.getObjects().getNode()).thenReturn(nodeList);
\r
347 when(node2.getNodeId()).thenReturn(nodeId);//map.put(nodeId,node2)
\r
348 //when(tenantManage.getNodeDataStore(userId)).thenReturn(map1);
\r
349 when(node.getNodeId()).thenReturn(nodeId);
\r
350 when(node2.getNodeName()).thenReturn(nodeName2);
\r
351 when(node.getNodeName()).thenReturn(nodeName);
\r
352 Assert.assertEquals(method.invoke(updateNode, userId, node), "The node name should not be changed.");
\r
354 when(node2.getNodeName()).thenReturn(nodeName);
\r
355 when(node.getNodeName()).thenReturn(nodeName);
\r
356 when(node2.getNodeType()).thenReturn(nodeType2);
\r
357 when(node.getNodeType()).thenReturn(nodeType);
\r
358 Assert.assertEquals(method.invoke(updateNode, userId, node), "The node type should not be changed.");
\r
363 public void testcheckDefinition() throws Exception {
\r
365 Class<UpdateNode> class3 = UpdateNode.class;
\r
366 Method method = class3.getDeclaredMethod("checkDefinition", new Class[]{Node.class});
\r
367 method.setAccessible(true);
\r
369 CheckedFuture nodedefinitionFuture = mock(CheckedFuture.class);
\r
370 ReadOnlyTransaction readOnlyTransaction = mock(ReadOnlyTransaction.class);
\r
371 when(dataBroker.newReadOnlyTransaction()).thenReturn(readOnlyTransaction);
\r
372 when(readOnlyTransaction.read(any(LogicalDatastoreType.class), any(InstanceIdentifier.class))).thenReturn(nodedefinitionFuture);
\r
374 List<NodeDefinition> nodeDefinitionList = new ArrayList<NodeDefinition>();
\r
375 List<NodeDefinition> nodeDefinitionListnull = new ArrayList<NodeDefinition>();
\r
376 NodeDefinition nodeDefinition = mock(NodeDefinition.class);
\r
377 nodeDefinitionList.add(nodeDefinition);
\r
378 when(nodeDefinition.getNodeType()).thenReturn(nodeType);
\r
380 Class<UpdateNode> class1 = UpdateNode.class;
\r
381 Class<GetDefinitions> class2 = GetDefinitions.class;
\r
382 Field field = class1.getDeclaredField("getDefinitions");
\r
383 field.setAccessible(true);
\r
384 Field field1 = class2.getDeclaredField("nodeDefinitionList");
\r
385 field1.setAccessible(true);
\r
388 System.out.println(field1.get(field.get(updateNode)));
\r
389 field1.set(field.get(updateNode), nodeDefinitionList);
\r
390 System.out.println(field1.get(field.get(updateNode)));
\r
391 Assert.assertTrue((List<NodeDefinition>) field1.get(field.get(updateNode)) == nodeDefinitionList);
\r
393 when(node.getNodeType()).thenReturn(nodeType);
\r
394 when(node.getProperty()).thenReturn(propertyList);
\r
395 when(nodeDefinition.getPropertyDefinition()).thenReturn(propertyDefinitions);
\r
397 when(property.getPropertyName()).thenReturn(propertyName);
\r
398 when(propertyDefinition.getPropertyName()).thenReturn(propertyName2);
\r
400 when(property.getPropertyName().getValue()).thenReturn(new String("propertyname"));
\r
401 Assert.assertEquals(method.invoke(updateNode, node), "The property propertyname has not been defined.");
\r
403 field1.set(field.get(updateNode), nodeDefinitionList);
\r
404 when(node.getNodeType()).thenReturn(nodeType);
\r
405 List<Property> propertyListnull = new ArrayList<Property>();
\r
406 List<PropertyDefinition> propertyDefinitionListnull = new ArrayList<PropertyDefinition>();
\r
408 when(node.getProperty()).thenReturn(propertyListnull);
\r
409 when(nodeDefinition.getPropertyDefinition()).thenReturn(propertyDefinitionListnull);
\r
410 Assert.assertEquals(method.invoke(updateNode, node), null);
\r
412 field1.set(field.get(updateNode), nodeDefinitionListnull);
\r
413 Assert.assertEquals(method.invoke(updateNode, node), "This type of Node has not been defined.");
\r
415 field1.set(field.get(updateNode), nodeDefinitionList);
\r
416 when(node.getNodeType()).thenReturn(nodeType2);
\r
417 Assert.assertEquals(method.invoke(updateNode, node), "This type of Node has not been defined.");
\r
421 (String)method.invoke(updateNode,node)*/
\r
425 public void testcheckProperty() throws Exception {
\r
426 Class<UpdateNode> class1 = UpdateNode.class;
\r
427 Method method = class1.getDeclaredMethod("checkProperty", new Class[]{List.class, List.class});
\r
428 method.setAccessible(true);
\r
429 when(property.getPropertyName()).thenReturn(propertyName);
\r
430 when(propertyDefinition.getPropertyName()).thenReturn(propertyName2);
\r
431 when(property.getPropertyName().getValue()).thenReturn(new String("propertyname"));
\r
432 Assert.assertEquals(method.invoke(updateNode, propertyList,propertyDefinitions), "The property propertyname has not been defined.");
\r
438 public void testcheckPredefine() throws Exception {
\r
439 Class<UpdateNode> class1 = UpdateNode.class;
\r
440 Method method = class1.getDeclaredMethod("checkPredefine", new Class[]{List.class});
\r
441 method.setAccessible(true);
\r
443 when(property.getPropertyName()).thenReturn(propertyName);
\r
444 when(property.getPropertyName().getValue()).thenReturn(new String("mac-address"));
\r
445 when(property.getPropertyValues()).thenReturn(propertyValues);
\r
446 when(property.getPropertyValues().getStringValue()).thenReturn(stringValues);
\r
447 when(stringValue.getValue()).thenReturn(new String("test"));
\r
448 when(valueCheck.checkMac(stringValue.getValue())).thenReturn(false);
\r
449 Assert.assertEquals(method.invoke(updateNode, propertyList), "The mac-address is not legal.");
\r
451 when(property.getPropertyName().getValue()).thenReturn(new String("ip-address"));
\r
452 when(property.getPropertyValues().getStringValue()).thenReturn(stringValues);
\r
453 when(stringValue.getValue()).thenReturn(new String("/"));
\r
454 when(valueCheck.checkIpPrefix(stringValue.getValue())).thenReturn(false);
\r
455 Assert.assertEquals(method.invoke(updateNode, propertyList), "The ip-address is not legal.");
\r
457 when(property.getPropertyName().getValue()).thenReturn(new String("gateway-ip"));
\r
458 when(property.getPropertyValues().getStringValue()).thenReturn(stringValues);
\r
459 when(valueCheck.checkIpAddress(stringValue.getValue())).thenReturn(false);
\r
460 Assert.assertEquals(method.invoke(updateNode, propertyList), "The gateway-ip is not legal.");
\r
462 when(property.getPropertyName().getValue()).thenReturn(new String("ac-info-network"));
\r
463 when(property.getPropertyValues().getStringValue()).thenReturn(stringValues);
\r
464 when(stringValue.getValue()).thenReturn(new String("layer4"));
\r
465 Assert.assertEquals(method.invoke(updateNode, propertyList), "The ac-info-network is not legal.");
\r
467 when(property.getPropertyName().getValue()).thenReturn(new String("operating-mode"));
\r
468 when(property.getPropertyValues().getStringValue()).thenReturn(stringValues);
\r
469 when(stringValue.getValue()).thenReturn(new String("layer4"));
\r
470 Assert.assertEquals(method.invoke(updateNode, propertyList), "The operating-mode is not legal.");
\r