From c0aeaf0119f622023fbf00b8d122b1a7c3bffae9 Mon Sep 17 00:00:00 2001 From: Vladimir Lavor Date: Wed, 20 Jul 2016 14:17:10 +0200 Subject: [PATCH] fixed unreliable unit test in ios-xe Change-Id: I0d8ff7ed1fbf9aab7496f4670993c594dfb25da7 Signed-off-by: Vladimir Lavor --- .../impl/manager/NodeManager.java | 49 ++++++++----------- .../impl/manager/NodeManagerTest.java | 13 +++-- 2 files changed, 26 insertions(+), 36 deletions(-) diff --git a/renderers/ios-xe/src/main/java/org/opendaylight/groupbasedpolicy/renderer/ios_xe_provider/impl/manager/NodeManager.java b/renderers/ios-xe/src/main/java/org/opendaylight/groupbasedpolicy/renderer/ios_xe_provider/impl/manager/NodeManager.java index 5cb5a782d..406ab5c53 100644 --- a/renderers/ios-xe/src/main/java/org/opendaylight/groupbasedpolicy/renderer/ios_xe_provider/impl/manager/NodeManager.java +++ b/renderers/ios-xe/src/main/java/org/opendaylight/groupbasedpolicy/renderer/ios_xe_provider/impl/manager/NodeManager.java @@ -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 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 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, ReadFailedException> submitFuture = + transaction.read(LogicalDatastoreType.CONFIGURATION, nodeIid); + transaction.close(); try { - CheckedFuture, ReadFailedException> submitFuture = - transaction.read(LogicalDatastoreType.CONFIGURATION, nodeIid); - Optional 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 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; } diff --git a/renderers/ios-xe/src/test/java/org/opendaylight/groupbasedpolicy/renderer/ios_xe_provider/impl/manager/NodeManagerTest.java b/renderers/ios-xe/src/test/java/org/opendaylight/groupbasedpolicy/renderer/ios_xe_provider/impl/manager/NodeManagerTest.java index 5d27c53ac..ec9ded669 100644 --- a/renderers/ios-xe/src/test/java/org/opendaylight/groupbasedpolicy/renderer/ios_xe_provider/impl/manager/NodeManagerTest.java +++ b/renderers/ios-xe/src/test/java/org/opendaylight/groupbasedpolicy/renderer/ios_xe_provider/impl/manager/NodeManagerTest.java @@ -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 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); } -- 2.36.6