Modify intent handler. 75/32475/1
authorZhigang Ji <jizhigang@huawei.com>
Wed, 13 Jan 2016 08:12:35 +0000 (16:12 +0800)
committerZhigang Ji <jizhigang@huawei.com>
Wed, 13 Jan 2016 08:13:16 +0000 (16:13 +0800)
Change-Id: Ie706e63fc42793a7dd394f6511bf27ee1b1b9ae5
Signed-off-by: Zhigang Ji <jizhigang@huawei.com>
nemo-impl/src/main/java/org/opendaylight/nemo/intent/IntentResolver.java
nemo-impl/src/main/java/org/opendaylight/nemo/intent/IntentResolverUtils.java
nemo-impl/src/main/java/org/opendaylight/nemo/intent/NodeMapper.java
nemo-impl/src/main/java/org/opendaylight/nemo/intent/computation/VNMappingUnit.java
nemo-impl/src/test/java/org/opendaylight/nemo/intent/IntentResolverTest.java [deleted file]

index d8d03e5a0cb2c87f19049ff0b870fcd7aa320748..472e9bd5207a05c6c1b44938fc4c368e466e2766 100644 (file)
@@ -395,6 +395,8 @@ public class IntentResolver implements AutoCloseable {
                 }\r
             }\r
 \r
+            IntentResolverUtils.copyPhysicalNetworkConfigToOperational(dataBroker);\r
+\r
             vnMappingUnit.virtualNetworkMapping(virtualNetwork, userVnPnMapping, physicalPaths);\r
             vnComputationUnit = new VNComputationUnit(dataBroker, virtualNetwork);\r
             vnComputationUnits.put(userId, vnComputationUnit);\r
index ffd1810aaeaead9ffec9848b514f9d677ac0f3ae..a3cce23d86254b58341eebbd531ec4cdc9e82502 100644 (file)
@@ -8,10 +8,7 @@
 \r
 package org.opendaylight.nemo.intent;\r
 \r
-import java.util.ArrayList;\r
-import java.util.List;\r
-import java.util.concurrent.ExecutionException;\r
-\r
+import com.google.common.base.Optional;\r
 import org.opendaylight.controller.md.sal.binding.api.DataBroker;\r
 import org.opendaylight.controller.md.sal.binding.api.ReadWriteTransaction;\r
 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;\r
@@ -20,12 +17,8 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.networks.virtual.network.virtual.links.VirtualLink;\r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.networks.virtual.network.virtual.nodes.VirtualNode;\r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.intent.mapping.result.rev151010.intent.vn.mapping.results.user.intent.vn.mapping.IntentVnMappingResult;\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 org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.IntentId;\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.ObjectId;\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.intent.mapping.result.rev151010.intent.vn.mapping.results.user.intent.vn.mapping.intent.vn.mapping.result.VirtualResource;\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.PhysicalNodeId;\r
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.engine.common.rev151010.VirtualNodeId;\r
@@ -34,14 +27,19 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.int
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.Flow;\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.operations.Operation;\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.node.instance.Property;\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.property.instance.property.values.StringValue;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.operation.rev151010.operation.instance.Action;\r
 import org.opendaylight.yangtools.yang.binding.DataObject;\r
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;\r
 import org.slf4j.Logger;\r
 import org.slf4j.LoggerFactory;\r
 \r
-import com.google.common.base.Optional;\r
+import java.util.ArrayList;\r
+import java.util.List;\r
+import java.util.concurrent.ExecutionException;\r
 \r
 /**\r
  * Implement the common utilities frequently used in\r
@@ -50,7 +48,6 @@ import com.google.common.base.Optional;
  * @author Zhigang Ji\r
  */\r
 public class IntentResolverUtils {\r
-\r
     private static final Logger LOG = LoggerFactory.getLogger(IntentResolverUtils.class);\r
 \r
     /**\r
@@ -469,38 +466,42 @@ public class IntentResolverUtils {
         return null;\r
     }\r
 \r
-\r
     public static void copyPhysicalNetworkConfigToOperational(DataBroker dataBroker) {\r
         final InstanceIdentifier<PhysicalNetwork> physicalNetworkIid = InstanceIdentifier\r
-                .builder(PhysicalNetwork.class).build();\r
+                .builder(PhysicalNetwork.class)\r
+                .build();\r
 \r
         final ReadWriteTransaction txn = dataBroker.newReadWriteTransaction();\r
 \r
         try {\r
             final Optional<PhysicalNetwork> oper = txn.read(LogicalDatastoreType.OPERATIONAL, physicalNetworkIid).get();\r
 \r
-            if (oper.isPresent()) {\r
-                txn.cancel();\r
-                LOG.info("Physical network already exists in operational");\r
-            } else {\r
-                final Optional<PhysicalNetwork> config = txn.read(LogicalDatastoreType.CONFIGURATION,\r
-                        physicalNetworkIid).get();\r
-\r
-                if (config.isPresent()) {\r
-                    txn.put(LogicalDatastoreType.OPERATIONAL, physicalNetworkIid, config.get());\r
-                    txn.submit().get();\r
-                    LOG.info("Copied physical network from config to operational");\r
-                } else {\r
+            if ( oper.isPresent() ) {\r
+                PhysicalNetwork physicalNetwork = oper.get();\r
+\r
+                if ( null != physicalNetwork.getPhysicalNodes() ) {\r
                     txn.cancel();\r
-                    LOG.info("No physical network found in config; none copied to operational");\r
+                    LOG.info("Physical network already exists in operational");\r
+\r
+                    return;\r
                 }\r
             }\r
+\r
+            final Optional<PhysicalNetwork> config = txn.read(LogicalDatastoreType.CONFIGURATION,\r
+                    physicalNetworkIid).get();\r
+\r
+            if (config.isPresent()) {\r
+                txn.put(LogicalDatastoreType.OPERATIONAL, physicalNetworkIid, config.get());\r
+                txn.submit().get();\r
+                LOG.info("Copied physical network from config to operational");\r
+            } else {\r
+                txn.cancel();\r
+                LOG.info("No physical network found in config; none copied to operational");\r
+            }\r
         } catch (InterruptedException exception) {\r
-            LOG.error("Cannot copy the physical hosts.", exception);\r
+            LOG.error("Cannot copy the physical network.", exception);\r
         } catch (ExecutionException exception) {\r
-            LOG.error("Cannot copy the physical hosts.", exception);\r
+            LOG.error("Cannot copy the physical network.", exception);\r
         }\r
-\r
     }\r
-\r
 }\r
index 95aa0f02f1c87d36acbc22c884661e2ef1b694e5..ea08564def457e2a8af09112c65c80af99a9208a 100644 (file)
@@ -281,41 +281,43 @@ public class NodeMapper {
         IntentVnMappingResult intentVnMappingResult;\r
         VirtualNode virtualNode;\r
 \r
-        for ( SubNode subNode : subNodes ) {\r
-            node1 = IntentResolverUtils.getNode(nodes, subNode.getNodeId());\r
+        if ( null != subNodes ) {\r
+            for ( SubNode subNode : subNodes ) {\r
+                node1 = IntentResolverUtils.getNode(nodes, subNode.getNodeId());\r
 \r
-            if ( null == node1 ) {\r
-                throw new IntentResolutionException("The sub-node " + subNode.getNodeId().getValue() +\r
-                        " of the node " + node.getNodeId().getValue() + " does not exist.");\r
-            }\r
-\r
-            if ( node1.getNodeType().equals(nodeType) ) {\r
-                if ( IntentResolverUtils.checkExternalLayer3Group(node1) ) {\r
+                if ( null == node1 ) {\r
                     throw new IntentResolutionException("The sub-node " + subNode.getNodeId().getValue() +\r
-                            " of the node " + node.getNodeId().getValue() + " can't be layer3 group.");\r
+                            " of the node " + node.getNodeId().getValue() + " does not exist.");\r
                 }\r
 \r
-                resolveExternalLayer2Group(user, node1, virtualNetwork, userIntentVnMapping, false);\r
-            }\r
+                if ( node1.getNodeType().equals(nodeType) ) {\r
+                    if ( IntentResolverUtils.checkExternalLayer3Group(node1) ) {\r
+                        throw new IntentResolutionException("The sub-node " + subNode.getNodeId().getValue() +\r
+                                " of the node " + node.getNodeId().getValue() + " can't be layer3 group.");\r
+                    }\r
 \r
-            intentVnMappingResult = IntentResolverUtils.getIntentVnMappingResult(intentVnMappingResults,\r
-                    new IntentId(node1.getNodeId().getValue()));\r
+                    resolveExternalLayer2Group(user, node1, virtualNetwork, userIntentVnMapping, false);\r
+                }\r
 \r
-            if ( null == intentVnMappingResult ) {\r
-                throw new IntentResolutionException("Can not get the intent-vn mapping result for " +\r
-                        "the node " + node1.getNodeId().getValue() + ".");\r
-            }\r
+                intentVnMappingResult = IntentResolverUtils.getIntentVnMappingResult(intentVnMappingResults,\r
+                        new IntentId(node1.getNodeId().getValue()));\r
 \r
-            virtualNode = IntentResolverUtils.getVirtualNode(virtualNodes,\r
-                    new VirtualNodeId(intentVnMappingResult.getVirtualResource().get(0)\r
-                            .getParentVirtualResourceEntityId().getValue()));\r
+                if ( null == intentVnMappingResult ) {\r
+                    throw new IntentResolutionException("Can not get the intent-vn mapping result for " +\r
+                            "the node " + node1.getNodeId().getValue() + ".");\r
+                }\r
 \r
-            if ( null == virtualNode ) {\r
-                throw new IntentResolutionException("Can not get the virtual node created for " +\r
-                        "the node " + node1.getNodeId().getValue() + ".");\r
-            }\r
+                virtualNode = IntentResolverUtils.getVirtualNode(virtualNodes,\r
+                        new VirtualNodeId(intentVnMappingResult.getVirtualResource().get(0)\r
+                                .getParentVirtualResourceEntityId().getValue()));\r
 \r
-            virtualSwitches.add(virtualNode);\r
+                if ( null == virtualNode ) {\r
+                    throw new IntentResolutionException("Can not get the virtual node created for " +\r
+                            "the node " + node1.getNodeId().getValue() + ".");\r
+                }\r
+\r
+                virtualSwitches.add(virtualNode);\r
+            }\r
         }\r
 \r
         Property locationProperty = IntentResolverUtils\r
index bad4d7d2d13f2ca3491efbf91f76fd499a50f86f..17e60097e1f6e49979a046906e8f150595e75c94 100644 (file)
@@ -115,6 +115,11 @@ public class VNMappingUnit implements AutoCloseable {
             throw new VNMappingException("Can not read the physical nodes.");\r
         }\r
 \r
+        if ( !result.isPresent() ) {\r
+            throw new VNMappingException("Failed virtual network mapping caused by " +\r
+                    "absent underlying network topology.");\r
+        }\r
+\r
         PhysicalNodes physicalNodes = result.get();\r
         List<PhysicalNode> physicalNodeList = physicalNodes.getPhysicalNode();\r
 \r
diff --git a/nemo-impl/src/test/java/org/opendaylight/nemo/intent/IntentResolverTest.java b/nemo-impl/src/test/java/org/opendaylight/nemo/intent/IntentResolverTest.java
deleted file mode 100644 (file)
index bbbd075..0000000
+++ /dev/null
@@ -1,408 +0,0 @@
-/*
- * 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.intent;
-
-import org.junit.Before;
-import org.junit.Test;
-
-import static org.junit.Assert.*;
-import com.google.common.base.Optional;
-import org.opendaylight.controller.md.sal.binding.api.DataBroker;
-import org.opendaylight.controller.md.sal.binding.api.ReadWriteTransaction;
-import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
-import org.opendaylight.nemo.intent.computation.PNComputationUnit;
-import org.opendaylight.nemo.intent.computation.PNResourcesTracker;
-import org.opendaylight.nemo.intent.computation.VNComputationUnit;
-import org.opendaylight.nemo.intent.computation.VNMappingUnit;
-import org.opendaylight.nemo.intent.condition.ConditionManager;
-import org.opendaylight.nemo.user.vnspacemanager.structurestyle.updateintent.UpdateIntent;
-import org.opendaylight.nemo.user.vnspacemanager.structurestyle.updateintent.UpdateNode;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.physical.network.rev151010.PhysicalNetwork;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.physical.network.rev151010.physical.network.PhysicalPaths;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.physical.network.rev151010.physical.network.physical.paths.PhysicalPath;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.physical.network.rev151010.physical.network.physical.paths.PhysicalPathKey;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.VirtualNetworks;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.networks.VirtualNetwork;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.networks.VirtualNetworkBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.networks.VirtualNetworkKey;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.networks.virtual.network.*;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.networks.virtual.network.virtual.arps.VirtualArp;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.networks.virtual.network.virtual.links.VirtualLink;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.networks.virtual.network.virtual.nodes.VirtualNode;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.networks.virtual.network.virtual.paths.VirtualPath;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.virtual.network.rev151010.virtual.networks.virtual.network.virtual.routes.VirtualRoute;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.intent.mapping.result.rev151010.IntentVnMappingResults;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.intent.mapping.result.rev151010.VnPnMappingResults;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.intent.mapping.result.rev151010.intent.vn.mapping.results.UserIntentVnMapping;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.intent.mapping.result.rev151010.intent.vn.mapping.results.UserIntentVnMappingBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.intent.mapping.result.rev151010.intent.vn.mapping.results.UserIntentVnMappingKey;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.intent.mapping.result.rev151010.intent.vn.mapping.results.user.intent.vn.mapping.IntentVnMappingResult;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.intent.mapping.result.rev151010.vn.pn.mapping.results.UserVnPnMapping;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.intent.mapping.result.rev151010.vn.pn.mapping.results.UserVnPnMappingBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.intent.mapping.result.rev151010.vn.pn.mapping.results.UserVnPnMappingKey;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.intent.mapping.result.rev151010.vn.pn.mapping.results.user.vn.pn.mapping.VnPnMappingResult;
-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.engine.common.rev151010.PhysicalPathId;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.engine.common.rev151010.VirtualNetworkId;
-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.Connection;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.objects.Flow;
-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.user.intent.Objects;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.operations.Operation;
-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.yangtools.yang.binding.InstanceIdentifier;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.HashMap;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-import java.util.concurrent.ExecutionException;
-
-import java.util.List;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.LinkedList;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-import java.util.*;
-import java.util.List;
-
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.physical.network.rev151010.physical.network.PhysicalLinks;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.physical.network.rev151010.physical.network.PhysicalNodes;
-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;
-import java.lang.reflect.Field;
-import java.lang.reflect.Method;
-import java.util.ArrayList;
-import java.util.List;
-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 org.opendaylight.controller.md.sal.binding.api.ReadOnlyTransaction;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.Operations;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.intent.rev151010.user.intent.Results;
-import static org.junit.Assert.*;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.intent.mapping.result.rev151010.VirtualResourceInstance.VirtualResourceType;
-import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.engine.common.rev151010.PhysicalResourceEntityId;
-import org.junit.Assert;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.engine.common.rev151010.PhysicalNodeId;
-import org.mockito.Mockito;
-import org.powermock.api.mockito.PowerMockito;
-import org.powermock.core.classloader.annotations.PrepareForTest;
-import org.powermock.modules.junit4.PowerMockRunner;
-import org.powermock.api.mockito.PowerMockito;
-import org.powermock.api.support.membermodification.MemberMatcher;
-import org.powermock.api.support.membermodification.MemberModifier;
-import org.powermock.core.classloader.annotations.PrepareForTest;
-import org.powermock.modules.junit4.PowerMockRunner;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.ObjectId;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.physical.network.rev151010.physical.network.PhysicalHosts;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.generic.physical.network.rev151010.physical.network.physical.hosts.PhysicalHost;
-import static org.mockito.Mockito.doNothing;
-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.object.rev151010.node.instance.Property;
-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.property.instance.PropertyValues;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.nemo.common.rev151010.PropertyName;
-/**
- * Created by ldzd11 on 2015/12/24.
- */
-
-@RunWith(PowerMockRunner.class)
-@PrepareForTest(IntentResolverUtils.class)
-public class IntentResolverTest {
-    private IntentResolver intentResolver;
-    private  DataBroker dataBroker;
-    private UserId userId;
-    private List<VnPnMappingResult> vnPnMappingResults;
-    private VnPnMappingResult vnPnMappingResult;
-    private  VirtualResourceType virtualResourceType;
-    private PhysicalResourceEntityId physicalResourceEntityId;
-    private Objects objects;
-    private List<Node> nodeList;
-    private Node node;
-    private NodeType nodeType;
-    private List<Connection> connections;
-    private Connection connection;
-    private List<Flow> flows;
-    private Flow flow;
-    private Operations operations;
-    private  List<Operation> operationList;
-    private Operation operation;
-    private  ObjectId objectId;
-    private  NodeId nodeId;
-    private List<PhysicalHost> physicalHostList;
-    private PhysicalHost physicalHost;
-    private Property property;
-    private List<Property> propertyList;
-    private PropertyValues propertyValues;
-    private StringValue stringValue;
-    private List<StringValue> stringValueList;
-
-
-    @Before
-    public void setUp() throws Exception {
-        dataBroker = mock(DataBroker.class);
-        userId = mock(UserId.class);
-
-        vnPnMappingResults =  new ArrayList<VnPnMappingResult>();
-        vnPnMappingResult  = mock(VnPnMappingResult.class);
-        vnPnMappingResults.add(vnPnMappingResult);
-
-        virtualResourceType = VnPnMappingResult.VirtualResourceType.Vlink;
-        physicalResourceEntityId  =mock(PhysicalResourceEntityId.class);
-        objects = mock(Objects.class);
-        nodeList = new ArrayList<Node>();
-        node = mock(Node.class);
-        nodeList.add(node);
-        nodeType = mock(NodeType.class);
-        connections = new ArrayList<Connection>();
-        connection = mock(Connection.class);
-        connections.add(connection);
-        flows = new ArrayList<Flow>();
-        flow = mock(Flow.class);
-        flows.add(flow);
-        operations = mock(Operations.class);
-        operationList = new ArrayList<Operation>();
-        operation = mock(Operation.class);
-        operationList.add(operation);
-        objectId = mock(ObjectId.class);
-        nodeId = mock(NodeId.class);
-
-        physicalHostList = new ArrayList<PhysicalHost>();
-        physicalHost = mock(PhysicalHost.class);
-        physicalHostList.add(physicalHost);
-        property = mock(Property.class);
-        propertyList = new ArrayList<Property>();
-        propertyList.add(property);
-        propertyValues = mock(PropertyValues.class);
-        stringValueList = new ArrayList<StringValue>();
-        stringValue  = mock(StringValue.class);
-        stringValueList.add(stringValue);
-
-
-
-
-        //into PNC to result
-        ReadOnlyTransaction readOnlyTransaction = mock(ReadOnlyTransaction.class);
-        when(dataBroker.newReadOnlyTransaction()).thenReturn(readOnlyTransaction);
-
-        CheckedFuture physicalnodesFuture = mock(CheckedFuture.class);
-        CheckedFuture physicallinksFuture = mock(CheckedFuture.class);
-        when(readOnlyTransaction.read(any(LogicalDatastoreType.class), any(InstanceIdentifier.class))).thenReturn(physicalnodesFuture).thenReturn(physicallinksFuture);
-
-        //////////////////first result/////////////////////
-        PhysicalNodes physicalNodes = mock(PhysicalNodes.class);
-        Optional<PhysicalNodes> result = Optional.of(physicalNodes);
-        Assert.assertTrue(result.isPresent());
-        when(physicalnodesFuture.get()).thenReturn(result);
-
-        ///////////////////Second result///////////////////////
-        PhysicalLinks physicalLinks = mock(PhysicalLinks.class);
-        Optional<PhysicalLinks> result1 = Optional.of(physicalLinks);
-        Assert.assertTrue(result1.isPresent());
-        when(physicallinksFuture.get()).thenReturn(result1);
-
-        intentResolver = new IntentResolver(dataBroker);
-    }
-
-    @Test
-    public void testResolveIntent() throws Exception {
-
-        Class<IntentResolver> class1 = IntentResolver.class;
-
-        CheckedFuture userVnPnMappingIidFuture = mock(CheckedFuture.class);
-        CheckedFuture userFuture = mock(CheckedFuture.class);
-        CheckedFuture physicalHostsFuture = mock(CheckedFuture.class);
-
-        ReadWriteTransaction readWriteTransaction = mock(ReadWriteTransaction.class);
-        when(dataBroker.newReadWriteTransaction()).thenReturn(readWriteTransaction);
-        ReadOnlyTransaction readOnlyTransaction = mock(ReadOnlyTransaction.class);
-        when(dataBroker.newReadOnlyTransaction()).thenReturn(readOnlyTransaction);
-
-        when(readWriteTransaction.read(any(LogicalDatastoreType.class), any(InstanceIdentifier.class))).thenReturn(userVnPnMappingIidFuture).thenReturn(userFuture);
-        when(readOnlyTransaction.read(any(LogicalDatastoreType.class), any(InstanceIdentifier.class))).thenReturn(physicalHostsFuture);
-
-
-        when(userId.getValue()).thenReturn(new String("00001111-0000-0000-0000-000011112222"));
-        //////////////152  forvnComputationUnits.get(userId) into if null != vnComputationUnit
-        Map<UserId, VNComputationUnit> vnComputationUnits = new HashMap<UserId, VNComputationUnit>();
-        VNComputationUnit vnComputationUnit = mock(VNComputationUnit.class);
-        vnComputationUnits.put(userId, vnComputationUnit);
-
-        Field field1 = class1.getDeclaredField("vnComputationUnits");
-        field1.setAccessible(true);
-        field1.set(intentResolver, vnComputationUnits);//for 170
-        //into null!=vncomputionUnit
-
-        ////////////////////the result1////////////////////////
-        UserVnPnMapping userVnPnMapping = mock(UserVnPnMapping.class);
-        Optional<UserVnPnMapping> result1 = Optional.of(userVnPnMapping);
-        Assert.assertTrue(result1.isPresent());
-        when(userVnPnMappingIidFuture.get()).thenReturn(result1);
-
-        //187 into result1.is present
-        when(userVnPnMapping.getVnPnMappingResult()).thenReturn(vnPnMappingResults);
-        when(vnPnMappingResult.getVirtualResourceType()).thenReturn(virtualResourceType);
-        when(vnPnMappingResult.getPhysicalResourceEntityId()).thenReturn(physicalResourceEntityId);
-        when(vnPnMappingResult.getPhysicalResourceEntityId().getValue()).thenReturn(new String("00001111-0000-0000-0000-000011112222"));
-
-        //end of 212
-        //////////////////the result2////////////////////////////////
-        User user = mock(User.class);
-        Optional<User> result2 = Optional.of(user);
-        Assert.assertTrue(result2.isPresent());
-        when(userFuture.get()).thenReturn(result2);
-
-        ////////into null!-user.getObjects
-        when(user.getObjects()).thenReturn(objects);
-        when(user.getObjects().getNode()).thenReturn(nodeList);
-        ////////////////////1/////////////////////////////////
-        nodeType = new NodeType("host");
-        when(node.getNodeType()).thenReturn(nodeType);
-        ////////////////////into nodeMapper.resolverHosr for nodes
-        NodeMapper nodeMapper = mock(NodeMapper.class);
-        Field field2 = class1.getDeclaredField("nodeMapper");
-        field2.setAccessible(true);
-        field2.set(intentResolver, nodeMapper);//for 170
-        doNothing().when(nodeMapper).resolveHost(any(User.class), any(Node.class), any(VirtualNetwork.class), any(UserIntentVnMapping.class));
-
-        ///////////////////2//////////////////////////////
-        nodeType = new NodeType("l2-group");
-        when(node.getNodeType()).thenReturn(nodeType);
-        ////////////////////into nodeMapper.resolverHosr for nodes
-        doNothing().when(nodeMapper).resolveLayer2Group(any(User.class), any(Node.class), any(VirtualNetwork.class), any(UserIntentVnMapping.class));
-
-        //////////////////////3///////////////////////////////
-        nodeType = new NodeType("l3-group");
-        when(node.getNodeType()).thenReturn(nodeType);
-        ////////////////////into nodeMapper.resolverHosr for nodes
-        doNothing().when(nodeMapper).resolveLayer3Group(any(User.class), any(Node.class), any(VirtualNetwork.class), any(UserIntentVnMapping.class));
-
-        //////////////////////4///////////////////////////////
-        nodeType = new NodeType("ext-group");
-        when(node.getNodeType()).thenReturn(nodeType);
-        ////////////////////into nodeMapper.resolverHosr for nodes
-        when(node.getProperty()).thenReturn(propertyList);
-        PropertyName propertyName = new PropertyName("ac-info-network");
-        when(property.getPropertyName()).thenReturn(propertyName);
-        when(property.getPropertyValues()).thenReturn(propertyValues);
-        when(property.getPropertyValues().getStringValue()).thenReturn(stringValueList);
-        when(property.getPropertyValues().getStringValue().get(0).getValue()).thenReturn(new String("layer3"));
-        doNothing().when(nodeMapper).resolveExternalLayer3Group(any(User.class), any(Node.class), any(VirtualNetwork.class), any(UserIntentVnMapping.class));
-
-        //////////////////////5///////////////////////////////
-        nodeType = new NodeType("chain-group");
-        when(node.getNodeType()).thenReturn(nodeType);
-        ////////////////////into nodeMapper.resolverHosr for nodes
-        doNothing().when(nodeMapper).resolveServiceChainGroup(any(User.class), any(Node.class), any(VirtualNetwork.class), any(UserIntentVnMapping.class));
-
-        //////////////////////6///////////////////////////////
-        nodeType = new NodeType("fw");
-        when(node.getNodeType()).thenReturn(nodeType);
-        ////////////////////into nodeMapper.resolverHosr for nodes
-        doNothing().when(nodeMapper).resolveServiceFunction(any(User.class), any(Node.class), any(VirtualNetwork.class), any(UserIntentVnMapping.class));
-
-        //////////////////////6///////////////////////////////
-        nodeType = new NodeType("lb");
-        when(node.getNodeType()).thenReturn(nodeType);
-        ////////////////////into nodeMapper.resolverHosr for nodes
-        doNothing().when(nodeMapper).resolveServiceFunction(any(User.class), any(Node.class), any(VirtualNetwork.class), any(UserIntentVnMapping.class));
-
-        //////////////////////6///////////////////////////////
-        nodeType = new NodeType("cache");
-        when(node.getNodeType()).thenReturn(nodeType);
-        ////////////////////into nodeMapper.resolverHosr for nodes
-        doNothing().when(nodeMapper).resolveServiceFunction(any(User.class), any(Node.class), any(VirtualNetwork.class), any(UserIntentVnMapping.class));
-
-
-        //////////////////////connection///////////////////////////
-        when(user.getObjects().getConnection()).thenReturn(connections);
-        ConnectionMapper connectionMapper = mock(ConnectionMapper.class);
-        Field field4 = class1.getDeclaredField("connectionMapper");
-        field4.setAccessible(true);
-        field4.set(intentResolver, connectionMapper);//for 170
-        doNothing().when(connectionMapper).resolveConnection(any(User.class), any(Connection.class), any(VirtualNetwork.class), any(UserIntentVnMapping.class));
-
-        //////////////////////flow///////////////////////////
-        when(user.getObjects().getFlow()).thenReturn(flows);
-        //////////////////////operation///////////////////////////
-        when(user.getOperations()).thenReturn(operations);
-        when(user.getOperations().getOperation()).thenReturn(operationList);
-
-
-        //into operationResolver.classifyOperations
-        OperationResolver operationResolver =mock(OperationResolver.class);
-        Field field3 = class1.getDeclaredField("operationResolver");
-        field3.setAccessible(true);
-        field3.set(intentResolver, operationResolver);
-        doNothing().when(operationResolver).classifyOperations(any(User.class), any(List.class), any(List.class), any(List.class), any(List.class));
-        doNothing().when(operationResolver).resolveOperation(any(User.class), any(Operation.class), any(VirtualNetwork.class), any(UserIntentVnMapping.class));
-
-        //392vnMappingUnit
-        VNMappingUnit vnMappingUnit = mock(VNMappingUnit.class);
-        Field field5 = class1.getDeclaredField("vnMappingUnit");
-        field5.setAccessible(true);
-        field5.set(intentResolver, vnMappingUnit);//for 170
-        doNothing().when(vnMappingUnit).virtualNetworkMapping(any(VirtualNetwork.class), any(UserVnPnMapping.class), any(List.class));
-
-        intentResolver.resolveIntent(userId);
-    }
-
-    @Test
-    public void testClose() throws Exception {
-        Class<IntentResolver> class1 = IntentResolver.class;
-        PNComputationUnit pnComputationUnit = mock(PNComputationUnit.class);
-
-        VNComputationUnit vnComputationUnit  = mock(VNComputationUnit.class);
-        Map<UserId, VNComputationUnit> vnComputationUnits = new HashMap<UserId, VNComputationUnit>();
-        vnComputationUnits.put(userId,vnComputationUnit);
-
-        PNResourcesTracker pnResourcesTracker = mock(PNResourcesTracker.class);
-        VNMappingUnit vnMappingUnit = mock(VNMappingUnit.class);
-
-
-        Field field1 = class1.getDeclaredField("pnComputationUnit");
-        field1.setAccessible(true);
-        field1.set(intentResolver, pnComputationUnit);
-
-        Field field2 = class1.getDeclaredField("vnComputationUnits");
-        field2.setAccessible(true);
-        field2.set(intentResolver, vnComputationUnits);
-
-        Field field3 = class1.getDeclaredField("pnResourcesTracker");
-        field3.setAccessible(true);
-        field3.set(intentResolver, pnResourcesTracker);
-
-        Field field4 = class1.getDeclaredField("vnMappingUnit");
-        field4.setAccessible(true);
-        field4.set(intentResolver, vnMappingUnit);
-
-        intentResolver.close();
-
-    }
-}