From: Faseela K Date: Thu, 6 Apr 2017 11:02:18 +0000 (+0530) Subject: Enhancing junits of interface-manager phase5 X-Git-Tag: release/carbon~43^2 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=commitdiff_plain;h=5c98f6840e57dad85e9f215bf3a85972c7757148;hp=9be987154ae2f508d41d3ace6a5068725b5dff46;p=genius.git Enhancing junits of interface-manager phase5 Adding tests for southbound port and switch updates Change-Id: I93207e9309dfa685c7bd7a8998b2cfb56e6c6345 Signed-off-by: Faseela K --- diff --git a/interfacemanager/interfacemanager-impl/src/test/java/org/opendaylight/genius/interfacemanager/test/InterfaceManagerConfigurationTest.java b/interfacemanager/interfacemanager-impl/src/test/java/org/opendaylight/genius/interfacemanager/test/InterfaceManagerConfigurationTest.java index 375042e78..fdab4127f 100644 --- a/interfacemanager/interfacemanager-impl/src/test/java/org/opendaylight/genius/interfacemanager/test/InterfaceManagerConfigurationTest.java +++ b/interfacemanager/interfacemanager-impl/src/test/java/org/opendaylight/genius/interfacemanager/test/InterfaceManagerConfigurationTest.java @@ -9,10 +9,14 @@ package org.opendaylight.genius.interfacemanager.test; import static org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType.CONFIGURATION; import static org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType.OPERATIONAL; +import static org.opendaylight.genius.interfacemanager.test.InterfaceManagerTestUtil.DPN_ID_1; +import static org.opendaylight.genius.interfacemanager.test.InterfaceManagerTestUtil.DPN_ID_2; import static org.opendaylight.genius.interfacemanager.test.InterfaceManagerTestUtil.INTERFACE_NAME; import static org.opendaylight.genius.interfacemanager.test.InterfaceManagerTestUtil.PARENT_INTERFACE; import static org.opendaylight.genius.interfacemanager.test.InterfaceManagerTestUtil.TRUNK_INTERFACE_NAME; import static org.opendaylight.genius.interfacemanager.test.InterfaceManagerTestUtil.TUNNEL_INTERFACE_NAME; +import static org.opendaylight.genius.interfacemanager.test.InterfaceManagerTestUtil.waitTillOperationCompletes; + import static org.opendaylight.genius.mdsalutil.NwConstants.DEFAULT_EGRESS_SERVICE_INDEX; import static org.opendaylight.genius.mdsalutil.NwConstants.VLAN_INTERFACE_INGRESS_TABLE; import static org.opendaylight.mdsal.binding.testutils.AssertDataObjects.assertEqualBeans; @@ -32,6 +36,7 @@ import org.junit.Test; import org.junit.rules.MethodRule; import org.opendaylight.controller.md.sal.binding.api.DataBroker; import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; +import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException; import org.opendaylight.genius.datastoreutils.testutils.AsyncEventsWaiter; import org.opendaylight.genius.datastoreutils.testutils.JobCoordinatorEventsWaiter; import org.opendaylight.genius.datastoreutils.testutils.TestableDataTreeChangeListenerModule; @@ -141,15 +146,13 @@ public class InterfaceManagerConfigurationTest { public @Rule MethodRule guice = new GuiceRule(new InterfaceManagerTestModule(), new TestableDataTreeChangeListenerModule()); - private static final BigInteger DPN_ID = BigInteger.valueOf(1); - @Inject DataBroker dataBroker; @Inject OdlInterfaceRpcService odlInterfaceRpcService; @Inject JobCoordinatorEventsWaiter coordinatorEventsWaiter; @Inject AsyncEventsWaiter asyncEventsWaiter; @Before - public void start() throws InterruptedException { + public void start() throws InterruptedException, TransactionCommitFailedException { // Create the bridge and make sure it is ready setupAndAssertBridgeCreation(); } @@ -162,21 +165,21 @@ public class InterfaceManagerConfigurationTest { private void setupAndAssertBridgeDeletion() throws InterruptedException { OvsdbSouthboundTestUtil.deleteBridge(dataBroker); Thread.sleep(2000); - assertEqualBeans(InterfaceMetaUtils.getBridgeRefEntryFromOperDS(DPN_ID, dataBroker), null); + assertEqualBeans(InterfaceMetaUtils.getBridgeRefEntryFromOperDS(DPN_ID_1, dataBroker), null); } - private void setupAndAssertBridgeCreation() throws InterruptedException { + private void setupAndAssertBridgeCreation() throws InterruptedException, TransactionCommitFailedException { OvsdbSouthboundTestUtil.createBridge(dataBroker); Thread.sleep(2000); // a) Check bridgeRefEntry in cache and OperDS are same and use the // right DPN_ID - BridgeRefEntryKey bridgeRefEntryKey = new BridgeRefEntryKey(DPN_ID); + BridgeRefEntryKey bridgeRefEntryKey = new BridgeRefEntryKey(DPN_ID_1); InstanceIdentifier bridgeRefEntryIid = InterfaceMetaUtils .getBridgeRefEntryIdentifier(bridgeRefEntryKey); BridgeRefEntry bridgeRefEntry = IfmUtil.read(LogicalDatastoreType.OPERATIONAL, bridgeRefEntryIid, dataBroker) .orNull(); - assertEqualBeans(InterfaceMetaUtils.getBridgeRefEntryFromCache(DPN_ID), bridgeRefEntry); - assertEqualBeans(bridgeRefEntry.getDpid(), DPN_ID); + assertEqualBeans(InterfaceMetaUtils.getBridgeRefEntryFromCache(DPN_ID_1), bridgeRefEntry); + assertEqualBeans(bridgeRefEntry.getDpid(), DPN_ID_1); } @Test @@ -210,7 +213,7 @@ public class InterfaceManagerConfigurationTest { IfmUtil.buildStateInterfaceId(INTERFACE_NAME)).checkedGet().get(); assertEqualBeans(ExpectedInterfaceState.newInterfaceState(ifaceState.getIfIndex(), - INTERFACE_NAME, Interface.OperStatus.Up, L2vlan.class), ifaceState); + INTERFACE_NAME, Interface.OperStatus.Up, L2vlan.class, DPN_ID_1.toString()), ifaceState); // b) check if lport-tag to interface mapping is created @@ -245,7 +248,7 @@ public class InterfaceManagerConfigurationTest { // Test all RPCs related to vlan-interfaces checkVlanRpcs(); - //Update test + //Update config test // i) vlan interface admin-state updated InterfaceManagerTestUtil.updateInterfaceAdminState(dataBroker, INTERFACE_NAME, false); @@ -255,13 +258,38 @@ public class InterfaceManagerConfigurationTest { ifaceState = dataBroker.newReadOnlyTransaction().read(OPERATIONAL, IfmUtil.buildStateInterfaceId(INTERFACE_NAME)).checkedGet().get(); assertEqualBeans(ExpectedInterfaceState.newInterfaceState(ifaceState.getIfIndex(), INTERFACE_NAME, Interface - .OperStatus.Down, L2vlan.class), ifaceState); - + .OperStatus.Down, L2vlan.class, DPN_ID_1.toString()), ifaceState); // Restore the opState back to UP for proceeding with further tests InterfaceManagerTestUtil.updateInterfaceAdminState(dataBroker, INTERFACE_NAME, true); - InterfaceManagerTestUtil.waitTillOperationCompletes(coordinatorEventsWaiter, asyncEventsWaiter); + + + //state modification tests + // 1. Make the operational state of port as DOWN + InterfaceManagerTestUtil.updateFlowCapableNodeConnectorState(dataBroker, PARENT_INTERFACE, L2vlan.class, false); + waitTillOperationCompletes(coordinatorEventsWaiter, asyncEventsWaiter); + Thread.sleep(3000); + ifaceState = dataBroker.newReadOnlyTransaction().read(OPERATIONAL, + IfmUtil.buildStateInterfaceId(INTERFACE_NAME)).checkedGet().get(); + // Verify if operational/ietf-interface-state is marked down + assertEqualBeans(ExpectedInterfaceState.newInterfaceState(ifaceState.getIfIndex(), + INTERFACE_NAME, Interface.OperStatus.Down, L2vlan.class, DPN_ID_1.toString()), ifaceState); + + // 4. Delete the southbound OF port + InterfaceManagerTestUtil.removeFlowCapableNodeConnectorState(dataBroker, L2vlan.class); + waitTillOperationCompletes(coordinatorEventsWaiter, asyncEventsWaiter); + + // Verify if interfaces are deleted from oper/ietf-interfaces-state + Assert.assertEquals(Optional.absent(), dataBroker.newReadOnlyTransaction().read(OPERATIONAL, + IfmUtil.buildStateInterfaceId(PARENT_INTERFACE)).get()); + Assert.assertEquals(Optional.absent(), dataBroker.newReadOnlyTransaction().read(OPERATIONAL, + IfmUtil.buildStateInterfaceId(INTERFACE_NAME)).get()); + + // 3. Re-create the OF port to proceeed with vlan-member tests + InterfaceManagerTestUtil.createFlowCapableNodeConnector(dataBroker, PARENT_INTERFACE, null); + waitTillOperationCompletes(coordinatorEventsWaiter, asyncEventsWaiter); + testVlanMemberInterface(); //Delete test @@ -290,6 +318,19 @@ public class InterfaceManagerConfigurationTest { @Test public void newTunnelInterface() throws Exception { + + // 3. Update DPN-ID of the bridge + OvsdbSouthboundTestUtil.updateBridge(dataBroker, "00:00:00:00:00:00:00:02"); + waitTillOperationCompletes(coordinatorEventsWaiter, asyncEventsWaiter); + BridgeRefEntryKey bridgeRefEntryKey = new BridgeRefEntryKey(DPN_ID_2); + InstanceIdentifier bridgeRefEntryIid = InterfaceMetaUtils + .getBridgeRefEntryIdentifier(bridgeRefEntryKey); + // Verify if DPN-ID is updated in corresponding DS and cache + BridgeRefEntry bridgeRefEntry = IfmUtil.read(LogicalDatastoreType.OPERATIONAL, bridgeRefEntryIid, dataBroker) + .orNull(); + assertEqualBeans(InterfaceMetaUtils.getBridgeRefEntryFromCache(DPN_ID_2), bridgeRefEntry); + + // 1. Given // 2. When // i) dpn-id specified above configuration comes in @@ -297,14 +338,14 @@ public class InterfaceManagerConfigurationTest { // ii) Vlan interface written to config/ietf-interfaces DS and // corresponding parent-interface is not present // in operational/ietf-interface-state - ParentRefs parentRefs = new ParentRefsBuilder().setDatapathNodeIdentifier(DPN_ID).build(); + ParentRefs parentRefs = new ParentRefsBuilder().setDatapathNodeIdentifier(DPN_ID_2).build(); InterfaceManagerTestUtil.putInterfaceConfig(dataBroker, TUNNEL_INTERFACE_NAME, parentRefs, Tunnel.class); Thread.sleep(5000); // 3. Then // a) check expected bridge-interface mapping in // odl-interface-meta/config/bridge-interface-info was created - BridgeEntryKey bridgeEntryKey = new BridgeEntryKey(DPN_ID); + BridgeEntryKey bridgeEntryKey = new BridgeEntryKey(DPN_ID_2); BridgeInterfaceEntryKey bridgeInterfaceEntryKey = new BridgeInterfaceEntryKey(TUNNEL_INTERFACE_NAME); InstanceIdentifier bridgeInterfaceEntryIid = InterfaceMetaUtils .getBridgeInterfaceEntryIdentifier(bridgeEntryKey, bridgeInterfaceEntryKey); @@ -327,7 +368,8 @@ public class InterfaceManagerConfigurationTest { // When termination end point is populated in network-topology OvsdbSouthboundTestUtil.createTerminationPoint(dataBroker, TUNNEL_INTERFACE_NAME, InterfaceTypeVxlan.class); InterfaceManagerTestUtil.createFlowCapableNodeConnector(dataBroker, TUNNEL_INTERFACE_NAME, Tunnel.class); - Thread.sleep(5000); + waitTillOperationCompletes(coordinatorEventsWaiter, asyncEventsWaiter); + Thread.sleep(3000); // Then // a) check if operational/ietf-interfaces-state is populated for the tunnel interface @@ -336,7 +378,7 @@ public class InterfaceManagerConfigurationTest { dataBroker.newReadOnlyTransaction().read(OPERATIONAL, IfmUtil.buildStateInterfaceId(TUNNEL_INTERFACE_NAME)).checkedGet().get(); assertEqualBeans(ExpectedInterfaceState.newInterfaceState(ifaceState.getIfIndex(), - TUNNEL_INTERFACE_NAME, Interface.OperStatus.Up, Tunnel.class), ifaceState); + TUNNEL_INTERFACE_NAME, Interface.OperStatus.Up, Tunnel.class, DPN_ID_2.toString()), ifaceState); // Test all RPCs related to tunnel interfaces checkTunnelRpcs(); @@ -349,6 +391,53 @@ public class InterfaceManagerConfigurationTest { assertEqualBeans(ExpectedTerminationPoint.newBfdEnabledTerminationPoint(), dataBroker.newReadOnlyTransaction().read(CONFIGURATION, tpIid).checkedGet().get()); + //state modification tests + // 1. Make the operational state of port as DOWN + InterfaceManagerTestUtil.updateFlowCapableNodeConnectorState(dataBroker, TUNNEL_INTERFACE_NAME, Tunnel + .class, false); + waitTillOperationCompletes(coordinatorEventsWaiter, asyncEventsWaiter); + + ifaceState = dataBroker.newReadOnlyTransaction().read(OPERATIONAL, + IfmUtil.buildStateInterfaceId(TUNNEL_INTERFACE_NAME)).checkedGet().get(); + // Verify if operational/ietf-interface-state is still up + assertEqualBeans(ExpectedInterfaceState.newInterfaceState(ifaceState.getIfIndex(), + TUNNEL_INTERFACE_NAME, Interface.OperStatus.Up, Tunnel.class, DPN_ID_2.toString()), ifaceState); + + // 2. Make BFD staus of tunnel port as down + OvsdbSouthboundTestUtil.updateTerminationPoint(dataBroker, TUNNEL_INTERFACE_NAME, InterfaceTypeVxlan.class); + waitTillOperationCompletes(coordinatorEventsWaiter, asyncEventsWaiter); + + ifaceState = dataBroker.newReadOnlyTransaction().read(OPERATIONAL, + IfmUtil.buildStateInterfaceId(TUNNEL_INTERFACE_NAME)).checkedGet().get(); + // Verify if operational/ietf-interface-state is marked down + assertEqualBeans(ExpectedInterfaceState.newInterfaceState(ifaceState.getIfIndex(), + TUNNEL_INTERFACE_NAME, Interface.OperStatus.Down, Tunnel.class, DPN_ID_2.toString()), ifaceState); + + + // 2. Delete the Node + InterfaceManagerTestUtil.removeNode(dataBroker); + waitTillOperationCompletes(coordinatorEventsWaiter, asyncEventsWaiter); + ifaceState = dataBroker.newReadOnlyTransaction().read(OPERATIONAL, + IfmUtil.buildStateInterfaceId(TUNNEL_INTERFACE_NAME)).checkedGet().get(); + // Verify if operational/ietf-interface-state is marked unknown + assertEqualBeans(ExpectedInterfaceState.newInterfaceState(ifaceState.getIfIndex(), + TUNNEL_INTERFACE_NAME, Interface.OperStatus.Unknown, Tunnel.class, DPN_ID_2.toString()), ifaceState); + + // Re-create port to proceed with further tests + InterfaceManagerTestUtil.createFlowCapableNodeConnector(dataBroker, TUNNEL_INTERFACE_NAME, Tunnel.class); + waitTillOperationCompletes(coordinatorEventsWaiter, asyncEventsWaiter); + + + // 2. Delete the OF port + InterfaceManagerTestUtil.removeFlowCapableNodeConnectorState(dataBroker, Tunnel.class); + waitTillOperationCompletes(coordinatorEventsWaiter, asyncEventsWaiter); + + // Verify if operational-states are deleted + Assert.assertEquals(Optional.absent(), dataBroker.newReadOnlyTransaction().read(OPERATIONAL, + IfmUtil.buildStateInterfaceId(TUNNEL_INTERFACE_NAME)).get()); + Assert.assertEquals(Optional.absent(), dataBroker.newReadOnlyTransaction().read(OPERATIONAL, + IfmUtil.buildStateInterfaceId(TUNNEL_INTERFACE_NAME)).get()); + // Delete test // iii) tunnel interface is deleted from config/ietf-interfaces InterfaceManagerTestUtil.deleteInterfaceConfig(dataBroker, TUNNEL_INTERFACE_NAME); @@ -375,7 +464,7 @@ public class InterfaceManagerConfigurationTest { //2. Test interface list fetching from dpnId GetDpnInterfaceListInput dpnInterfaceListInput = new GetDpnInterfaceListInputBuilder() - .setDpid(DPN_ID).build(); + .setDpid(DPN_ID_1).build(); Future> dpnInterfaceListOutput = odlInterfaceRpcService .getDpnInterfaceList(dpnInterfaceListInput); List expectedDpnInterfaceList = new ArrayList(DpnInterfaceListOutput.newDpnInterfaceListOutput() @@ -436,7 +525,8 @@ public class InterfaceManagerConfigurationTest { private void checkTunnelRpcs() throws Exception { //1. Test endpoint ip fetching for dpn-id - GetEndpointIpForDpnInput endpointIpForDpnInput = new GetEndpointIpForDpnInputBuilder().setDpid(DPN_ID).build(); + GetEndpointIpForDpnInput endpointIpForDpnInput = new GetEndpointIpForDpnInputBuilder().setDpid(DPN_ID_2) + .build(); Future> endpointIpForDpnOutput = odlInterfaceRpcService .getEndpointIpForDpn(endpointIpForDpnInput); assertEqualBeans(EndPointIpFromDpn.newEndPointIpFromDpn(), endpointIpForDpnOutput.get().getResult()); @@ -453,7 +543,7 @@ public class InterfaceManagerConfigurationTest { InterfaceManagerTestUtil.putVlanInterfaceConfig(dataBroker, TRUNK_INTERFACE_NAME, INTERFACE_NAME, IfL2vlan.L2vlanMode.TrunkMember); InterfaceManagerTestUtil.waitTillOperationCompletes(coordinatorEventsWaiter, asyncEventsWaiter); - + Thread.sleep(3000); // 3. Then // a) check expected interface-child entry mapping in odl-interface-meta/config/interface-child-info was created InstanceIdentifier interfaceChildEntryInstanceIdentifier = InterfaceMetaUtils @@ -470,7 +560,7 @@ public class InterfaceManagerConfigurationTest { dataBroker.newReadOnlyTransaction().read(OPERATIONAL, IfmUtil.buildStateInterfaceId(TRUNK_INTERFACE_NAME)).checkedGet().get(); assertEqualBeans(ExpectedInterfaceState.newInterfaceState(ifaceState.getIfIndex(), TRUNK_INTERFACE_NAME, - Interface.OperStatus.Up, L2vlan.class), ifaceState); + Interface.OperStatus.Up, L2vlan.class, DPN_ID_1.toString()), ifaceState); // b) check if lport-tag to interface mapping is created InstanceIdentifier ifIndexInterfaceInstanceIdentifier = InstanceIdentifier.builder( @@ -490,7 +580,7 @@ public class InterfaceManagerConfigurationTest { ifaceState = dataBroker.newReadOnlyTransaction().read(OPERATIONAL, IfmUtil.buildStateInterfaceId(TRUNK_INTERFACE_NAME)).checkedGet().get(); assertEqualBeans(ExpectedInterfaceState.newInterfaceState(ifaceState.getIfIndex(), TRUNK_INTERFACE_NAME, - Interface.OperStatus.Down, L2vlan.class), ifaceState); + Interface.OperStatus.Down, L2vlan.class, DPN_ID_1.toString()), ifaceState); InterfaceManagerTestUtil.deleteInterfaceConfig(dataBroker, TRUNK_INTERFACE_NAME); InterfaceManagerTestUtil.waitTillOperationCompletes(coordinatorEventsWaiter, asyncEventsWaiter); diff --git a/interfacemanager/interfacemanager-impl/src/test/java/org/opendaylight/genius/interfacemanager/test/InterfaceManagerTestUtil.java b/interfacemanager/interfacemanager-impl/src/test/java/org/opendaylight/genius/interfacemanager/test/InterfaceManagerTestUtil.java index 32761d439..f30483759 100644 --- a/interfacemanager/interfacemanager-impl/src/test/java/org/opendaylight/genius/interfacemanager/test/InterfaceManagerTestUtil.java +++ b/interfacemanager/interfacemanager-impl/src/test/java/org/opendaylight/genius/interfacemanager/test/InterfaceManagerTestUtil.java @@ -66,8 +66,11 @@ public class InterfaceManagerTestUtil { public static final String INTERFACE_NAME = "23701c04-7e58-4c65-9425-78a80d49a218"; public static final String TUNNEL_INTERFACE_NAME = "tun414a856a7a4"; public static final String TRUNK_INTERFACE_NAME = "23701c04-7e58-4c65-9425-78a80d49a219"; - public static final String DPN_ID_1 = "1"; - public static final String PORT_NO_1 = "2"; + + public static final BigInteger DPN_ID_1 = BigInteger.valueOf(1); + public static final BigInteger DPN_ID_2 = BigInteger.valueOf(2); + public static final long PORT_NO_1 = 2; + public static final TopologyId OVSDB_TOPOLOGY_ID = new TopologyId(new Uri("ovsdb:1")); public static final NodeKey NODE_KEY = new NodeKey(new NodeId("openflow:1")); @@ -104,12 +107,12 @@ public class InterfaceManagerTestUtil { static org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.node.NodeConnector - buildFlowCapableNodeConnector(NodeConnectorId ncId, String portName) { + buildFlowCapableNodeConnector(NodeConnectorId ncId, String portName, boolean isLive) { NodeConnectorBuilder ncBuilder = new NodeConnectorBuilder() .setId(ncId) .setKey(new NodeConnectorKey(ncId)); ncBuilder.addAugmentation(FlowCapableNodeConnector.class, - buildFlowCapableNodeConnector(false, true,"AA:AA:AA:AA:AA:AA", portName)); + buildFlowCapableNodeConnector(false, isLive,"AA:AA:AA:AA:AA:AA", portName)); return ncBuilder.build(); } @@ -248,13 +251,45 @@ public class InterfaceManagerTestUtil { } static void createFlowCapableNodeConnector(DataBroker dataBroker, String interfaceName, - Class ifType) + Class ifType) throws TransactionCommitFailedException { WriteTransaction tx = dataBroker.newWriteOnlyTransaction(); + BigInteger dpnId = Tunnel.class.equals(ifType) ? DPN_ID_2 : DPN_ID_1; + long portNo = Tunnel.class.equals(ifType) ? PORT_NO_1 : PORT_NO_1; + NodeConnector nodeConnector = InterfaceManagerTestUtil + .buildFlowCapableNodeConnector(buildNodeConnectorId(dpnId, portNo), interfaceName, true); + tx.put(OPERATIONAL,buildNodeConnectorInstanceIdentifier(dpnId, portNo), nodeConnector, true); + tx.submit().checkedGet(); + } + static void updateFlowCapableNodeConnectorState(DataBroker dataBroker, String interfaceName, + Class ifType, boolean isLive) + throws TransactionCommitFailedException { + WriteTransaction tx = dataBroker.newWriteOnlyTransaction(); + BigInteger dpnId = Tunnel.class.equals(ifType) ? DPN_ID_2 : DPN_ID_1; + long portNo = Tunnel.class.equals(ifType) ? PORT_NO_1 : PORT_NO_1; NodeConnector nodeConnector = InterfaceManagerTestUtil - .buildFlowCapableNodeConnector(buildNodeConnectorId(BigInteger.valueOf(1), 2), interfaceName); - tx.put(OPERATIONAL,buildNodeConnectorInstanceIdentifier(BigInteger.valueOf(1), 2), nodeConnector, true); + .buildFlowCapableNodeConnector(buildNodeConnectorId(dpnId, portNo), interfaceName, isLive); + tx.merge(OPERATIONAL,buildNodeConnectorInstanceIdentifier(dpnId, portNo), nodeConnector, true); + tx.submit().checkedGet(); + } + + static void removeFlowCapableNodeConnectorState(DataBroker dataBroker, Class ifType) + throws TransactionCommitFailedException { + WriteTransaction tx = dataBroker.newWriteOnlyTransaction(); + BigInteger dpnId = Tunnel.class.equals(ifType) ? DPN_ID_2 : DPN_ID_1; + long portNo = Tunnel.class.equals(ifType) ? PORT_NO_1 : PORT_NO_1; + tx.delete(OPERATIONAL,buildNodeConnectorInstanceIdentifier(dpnId, portNo)); + tx.submit().checkedGet(); + } + + + static void removeNode(DataBroker dataBroker) + throws TransactionCommitFailedException { + WriteTransaction tx = dataBroker.newWriteOnlyTransaction(); + InstanceIdentifier nodeInstanceIdentifier = InstanceIdentifier.builder(Nodes.class) + .child(Node.class, new NodeKey(IfmUtil.buildDpnNodeId(DPN_ID_2))).build(); + tx.delete(OPERATIONAL,nodeInstanceIdentifier); tx.submit().checkedGet(); } diff --git a/interfacemanager/interfacemanager-impl/src/test/java/org/opendaylight/genius/interfacemanager/test/OvsdbSouthboundTestUtil.java b/interfacemanager/interfacemanager-impl/src/test/java/org/opendaylight/genius/interfacemanager/test/OvsdbSouthboundTestUtil.java index 09f21cc94..87ec60096 100644 --- a/interfacemanager/interfacemanager-impl/src/test/java/org/opendaylight/genius/interfacemanager/test/OvsdbSouthboundTestUtil.java +++ b/interfacemanager/interfacemanager-impl/src/test/java/org/opendaylight/genius/interfacemanager/test/OvsdbSouthboundTestUtil.java @@ -16,10 +16,12 @@ import java.net.Inet6Address; import java.net.InetAddress; import java.net.UnknownHostException; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; import org.opendaylight.controller.md.sal.binding.api.DataBroker; 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.TransactionCommitFailedException; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IetfInetUtil; 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.Ipv6Address; @@ -53,6 +55,8 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.re import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.bridge.attributes.ControllerEntryBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.node.attributes.ConnectionInfo; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.node.attributes.ConnectionInfoBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.port._interface.attributes.InterfaceBfdStatus; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.port._interface.attributes.InterfaceBfdStatusBuilder; 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; import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.TopologyId; @@ -94,7 +98,7 @@ public class OvsdbSouthboundTestUtil { return new NodeId(uri); } - public static void createBridge(DataBroker dataBroker) { + public static void createBridge(DataBroker dataBroker) throws TransactionCommitFailedException { final OvsdbBridgeName ovsdbBridgeName = new OvsdbBridgeName("s2"); final InstanceIdentifier bridgeIid = createInstanceIdentifier("192.168.56.101", 6640, ovsdbBridgeName); final InstanceIdentifier ovsdbBridgeIid = bridgeIid.builder() @@ -109,7 +113,25 @@ public class OvsdbSouthboundTestUtil { LOG.debug("Built with the intent to store bridge data {}", bridgeCreateAugmentationBuilder.toString()); WriteTransaction tx = dataBroker.newWriteOnlyTransaction(); tx.put(LogicalDatastoreType.OPERATIONAL, ovsdbBridgeIid, bridgeCreateAugmentationBuilder.build(), true); - tx.submit(); + tx.submit().checkedGet(); + } + + public static void updateBridge(DataBroker dataBroker, String datapathId) throws TransactionCommitFailedException { + final OvsdbBridgeName ovsdbBridgeName = new OvsdbBridgeName("s2"); + final InstanceIdentifier bridgeIid = createInstanceIdentifier("192.168.56.101", 6640, ovsdbBridgeName); + final InstanceIdentifier ovsdbBridgeIid = bridgeIid.builder() + .augmentation(OvsdbBridgeAugmentation.class).build(); + final NodeId bridgeNodeId = createManagedNodeId(bridgeIid); + final NodeBuilder bridgeCreateNodeBuilder = new NodeBuilder(); + bridgeCreateNodeBuilder.setNodeId(bridgeNodeId); + OvsdbBridgeAugmentationBuilder bridgeCreateAugmentationBuilder = new OvsdbBridgeAugmentationBuilder(); + bridgeCreateAugmentationBuilder.setBridgeName(ovsdbBridgeName) + .setDatapathId(new DatapathId(datapathId)); + bridgeCreateNodeBuilder.addAugmentation(OvsdbBridgeAugmentation.class, bridgeCreateAugmentationBuilder.build()); + LOG.debug("Built with the intent to store bridge data {}", bridgeCreateAugmentationBuilder.toString()); + WriteTransaction tx = dataBroker.newWriteOnlyTransaction(); + tx.merge(LogicalDatastoreType.OPERATIONAL, ovsdbBridgeIid, bridgeCreateAugmentationBuilder.build(), true); + tx.submit().checkedGet(); } public boolean deleteBridge(final ConnectionInfo connectionInfo, final String bridgeName) { @@ -194,7 +216,8 @@ public class OvsdbSouthboundTestUtil { } public static void createTerminationPoint(DataBroker dataBroker, String interfaceName, - Class type) { + Class type) throws + TransactionCommitFailedException { final OvsdbBridgeName ovsdbBridgeName = new OvsdbBridgeName("s2"); final InstanceIdentifier bridgeIid = createInstanceIdentifier("192.168.56.101", 6640, ovsdbBridgeName); @@ -211,7 +234,33 @@ public class OvsdbSouthboundTestUtil { tpBuilder.addAugmentation(OvsdbTerminationPointAugmentation.class, tpAugmentationBuilder.build()); WriteTransaction tx = dataBroker.newWriteOnlyTransaction(); tx.put(OPERATIONAL, tpId, tpBuilder.build(), true); - tx.submit(); + tx.submit().checkedGet(); + } + + public static void updateTerminationPoint(DataBroker dataBroker, String interfaceName, + Class type) throws + TransactionCommitFailedException { + final OvsdbBridgeName ovsdbBridgeName = new OvsdbBridgeName("s2"); + final InstanceIdentifier bridgeIid = + createInstanceIdentifier("192.168.56.101", 6640, ovsdbBridgeName); + InstanceIdentifier tpId = createTerminationPointInstanceIdentifier( + InstanceIdentifier.keyOf(bridgeIid.firstIdentifierOf(Node.class)), interfaceName); + TerminationPointBuilder tpBuilder = new TerminationPointBuilder(); + tpBuilder.setKey(InstanceIdentifier.keyOf(tpId)); + OvsdbTerminationPointAugmentationBuilder tpAugmentationBuilder = new OvsdbTerminationPointAugmentationBuilder(); + + tpAugmentationBuilder.setName(interfaceName); + if (type != null) { + tpAugmentationBuilder.setInterfaceType(type); + } + List interfaceBfdStatuses = Arrays.asList(new InterfaceBfdStatusBuilder() + .setBfdStatusKey("state").setBfdStatusValue("down").build()); + + tpAugmentationBuilder.setInterfaceBfdStatus(interfaceBfdStatuses); + tpBuilder.addAugmentation(OvsdbTerminationPointAugmentation.class, tpAugmentationBuilder.build()); + WriteTransaction tx = dataBroker.newWriteOnlyTransaction(); + tx.merge(OPERATIONAL, tpId, tpBuilder.build(), true); + tx.submit().checkedGet(); } public static NodeKey createNodeKey(String ip, Integer port) { diff --git a/interfacemanager/interfacemanager-impl/src/test/java/org/opendaylight/genius/interfacemanager/test/xtend/ExpectedInterfaceState.xtend b/interfacemanager/interfacemanager-impl/src/test/java/org/opendaylight/genius/interfacemanager/test/xtend/ExpectedInterfaceState.xtend index 07946ddf0..ab39a7543 100644 --- a/interfacemanager/interfacemanager-impl/src/test/java/org/opendaylight/genius/interfacemanager/test/xtend/ExpectedInterfaceState.xtend +++ b/interfacemanager/interfacemanager-impl/src/test/java/org/opendaylight/genius/interfacemanager/test/xtend/ExpectedInterfaceState.xtend @@ -18,12 +18,12 @@ import static extension org.opendaylight.mdsal.binding.testutils.XtendBuilderExt class ExpectedInterfaceState { static def newInterfaceState(Integer lportTag, String interfaceName, OperStatus opState, - Class ifType) { + Class ifType, String dpnId) { new InterfaceBuilder >> [ adminStatus = AdminStatus.Up ifIndex = lportTag lowerLayerIf = #[ - "openflow:1:2" + "openflow:"+dpnId+":2" ] name = interfaceName operStatus = opState