NETVIRT-1630 migrate to md-sal APIs
[netvirt.git] / elanmanager / impl / src / test / java / org / opendaylight / netvirt / elanmanager / tests / ElanServiceTestModule.java
index ff586b9989b0773d0807a9bdd1b88c60daed6086..9ce65d924ebc4536842fda6efe1f4a5c687f3e7c 100644 (file)
@@ -8,25 +8,39 @@
 package org.opendaylight.netvirt.elanmanager.tests;
 
 import static org.mockito.Mockito.CALLS_REAL_METHODS;
+import static org.mockito.Mockito.mock;
 
+import com.google.common.util.concurrent.ListeningExecutorService;
+import com.google.common.util.concurrent.MoreExecutors;
+import java.util.Optional;
+import java.util.concurrent.Executors;
 import org.mockito.Mockito;
-import org.opendaylight.controller.md.sal.binding.api.DataBroker;
-import org.opendaylight.controller.md.sal.binding.test.DataBrokerTestModule;
 import org.opendaylight.daexim.DataImportBootReady;
 import org.opendaylight.genius.datastoreutils.SingleTransactionDataBroker;
 import org.opendaylight.genius.interfacemanager.commons.InterfaceManagerCommonUtils;
 import org.opendaylight.genius.interfacemanager.commons.InterfaceMetaUtils;
 import org.opendaylight.genius.interfacemanager.interfaces.IInterfaceManager;
 import org.opendaylight.genius.interfacemanager.renderer.ovs.utilities.BatchingUtils;
+import org.opendaylight.genius.itm.api.IITMProvider;
 import org.opendaylight.genius.lockmanager.impl.LockManagerServiceImpl;
 import org.opendaylight.genius.mdsalutil.interfaces.IMdsalApiManager;
 import org.opendaylight.genius.mdsalutil.internal.MDSALManager;
 import org.opendaylight.genius.testutils.TestInterfaceManager;
+import org.opendaylight.genius.testutils.TestItmProvider;
 import org.opendaylight.genius.testutils.itm.ItmRpcTestImpl;
+import org.opendaylight.genius.utils.hwvtep.HwvtepNodeHACache;
+import org.opendaylight.genius.utils.hwvtep.internal.HwvtepNodeHACacheImpl;
 import org.opendaylight.infrautils.diagstatus.DiagStatusService;
 import org.opendaylight.infrautils.inject.guice.testutils.AbstractGuiceJsr250Module;
+import org.opendaylight.infrautils.metrics.MetricProvider;
+import org.opendaylight.infrautils.metrics.testimpl.TestMetricProviderImpl;
+import org.opendaylight.mdsal.binding.api.DataBroker;
+import org.opendaylight.mdsal.binding.dom.adapter.test.AbstractBaseDataBrokerTest;
+import org.opendaylight.mdsal.binding.dom.adapter.test.AbstractDataBrokerTestCustomizer;
 import org.opendaylight.mdsal.eos.binding.api.EntityOwnershipService;
+import org.opendaylight.mdsal.eos.common.api.EntityOwnershipState;
 import org.opendaylight.netvirt.bgpmanager.api.IBgpManager;
+import org.opendaylight.netvirt.cache.impl.l2gw.L2GatewayCacheImpl;
 import org.opendaylight.netvirt.elan.internal.ElanServiceProvider;
 import org.opendaylight.netvirt.elanmanager.api.IElanService;
 import org.opendaylight.netvirt.elanmanager.tests.utils.BgpManagerTestImpl;
@@ -34,10 +48,12 @@ import org.opendaylight.netvirt.elanmanager.tests.utils.ElanEgressActionsHelper;
 import org.opendaylight.netvirt.elanmanager.tests.utils.IdHelper;
 import org.opendaylight.netvirt.elanmanager.tests.utils.VpnManagerTestImpl;
 import org.opendaylight.netvirt.neutronvpn.NeutronvpnManagerImpl;
+import org.opendaylight.netvirt.neutronvpn.api.l2gw.L2GatewayCache;
 import org.opendaylight.netvirt.neutronvpn.interfaces.INeutronVpnManager;
 import org.opendaylight.netvirt.vpnmanager.api.IVpnManager;
-import org.opendaylight.ovsdb.utils.mdsal.utils.MdsalUtils;
+import org.opendaylight.ovsdb.utils.mdsal.utils.ControllerMdsalUtils;
 import org.opendaylight.ovsdb.utils.southbound.utils.SouthboundUtils;
+import org.opendaylight.serviceutils.srm.ServiceRecoveryRegistry;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.idmanager.rev160406.IdManagerService;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.rpcs.rev160406.OdlInterfaceRpcService;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.itm.rpcs.rev160406.ItmRpcService;
@@ -45,7 +61,6 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.lockmanager.rev16041
 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.elan.config.rev150710.ElanConfig;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.elan.config.rev150710.ElanConfigBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.packet.service.rev130709.PacketProcessingService;
-import org.ops4j.pax.cdi.api.OsgiService;
 
 
 /**
@@ -57,18 +72,38 @@ import org.ops4j.pax.cdi.api.OsgiService;
 public class ElanServiceTestModule extends AbstractGuiceJsr250Module {
 
     @Override
-    protected void configureBindings() {
-        DataBroker dataBroker = DataBrokerTestModule.dataBroker();
-        bind(EntityOwnershipService.class).toInstance(Mockito.mock(EntityOwnershipService.class));
-        bind(INeutronVpnManager.class).toInstance(Mockito.mock(NeutronvpnManagerImpl.class));
-        IVpnManager ivpnManager = Mockito.mock(VpnManagerTestImpl.class, CALLS_REAL_METHODS);
-        bind(IMdsalApiManager.class).toInstance(new MDSALManager(dataBroker,
-                Mockito.mock(PacketProcessingService.class)));
+    protected void configureBindings() throws Exception {
+        AbstractBaseDataBrokerTest test = new AbstractBaseDataBrokerTest() {
+            @Override
+            protected AbstractDataBrokerTestCustomizer createDataBrokerTestCustomizer() {
+                return new AbstractDataBrokerTestCustomizer() {
+                    @Override
+                    public ListeningExecutorService getCommitCoordinatorExecutor() {
+                        return MoreExecutors.listeningDecorator(Executors.newCachedThreadPool());
+                    }
+                };
+            }
+        };
+        test.setup();
+        DataBroker dataBroker = test.getDataBroker();
+        EntityOwnershipService mockedEntityOwnershipService = mock(EntityOwnershipService.class);
+        EntityOwnershipState mockedEntityOwnershipState = EntityOwnershipState.IS_OWNER;
+        Mockito.when(mockedEntityOwnershipService.getOwnershipState(Mockito.any()))
+                .thenReturn(Optional.of(mockedEntityOwnershipState));
+        bind(EntityOwnershipService.class).toInstance(mockedEntityOwnershipService);
+        bind(L2GatewayCache.class).to(L2GatewayCacheImpl.class);
+        bind(HwvtepNodeHACache.class).to(HwvtepNodeHACacheImpl.class);
+        bind(ServiceRecoveryRegistry.class).toInstance(mock(ServiceRecoveryRegistry.class));
+        bind(INeutronVpnManager.class).toInstance(mock(NeutronvpnManagerImpl.class));
+        IVpnManager ivpnManager = mock(VpnManagerTestImpl.class, CALLS_REAL_METHODS);
+        MDSALManager mockedMdsalManager = new MDSALManager(dataBroker, mock(PacketProcessingService.class));
+        bind(IMdsalApiManager.class).toInstance(mockedMdsalManager);
 
         // Bindings for external services to "real" implementations
         bind(LockManagerService.class).to(LockManagerServiceImpl.class);
         bind(ElanConfig.class).toInstance(new ElanConfigBuilder().setIntBridgeGenMac(true)
                         .setTempSmacLearnTimeout(10).build());
+        bind(MetricProvider.class).toInstance(new TestMetricProviderImpl());
 
         // Bindings of all listeners (which are not directly referenced in the code)
         // This is required to be explicit here, because these are referenced neither from src/main nor src/test
@@ -80,40 +115,42 @@ public class ElanServiceTestModule extends AbstractGuiceJsr250Module {
 
         // Bindings to test infra (fakes & mocks)
 
-        TestInterfaceManager obj = TestInterfaceManager.newInstance(dataBroker);
+        TestInterfaceManager testInterfaceManager = TestInterfaceManager.newInstance(dataBroker);
+        IITMProvider testItmProvider = TestItmProvider.newInstance();
         ItmRpcService itmRpcService = new ItmRpcTestImpl();
 
         bind(DataBroker.class).toInstance(dataBroker);
-        bind(DataBroker.class).annotatedWith(OsgiService.class).toInstance(dataBroker);
-        bind(IdManagerService.class).toInstance(Mockito.mock(IdHelper.class,  CALLS_REAL_METHODS));
-        bind(IInterfaceManager.class).toInstance(obj);
-        bind(TestInterfaceManager.class).toInstance(obj);
+        bind(IdManagerService.class).toInstance(mock(IdHelper.class,  CALLS_REAL_METHODS));
+        bind(IInterfaceManager.class).toInstance(testInterfaceManager);
+        bind(TestInterfaceManager.class).toInstance(testInterfaceManager);
+        bind(IITMProvider.class).toInstance(testItmProvider);
         InterfaceMetaUtils interfaceMetaUtils = new InterfaceMetaUtils(dataBroker,
-                Mockito.mock(IdHelper.class,  CALLS_REAL_METHODS),
-                Mockito.mock(BatchingUtils.class));
+                mock(IdHelper.class,  CALLS_REAL_METHODS),
+                mock(BatchingUtils.class));
 
         InterfaceManagerCommonUtils interfaceManagerCommonUtils = new InterfaceManagerCommonUtils(
                 dataBroker,
-                new MDSALManager(dataBroker, Mockito.mock(PacketProcessingService.class)),
-                Mockito.mock(IdHelper.class,  CALLS_REAL_METHODS),
+                mockedMdsalManager,
+                mock(IdHelper.class,  CALLS_REAL_METHODS),
                 interfaceMetaUtils,
-                Mockito.mock(BatchingUtils.class));
+                mock(BatchingUtils.class));
 
-        bind(OdlInterfaceRpcService.class).toInstance(ElanEgressActionsHelper.newInstance(interfaceManagerCommonUtils));
+
+        bind(OdlInterfaceRpcService.class).toInstance(ElanEgressActionsHelper.newInstance(interfaceManagerCommonUtils,
+                testInterfaceManager));
         SingleTransactionDataBroker singleTransactionDataBroker = new SingleTransactionDataBroker(dataBroker);
         bind(SingleTransactionDataBroker.class).toInstance(singleTransactionDataBroker);
         IBgpManager ibgpManager = BgpManagerTestImpl.newInstance(singleTransactionDataBroker);
         bind(ItmRpcService.class).toInstance(itmRpcService);
         bind(ItmRpcTestImpl.class).toInstance((ItmRpcTestImpl)itmRpcService);
-        bind(DataImportBootReady.class).annotatedWith(OsgiService.class).toInstance(new DataImportBootReady() {});
-        bind(DiagStatusService.class).toInstance(Mockito.mock(DiagStatusService.class));
+        bind(DataImportBootReady.class).toInstance(new DataImportBootReady() {});
+        bind(DiagStatusService.class).toInstance(mock(DiagStatusService.class));
         bind(IVpnManager.class).toInstance(ivpnManager);
         bind(IBgpManager.class).toInstance(ibgpManager);
-        bind(DataImportBootReady.class).toInstance(new DataImportBootReady() {});
         bind(IElanService.class).to(ElanServiceProvider.class);
 
-        MdsalUtils mdsalUtils = new MdsalUtils(dataBroker);
-        bind(MdsalUtils.class).toInstance(mdsalUtils);
+        ControllerMdsalUtils mdsalUtils = new ControllerMdsalUtils(dataBroker);
+        bind(ControllerMdsalUtils.class).toInstance(mdsalUtils);
         bind(SouthboundUtils.class).toInstance(new SouthboundUtils(mdsalUtils));
     }
 }