Added two test files 31/31931/1
authorldzd11 <1875840145@qq.com>
Sat, 26 Dec 2015 09:25:50 +0000 (17:25 +0800)
committerldzd11 <1875840145@qq.com>
Sat, 26 Dec 2015 09:26:32 +0000 (17:26 +0800)
Change-Id: Ia5c73891a0fd9be8929599d751c7eb7e72479623
Signed-off-by: ldzd11 <1875840145@qq.com>
nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/languagestyle/updateintentlang/UpdateTemplateDefinitionLangTest.java [new file with mode: 0644]
nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/languagestyle/updateintentlang/UpdateTemplateInstanceLangTest.java [new file with mode: 0644]

diff --git a/nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/languagestyle/updateintentlang/UpdateTemplateDefinitionLangTest.java b/nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/languagestyle/updateintentlang/UpdateTemplateDefinitionLangTest.java
new file mode 100644 (file)
index 0000000..31d9884
--- /dev/null
@@ -0,0 +1,354 @@
+/*\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.languagestyle.updateintentlang;\r
+\r
+import junit.framework.TestCase;\r
+import org.junit.Assert;\r
+import org.junit.Before;\r
+import org.junit.Test;\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.structurestyle.updateintent.GetDefinitions;\r
+import org.opendaylight.nemo.user.vnspacemanager.structurestyle.updateintent.UpdateTemplateDefinition;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.physical.network.rev151010.physical.network.physical.hosts.PhysicalHost;\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.engine.common.rev151010.PhysicalHostId;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.engine.common.rev151010.PhysicalHostName;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.template.definitions.TemplateDefinition;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.template.definitions.TemplateDefinitionBuilder;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.template.definitions.TemplateDefinitionKey;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.connection.instance.EndNode;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.connection.instance.EndNodeBuilder;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.connection.instance.EndNodeKey;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.flow.instance.MatchItem;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.flow.instance.MatchItemBuilder;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.flow.instance.MatchItemKey;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.match.item.instance.MatchItemValueBuilder;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.node.instance.*;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.property.instance.PropertyValuesBuilder;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.object.rev151010.property.instance.property.values.*;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.action.instance.ParameterValuesBuilder;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.condition.instance.ConditionSegment;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.condition.instance.ConditionSegmentBuilder;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.condition.instance.ConditionSegmentKey;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.condition.instance.condition.segment.ConditionParameterTargetValueBuilder;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.operation.instance.Action;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.operation.instance.ActionBuilder;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.operation.instance.ActionKey;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.template.rev151201.template.definition.grouping.AbstractIntentsBuilder;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.template.rev151201.template.definition.grouping.TemplateParameter;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.template.rev151201.template.definition.grouping.TemplateParameterBuilder;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.template.rev151201.template.definition.grouping.TemplateParameterKey;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.template.rev151201.template.definition.grouping._abstract.intents.AbstractObjectsBuilder;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.template.rev151201.template.definition.grouping._abstract.intents.AbstractOperationsBuilder;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.template.rev151201.template.definition.grouping._abstract.intents._abstract.objects.*;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.template.rev151201.template.definition.grouping._abstract.intents._abstract.operations.AbstractOperation;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.template.rev151201.template.definition.grouping._abstract.intents._abstract.operations.AbstractOperationBuilder;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.template.rev151201.template.definition.grouping._abstract.intents._abstract.operations.AbstractOperationKey;\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.ConnectionId;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.FlowId;\r
+import java.lang.reflect.Field;\r
+import java.util.*;\r
+import static org.junit.Assert.*;\r
+import static org.mockito.Mockito.*;\r
+/**\r
+ * Created by zhangmeng on 2015/12/29.\r
+ */\r
+public class UpdateTemplateDefinitionLangTest extends TestCase {\r
+    private DataBroker dataBroker;\r
+    private TenantManage tenantManage;\r
+    private UpdateTemplateDefinitionLang updateTemplateDefinitionLang;\r
+    private Class<UpdateTemplateDefinitionLang> class1;\r
+    private Field field_definition;\r
+    private Field field_abstractNodes ;\r
+    private Field field_abstractConnections;\r
+    private Field field_abstractFlows;\r
+    private Field field_abstractOperations;\r
+    private Field field;\r
+\r
+    @Before\r
+    public void setUp() throws Exception {\r
+        class1 = UpdateTemplateDefinitionLang.class;\r
+        field_definition = class1.getDeclaredField("definition");\r
+        field_abstractNodes = class1.getDeclaredField("abstractNodes");\r
+        field_abstractConnections = class1.getDeclaredField("abstractConnections");\r
+        field_abstractFlows = class1.getDeclaredField("abstractFlows");\r
+        field_abstractOperations = class1.getDeclaredField("abstractOperations");\r
+        field = class1.getDeclaredField("getDefinitions");\r
+        field_definition.setAccessible(true);\r
+        field_abstractNodes.setAccessible(true);\r
+        field_abstractConnections.setAccessible(true);\r
+        field_abstractFlows.setAccessible(true);\r
+        field_abstractOperations.setAccessible(true);\r
+        field.setAccessible(true);\r
+\r
+        dataBroker = mock(DataBroker.class);\r
+        tenantManage = mock(TenantManage.class);\r
+\r
+        updateTemplateDefinitionLang = new UpdateTemplateDefinitionLang(dataBroker,tenantManage);\r
+    }\r
+\r
+    @Test\r
+    public void testTemplateDefinitionLang() throws Exception {\r
+\r
+        UserId userId = mock(UserId.class);\r
+        NodeName nodeName = mock(NodeName.class);\r
+        AbstractNode abstractNode = mock(AbstractNode.class);\r
+        ConnectionName connectionName = mock(ConnectionName.class);\r
+        AbstractConnection abstractConnection = mock(AbstractConnection.class);\r
+        FlowName flowName = mock(FlowName.class);\r
+        AbstractFlow abstractFlow = mock(AbstractFlow.class);\r
+        OperationName operationName = mock(OperationName.class);\r
+        AbstractOperation abstractOperation = mock(AbstractOperation.class);\r
+        UpdateTemplateDefinition updateTemplateDefinition = mock(UpdateTemplateDefinition.class);\r
+        String templateName = new String("test");\r
+        String value = new String("string");\r
+        LinkedHashMap<String, String> parameters = new LinkedHashMap<String, String>();\r
+        Map<NodeName, AbstractNode> abstractNodes = new HashMap<NodeName, AbstractNode>();\r
+        Map<ConnectionName, AbstractConnection> abstractConnections = new HashMap<ConnectionName, AbstractConnection>();\r
+        Map<FlowName, AbstractFlow> abstractFlows = new HashMap<FlowName, AbstractFlow>();\r
+        Map<OperationName, AbstractOperation> abstractOperations = new HashMap<OperationName, AbstractOperation>();\r
+\r
+        parameters.put(value, NEMOConstants.string);\r
+        abstractConnections.put(connectionName,abstractConnection);\r
+        abstractNodes.put(nodeName, abstractNode);\r
+        abstractFlows.put(flowName,abstractFlow);\r
+        abstractOperations.put(operationName,abstractOperation);\r
+        field_definition.set(updateTemplateDefinitionLang, updateTemplateDefinition);\r
+\r
+        when(updateTemplateDefinition.checkTemplateDefinition(any(UserId.class),any(TemplateDefinition.class)))\r
+                .thenReturn("1")\r
+                .thenReturn("2")\r
+                .thenReturn("3");\r
+        Assert.assertTrue(updateTemplateDefinitionLang.templateDefinitionLang(userId, templateName, parameters).equals("1"));\r
+        parameters.clear();\r
+        parameters.put(value, NEMOConstants.integer);\r
+        field_abstractNodes.set(updateTemplateDefinitionLang, abstractNodes);\r
+        field_abstractConnections.set(updateTemplateDefinitionLang, abstractConnections);\r
+        field_abstractFlows.set(updateTemplateDefinitionLang,abstractFlows);\r
+        field_abstractOperations.set(updateTemplateDefinitionLang,abstractOperations);\r
+        Assert.assertTrue(updateTemplateDefinitionLang.templateDefinitionLang(userId, templateName, parameters).equals("2"));\r
+        parameters.clear();\r
+        parameters.put(value, NEMOConstants.range);\r
+        Assert.assertTrue(updateTemplateDefinitionLang.templateDefinitionLang(userId, templateName, parameters).equals("3"));\r
+        verify(updateTemplateDefinition,times(3)).checkTemplateDefinition(any(UserId.class),any(TemplateDefinition.class));\r
+    }\r
+\r
+    @Test\r
+    public void testCreateAbstractNode() throws Exception {\r
+        String name = new String("name");\r
+        String type = NEMOConstants.host;\r
+        List<String> subnodes = new ArrayList<String>();\r
+        LinkedHashMap<String, LinkedHashMap<String,String>> propertyList = new LinkedHashMap<String, LinkedHashMap<String, String>>();\r
+        GetDefinitions getDefinitions = mock(GetDefinitions.class);\r
+        String nodeName1 = new String("nodeName");\r
+        String propertyName = new String("propertyName");\r
+        String ValueName = new String("valuename");\r
+        String Value = NEMOConstants.string;\r
+        NodeName nodeName = new NodeName(nodeName1);\r
+        AbstractNode abstractNode = mock(AbstractNode.class);\r
+        PhysicalHostId physicalHostId = mock(PhysicalHostId.class);\r
+        PhysicalHost physicalHost = mock(PhysicalHost.class);\r
+        LinkedHashMap<String, String> values = new LinkedHashMap<String, String>();\r
+        Map<PhysicalHostName, PhysicalHost> physicalHostMap = mock(Map.class);\r
+        Map<NodeName, AbstractNode> abstractNodes = new HashMap<NodeName, AbstractNode>();\r
+\r
+        field.set(updateTemplateDefinitionLang, getDefinitions);\r
+        subnodes.add(nodeName1);\r
+\r
+        when(getDefinitions.getPhysicalHost()).thenReturn(physicalHostMap);\r
+        when(physicalHostMap.containsKey(any(PhysicalHostName.class)))\r
+                .thenReturn(false)\r
+                .thenReturn(true);\r
+        Assert.assertTrue(updateTemplateDefinitionLang.createAbstractNode(name, type, subnodes, propertyList).equals("The host " + name + " is not exist in physical network."));\r
+        when(physicalHostMap.get(any(PhysicalHostName.class))).thenReturn(physicalHost);\r
+        when(physicalHost.getHostId()).thenReturn(physicalHostId);\r
+        when(physicalHostId.getValue()).thenReturn("00001111-0000-0000-0000-000011112222");\r
+        //test nodes empty\r
+        field_abstractNodes.set(updateTemplateDefinitionLang, abstractNodes);\r
+        Assert.assertTrue(updateTemplateDefinitionLang.createAbstractNode(name, type, subnodes, propertyList).equals("There are no nodes."));\r
+        //nodes not empty propertyList empty\r
+        abstractNodes.put(nodeName, abstractNode);\r
+        Assert.assertTrue(updateTemplateDefinitionLang.createAbstractNode(name, type, subnodes, propertyList) == null);\r
+        //propertyList not empty\r
+        propertyList.put(propertyName,values);\r
+        values.put(ValueName,Value);\r
+        Assert.assertTrue(updateTemplateDefinitionLang.createAbstractNode(name, type, subnodes, propertyList) == null);\r
+        values.clear();\r
+        values.put("11", NEMOConstants.integer);\r
+        Assert.assertTrue(updateTemplateDefinitionLang.createAbstractNode(name, type, subnodes, propertyList) == null);\r
+        values.clear();\r
+        values.put("1,1", NEMOConstants.range);\r
+        Assert.assertTrue(updateTemplateDefinitionLang.createAbstractNode(name, type, subnodes, propertyList) == null);\r
+        type = NEMOConstants.SubNodes;\r
+        Assert.assertTrue(updateTemplateDefinitionLang.createAbstractNode(name, type, subnodes, propertyList) == null);\r
+\r
+    }\r
+\r
+    @Test\r
+    public void testCreateAbstractConnection() throws Exception {\r
+        String name = new String("name");\r
+        String type = NEMOConstants.host;\r
+        String endNode = new String("endNode");\r
+        String propertyName = new String("propertyName");\r
+        String ValueName = new String("valuename");\r
+        String Value = NEMOConstants.string;\r
+        List<String> endnodes = new ArrayList<String>();\r
+        NodeName nodeName = mock(NodeName.class);\r
+        NodeId nodeId = mock(NodeId.class);\r
+        AbstractNode abstractNode = mock(AbstractNode.class);\r
+        LinkedHashMap<String, String> values = new LinkedHashMap<String, String>();\r
+        LinkedHashMap<String, LinkedHashMap<String,String>> propertyList = new LinkedHashMap<String, LinkedHashMap<String, String>>();\r
+        Map<NodeName, AbstractNode> abstractNodes = new HashMap<NodeName, AbstractNode>();\r
+\r
+        abstractNodes.put(nodeName, abstractNode);\r
+        endnodes.add(endNode);\r
+\r
+        //test abstractNodes empty\r
+        Assert.assertTrue(updateTemplateDefinitionLang.createAbstractConnection(name, type, endnodes, propertyList).equals("There are nodes exist."));\r
+        //abstractNodes not empty\r
+        field_abstractNodes.set(updateTemplateDefinitionLang, abstractNodes);\r
+        Assert.assertTrue(updateTemplateDefinitionLang.createAbstractConnection(name, type, endnodes, propertyList).equals("The endnode " + endNode + " is not exit."));\r
+        abstractNodes.clear();\r
+        abstractNodes.put(new NodeName(endNode), abstractNode);\r
+        when(abstractNode.getNodeId()).thenReturn(nodeId);\r
+        Assert.assertTrue(updateTemplateDefinitionLang.createAbstractConnection(name, type, endnodes, propertyList) == null);\r
+        //test propertyList not null\r
+        propertyList.put(propertyName, values);\r
+        // string\r
+        values.put(ValueName,Value);\r
+        Assert.assertTrue(updateTemplateDefinitionLang.createAbstractConnection(name, type, endnodes, propertyList) == null);\r
+        values.clear();\r
+        values.put("11", NEMOConstants.integer);\r
+        Assert.assertTrue(updateTemplateDefinitionLang.createAbstractConnection(name, type, endnodes, propertyList) == null);\r
+        values.clear();\r
+        values.put("1,1", NEMOConstants.range);\r
+        Assert.assertTrue(updateTemplateDefinitionLang.createAbstractConnection(name, type, endnodes, propertyList) == null);\r
+\r
+    }\r
+\r
+    @Test\r
+    public void testCreateAbstractFlow() throws Exception {\r
+        String name = new String("name");\r
+        String value = new String("value");\r
+        String Value = NEMOConstants.string;\r
+        String matchName = new String("matchName");\r
+        LinkedHashMap<String,String> values = new LinkedHashMap<String, String>();\r
+        LinkedHashMap<String,LinkedHashMap<String,String>> matches =  new LinkedHashMap<String, LinkedHashMap<String, String>>();\r
+        LinkedHashMap<String,LinkedHashMap<String,String>> propertyList = new LinkedHashMap<String, LinkedHashMap<String, String>>();\r
+\r
+        matches.put(matchName,values);\r
+\r
+        //string\r
+        values.put(value,Value);\r
+        Assert.assertTrue(updateTemplateDefinitionLang.createAbstractFlow(name, matches, propertyList) == null);\r
+        values.clear();\r
+        values.put("11", NEMOConstants.integer);\r
+        Assert.assertTrue(updateTemplateDefinitionLang.createAbstractFlow(name, matches, propertyList) == null);\r
+        values.clear();\r
+        values.put("1,1", NEMOConstants.range);\r
+        Assert.assertTrue(updateTemplateDefinitionLang.createAbstractFlow(name, matches, propertyList) == null);\r
+\r
+    }\r
+\r
+    @Test\r
+    public void testCreateAbstractOperation() throws Exception {\r
+        String name = new String("name");\r
+        String target = new String("target");\r
+        String priority = new String("1");\r
+        LinkedHashMap<String,LinkedHashMap<String,String>> conditions = new LinkedHashMap<String, LinkedHashMap<String, String>>();\r
+        LinkedHashMap<String,LinkedHashMap<String,String>>actions = new LinkedHashMap<String, LinkedHashMap<String, String>>();\r
+\r
+        String conditionName = new String("!,name,==");\r
+        String value = new String("value");\r
+        String actionName = new String("actionName");\r
+        AbstractNode abstractNode = mock(AbstractNode.class);\r
+        AbstractFlow abstractFlow = mock(AbstractFlow.class);\r
+        AbstractConnection abstractConnection = mock(AbstractConnection.class);\r
+        LinkedHashMap<String,String> parameters = new LinkedHashMap<String, String>();\r
+        LinkedHashMap<String, String> targetValue = new LinkedHashMap<String, String>();\r
+        Map<NodeName, AbstractNode> abstractNodes = mock(Map.class);\r
+        Map<ConnectionName, AbstractConnection> abstractConnections = mock(Map.class);\r
+        Map<FlowName, AbstractFlow> abstractFlows = mock(Map.class);\r
+\r
+        field_abstractNodes.set(updateTemplateDefinitionLang, abstractNodes);\r
+        field_abstractConnections.set(updateTemplateDefinitionLang, abstractConnections);\r
+        field_abstractFlows.set(updateTemplateDefinitionLang, abstractFlows);\r
+\r
+        when(abstractNodes.containsKey(any(NodeName.class))).thenReturn(true);\r
+        when(abstractNodes.get(new NodeName(target))).thenReturn(abstractNode);\r
+        when(abstractNode.getNodeId()).thenReturn(mock(NodeId.class));\r
+        when(abstractConnections.containsKey(any(ConnectionName.class))).thenReturn(true);\r
+        when(abstractConnections.get(new ConnectionName(target))).thenReturn(abstractConnection);\r
+        when(abstractConnection.getConnectionId()).thenReturn(mock(ConnectionId.class));\r
+        when(abstractFlows.containsKey(any(FlowName.class))).thenReturn(true);\r
+        when(abstractFlows.get(new FlowName(target))).thenReturn(abstractFlow);\r
+        when(abstractFlow.getFlowId()).thenReturn(mock(FlowId.class));\r
+        Assert.assertTrue(updateTemplateDefinitionLang.createAbstractOperation(name, target, priority, conditions, actions) == null);\r
+        //test conditions not empty\r
+        targetValue.put(value,NEMOConstants.string); //string\r
+        conditions.put(conditionName, targetValue);// not equal\r
+//        System.out.println(",1,2".split(NEMOConstants.comma)[1] == null);\r
+//        System.out.println("split" + conditionName.split(NEMOConstants.comma)[0] + "+" + conditionName.split(NEMOConstants.comma)[2]);\r
+        Assert.assertTrue(updateTemplateDefinitionLang.createAbstractOperation(name, target, priority, conditions, actions) == null);\r
+        targetValue.clear();\r
+        conditions.clear();\r
+        targetValue.put("11", NEMOConstants.integer); // int\r
+        conditions.put("&&,name,!=", targetValue);// and notEqual\r
+        Assert.assertTrue(updateTemplateDefinitionLang.createAbstractOperation(name, target, priority, conditions, actions) == null);\r
+        targetValue.clear();\r
+        conditions.clear();\r
+        targetValue.put("1,1", NEMOConstants.range); // range\r
+        conditions.put("||,name,>", targetValue);// and greater_than\r
+        Assert.assertTrue(updateTemplateDefinitionLang.createAbstractOperation(name, target, priority, conditions, actions) == null);\r
+        targetValue.clear();\r
+        conditions.clear();\r
+        targetValue.put("1,1", NEMOConstants.range); // range\r
+        conditions.put(",name,<", targetValue);// null less_than\r
+        Assert.assertTrue(updateTemplateDefinitionLang.createAbstractOperation(name, target, priority, conditions, actions) == null);\r
+        targetValue.clear();\r
+        conditions.clear();\r
+        targetValue.put("1,1", NEMOConstants.range); // range\r
+        conditions.put(",name,>=", targetValue);// null not_less_than\r
+        Assert.assertTrue(updateTemplateDefinitionLang.createAbstractOperation(name, target, priority, conditions, actions) == null);\r
+        targetValue.clear();\r
+        conditions.clear();\r
+        targetValue.put("1,1", NEMOConstants.range); // range\r
+        conditions.put(",name,<=", targetValue);// null not_greater_than\r
+        Assert.assertTrue(updateTemplateDefinitionLang.createAbstractOperation(name, target, priority, conditions, actions) == null);\r
+        targetValue.clear();\r
+        conditions.clear();\r
+        targetValue.put("1,1", NEMOConstants.range); // range\r
+        conditions.put(",name,*", targetValue);// null between\r
+        Assert.assertTrue(updateTemplateDefinitionLang.createAbstractOperation(name, target, priority, conditions, actions) == null);\r
+        targetValue.clear();\r
+        conditions.clear();\r
+        targetValue.put("1,1", NEMOConstants.range); // range\r
+        conditions.put(",name,==", targetValue);// null equal\r
+        Assert.assertTrue(updateTemplateDefinitionLang.createAbstractOperation(name, target, priority, conditions, actions) == null);\r
+\r
+        //test actions not empty\r
+        parameters.put("string", NEMOConstants.string);\r
+        actions.put(actionName, parameters);\r
+        Assert.assertTrue(updateTemplateDefinitionLang.createAbstractOperation(name, target, priority, conditions, actions) == null);\r
+        actions.clear();\r
+        parameters.clear();\r
+        parameters.put("11", NEMOConstants.integer);\r
+        actions.put(actionName, parameters);\r
+        Assert.assertTrue(updateTemplateDefinitionLang.createAbstractOperation(name, target, priority, conditions, actions) == null);\r
+        actions.clear();\r
+        parameters.clear();\r
+        parameters.put("1,1", NEMOConstants.range);\r
+        actions.put(actionName,parameters);\r
+        Assert.assertTrue(updateTemplateDefinitionLang.createAbstractOperation(name, target, priority, conditions, actions).equals("The action values are not consistent."));\r
+\r
+\r
+    }\r
+}
\ No newline at end of file
diff --git a/nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/languagestyle/updateintentlang/UpdateTemplateInstanceLangTest.java b/nemo-impl/src/test/java/org/opendaylight/nemo/user/vnspacemanager/languagestyle/updateintentlang/UpdateTemplateInstanceLangTest.java
new file mode 100644 (file)
index 0000000..7477350
--- /dev/null
@@ -0,0 +1,94 @@
+/*\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.languagestyle.updateintentlang;\r
+\r
+import junit.framework.TestCase;\r
+import org.junit.Assert;\r
+import org.junit.Before;\r
+import org.junit.Test;\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.nemo.user.vnspacemanager.structurestyle.updateintent.UpdateTemplateInstance;\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.template.instances.TemplateInstance;\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.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.slf4j.Logger;\r
+import org.slf4j.LoggerFactory;\r
+\r
+import java.lang.reflect.Field;\r
+import java.util.*;\r
+import static org.junit.Assert.*;\r
+import static org.mockito.Mockito.*;\r
+/**\r
+ * Created by zhangmeng on 2015/12/29.\r
+ */\r
+public class UpdateTemplateInstanceLangTest extends TestCase {\r
+    private DataBroker dataBroker;\r
+    private TenantManage tenantManage;\r
+    private UpdateTemplateInstanceLang updateTemplateInstanceLang;\r
+    @Before\r
+    public void setUp() throws Exception {\r
+        dataBroker = mock(DataBroker.class);\r
+        tenantManage = mock(TenantManage.class);\r
+\r
+        updateTemplateInstanceLang = new UpdateTemplateInstanceLang(dataBroker,tenantManage);\r
+    }\r
+\r
+    @Test\r
+    public void testTemplateInstanceLang() throws Exception {\r
+        Class<UpdateTemplateInstanceLang> class1 = UpdateTemplateInstanceLang.class;\r
+        Field field = class1.getDeclaredField("updateTemplateInstance");\r
+        field.setAccessible(true);\r
+\r
+        UserId userId = mock(UserId.class);\r
+        String nodeName = new String("nodename");\r
+        String nodeType = new String("nodetype");\r
+        LinkedHashMap<String, LinkedHashMap<String,String>> propertyList = new LinkedHashMap<String, LinkedHashMap<String, String>>();\r
+        LinkedHashMap<String, String> values =  new LinkedHashMap<String, String>();\r
+        Map map = mock(Map.class);\r
+        UpdateTemplateInstance updateTemplateInstance = mock(UpdateTemplateInstance.class);\r
+        String parameterName = new String("parameterName");\r
+\r
+        propertyList.put(parameterName, values);\r
+        values.put("string", NEMOConstants.string);\r
+        field.set(updateTemplateInstanceLang, updateTemplateInstance);\r
+\r
+        when(tenantManage.getTemplateInstance(userId))\r
+                .thenReturn(map)\r
+                .thenReturn(map)\r
+                .thenReturn(null);\r
+        when(tenantManage.getObjectId(userId, nodeName)).thenReturn("11111111-1111-1111-1111-111111111111");\r
+        when(map.containsKey(any(TemplateInstanceId.class)))\r
+                .thenReturn(true)\r
+                .thenReturn(false);\r
+        Assert.assertTrue(updateTemplateInstanceLang.templateInstanceLang(userId, nodeName, nodeType, propertyList).equals("The instance " + nodeName + " has exist."));\r
+        verify(tenantManage,times(2)).getTemplateInstance(userId);\r
+        Assert.assertTrue(propertyList.get(parameterName) == values);\r
+        when(updateTemplateInstance.checkTemplateInstance(any(UserId.class), any(TemplateInstance.class)))\r
+                .thenReturn(null)\r
+                .thenReturn("int")\r
+                .thenReturn("range");\r
+        doNothing().when(tenantManage).setUserTemplateInstance(any(UserId.class), any(TemplateInstanceId.class), any(TemplateInstance.class));\r
+        Assert.assertTrue(updateTemplateInstanceLang.templateInstanceLang(userId, nodeName, nodeType, propertyList) == null);\r
+        values.clear();\r
+        values.put("11", NEMOConstants.integer);\r
+        Assert.assertTrue(updateTemplateInstanceLang.templateInstanceLang(userId, nodeName, nodeType, propertyList).equals("int"));\r
+        values.clear();\r
+        values.put("1,1", NEMOConstants.range);\r
+        Assert.assertTrue(updateTemplateInstanceLang.templateInstanceLang(userId, nodeName, nodeType, propertyList).equals("range"));\r
+        verify(updateTemplateInstance,times(3)).checkTemplateInstance(any(UserId.class), any(TemplateInstance.class));\r
+    }\r
+}
\ No newline at end of file