fixed unreliable unit test in ios-xe 44/42144/1
authorVladimir Lavor <vlavor@cisco.com>
Wed, 20 Jul 2016 12:17:10 +0000 (14:17 +0200)
committerVladimir Lavor <vlavor@cisco.com>
Wed, 20 Jul 2016 12:17:10 +0000 (14:17 +0200)
Change-Id: I0d8ff7ed1fbf9aab7496f4670993c594dfb25da7
Signed-off-by: Vladimir Lavor <vlavor@cisco.com>
renderers/ios-xe/src/main/java/org/opendaylight/groupbasedpolicy/renderer/ios_xe_provider/impl/manager/NodeManager.java
renderers/ios-xe/src/test/java/org/opendaylight/groupbasedpolicy/renderer/ios_xe_provider/impl/manager/NodeManagerTest.java

index 5cb5a782d3b108b15cc6524e83cd08d335be1c12..406ab5c53e5c8f310220f8ad64ef87d91a23cbbf 100644 (file)
@@ -20,12 +20,15 @@ import org.opendaylight.controller.md.sal.common.api.data.ReadFailedException;
 import org.opendaylight.controller.sal.binding.api.BindingAwareBroker;
 import org.opendaylight.groupbasedpolicy.renderer.ios_xe_provider.impl.writer.NetconfTransactionCreator;
 import org.opendaylight.groupbasedpolicy.renderer.ios_xe_provider.impl.writer.NodeWriter;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Host;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4Address;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.rev151103.RendererName;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.rev151103.renderers.renderer.renderer.nodes.RendererNode;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.rev151103.renderers.renderer.renderer.nodes.RendererNodeBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.rev151103.renderers.renderer.renderer.nodes.RendererNodeKey;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev150114.NetconfNode;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev150114.NetconfNodeConnectionParameters;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev150114.NetconfNodeConnectionStatus;
 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NetworkTopology;
 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NodeId;
@@ -214,41 +217,29 @@ public class NodeManager {
         return identifier.getNodeId();
     }
 
-    String getNodeManagementIpByMountPointIid(InstanceIdentifier mountpointIid) {
+    String getNodeManagementIpByMountPointIid(InstanceIdentifier<?> mountpointIid) {
         NodeId nodeId = getNodeIdByMountpointIid(mountpointIid);
         InstanceIdentifier<Node> nodeIid = InstanceIdentifier.builder(NetworkTopology.class)
                 .child(Topology.class, new TopologyKey(new TopologyId(NodeManager.TOPOLOGY_ID)))
-                .child(Node.class, new NodeKey(nodeId)).build();
-        java.util.Optional<ReadOnlyTransaction> optionalTransaction =
-                NetconfTransactionCreator.netconfReadOnlyTransaction(dataBroker);
-        if (!optionalTransaction.isPresent()) {
-            LOG.warn("Failed to create transaction, mountpoint: {}", dataBroker);
-            return null;
-        }
-        ReadOnlyTransaction transaction = optionalTransaction.get();
+                .child(Node.class, new NodeKey(nodeId))
+                .build();
+        ReadOnlyTransaction transaction = dataBroker.newReadOnlyTransaction();
+        CheckedFuture<Optional<Node>, ReadFailedException> submitFuture =
+                transaction.read(LogicalDatastoreType.CONFIGURATION, nodeIid);
+        transaction.close();
         try {
-            CheckedFuture<Optional<Node>, ReadFailedException> submitFuture =
-                    transaction.read(LogicalDatastoreType.CONFIGURATION, nodeIid);
-            Optional<Node> optional = submitFuture.checkedGet();
-            if (optional != null && optional.isPresent()) {
-                Node node = optional.get();
-                if (node != null) {
-                    NetconfNode netconfNode = getNodeAugmentation(node);
-                    if (netconfNode != null && netconfNode.getHost() != null) {
-                        IpAddress ipAddress = netconfNode.getHost().getIpAddress();
-                        if (ipAddress != null && ipAddress.getIpv4Address() != null) {
-                            return ipAddress.getIpv4Address().getValue();
-                        }
-                        return null;
-                    }
-                }
-            } else {
-                LOG.debug("Failed to read. {}", Thread.currentThread().getStackTrace()[1]);
+            Optional<Node> nodeOptional = submitFuture.checkedGet();
+            if (nodeOptional.isPresent()) {
+                NetconfNode netconfNode = getNodeAugmentation(nodeOptional.get());
+                return java.util.Optional.ofNullable(netconfNode)
+                        .map(NetconfNodeConnectionParameters::getHost)
+                        .map(Host::getIpAddress)
+                        .map(IpAddress::getIpv4Address)
+                        .map(Ipv4Address::getValue)
+                        .orElse(null);
             }
         } catch (ReadFailedException e) {
-            LOG.warn("Read transaction failed to {} ", e);
-        } catch (Exception e) {
-            LOG.error("Failed to .. {}", e.getMessage());
+            LOG.warn("Read node failed {}", nodeId, e);
         }
         return null;
     }
index 5d27c53ac52e487e8cc528634173765e4a35b4c3..ec9ded6690a892c6b0d3fba2499db1c9e2b816b9 100644 (file)
@@ -7,6 +7,7 @@ import org.junit.Test;
 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
 import org.opendaylight.controller.md.sal.binding.api.MountPointService;
 import org.opendaylight.controller.md.sal.binding.api.ReadWriteTransaction;
+import org.opendaylight.controller.md.sal.binding.api.WriteTransaction;
 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
 import org.opendaylight.controller.md.sal.common.api.data.ReadFailedException;
 import org.opendaylight.controller.sal.binding.api.BindingAwareBroker;
@@ -262,13 +263,11 @@ public class NodeManagerTest extends CustomDataBrokerTest {
         InstanceIdentifier<Node> testNodeIid = InstanceIdentifier.builder(NetworkTopology.class)
                 .child(Topology.class, new TopologyKey(new TopologyId(TOPOLOGY_ID)))
                 .child(Node.class, new NodeKey(testNode.getNodeId())).build();
-        ReadWriteTransaction rwt = dataBroker.newReadWriteTransaction();
-        rwt.put(LogicalDatastoreType.CONFIGURATION, testNodeIid, testNode, true);
-        rwt.submit().checkedGet();
-        InstanceIdentifier mountpointIid = InstanceIdentifier.builder(NetworkTopology.class)
-                .child(Topology.class, new TopologyKey(new TopologyId(TOPOLOGY_ID)))
-                .child(Node.class, new NodeKey(NODE_NAME)).build();
-        String result = nodeManager.getNodeManagementIpByMountPointIid(mountpointIid);
+        WriteTransaction wTx = dataBroker.newWriteOnlyTransaction();
+        wTx.put(LogicalDatastoreType.CONFIGURATION, testNodeIid, testNode, true);
+        wTx.submit().checkedGet();
+
+        String result = nodeManager.getNodeManagementIpByMountPointIid(testNodeIid);
         assertEquals(IPv4_ADDRESS.getValue(), result);
     }