* 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