Modified two test files 98/31698/1
authorldzd11 <1875840145@qq.com>
Fri, 18 Dec 2015 10:33:25 +0000 (18:33 +0800)
committerldzd11 <1875840145@qq.com>
Fri, 18 Dec 2015 10:34:32 +0000 (18:34 +0800)
Change-Id: I7e6238962bd6c0c7af7f9b84db621bb1472233d8
Signed-off-by: ldzd11 <1875840145@qq.com>
nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/structurestyle/updateintent/UpdateConnectionTest.java
nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/structurestyle/updateintent/UpdateNodeTest.java

index 4d2352214005b2693b980290dcc58a3cf7c1fc8d..e8a5a14bbf30325ffb4867aab3e03961b7872e87 100644 (file)
-/*\r
- * Copyright (c) 2015 Huawei, Inc. and others. All rights reserved.\r
- *\r
- * This program and the accompanying materials are made available under the\r
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,\r
- * and is available at http://www.eclipse.org/legal/epl-v10.html\r
- */\r
-package org.opendaylight.nemo.user.vnspacemanager.structurestyle.updateintent;\r
-\r
-import org.opendaylight.nemo.user.vnspacemanager.structurestyle.updateintent.UpdateConnection;\r
-import org.opendaylight.nemo.user.tenantmanager.TenantManage;\r
-import static org.powermock.api.mockito.PowerMockito.verifyPrivate;\r
-import static org.powermock.api.mockito.PowerMockito.doNothing;\r
-import static org.powermock.api.mockito.PowerMockito.spy;\r
-import org.powermock.core.classloader.annotations.PrepareForTest;\r
-import org.powermock.modules.junit4.PowerMockRunner;\r
-\r
-import static org.mockito.Mockito.mock;\r
-import static org.mockito.Mockito.*;\r
-import org.junit.Assert;\r
-import org.junit.Before;\r
-import org.junit.Test;\r
-import junit.framework.TestCase;\r
-\r
-import org.opendaylight.controller.md.sal.binding.api.DataBroker;\r
-import org.opendaylight.nemo.user.tenantmanager.TenantManage;\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.Connection;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.ConnectionBuilder;\r
-import org.opendaylight.controller.md.sal.binding.api.WriteTransaction;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.ConnectionKey;\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.controller.md.sal.binding.api.WriteTransaction;\r
-import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;\r
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;\r
-import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException;\r
-import com.google.common.util.concurrent.Futures;\r
-import com.google.common.util.concurrent.CheckedFuture;\r
-import com.google.common.util.concurrent.FutureCallback;\r
-import org.slf4j.Logger;\r
-import org.slf4j.LoggerFactory;\r
-\r
-import org.opendaylight.controller.md.sal.binding.api.ReadOnlyTransaction;\r
-\r
-public class UpdateConnectionTest {\r
-\r
-\r
-    private UpdateConnection updateConnection;\r
-\r
-    private UserId userId;\r
-    private Connection connection;\r
-    private DataBroker dataBroker;\r
-    private TenantManage tenantManage;\r
-\r
-    @Before\r
-    public void setUp() throws Exception {\r
-\r
-        dataBroker = mock(DataBroker.class);\r
-        tenantManage = mock(TenantManage.class);\r
-        \r
-        updateConnection = new UpdateConnection(dataBroker,tenantManage);\r
-\r
-        userId = mock(UserId.class);\r
-        connection = mock(Connection.class);\r
-        \r
-    }\r
-\r
-    @Test\r
-    public void testConnectionHandling() throws Exception {\r
-       \r
-       String errorDefinition = new String("This type of connection has not been defined.");\r
-       \r
-       CheckedFuture connectiondefinitionFuture = mock(CheckedFuture.class);\r
-        ReadOnlyTransaction readOnlyTransaction = mock(ReadOnlyTransaction.class);\r
-\r
-        when(dataBroker.newReadOnlyTransaction()).thenReturn(readOnlyTransaction);\r
-        when(readOnlyTransaction.read(any(LogicalDatastoreType.class), any(InstanceIdentifier.class))).thenReturn(connectiondefinitionFuture); \r
-       \r
-       Assert.assertEquals(updateConnection.ConnectionHandling(userId,connection),errorDefinition);\r
-       \r
-    }\r
+/*
+ * Copyright (c) 2015 Huawei, Inc. and others. All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+package org.opendaylight.nemo.user.vnspacemanager.structurestyle.updateintent;
+
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+import org.opendaylight.nemo.user.tenantmanager.TenantManage;
+import com.google.common.base.Optional;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.ConnectionId;
+
+import com.google.common.util.concurrent.CheckedFuture;
+import com.google.common.util.concurrent.FutureCallback;
+import com.google.common.util.concurrent.Futures;
+import com.google.common.util.concurrent.ListenableFuture;
+import com.google.common.util.concurrent.SettableFuture;
+import org.opendaylight.controller.md.sal.binding.api.DataBroker;
+import org.opendaylight.controller.md.sal.binding.api.WriteTransaction;
+import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
+import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException;
+import org.opendaylight.nemo.user.tenantmanager.TenantManage;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.ConnectionType;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.UserId;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.Users;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.Objects;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.Connection;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.ConnectionBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.ConnectionKey;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.Node;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.users.User;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.users.UserKey;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.ConnectionDefinitions;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.connection.definitions.ConnectionDefinition;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.connection.instance.EndNode;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.connection.instance.Property;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.property.definitions.PropertyDefinition;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.property.instance.PropertyValues;
+import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.PropertyName;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.ConnectionName;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.NodeId;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.lang.reflect.Method;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.TimeoutException;
+
+import java.lang.reflect.Field;
+import java.lang.reflect.Method;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.TimeoutException;
+
+import java.util.LinkedList;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+import java.util.*;
+import java.util.List;
+
+import static org.mockito.Matchers.any;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+import org.opendaylight.controller.md.sal.binding.api.ReadOnlyTransaction;
+
+import com.google.common.util.concurrent.CheckedFuture;
+
+import static org.junit.Assert.*;
+
+/**
+ * Created by ldzd11 on 2015/12/21.
+ */
+public class UpdateConnectionTest {
+
+    UpdateConnection updateConnection;
+
+    private DataBroker dataBroker;
+    private TenantManage tenantManage;
+    private List<Property> propertyList;
+    private PropertyName propertyName;
+    private PropertyName propertyName2;
+    private Property property;
+    private Connection connection;
+    private Connection connection2;
+    private NodeId nodeId;
+    private NodeId nodeId2;
+
+
+    private List<Connection> connectionList;
+    private ConnectionType connectionType;
+    private ConnectionType connectionType2;
+    private ConnectionName connectionName;
+    private ConnectionName connectionName2;
+    private  User user;
+    private UserId userId;
+    private ConnectionId connectionId;
+    private Objects objects;
+
+
+
+    private PropertyDefinition propertyDefinition;
+    private List<PropertyDefinition> propertyDefinitionList;
+    @Before
+    public void setUp() throws Exception {
+        dataBroker = mock(DataBroker.class);
+        tenantManage = mock(TenantManage.class);
+
+        property = mock(Property.class);
+        propertyList = new ArrayList<Property>(1);
+        propertyList.add(property);
+
+        propertyName = mock(PropertyName.class);
+        propertyName2 = mock(PropertyName.class);
+
+        connectionName = mock(ConnectionName.class);
+        connectionName2 = mock(ConnectionName.class);
+
+        propertyDefinition = mock(PropertyDefinition.class);
+        propertyDefinitionList = new ArrayList<PropertyDefinition>(1);
+        propertyDefinitionList.add(propertyDefinition);
+
+        connectionType = mock(ConnectionType.class);
+        connectionType2 = mock(ConnectionType.class);
+        connection = mock(Connection.class);
+        connection2 = mock(Connection.class);
+        connectionList = new ArrayList<Connection>(1);
+        connectionList.add(connection);
+        objects = mock(Objects.class);
+
+        user = mock(User.class);
+        userId = mock(UserId.class);
+        nodeId = mock(NodeId.class);
+        nodeId2 = mock(NodeId.class);
+
+
+        connectionId = mock(ConnectionId.class);
+        updateConnection = new UpdateConnection(dataBroker,tenantManage);
+
+    }
+
+    @Test
+    public void testConnectionHandling() throws Exception {
+        CheckedFuture connectiondefinitionFuture = mock(CheckedFuture.class);
+        ReadOnlyTransaction readOnlyTransaction = mock(ReadOnlyTransaction.class);
+        when(dataBroker.newReadOnlyTransaction()).thenReturn(readOnlyTransaction);
+        when(readOnlyTransaction.read(any(LogicalDatastoreType.class), any(InstanceIdentifier.class))).thenReturn(connectiondefinitionFuture);
+
+        List<ConnectionDefinition> connectionDefinitionList = new ArrayList<ConnectionDefinition>();
+        List<ConnectionDefinition> connectionDefinitionListnull = new ArrayList<ConnectionDefinition>();
+        ConnectionDefinition connectionDefinition = mock(ConnectionDefinition.class);
+        connectionDefinitionList.add(connectionDefinition);
+        when(connectionDefinition.getConnectionType()).thenReturn(connectionType);
+
+
+        Class<UpdateConnection> class1 = UpdateConnection.class;
+        Class<GetDefinitions> class2 = GetDefinitions.class;
+        Field field = class1.getDeclaredField("getDefinitions");
+        field.setAccessible(true);
+        Field field1 = class2.getDeclaredField("connectionDefinitionsList");
+        field1.setAccessible(true);
+
+        field1.set(field.get(updateConnection), connectionDefinitionList);
+        when(connection.getConnectionType()).thenReturn(connectionType);
+        when(connection.getProperty()).thenReturn(null);
+        when(connectionDefinition.getPropertyDefinition()).thenReturn(null);
+
+        when(tenantManage.getUser()).thenReturn(null);
+        when(connection.getEndNode()).thenReturn(null);
+        WriteTransaction writeTransaction = mock(WriteTransaction.class);
+        when(dataBroker.newWriteOnlyTransaction()).thenReturn(writeTransaction);
+        ConnectionId connectionId = mock(ConnectionId.class);
+        when(connection.getConnectionId()).thenReturn(connectionId);
+
+        when(dataBroker.newWriteOnlyTransaction()).thenReturn(writeTransaction);
+        CheckedFuture<Void, TransactionCommitFailedException> f;
+        f=mock(CheckedFuture.class);
+        when(writeTransaction.submit()).thenReturn(f);
+        Assert.assertEquals(updateConnection.ConnectionHandling(userId,connection),null);
+
+
+
+
+
+
+
+
+    }
+
+    @Test
+    public void testcheckInstance() throws Exception {
+        Class<UpdateConnection> class1 = UpdateConnection.class;
+        Method method = class1.getDeclaredMethod("checkInstance", new Class[]{UserId.class, Connection.class});
+        method.setAccessible(true);
+        when(tenantManage.getUser()).thenReturn(user);
+        when(user.getObjects()).thenReturn(objects);
+
+        when(user.getObjects().getConnection()).thenReturn(connectionList);
+        when(connection.getConnectionId()).thenReturn(connectionId);
+        when(connection2.getConnectionId()).thenReturn(connectionId);
+        when(connection.getConnectionType()).thenReturn(connectionType);
+        when(connection2.getConnectionType()).thenReturn(connectionType2);
+        //Assert.assertTrue(connectionType == connectionType2);
+       // Assert.assertTrue(connectionType != connectionType2);
+
+       // String result = (String) method.invoke(updateConnection,userId,connection2);
+       // System.out.println(result+"3232");
+       // Assert.assertTrue(result.equals("1"));
+        Assert.assertEquals(method.invoke(updateConnection, userId, connection2), "The connection type should not be changed.");
+
+        when(connection.getConnectionId()).thenReturn(connectionId);
+        when(connection2.getConnectionId()).thenReturn(connectionId);
+        when(connection.getConnectionType()).thenReturn(connectionType);
+        when(connection2.getConnectionType()).thenReturn(connectionType);
+        when(connection.getConnectionName()).thenReturn(connectionName);
+        when(connection2.getConnectionName()).thenReturn(connectionName2);
+        Assert.assertEquals(method.invoke(updateConnection, userId, connection2), "The End node should not be changed.");
+
+        EndNode endNode = mock(EndNode.class);
+        List<EndNode> endnodeList = new ArrayList<EndNode>(1);
+        endnodeList.add(endNode);
+
+        Node node = mock(Node.class);
+        List<Node> nodeList = new ArrayList<Node>(1);
+        nodeList.add(node);
+
+        when(user.getObjects().getConnection()).thenReturn(null);
+        when(connection2.getEndNode()).thenReturn(endnodeList);
+        when(user.getObjects().getNode()).thenReturn(nodeList);
+        when(endNode.getNodeId()).thenReturn(nodeId);
+        when(node.getNodeId()).thenReturn(nodeId2);
+        Assert.assertEquals(method.invoke(updateConnection, userId, connection2), "The endnode is not exist in user vn space.");
+
+        when(user.getObjects().getNode()).thenReturn(null);
+        Assert.assertEquals(method.invoke(updateConnection, userId, connection2), "The endnodes are not exist in the user vn space.");
+
+        when(user.getObjects()).thenReturn(null);
+        when(connection2.getEndNode()).thenReturn(endnodeList);
+        Assert.assertEquals(method.invoke(updateConnection, userId, connection2), "There are no nodes in user vn space.");
+
+        when(tenantManage.getUser()).thenReturn(null);
+        when(connection.getEndNode()).thenReturn(endnodeList);
+        Assert.assertEquals(method.invoke(updateConnection, userId, connection2),"There are no nodes in user vn space.");
+
+
+    }
+
+    @Test
+    public void testcheckDefinition() throws Exception {
+        Class<UpdateConnection> class3 = UpdateConnection.class;
+        Method method = class3.getDeclaredMethod("checkDefinition",new Class[]{Connection.class});
+        method.setAccessible(true);
+
+        CheckedFuture connectiondefinitionFuture = mock(CheckedFuture.class);
+        ReadOnlyTransaction readOnlyTransaction = mock(ReadOnlyTransaction.class);
+        when(dataBroker.newReadOnlyTransaction()).thenReturn(readOnlyTransaction);
+        when(readOnlyTransaction.read(any(LogicalDatastoreType.class), any(InstanceIdentifier.class))).thenReturn(connectiondefinitionFuture);
+
+        List<ConnectionDefinition> connectionDefinitionList = new ArrayList<ConnectionDefinition>();
+        List<ConnectionDefinition> connectionDefinitionListnull = new ArrayList<ConnectionDefinition>();
+        ConnectionDefinition connectionDefinition = mock(ConnectionDefinition.class);
+        connectionDefinitionList.add(connectionDefinition);
+        when(connectionDefinition.getConnectionType()).thenReturn(connectionType);
+
+
+        Class<UpdateConnection> class1 = UpdateConnection.class;
+        Class<GetDefinitions> class2 = GetDefinitions.class;
+        Field field = class1.getDeclaredField("getDefinitions");
+        field.setAccessible(true);
+        Field field1 = class2.getDeclaredField("connectionDefinitionsList");
+        field1.setAccessible(true);
+
+
+      //  when(connection.getConnectionType()).thenReturn(connectionType);
+     //   when(connection.getProperty()).thenReturn(propertyList);
+     //   when(connectionDefinition.getPropertyDefinition()).thenReturn(propertyDefinitionList);
+      //  Assert.assertEquals(method.invoke(updateConnection, connection), "There are no properties for this type of connection.");
+
+        field1.set(field.get(updateConnection), connectionDefinitionList);
+        when(connection.getConnectionType()).thenReturn(connectionType);
+        when(connection.getProperty()).thenReturn(propertyList);
+        when(connectionDefinition.getPropertyDefinition()).thenReturn(null);
+       // when(connection.getConnectionType()).thenReturn(connectionType2);
+        Assert.assertEquals(method.invoke(updateConnection, connection), "There are no properties for this type of connection.");
+
+        field1.set(field.get(updateConnection), connectionDefinitionList);
+        when(connection.getConnectionType()).thenReturn(connectionType);
+        when(connection.getProperty()).thenReturn(propertyList);
+        when(connectionDefinition.getPropertyDefinition()).thenReturn(propertyDefinitionList);
+        when(property.getPropertyName()).thenReturn(propertyName);
+        when(propertyDefinition.getPropertyName()).thenReturn(propertyName2);
+        when(property.getPropertyName().toString()).thenReturn(new String("propertyname"));
+        Assert.assertEquals(method.invoke(updateConnection, connection), "This type of propertypropertyname has not been defined.");
+
+        when(connection.getConnectionType()).thenReturn(connectionType2);
+        Assert.assertEquals(method.invoke(updateConnection, connection),"This type of connection has not been defined.");
+
+                field1.set(field.get(updateConnection), connectionDefinitionListnull);
+        Assert.assertEquals(method.invoke(updateConnection, connection), "This type of connection has not been defined.");
+
+    }
+
+    @Test
+    public void testcheckProperty() throws Exception {
+        Class<UpdateConnection> class1 = UpdateConnection.class;
+        Method method = class1.getDeclaredMethod("CheckProperty",new Class[]{List.class,List.class});
+        method.setAccessible(true);
+        when(property.getPropertyName()).thenReturn(propertyName);
+        when(propertyDefinition.getPropertyName()).thenReturn(propertyName2);
+        when(property.getPropertyName().toString()).thenReturn(new String("propertyname"));
+        Assert.assertEquals(method.invoke(updateConnection, propertyList, propertyDefinitionList), "This type of propertypropertyname has not been defined.");
+
+
+
+
+    }
 }
\ No newline at end of file
index 70e3515d150169c43b789daefa505f3c3da425bb..76cf7bf45cdc81912219ea0294d78565e9a7f672 100644 (file)
-/*\r
- * Copyright (c) 2015 Huawei, Inc. and others. All rights reserved.\r
- *\r
- * This program and the accompanying materials are made available under the\r
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,\r
- * and is available at http://www.eclipse.org/legal/epl-v10.html\r
- */\r
-package org.opendaylight.nemo.user.vnspacemanager.structurestyle.updateintent;\r
-import org.opendaylight.nemo.user.vnspacemanager.structurestyle.updateintent.UpdateNode;\r
-\r
-import static org.mockito.Mockito.mock;\r
-import static org.mockito.Mockito.*;\r
-import org.junit.Assert;\r
-import org.junit.Before;\r
-import org.junit.Test;\r
-import junit.framework.TestCase;\r
-\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.nemo.user.tenantmanager.TenantManage;\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.Node;\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.yangtools.yang.binding.InstanceIdentifier;\r
-import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException;\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 org.slf4j.Logger;\r
-import org.slf4j.LoggerFactory;\r
-import org.opendaylight.controller.md.sal.binding.api.ReadOnlyTransaction;\r
-\r
-public class UpdateNodeTest {\r
-\r
-    private UpdateNode updateNode;\r
-\r
-    private DataBroker dataBroker;\r
-    private TenantManage tenantManage;\r
-    private UserId userId;\r
-    private Node node;\r
-    \r
-    @org.junit.Before\r
-    public void setUp() throws Exception {\r
-        dataBroker = mock(DataBroker.class);\r
-        tenantManage = mock(TenantManage.class);\r
-        userId = mock(UserId.class);\r
-        node = mock(Node.class);\r
-        \r
-        updateNode = new UpdateNode(dataBroker, tenantManage);\r
-\r
-    }\r
-\r
-    @org.junit.Test\r
-    public void testNodeHandling() throws Exception {\r
-       \r
-       String errorDefinition = new String("This type of Node has not been defined.");\r
-       \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
-       Assert.assertEquals(updateNode.NodeHandling(userId,node),errorDefinition);\r
-       \r
-    }\r
+/*
+ * Copyright (c) 2015 Huawei, Inc. and others. All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+package org.opendaylight.nemo.user.vnspacemanager.structurestyle.updateintent;
+
+import org.opendaylight.nemo.user.vnspacemanager.structurestyle.updateintent.UpdateNode;
+import org.opendaylight.nemo.user.tenantmanager.TenantManage;
+import com.google.common.base.Optional;
+import com.google.common.util.concurrent.CheckedFuture;
+import com.google.common.util.concurrent.FutureCallback;
+import com.google.common.util.concurrent.Futures;
+import com.google.common.util.concurrent.ListenableFuture;
+import com.google.common.util.concurrent.SettableFuture;
+import org.opendaylight.controller.md.sal.binding.api.DataBroker;
+import org.opendaylight.controller.md.sal.binding.api.WriteTransaction;
+import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
+import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.node.definitions.NodeDefinition;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.Objects;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.Node;
+import org.opendaylight.nemo.user.tenantmanager.TenantManage;
+import org.opendaylight.nemo.user.vnspacemanager.languagestyle.NEMOConstants;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.NodeType;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.UserId;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.Users;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.Objects;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.NodeBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.NodeKey;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.users.User;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.users.UserKey;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.NodeDefinitions;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.node.definitions.NodeDefinition;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.node.instance.Property;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.property.definitions.PropertyDefinition;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.property.instance.PropertyValues;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.property.instance.property.values.StringValue;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.node.definitions.NodeDefinition;
+import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.PropertyName;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.property.instance.PropertyValues;
+import org.opendaylight.controller.md.sal.binding.api.ReadOnlyTransaction;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.NodeId;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.NodeName;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.NodeKey;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.lang.reflect.Field;
+import java.lang.reflect.Method;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.TimeoutException;
+
+import java.util.LinkedList;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+import java.util.*;
+import java.util.List;
+
+import static org.mockito.Matchers.any;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import com.google.common.util.concurrent.CheckedFuture;
+
+/**
+ * Created by ldzd11 on 2015/12/18.
+ */
+public class UpdateNodeTest {
+
+    private UpdateNode updateNode;
+    private Node node;
+    private Node node2;
+    private NodeName nodeName;
+    private NodeName nodeName2;
+    private List<Node> nodeList;
+    private DataBroker dataBroker;
+    private TenantManage tenantManage;
+    private Property property;
+    private List<Property> propertyList;
+    private PropertyName propertyName;
+    private PropertyName propertyName2;
+    private StringValue stringValue;
+    private List<StringValue> stringValues;
+    private PropertyValues propertyValues;
+    private ValueCheck valueCheck;
+    private PropertyDefinition propertyDefinition;
+    private NodeType nodeType;
+    private NodeType nodeType2;
+    private List<PropertyDefinition> propertyDefinitions;
+    private UserId userId;
+    private WriteTransaction writeTransaction;
+    private User user;
+    private NodeId nodeId;
+    private NodeKey nodeKey;
+    private Objects objects;
+    @org.junit.Before
+    public void setUp() throws Exception {
+        dataBroker = mock(DataBroker.class);
+        tenantManage = mock(TenantManage.class);
+        propertyValues = mock(PropertyValues.class);
+        valueCheck = mock(ValueCheck.class);
+        nodeId = mock(NodeId.class);
+        nodeName = mock(NodeName.class);
+        nodeName2 = mock(NodeName.class);
+
+        propertyName = mock(PropertyName.class);
+        propertyName2 = mock(PropertyName.class);
+
+        property = mock(Property.class);
+        propertyList = new ArrayList<Property>(1);
+        propertyList.add(property);
+
+        stringValue = mock(StringValue.class);
+        stringValues = new ArrayList<StringValue>(1);
+        stringValues.add(stringValue);
+        nodeType = mock(NodeType.class);
+
+        propertyDefinition=  mock(PropertyDefinition.class);
+        propertyDefinitions = new ArrayList<PropertyDefinition>(1);
+        propertyDefinitions.add(propertyDefinition);
+
+        node = mock(Node.class);
+        node2 = mock(Node.class);
+        userId = mock(UserId.class);
+        user = mock(User.class);
+        objects = mock(Objects.class);
+        nodeKey = mock(NodeKey.class);
+
+        nodeList = new ArrayList<Node>(1);
+        nodeList.add(node2);
+        writeTransaction = mock(WriteTransaction.class);
+
+
+
+        updateNode = new UpdateNode(dataBroker,tenantManage);
+        nodeType2 = mock(NodeType.class);
+
+
+
+    }
+
+    @org.junit.Test
+    public void testNodeHandling() throws Exception {
+        //into checkDefinition
+        CheckedFuture connectiondefinitionFuture = mock(CheckedFuture.class);
+        ReadOnlyTransaction readOnlyTransaction = mock(ReadOnlyTransaction.class);
+        when(dataBroker.newReadOnlyTransaction()).thenReturn(readOnlyTransaction);
+        when(readOnlyTransaction.read(any(LogicalDatastoreType.class), any(InstanceIdentifier.class))).thenReturn(connectiondefinitionFuture);
+
+        Class<UpdateNode> class1 = UpdateNode.class;
+        Class<GetDefinitions> class2 = GetDefinitions.class;
+        Field field = class1.getDeclaredField("getDefinitions");
+        field.setAccessible(true);
+        Field field1 = class2.getDeclaredField("nodeDefinitionList");
+        field1.setAccessible(true);
+
+
+        List<NodeDefinition> nodeDefinitionList = new ArrayList<NodeDefinition>();
+        NodeDefinition nodeDefinition = mock(NodeDefinition.class);
+        when(nodeDefinition.getNodeType()).thenReturn(nodeType);
+        nodeDefinitionList.add(nodeDefinition);
+
+        field1.set(field.get(updateNode), nodeDefinitionList);
+        Assert.assertTrue((List<NodeDefinition>) field1.get(field.get(updateNode)) == nodeDefinitionList);
+
+        when(node.getNodeType()).thenReturn(nodeType);
+        when(node.getProperty()).thenReturn(null);
+        when(nodeDefinition.getPropertyDefinition()).thenReturn(null);
+
+
+
+        when(tenantManage.getUser()).thenReturn(null);
+        //error = null  continue
+        when(node.getNodeId()).thenReturn(nodeId);
+        when(node.getKey()).thenReturn(nodeKey);
+        when(dataBroker.newWriteOnlyTransaction()).thenReturn(writeTransaction);
+        CheckedFuture<Void, TransactionCommitFailedException> f;
+        f=mock(CheckedFuture.class);
+        when(writeTransaction.submit()).thenReturn(f);
+        Assert.assertEquals(updateNode.NodeHandling(userId, node), null);
+        //verify(node).getProperty();
+        //Assert.assertEquals(updateNode.NodeHandling(userId,node),"The property propertyname has not been defined.")
+
+    }
+    @Test
+    public void testcheckInstance() throws Exception {
+        Class<UpdateNode> class1 = UpdateNode.class;
+        Method method = class1.getDeclaredMethod("checkInstance", new Class[]{UserId.class, Node.class});
+        method.setAccessible(true);
+
+        when(tenantManage.getUser()).thenReturn(user);
+        when(user.getObjects()).thenReturn(objects);
+        when(user.getObjects().getNode()).thenReturn(nodeList);
+        when(node.getNodeId()).thenReturn(nodeId);
+        when(node2.getNodeId()).thenReturn(nodeId);
+        when(node.getNodeName()).thenReturn(nodeName);
+        when(node2.getNodeName()).thenReturn(nodeName2);
+        Assert.assertEquals(method.invoke(updateNode, userId, node), "The node name should not be changed.");
+
+        when(node.getNodeName()).thenReturn(nodeName);
+        when(node2.getNodeName()).thenReturn(nodeName);
+        when(node.getNodeType()).thenReturn(nodeType);
+        when(node2.getNodeType()).thenReturn(nodeType2);
+        Assert.assertEquals(method.invoke(updateNode, userId, node), "The node type should not be changed.");
+
+
+    }
+
+@Test
+    public void testcheckDefinition() throws Exception {
+
+        Class<UpdateNode> class3 = UpdateNode.class;
+        Method method = class3.getDeclaredMethod("checkDefinition", new Class[]{Node.class});
+        method.setAccessible(true);
+
+        CheckedFuture nodedefinitionFuture = mock(CheckedFuture.class);
+        ReadOnlyTransaction readOnlyTransaction = mock(ReadOnlyTransaction.class);
+        when(dataBroker.newReadOnlyTransaction()).thenReturn(readOnlyTransaction);
+        when(readOnlyTransaction.read(any(LogicalDatastoreType.class), any(InstanceIdentifier.class))).thenReturn(nodedefinitionFuture);
+
+        List<NodeDefinition> nodeDefinitionList = new ArrayList<NodeDefinition>();
+        List<NodeDefinition> nodeDefinitionListnull = new ArrayList<NodeDefinition>();
+        NodeDefinition nodeDefinition = mock(NodeDefinition.class);
+        nodeDefinitionList.add(nodeDefinition);
+        when(nodeDefinition.getNodeType()).thenReturn(nodeType);
+
+        Class<UpdateNode> class1 = UpdateNode.class;
+        Class<GetDefinitions> class2 = GetDefinitions.class;
+        Field field = class1.getDeclaredField("getDefinitions");
+        field.setAccessible(true);
+        Field field1 = class2.getDeclaredField("nodeDefinitionList");
+        field1.setAccessible(true);
+
+
+        System.out.println(field1.get(field.get(updateNode)));
+        field1.set(field.get(updateNode), nodeDefinitionList);
+        System.out.println(field1.get(field.get(updateNode)));
+        Assert.assertTrue((List<NodeDefinition>) field1.get(field.get(updateNode)) == nodeDefinitionList);
+
+        when(node.getNodeType()).thenReturn(nodeType);
+        when(node.getProperty()).thenReturn(propertyList);
+        when(nodeDefinition.getPropertyDefinition()).thenReturn(propertyDefinitions);
+
+        when(property.getPropertyName()).thenReturn(propertyName);
+        when(propertyDefinition.getPropertyName()).thenReturn(propertyName2);
+
+        when(property.getPropertyName().getValue()).thenReturn(new String("propertyname"));
+        Assert.assertEquals(method.invoke(updateNode, node), "The property propertyname has not been defined.");
+
+        field1.set(field.get(updateNode), nodeDefinitionList);
+        when(node.getNodeType()).thenReturn(nodeType);
+        List<Property> propertyListnull = new ArrayList<Property>();
+        List<PropertyDefinition> propertyDefinitionListnull = new ArrayList<PropertyDefinition>();
+
+        when(node.getProperty()).thenReturn(propertyListnull);
+        when(nodeDefinition.getPropertyDefinition()).thenReturn(propertyDefinitionListnull);
+        Assert.assertEquals(method.invoke(updateNode, node), null);
+
+        field1.set(field.get(updateNode), nodeDefinitionListnull);
+        Assert.assertEquals(method.invoke(updateNode, node), "This type of Node has not been defined.");
+
+        field1.set(field.get(updateNode), nodeDefinitionList);
+        when(node.getNodeType()).thenReturn(nodeType2);
+        Assert.assertEquals(method.invoke(updateNode, node), "This type of Node has not been defined.");
+
+
+/*
+        (String)method.invoke(updateNode,node)*/
+    }
+
+    @Test
+    public void testcheckProperty() throws Exception {
+        Class<UpdateNode> class1 = UpdateNode.class;
+        Method method = class1.getDeclaredMethod("checkProperty", new Class[]{List.class, List.class});
+        method.setAccessible(true);
+        when(property.getPropertyName()).thenReturn(propertyName);
+        when(propertyDefinition.getPropertyName()).thenReturn(propertyName2);
+        when(property.getPropertyName().getValue()).thenReturn(new String("propertyname"));
+        Assert.assertEquals(method.invoke(updateNode, propertyList,propertyDefinitions), "The property propertyname has not been defined.");
+
+    }
+
+
+    @Test
+    public void testcheckPredefine() throws Exception {
+        Class<UpdateNode> class1 = UpdateNode.class;
+        Method method = class1.getDeclaredMethod("checkPredefine", new Class[]{List.class});
+        method.setAccessible(true);
+
+        when(property.getPropertyName()).thenReturn(propertyName);
+        when(property.getPropertyName().getValue()).thenReturn(new String("mac-address"));
+        when(property.getPropertyValues()).thenReturn(propertyValues);
+        when(property.getPropertyValues().getStringValue()).thenReturn(stringValues);
+        when(stringValue.getValue()).thenReturn(new String("test"));
+        when(valueCheck.checkMac(stringValue.getValue())).thenReturn(false);
+        Assert.assertEquals(method.invoke(updateNode, propertyList), "The mac-address is not legal.");
+
+        when(property.getPropertyName().getValue()).thenReturn(new String("ip-address"));
+        when(property.getPropertyValues().getStringValue()).thenReturn(stringValues);
+        when(stringValue.getValue()).thenReturn(new String("/"));
+        when(valueCheck.checkIpPrefix(stringValue.getValue())).thenReturn(false);
+        Assert.assertEquals(method.invoke(updateNode, propertyList), "The ip-address is not legal.");
+
+        when(property.getPropertyName().getValue()).thenReturn(new String("gateway-ip"));
+        when(property.getPropertyValues().getStringValue()).thenReturn(stringValues);
+        when(valueCheck.checkIpAddress(stringValue.getValue())).thenReturn(false);
+        Assert.assertEquals(method.invoke(updateNode, propertyList), "The gateway-ip is not legal.");
+
+        when(property.getPropertyName().getValue()).thenReturn(new String("ac-info-network"));
+        when(property.getPropertyValues().getStringValue()).thenReturn(stringValues);
+        when(stringValue.getValue()).thenReturn(new String("layer4"));
+        Assert.assertEquals(method.invoke(updateNode, propertyList), "The ac-info-network is not legal.");
+
+        when(property.getPropertyName().getValue()).thenReturn(new String("operating-mode"));
+        when(property.getPropertyValues().getStringValue()).thenReturn(stringValues);
+        when(stringValue.getValue()).thenReturn(new String("layer4"));
+        Assert.assertEquals(method.invoke(updateNode, propertyList), "The operating-mode is not legal.");
+
+    }
 }
\ No newline at end of file