Modified and added partical test files
[nemo.git] / nemo-impl / src / test / java / org / opendaylight / nemo / user / vnspacemanager / structurestyle / updateintent / UpdateNodeTest.java
index b3bcf0de5bc886ef4c264288f0f5ef289030a3e2..cc162f5ddc6a0f003e26432be17a96887b4b0bea 100644 (file)
  * and is available at http://www.eclipse.org/legal/epl-v10.html\r
  */\r
 package org.opendaylight.nemo.user.vnspacemanager.structurestyle.updateintent;\r
-import static org.mockito.Mockito.mock;\r
 \r
-import org.junit.Assert;\r
+import org.opendaylight.nemo.user.vnspacemanager.structurestyle.updateintent.UpdateNode;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.template.definitions.TemplateDefinition;\r
+\r
+import org.opendaylight.nemo.user.tenantmanager.TenantManage;\r
+import com.google.common.base.Optional;\r
+import com.google.common.util.concurrent.CheckedFuture;\r
+import com.google.common.util.concurrent.FutureCallback;\r
+import com.google.common.util.concurrent.Futures;\r
+import com.google.common.util.concurrent.ListenableFuture;\r
+import com.google.common.util.concurrent.SettableFuture;\r
 import org.opendaylight.controller.md.sal.binding.api.DataBroker;\r
+import org.opendaylight.controller.md.sal.binding.api.WriteTransaction;\r
+import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;\r
+import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.node.instance.SubNode;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.node.definitions.NodeDefinition;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.Objects;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.Node;\r
 import org.opendaylight.nemo.user.tenantmanager.TenantManage;\r
-import org.opendaylight.nemo.user.vnspacemanager.instancecheck.NodeInstanceCheck;\r
-import org.opendaylight.nemo.user.vnspacemanager.syntaxcheck.NodeDefinitionCheck;\r
+import org.opendaylight.nemo.user.vnspacemanager.languagestyle.NEMOConstants;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.NodeType;\r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.UserId;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.Users;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.Objects;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.NodeBuilder;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.NodeKey;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.users.User;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.users.UserKey;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.NodeDefinitions;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.node.definitions.NodeDefinition;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.node.instance.Property;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.property.definitions.PropertyDefinition;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.property.instance.PropertyValues;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.property.instance.property.values.StringValue;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.node.definitions.NodeDefinition;\r
+import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.PropertyName;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.property.instance.PropertyValues;\r
+import org.opendaylight.controller.md.sal.binding.api.ReadOnlyTransaction;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.NodeId;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.NodeName;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.NodeKey;\r
+import org.slf4j.Logger;\r
+import org.slf4j.LoggerFactory;\r
+import org.opendaylight.controller.md.sal.binding.api.DataBroker;\r
+import org.opendaylight.nemo.user.tenantmanager.TenantManage;\r
+import org.opendaylight.nemo.user.vnspacemanager.languagestyle.NEMOConstants;\r
+import org.opendaylight.nemo.user.vnspacemanager.languagestyle.updateintentlang.UpdateTemplateInstanceLang;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.*;\r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.Node;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.template.instances.TemplateInstanceBuilder;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.template.instances.TemplateInstanceKey;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.users.User;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.node.definitions.NodeDefinition;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.node.instance.Property;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.property.definitions.PropertyDefinition;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.property.instance.PropertyValues;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.property.instance.property.values.StringValue;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.template.rev151201.template.instance.grouping.TemplateParameter;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.template.rev151201.template.instance.grouping.TemplateParameterBuilder;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.template.rev151201.template.instance.grouping.TemplateParameterKey;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.template.rev151201.template.instance.grouping.template.parameter.ParameterValuesBuilder;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.template.rev151201.template.instance.grouping.template.parameter.parameter.values.*;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.template.instances.TemplateInstance;\r
+\r
+\r
+import java.util.LinkedList;\r
+import java.util.List;\r
+import java.util.Map;\r
+import java.lang.reflect.Field;\r
+import java.lang.reflect.Method;\r
+import java.util.HashMap;\r
+import java.util.List;\r
+import java.util.Map;\r
+import java.util.concurrent.ExecutionException;\r
+import java.util.concurrent.TimeUnit;\r
+import java.util.concurrent.TimeoutException;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.UserRoleName;\r
+import java.util.LinkedList;\r
+import org.junit.Assert;\r
+import org.junit.Before;\r
+import org.junit.Test;\r
+import java.util.*;\r
+import java.util.List;\r
+\r
+import static org.mockito.Matchers.any;\r
+import static org.mockito.Mockito.mock;\r
+import static org.mockito.Mockito.times;\r
+import static org.mockito.Mockito.verify;\r
+import static org.mockito.Mockito.when;\r
+\r
+import com.google.common.util.concurrent.CheckedFuture;\r
+import static org.mockito.Mockito.doNothing;\r
+\r
 /**\r
- * Created by ldzd11 on 2015/11/9.\r
+ * Created by ldzd11 on 2015/12/18.\r
  */\r
 public class UpdateNodeTest {\r
 \r
-\r
-    private  UpdateNode updateNode;\r
-\r
+    private UpdateNode updateNode;\r
+    private Node node;\r
+    private Node node2;\r
+    private NodeName nodeName;\r
+    private NodeName nodeName2;\r
+    private List<Node> nodeList;\r
     private DataBroker dataBroker;\r
-    private NodeDefinitionCheck nodeCheck;\r
-    private NodeInstanceCheck nodeInstanceCheck;\r
+    private TenantManage tenantManage;\r
+    private Property property;\r
+    private List<Property> propertyList;\r
+    private PropertyName propertyName;\r
+    private PropertyName propertyName2;\r
+    private StringValue stringValue;\r
+    private List<StringValue> stringValues;\r
+    private org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.property.instance.property.values.RangeValue rangeValue;\r
+    private PropertyValues propertyValues;\r
+    private ValueCheck valueCheck;\r
+    private PropertyDefinition propertyDefinition;\r
+    private NodeType nodeType;\r
+    private NodeType nodeType2;\r
+    private List<PropertyDefinition> propertyDefinitions;\r
     private UserId userId;\r
-    private Node node;\r
-\r
-    private  TenantManage tenantManage;\r
+    private WriteTransaction writeTransaction;\r
+    private User user;\r
+    private NodeId nodeId;\r
+    private NodeKey nodeKey;\r
+    private Objects objects;\r
+    private SubNode subNode;\r
+    private UserRoleName userRoleName;\r
+    private org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.property.instance.property.values.IntValue intValue;\r
+    private List<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.property.instance.property.values.IntValue> intValueList;\r
+    private List<SubNode> subNodeList;\r
     @org.junit.Before\r
     public void setUp() throws Exception {\r
         dataBroker = mock(DataBroker.class);\r
-        nodeCheck = mock(NodeDefinitionCheck.class);\r
-        nodeInstanceCheck = mock(NodeInstanceCheck.class);\r
-\r
         tenantManage = mock(TenantManage.class);\r
-        userId = mock(UserId.class);\r
+        propertyValues = mock(PropertyValues.class);\r
+        valueCheck = mock(ValueCheck.class);\r
+        nodeId = mock(NodeId.class);\r
+        nodeName = mock(NodeName.class);\r
+        nodeName2 = mock(NodeName.class);\r
+\r
+        propertyName = mock(PropertyName.class);\r
+        propertyName2 = mock(PropertyName.class);\r
+\r
+        property = mock(Property.class);\r
+        propertyList = new ArrayList<Property>(1);\r
+        propertyList.add(property);\r
+\r
+        stringValue = mock(StringValue.class);\r
+        stringValues = new ArrayList<StringValue>(1);\r
+        stringValues.add(stringValue);\r
+        nodeType = mock(NodeType.class);\r
+\r
+        propertyDefinition=  mock(PropertyDefinition.class);\r
+        propertyDefinitions = new ArrayList<PropertyDefinition>(1);\r
+        propertyDefinitions.add(propertyDefinition);\r
+\r
         node = mock(Node.class);\r
+        node2 = mock(Node.class);\r
+        userId = mock(UserId.class);\r
+        user = mock(User.class);\r
+        objects = mock(Objects.class);\r
+        nodeKey = mock(NodeKey.class);\r
+\r
+        nodeList = new ArrayList<Node>(1);\r
+        nodeList.add(node2);\r
+        writeTransaction = mock(WriteTransaction.class);\r
+\r
+        subNode = mock(SubNode.class);\r
+        subNodeList = new ArrayList<SubNode>();\r
+        subNodeList.add(subNode);\r
+\r
+        intValue = mock(org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.property.instance.property.values.IntValue.class);\r
+        intValueList = new ArrayList<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.property.instance.property.values.IntValue>();\r
+        intValueList.add(intValue);\r
+\r
+        rangeValue = mock(org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.property.instance.property.values.RangeValue.class);\r
+\r
+\r
+\r
+        updateNode = new UpdateNode(dataBroker,tenantManage);\r
+        nodeType2 = mock(NodeType.class);\r
+        userRoleName = mock(UserRoleName.class);\r
 \r
 \r
-        updateNode = mock(UpdateNode.class);\r
 \r
     }\r
 \r
     @org.junit.Test\r
     public void testNodeHandling() throws Exception {\r
-        Assert.assertNull(updateNode.NodeHandling(userId, node));\r
+\r
+        Class<UpdateNode> class1 = UpdateNode.class;\r
+        TemplateName templateName = new TemplateName("aaa");\r
+        TemplateDefinition templateDefinition = mock(TemplateDefinition.class);\r
+        Map<TemplateName, TemplateDefinition> map1 = new HashMap<TemplateName, TemplateDefinition>();\r
+        map1.put(templateName, templateDefinition);\r
+       // userTemplateDefinitionMap.put(userId, map1);\r
+        //field1.set(field.get(updateNode), userTemplateDefinitionMap);\r
+\r
+        when(tenantManage.getTempalteDefinition(userId)).thenReturn(map1);\r
+        when(node.getNodeType()).thenReturn(nodeType);\r
+        when(node.getNodeType().getValue()).thenReturn(new String("aaa"));\r
+\r
+        when(tenantManage.getDefinitionDataStore(userId)).thenReturn(map1)\r
+;       when(node.getNodeType()).thenReturn(nodeType);\r
+        when(node.getNodeType().getValue()).thenReturn(new String("aaa"));\r
+\r
+        ///////////////////////////////////////////////////////////////\r
+        when(tenantManage.getTempalteDefinition(userId)).thenReturn(null);\r
+        when(tenantManage.getDefinitionDataStore(userId)).thenReturn(null);\r
+        Map<UserId, User> map2 = new HashMap<UserId,User>();\r
+        UserId userId1 = mock(UserId.class);\r
+        User user1 = mock(User.class);\r
+        map2.put(userId1, user1);\r
+        when(tenantManage.getUsers()).thenReturn(map2);\r
+        when(user1.getUserRole()).thenReturn(userRoleName);\r
+        when(user1.getUserRole().getValue()).thenReturn(NEMOConstants.admin);\r
+        when(user1.getUserId()).thenReturn(userId1);\r
+        when(tenantManage.getDefinitionDataStore(user1.getUserId())).thenReturn(map1);\r
+        when(tenantManage.getDefinitionDataStore(user1.getUserId())).thenReturn(map1);\r
+        /////////////////////////////////////////////////////////////////////////////////\r
+\r
+\r
+        //first nodeModel = true 79 if\r
+        when(node.getSubNode()).thenReturn(subNodeList);\r
+        Assert.assertEquals(updateNode.NodeHandling(userId, node), "Subnodes should not be included in template instance.");\r
+        //else 83\r
+        when(node.getSubNode()).thenReturn(null);\r
+        when(node.getNodeId()).thenReturn(nodeId);\r
+        when(node.getNodeId().getValue()).thenReturn(new String("00001111-0000-0000-0000-000011112222"));\r
+        when(node.getNodeName()).thenReturn(nodeName);\r
+        when(node.getNodeName().getValue()).thenReturn(new String("nodename"));\r
+        when(node.getProperty()).thenReturn(propertyList);\r
+        when(property.getPropertyName()).thenReturn(propertyName);\r
+        when(property.getPropertyName().getValue()).thenReturn(new String("propertyname"));\r
+        when(property.getPropertyValues()).thenReturn(propertyValues);\r
+        //intValue\r
+        when(property.getPropertyValues().getIntValue()).thenReturn(intValueList);\r
+        long a = 1;\r
+        long b = 2;\r
+        when(intValue.getOrder()).thenReturn(a);\r
+        when(intValue.getValue()).thenReturn(a);\r
+        //stringValue\r
+        when(property.getPropertyValues().getStringValue()).thenReturn(stringValues);\r
+        when(stringValue.getOrder()).thenReturn(a);\r
+        when(stringValue.getValue()).thenReturn(new String("stringvalue"));\r
+        //RangeValue\r
+        when(property.getPropertyValues().getRangeValue()).thenReturn(rangeValue);\r
+        when(property.getPropertyValues().getRangeValue().getMin()).thenReturn(a);\r
+        when(property.getPropertyValues().getRangeValue().getMax()).thenReturn(b);\r
+\r
+        UpdateTemplateInstance updateTemplateInstance = mock(UpdateTemplateInstance.class);\r
+        Field field1 = class1.getDeclaredField("updateTemplateInstance");\r
+        field1.setAccessible(true);\r
+        field1.set(updateNode, updateTemplateInstance);\r
+        when(updateTemplateInstance.checkTemplateInstance(any(UserId.class), any(TemplateInstance.class))).thenReturn(new String("success"));\r
+        Assert.assertEquals(updateNode.NodeHandling(userId, node), "success");\r
+\r
+\r
+        when(tenantManage.getTempalteDefinition(userId)).thenReturn(null);\r
+        when(tenantManage.getDefinitionDataStore(userId)).thenReturn(null);\r
+        Map<UserId, User> mapnull = new HashMap<UserId, User>();\r
+        when(tenantManage.getUsers()).thenReturn(mapnull);\r
+\r
+        //into checkDefinition\r
+        CheckedFuture connectiondefinitionFuture = mock(CheckedFuture.class);\r
+        ReadOnlyTransaction readOnlyTransaction = mock(ReadOnlyTransaction.class);\r
+        when(dataBroker.newReadOnlyTransaction()).thenReturn(readOnlyTransaction);\r
+        when(readOnlyTransaction.read(any(LogicalDatastoreType.class), any(InstanceIdentifier.class))).thenReturn(connectiondefinitionFuture);\r
+\r
+        //Class<UpdateNode> class1 = UpdateNode.class;\r
+        Class<GetDefinitions> class2 = GetDefinitions.class;\r
+        Field field = class1.getDeclaredField("getDefinitions");\r
+        field.setAccessible(true);\r
+        Field field2 = class2.getDeclaredField("nodeDefinitionList");\r
+        field2.setAccessible(true);\r
+\r
+\r
+        List<NodeDefinition> nodeDefinitionList = new ArrayList<NodeDefinition>();\r
+        NodeDefinition nodeDefinition = mock(NodeDefinition.class);\r
+        when(nodeDefinition.getNodeType()).thenReturn(nodeType);\r
+        nodeDefinitionList.add(nodeDefinition);\r
+\r
+        field2.set(field.get(updateNode), nodeDefinitionList);\r
+       // System.out.print("2");\r
+       // Assert.assertTrue((List<NodeDefinition>) field1.get(field.get(updateNode)) == nodeDefinitionList);\r
+\r
+        when(node.getNodeType()).thenReturn(nodeType);\r
+        when(node.getProperty()).thenReturn(null);\r
+        when(nodeDefinition.getPropertyDefinition()).thenReturn(null);\r
+\r
+        //into checkinstance\r
+        when(tenantManage.getNode(userId)).thenReturn(null);\r
+        when(tenantManage.getNodeDataStore(userId)).thenReturn(null);\r
+        //into else tenantManage.setNode\r
+        when(node.getNodeId()).thenReturn(nodeId);\r
+        doNothing().when(tenantManage).setNode(any(UserId.class), any(NodeId.class), any(Node.class));\r
+        Assert.assertEquals(updateNode.NodeHandling(userId, node), null);\r
+    }\r
+    @Test\r
+    public void testcheckInstance() throws Exception {\r
+        Class<UpdateNode> class1 = UpdateNode.class;\r
+        Method method = class1.getDeclaredMethod("checkInstance", new Class[]{UserId.class, Node.class});\r
+        method.setAccessible(true);\r
+\r
+        Class<TenantManage> class2 = TenantManage.class;\r
+        Field field = class1.getDeclaredField("tenantManage");\r
+        field.setAccessible(true);\r
+        Field field1 = class2.getDeclaredField("userNodeMap");\r
+        field1.setAccessible(true);\r
+\r
+         Map<UserId, Map<NodeId, Node>> userNodeMap = new HashMap<UserId, Map<NodeId, Node>>();\r
+        Map<UserId, Map<NodeId, Node>> userNodeMap2 = new HashMap<UserId, Map<NodeId, Node>>();\r
+\r
+        Map<NodeId, Node> map1 = new HashMap<NodeId, Node>();\r
+         map1.put(nodeId, node2);\r
+        userNodeMap.put(userId, map1);\r
+        field1.set(field.get(updateNode), userNodeMap);\r
+\r
+        when(tenantManage.getNode(userId)).thenReturn(map1);\r
+        when(node.getNodeId()).thenReturn(nodeId);\r
+        when(node2.getNodeName()).thenReturn(nodeName);\r
+        when(node.getNodeName()).thenReturn(nodeName2);\r
+        Assert.assertEquals(method.invoke(updateNode, userId, node), "The node name should not be changed.");\r
+\r
+        when(node2.getNodeName()).thenReturn(nodeName);\r
+        when(node.getNodeName()).thenReturn(nodeName);\r
+        when(node2.getNodeType()).thenReturn(nodeType2);\r
+        when(node.getNodeType()).thenReturn(nodeType);\r
+        Assert.assertEquals(method.invoke(updateNode, userId, node), "The node type should not be changed.");\r
+\r
+        field1.set(field.get(updateNode), userNodeMap2);\r
+        Field field2 = class2.getDeclaredField("user");\r
+        field2.setAccessible(true);\r
+        field2.set(field.get(updateNode), user);\r
+        when(user.getObjects()).thenReturn(objects);\r
+        when(user.getObjects().getNode()).thenReturn(nodeList);\r
+        when(node2.getNodeId()).thenReturn(nodeId);//map.put(nodeId,node2)\r
+        //when(tenantManage.getNodeDataStore(userId)).thenReturn(map1);\r
+        when(node.getNodeId()).thenReturn(nodeId);\r
+        when(node2.getNodeName()).thenReturn(nodeName2);\r
+        when(node.getNodeName()).thenReturn(nodeName);\r
+        Assert.assertEquals(method.invoke(updateNode, userId, node), "The node name should not be changed.");\r
+\r
+        when(node2.getNodeName()).thenReturn(nodeName);\r
+        when(node.getNodeName()).thenReturn(nodeName);\r
+        when(node2.getNodeType()).thenReturn(nodeType2);\r
+        when(node.getNodeType()).thenReturn(nodeType);\r
+        Assert.assertEquals(method.invoke(updateNode, userId, node), "The node type should not be changed.");\r
+\r
+    }\r
+\r
+@Test\r
+    public void testcheckDefinition() throws Exception {\r
+\r
+        Class<UpdateNode> class3 = UpdateNode.class;\r
+        Method method = class3.getDeclaredMethod("checkDefinition", new Class[]{Node.class});\r
+        method.setAccessible(true);\r
+\r
+        CheckedFuture nodedefinitionFuture = mock(CheckedFuture.class);\r
+        ReadOnlyTransaction readOnlyTransaction = mock(ReadOnlyTransaction.class);\r
+        when(dataBroker.newReadOnlyTransaction()).thenReturn(readOnlyTransaction);\r
+        when(readOnlyTransaction.read(any(LogicalDatastoreType.class), any(InstanceIdentifier.class))).thenReturn(nodedefinitionFuture);\r
+\r
+        List<NodeDefinition> nodeDefinitionList = new ArrayList<NodeDefinition>();\r
+        List<NodeDefinition> nodeDefinitionListnull = new ArrayList<NodeDefinition>();\r
+        NodeDefinition nodeDefinition = mock(NodeDefinition.class);\r
+        nodeDefinitionList.add(nodeDefinition);\r
+        when(nodeDefinition.getNodeType()).thenReturn(nodeType);\r
+\r
+        Class<UpdateNode> class1 = UpdateNode.class;\r
+        Class<GetDefinitions> class2 = GetDefinitions.class;\r
+        Field field = class1.getDeclaredField("getDefinitions");\r
+        field.setAccessible(true);\r
+        Field field1 = class2.getDeclaredField("nodeDefinitionList");\r
+        field1.setAccessible(true);\r
+\r
+\r
+        System.out.println(field1.get(field.get(updateNode)));\r
+        field1.set(field.get(updateNode), nodeDefinitionList);\r
+        System.out.println(field1.get(field.get(updateNode)));\r
+        Assert.assertTrue((List<NodeDefinition>) field1.get(field.get(updateNode)) == nodeDefinitionList);\r
+\r
+        when(node.getNodeType()).thenReturn(nodeType);\r
+        when(node.getProperty()).thenReturn(propertyList);\r
+        when(nodeDefinition.getPropertyDefinition()).thenReturn(propertyDefinitions);\r
+\r
+        when(property.getPropertyName()).thenReturn(propertyName);\r
+        when(propertyDefinition.getPropertyName()).thenReturn(propertyName2);\r
+\r
+        when(property.getPropertyName().getValue()).thenReturn(new String("propertyname"));\r
+        Assert.assertEquals(method.invoke(updateNode, node), "The property propertyname has not been defined.");\r
+\r
+        field1.set(field.get(updateNode), nodeDefinitionList);\r
+        when(node.getNodeType()).thenReturn(nodeType);\r
+        List<Property> propertyListnull = new ArrayList<Property>();\r
+        List<PropertyDefinition> propertyDefinitionListnull = new ArrayList<PropertyDefinition>();\r
+\r
+        when(node.getProperty()).thenReturn(propertyListnull);\r
+        when(nodeDefinition.getPropertyDefinition()).thenReturn(propertyDefinitionListnull);\r
+        Assert.assertEquals(method.invoke(updateNode, node), null);\r
+\r
+        field1.set(field.get(updateNode), nodeDefinitionListnull);\r
+        Assert.assertEquals(method.invoke(updateNode, node), "This type of Node has not been defined.");\r
+\r
+        field1.set(field.get(updateNode), nodeDefinitionList);\r
+        when(node.getNodeType()).thenReturn(nodeType2);\r
+        Assert.assertEquals(method.invoke(updateNode, node), "This type of Node has not been defined.");\r
+\r
+\r
+/*\r
+        (String)method.invoke(updateNode,node)*/\r
+    }\r
+\r
+    @Test\r
+    public void testcheckProperty() throws Exception {\r
+        Class<UpdateNode> class1 = UpdateNode.class;\r
+        Method method = class1.getDeclaredMethod("checkProperty", new Class[]{List.class, List.class});\r
+        method.setAccessible(true);\r
+        when(property.getPropertyName()).thenReturn(propertyName);\r
+        when(propertyDefinition.getPropertyName()).thenReturn(propertyName2);\r
+        when(property.getPropertyName().getValue()).thenReturn(new String("propertyname"));\r
+        Assert.assertEquals(method.invoke(updateNode, propertyList,propertyDefinitions), "The property propertyname has not been defined.");\r
+\r
+    }\r
+\r
+\r
+    @Test\r
+    public void testcheckPredefine() throws Exception {\r
+        Class<UpdateNode> class1 = UpdateNode.class;\r
+        Method method = class1.getDeclaredMethod("checkPredefine", new Class[]{List.class});\r
+        method.setAccessible(true);\r
+\r
+        when(property.getPropertyName()).thenReturn(propertyName);\r
+        when(property.getPropertyName().getValue()).thenReturn(new String("mac-address"));\r
+        when(property.getPropertyValues()).thenReturn(propertyValues);\r
+        when(property.getPropertyValues().getStringValue()).thenReturn(stringValues);\r
+        when(stringValue.getValue()).thenReturn(new String("test"));\r
+        when(valueCheck.checkMac(stringValue.getValue())).thenReturn(false);\r
+        Assert.assertEquals(method.invoke(updateNode, propertyList), "The mac-address is not legal.");\r
+\r
+        when(property.getPropertyName().getValue()).thenReturn(new String("ip-address"));\r
+        when(property.getPropertyValues().getStringValue()).thenReturn(stringValues);\r
+        when(stringValue.getValue()).thenReturn(new String("/"));\r
+        when(valueCheck.checkIpPrefix(stringValue.getValue())).thenReturn(false);\r
+        Assert.assertEquals(method.invoke(updateNode, propertyList), "The ip-address is not legal.");\r
+\r
+        when(property.getPropertyName().getValue()).thenReturn(new String("gateway-ip"));\r
+        when(property.getPropertyValues().getStringValue()).thenReturn(stringValues);\r
+        when(valueCheck.checkIpAddress(stringValue.getValue())).thenReturn(false);\r
+        Assert.assertEquals(method.invoke(updateNode, propertyList), "The gateway-ip is not legal.");\r
+\r
+        when(property.getPropertyName().getValue()).thenReturn(new String("ac-info-network"));\r
+        when(property.getPropertyValues().getStringValue()).thenReturn(stringValues);\r
+        when(stringValue.getValue()).thenReturn(new String("layer4"));\r
+        Assert.assertEquals(method.invoke(updateNode, propertyList), "The ac-info-network is not legal.");\r
+\r
+        when(property.getPropertyName().getValue()).thenReturn(new String("operating-mode"));\r
+        when(property.getPropertyValues().getStringValue()).thenReturn(stringValues);\r
+        when(stringValue.getValue()).thenReturn(new String("layer4"));\r
+        Assert.assertEquals(method.invoke(updateNode, propertyList), "The operating-mode is not legal.");\r
 \r
     }\r
 }
\ No newline at end of file