X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=interfacemgr%2Finterfacemgr-impl%2Fsrc%2Ftest%2Fjava%2Forg%2Fopendaylight%2Fvpnservice%2Finterfacemgr%2Ftest%2FStateInterfaceTest.java;h=168188648eb08d924b2e10523a43f17eb9b867bb;hb=8e3be9c632b1b774191e602d8abb2a0592a9e2a8;hp=ad68fc056701583bcdaa3a70de18bff215d6a65d;hpb=e7511c47636bd684a65caf6ceca784cbd00c49bb;p=vpnservice.git diff --git a/interfacemgr/interfacemgr-impl/src/test/java/org/opendaylight/vpnservice/interfacemgr/test/StateInterfaceTest.java b/interfacemgr/interfacemgr-impl/src/test/java/org/opendaylight/vpnservice/interfacemgr/test/StateInterfaceTest.java index ad68fc05..16818864 100644 --- a/interfacemgr/interfacemgr-impl/src/test/java/org/opendaylight/vpnservice/interfacemgr/test/StateInterfaceTest.java +++ b/interfacemgr/interfacemgr-impl/src/test/java/org/opendaylight/vpnservice/interfacemgr/test/StateInterfaceTest.java @@ -24,20 +24,30 @@ import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; import org.opendaylight.vpnservice.interfacemgr.IfmConstants; import org.opendaylight.vpnservice.interfacemgr.IfmUtil; import org.opendaylight.vpnservice.interfacemgr.commons.InterfaceManagerCommonUtils; +import org.opendaylight.vpnservice.interfacemgr.commons.InterfaceMetaUtils; import org.opendaylight.vpnservice.interfacemgr.renderer.ovs.statehelpers.OvsInterfaceStateAddHelper; import org.opendaylight.vpnservice.interfacemgr.renderer.ovs.statehelpers.OvsInterfaceStateRemoveHelper; +import org.opendaylight.vpnservice.interfacemgr.renderer.ovs.statehelpers.OvsInterfaceStateUpdateHelper; +import org.opendaylight.vpnservice.mdsalutil.interfaces.IMdsalApiManager; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.iana._if.type.rev140508.L2vlan; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.Interface; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.InterfaceKey; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.state.Interface.OperStatus; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev100924.MacAddress; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowCapableNodeConnector; +import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowCapableNodeConnectorBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.flow.capable.port.StateBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeConnectorId; import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.node.NodeConnector; +import org.opendaylight.yang.gen.v1.urn.opendaylight.vpnservice.alivenessmonitor.rev150629.AlivenessMonitorService; import org.opendaylight.yang.gen.v1.urn.opendaylight.vpnservice.idmanager.rev150403.*; import org.opendaylight.yang.gen.v1.urn.opendaylight.vpnservice.interfacemgr.meta.rev151007.IfIndexesInterfaceMap; import org.opendaylight.yang.gen.v1.urn.opendaylight.vpnservice.interfacemgr.meta.rev151007._if.indexes._interface.map.IfIndexInterface; import org.opendaylight.yang.gen.v1.urn.opendaylight.vpnservice.interfacemgr.meta.rev151007._if.indexes._interface.map.IfIndexInterfaceKey; -import org.opendaylight.yang.gen.v1.urn.opendaylight.vpnservice.interfacemgr.meta.rev151007.bridge._interface.info.BridgeEntry; -import org.opendaylight.yang.gen.v1.urn.opendaylight.vpnservice.interfacemgr.rev150331.TunnelTypeGre; +import org.opendaylight.yang.gen.v1.urn.opendaylight.vpnservice.interfacemgr.meta.rev151007._interface.child.info.InterfaceParentEntry; +import org.opendaylight.yang.gen.v1.urn.opendaylight.vpnservice.interfacemgr.meta.rev151007._interface.child.info.InterfaceParentEntryBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.vpnservice.interfacemgr.meta.rev151007._interface.child.info.InterfaceParentEntryKey; +import org.opendaylight.yang.gen.v1.urn.opendaylight.vpnservice.interfacemgr.meta.rev151007._interface.child.info._interface.parent.entry.InterfaceChildEntry; import org.opendaylight.yangtools.concepts.ListenerRegistration; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; import org.opendaylight.yangtools.yang.common.RpcResult; @@ -58,24 +68,29 @@ public class StateInterfaceTest { NodeConnectorId nodeConnectorId = null; NodeConnector nodeConnector = null; FlowCapableNodeConnector fcNodeConnectorNew = null; - Interface interfaceEnabled = null; - Interface interfaceDisabled = null; + Interface vlanInterfaceEnabled = null; + Interface vlanInterfaceDisabled = null; + InterfaceParentEntryKey interfaceParentEntryKey = null; IfIndexInterface IfindexInterface = null; - InstanceIdentifier bridgeEntryIid = null; InstanceIdentifier interfaceInstanceIdentifier = null; InstanceIdentifier fcNodeConnectorId = null; InstanceIdentifier ifIndexId =null; InstanceIdentifier interfaceStateIdentifier = null; + InstanceIdentifier interfaceParentEntryIdentifier = null; org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.state.Interface stateInterface; + InterfaceParentEntry interfaceParentEntry; @Mock DataBroker dataBroker; @Mock IdManagerService idManager; + @Mock IMdsalApiManager mdsalManager; @Mock ListenerRegistration dataChangeListenerRegistration; @Mock ReadOnlyTransaction mockReadTx; @Mock WriteTransaction mockWriteTx; + @Mock AlivenessMonitorService alivenessMonitorService; OvsInterfaceStateAddHelper addHelper; OvsInterfaceStateRemoveHelper removeHelper; + OvsInterfaceStateUpdateHelper updateHelper; @Before public void setUp() throws Exception { @@ -93,30 +108,36 @@ public class StateInterfaceTest { nodeConnector = InterfaceManagerTestUtil.buildFlowCapableNodeConnector(nodeConnectorId); fcNodeConnectorNew = nodeConnector.getAugmentation(FlowCapableNodeConnector.class); fcNodeConnectorId = InterfaceManagerTestUtil.getFlowCapableNodeConnectorIdentifier("openflow:1", nodeConnectorId); - IfindexInterface = InterfaceManagerTestUtil.buildIfIndexInterface(100,InterfaceManagerTestUtil.interfaceName); + IfindexInterface = InterfaceManagerTestUtil.buildIfIndexInterface(100, InterfaceManagerTestUtil.interfaceName); ifIndexId = InstanceIdentifier.builder(IfIndexesInterfaceMap.class).child(IfIndexInterface.class, new IfIndexInterfaceKey(100)).build(); interfaceInstanceIdentifier = InterfaceManagerCommonUtils.getInterfaceIdentifier(new InterfaceKey(InterfaceManagerTestUtil.interfaceName)); interfaceStateIdentifier = IfmUtil.buildStateInterfaceId(InterfaceManagerTestUtil.interfaceName); - interfaceEnabled = InterfaceManagerTestUtil.buildTunnelInterface(dpId, InterfaceManagerTestUtil.interfaceName, "Test Interface1", true, TunnelTypeGre.class - , "192.168.56.101", "192.168.56.102"); - interfaceDisabled = InterfaceManagerTestUtil.buildTunnelInterface(dpId, InterfaceManagerTestUtil.interfaceName, "Test Interface1", false, TunnelTypeGre.class - , "192.168.56.101", "192.168.56.102"); + vlanInterfaceEnabled = InterfaceManagerTestUtil.buildInterface(InterfaceManagerTestUtil.interfaceName, "Test Vlan Interface1", true, L2vlan.class, BigInteger.valueOf(1)); + vlanInterfaceDisabled = InterfaceManagerTestUtil.buildInterface(InterfaceManagerTestUtil.interfaceName, "Test Vlan Interface1", false, L2vlan.class, BigInteger.valueOf(1)); + interfaceParentEntryKey = new InterfaceParentEntryKey(InterfaceManagerTestUtil.interfaceName); + interfaceParentEntryIdentifier = InterfaceMetaUtils.getInterfaceParentEntryIdentifier(interfaceParentEntryKey); org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.state.InterfaceBuilder ifaceBuilder = new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.state.InterfaceBuilder(); List lowerLayerIfList = new ArrayList<>(); lowerLayerIfList.add(nodeConnectorId.getValue()); ifaceBuilder.setOperStatus(OperStatus.Up).setAdminStatus(org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.state.Interface.AdminStatus.Up) .setPhysAddress(org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.PhysAddress.getDefaultInstance("AA:AA:AA:AA:AA:AA")) .setIfIndex(100) - .setLowerLayerIf(lowerLayerIfList); + .setLowerLayerIf(lowerLayerIfList).setType(L2vlan.class); ifaceBuilder.setKey(IfmUtil.getStateInterfaceKeyFromName(InterfaceManagerTestUtil.interfaceName)); + stateInterface = ifaceBuilder.build(); + + InterfaceParentEntryBuilder ifaceParentEntryBuilder = new InterfaceParentEntryBuilder(); + List ifaceChildEntryList= new ArrayList<>(); + interfaceParentEntry = ifaceParentEntryBuilder.setInterfaceChildEntry(ifaceChildEntryList).build(); + when(dataBroker.newReadOnlyTransaction()).thenReturn(mockReadTx); when(dataBroker.newWriteOnlyTransaction()).thenReturn(mockWriteTx); } @Test public void testAddStateInterface() { - Optional expectedInterface = Optional.of(interfaceEnabled); + Optional expectedInterface = Optional.of(vlanInterfaceEnabled); AllocateIdOutput expectedId = new AllocateIdOutputBuilder().setIdValue(Long.valueOf("100")).build(); Future> idOutputOptional = RpcResultBuilder.success(expectedId).buildFuture(); @@ -128,7 +149,8 @@ public class StateInterfaceTest { .setIdKey(InterfaceManagerTestUtil.interfaceName).build(); doReturn(idOutputOptional).when(idManager).allocateId(getIdInput); - addHelper.addState(dataBroker, idManager, nodeConnectorId, InterfaceManagerTestUtil.interfaceName, fcNodeConnectorNew); + addHelper.addState(dataBroker, idManager, mdsalManager, alivenessMonitorService, + nodeConnectorId, InterfaceManagerTestUtil.interfaceName, fcNodeConnectorNew); //Add some verifications verify(mockWriteTx).put(LogicalDatastoreType.OPERATIONAL, interfaceStateIdentifier, @@ -152,10 +174,42 @@ public class StateInterfaceTest { doReturn(Futures.immediateFuture(RpcResultBuilder.success().build())).when(idManager).releaseId(getIdInput); - removeHelper.removeState(idManager, fcNodeConnectorId, dataBroker, InterfaceManagerTestUtil.interfaceName, fcNodeConnectorNew); + removeHelper.removeState(idManager, mdsalManager, alivenessMonitorService, fcNodeConnectorId, dataBroker, InterfaceManagerTestUtil.interfaceName, fcNodeConnectorNew); verify(mockWriteTx).delete(LogicalDatastoreType.OPERATIONAL, interfaceStateIdentifier); verify(mockWriteTx).delete(LogicalDatastoreType.OPERATIONAL, ifIndexId); } + @Test + public void testUpdateStateInterface(){ + + Optional + expectedStateInterface = Optional.of(stateInterface); + OptionalexpectedParentEntry = Optional.of(interfaceParentEntry); + + doReturn(Futures.immediateCheckedFuture(expectedStateInterface)).when(mockReadTx).read( + LogicalDatastoreType.OPERATIONAL, interfaceStateIdentifier); + doReturn(Futures.immediateCheckedFuture(expectedParentEntry)).when(mockReadTx).read( + LogicalDatastoreType.CONFIGURATION, interfaceParentEntryIdentifier); + + org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.state.InterfaceBuilder ifaceBuilder = new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.state.InterfaceBuilder(); + ifaceBuilder.setAdminStatus(org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.state.Interface.AdminStatus.Up) + .setPhysAddress(org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.PhysAddress.getDefaultInstance("AA:AA:AA:AA:AA:AA")); + ifaceBuilder.setKey(IfmUtil.getStateInterfaceKeyFromName(InterfaceManagerTestUtil.interfaceName)); + + stateInterface = ifaceBuilder.build(); + + FlowCapableNodeConnectorBuilder fcNodeConnectorOldupdate = new FlowCapableNodeConnectorBuilder().setHardwareAddress(MacAddress.getDefaultInstance("AA:AA:AA:AA:AA:AB")); + FlowCapableNodeConnectorBuilder fcNodeConnectorNewupdate = new FlowCapableNodeConnectorBuilder().setHardwareAddress(MacAddress.getDefaultInstance("AA:AA:AA:AA:AA:AA")); + + StateBuilder b2 = new StateBuilder().setBlocked(true).setLinkDown(true); + StateBuilder b3 = new StateBuilder().setBlocked(false).setLinkDown(true); + + fcNodeConnectorOldupdate.setState(b2.build()); + fcNodeConnectorNewupdate.setState(b3.build()); + + updateHelper.updateState(fcNodeConnectorId, alivenessMonitorService, dataBroker, InterfaceManagerTestUtil.interfaceName, fcNodeConnectorNewupdate.build(), fcNodeConnectorOldupdate.build()); + + verify(mockWriteTx).merge(LogicalDatastoreType.OPERATIONAL,interfaceStateIdentifier,stateInterface); + } } \ No newline at end of file