Modified and added partical test files
[nemo.git] / nemo-impl / src / test / java / org / opendaylight / nemo / user / vnspacemanager / structurestyle / updateintent / UpdateNodeTest.java
1 /*\r
2  * Copyright (c) 2015 Huawei, Inc. and others. All rights reserved.\r
3  *\r
4  * This program and the accompanying materials are made available under the\r
5  * terms of the Eclipse Public License v1.0 which accompanies this distribution,\r
6  * and is available at http://www.eclipse.org/legal/epl-v10.html\r
7  */\r
8 package org.opendaylight.nemo.user.vnspacemanager.structurestyle.updateintent;\r
9 \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
12 \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
74 \r
75 \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
92 import java.util.*;\r
93 import java.util.List;\r
94 \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
100 \r
101 import com.google.common.util.concurrent.CheckedFuture;\r
102 import static org.mockito.Mockito.doNothing;\r
103 \r
104 /**\r
105  * Created by ldzd11 on 2015/12/18.\r
106  */\r
107 public class UpdateNodeTest {\r
108 \r
109     private UpdateNode updateNode;\r
110     private Node node;\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
132     private User user;\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
141     @org.junit.Before\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
150 \r
151         propertyName = mock(PropertyName.class);\r
152         propertyName2 = mock(PropertyName.class);\r
153 \r
154         property = mock(Property.class);\r
155         propertyList = new ArrayList<Property>(1);\r
156         propertyList.add(property);\r
157 \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
162 \r
163         propertyDefinition=  mock(PropertyDefinition.class);\r
164         propertyDefinitions = new ArrayList<PropertyDefinition>(1);\r
165         propertyDefinitions.add(propertyDefinition);\r
166 \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
173 \r
174         nodeList = new ArrayList<Node>(1);\r
175         nodeList.add(node2);\r
176         writeTransaction = mock(WriteTransaction.class);\r
177 \r
178         subNode = mock(SubNode.class);\r
179         subNodeList = new ArrayList<SubNode>();\r
180         subNodeList.add(subNode);\r
181 \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
185 \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
187 \r
188 \r
189 \r
190         updateNode = new UpdateNode(dataBroker,tenantManage);\r
191         nodeType2 = mock(NodeType.class);\r
192         userRoleName = mock(UserRoleName.class);\r
193 \r
194 \r
195 \r
196     }\r
197 \r
198     @org.junit.Test\r
199     public void testNodeHandling() throws Exception {\r
200 \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
208 \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
212 \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
216 \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
231 \r
232 \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
236         //else 83\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
246         //intValue\r
247         when(property.getPropertyValues().getIntValue()).thenReturn(intValueList);\r
248         long a = 1;\r
249         long b = 2;\r
250         when(intValue.getOrder()).thenReturn(a);\r
251         when(intValue.getValue()).thenReturn(a);\r
252         //stringValue\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
256         //RangeValue\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
260 \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
267 \r
268 \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
273 \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
279 \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
286 \r
287 \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
292 \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
296 \r
297         when(node.getNodeType()).thenReturn(nodeType);\r
298         when(node.getProperty()).thenReturn(null);\r
299         when(nodeDefinition.getPropertyDefinition()).thenReturn(null);\r
300 \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
308     }\r
309     @Test\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
314 \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
320 \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
323 \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
328 \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
334 \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
340 \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
353 \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
359 \r
360     }\r
361 \r
362 @Test\r
363     public void testcheckDefinition() throws Exception {\r
364 \r
365         Class<UpdateNode> class3 = UpdateNode.class;\r
366         Method method = class3.getDeclaredMethod("checkDefinition", new Class[]{Node.class});\r
367         method.setAccessible(true);\r
368 \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
373 \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
379 \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
386 \r
387 \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
392 \r
393         when(node.getNodeType()).thenReturn(nodeType);\r
394         when(node.getProperty()).thenReturn(propertyList);\r
395         when(nodeDefinition.getPropertyDefinition()).thenReturn(propertyDefinitions);\r
396 \r
397         when(property.getPropertyName()).thenReturn(propertyName);\r
398         when(propertyDefinition.getPropertyName()).thenReturn(propertyName2);\r
399 \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
402 \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
407 \r
408         when(node.getProperty()).thenReturn(propertyListnull);\r
409         when(nodeDefinition.getPropertyDefinition()).thenReturn(propertyDefinitionListnull);\r
410         Assert.assertEquals(method.invoke(updateNode, node), null);\r
411 \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
414 \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
418 \r
419 \r
420 /*\r
421         (String)method.invoke(updateNode,node)*/\r
422     }\r
423 \r
424     @Test\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
433 \r
434     }\r
435 \r
436 \r
437     @Test\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
442 \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
450 \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
456 \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
461 \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
466 \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
471 \r
472     }\r
473 }