X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=applications%2Fforwardingrules-manager%2Fsrc%2Ftest%2Fjava%2Ftest%2Fmock%2FTableFeaturesListenerTest.java;h=17114ffc92cbe623ff5f64e54deb95863c15e0af;hb=30ad18855f47e6efdbfcf599272afba6d31d489e;hp=c90d3507bde6a7f0c9453325f3848248d54275ef;hpb=d249ab7f81708d53c90c02dfca29e0083ac18b0c;p=openflowplugin.git diff --git a/applications/forwardingrules-manager/src/test/java/test/mock/TableFeaturesListenerTest.java b/applications/forwardingrules-manager/src/test/java/test/mock/TableFeaturesListenerTest.java index c90d3507bd..17114ffc92 100644 --- a/applications/forwardingrules-manager/src/test/java/test/mock/TableFeaturesListenerTest.java +++ b/applications/forwardingrules-manager/src/test/java/test/mock/TableFeaturesListenerTest.java @@ -1,4 +1,4 @@ -/** +/* * Copyright (c) 2014 Cisco Systems, Inc. and others. All rights reserved. * * This program and the accompanying materials are made available under the @@ -7,68 +7,108 @@ */ package test.mock; -import org.opendaylight.controller.md.sal.common.api.clustering.EntityOwnershipService; -import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.features.TableFeaturesKey; +import static java.util.concurrent.TimeUnit.SECONDS; +import static org.awaitility.Awaitility.await; +import static org.junit.Assert.assertEquals; -import org.opendaylight.yang.gen.v1.urn.opendaylight.table.service.rev131026.UpdateTableInput; -import test.mock.util.EntityOwnershipServiceMock; -import test.mock.util.SalTableServiceMock; -import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.features.TableFeaturesBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.features.TableFeatures; +import java.util.List; +import org.junit.After; +import org.junit.Before; import org.junit.Test; -import org.opendaylight.controller.md.sal.binding.api.WriteTransaction; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; -import org.opendaylight.controller.sal.binding.api.RpcProviderRegistry; +import org.junit.runner.RunWith; +import org.mockito.Mock; +import org.mockito.Mockito; +import org.mockito.junit.MockitoJUnitRunner; +import org.opendaylight.mdsal.binding.api.WriteTransaction; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; +import org.opendaylight.mdsal.singleton.common.api.ClusterSingletonServiceProvider; +import org.opendaylight.openflowplugin.api.openflow.FlowGroupCacheManager; +import org.opendaylight.openflowplugin.api.openflow.mastership.MastershipChangeServiceManager; +import org.opendaylight.openflowplugin.applications.frm.impl.DeviceMastershipManager; import org.opendaylight.openflowplugin.applications.frm.impl.ForwardingRulesManagerImpl; +import org.opendaylight.openflowplugin.applications.frm.recovery.OpenflowServiceRecoveryHandler; +import org.opendaylight.openflowplugin.applications.reconciliation.ReconciliationManager; +import org.opendaylight.serviceutils.srm.ServiceRecoveryRegistry; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowCapableNode; -import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.Table; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.TableKey; import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeId; import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.Nodes; import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node; import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.NodeKey; +import org.opendaylight.yang.gen.v1.urn.opendaylight.table.service.rev131026.UpdateTableInput; +import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.features.TableFeatures; +import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.features.TableFeaturesBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.features.TableFeaturesKey; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; +import org.opendaylight.yangtools.yang.common.Uint8; import test.mock.util.FRMTest; import test.mock.util.RpcProviderRegistryMock; -import java.util.List; -import static org.junit.Assert.assertEquals; +import test.mock.util.SalTableServiceMock; +@RunWith(MockitoJUnitRunner.class) public class TableFeaturesListenerTest extends FRMTest { - RpcProviderRegistry rpcProviderRegistryMock = new RpcProviderRegistryMock(); - EntityOwnershipService eos = new EntityOwnershipServiceMock(); + private ForwardingRulesManagerImpl forwardingRulesManager; + private static final NodeId NODE_ID = new NodeId("testnode:1"); + private static final NodeKey NODE_KEY = new NodeKey(NODE_ID); + RpcProviderRegistryMock rpcProviderRegistryMock = new RpcProviderRegistryMock(); + @Mock + ClusterSingletonServiceProvider clusterSingletonService; + @Mock + DeviceMastershipManager deviceMastershipManager; + @Mock + private ReconciliationManager reconciliationManager; + @Mock + private OpenflowServiceRecoveryHandler openflowServiceRecoveryHandler; + @Mock + private ServiceRecoveryRegistry serviceRecoveryRegistry; + @Mock + private MastershipChangeServiceManager mastershipChangeServiceManager; + @Mock + private FlowGroupCacheManager flowGroupCacheManager; + + @Before + public void setUp() { + forwardingRulesManager = new ForwardingRulesManagerImpl(getDataBroker(), rpcProviderRegistryMock, + rpcProviderRegistryMock, getConfig(), mastershipChangeServiceManager, clusterSingletonService, + getConfigurationService(), reconciliationManager, openflowServiceRecoveryHandler, + serviceRecoveryRegistry, flowGroupCacheManager, getRegistrationHelper()); + forwardingRulesManager.start(); + // TODO consider tests rewrite (added because of complicated access) + forwardingRulesManager.setDeviceMastershipManager(deviceMastershipManager); + Mockito.when(deviceMastershipManager.isDeviceMastered(NODE_ID)).thenReturn(true); + } + @Test - public void updateFlowTest() throws Exception { - NodeKey s1Key = new NodeKey(new NodeId("S1")); - TableKey tableKey = new TableKey((short) 2); + public void updateFlowTest() { + TableKey tableKey = new TableKey(Uint8.TWO); TableFeaturesKey tableFeaturesKey = new TableFeaturesKey(tableKey.getId()); - ForwardingRulesManagerImpl forwardingRulesManager = new ForwardingRulesManagerImpl( - getDataBroker(), - rpcProviderRegistryMock, - getConfig(), - eos); - forwardingRulesManager.start(); - addTable(tableKey, s1Key); + addTable(tableKey, NODE_KEY); - TableFeatures tableFeaturesData = new TableFeaturesBuilder().setKey(tableFeaturesKey).build(); - InstanceIdentifier tableFeaturesII = InstanceIdentifier.create(Nodes.class).child(Node.class, s1Key) - .augmentation(FlowCapableNode.class).child(Table.class, tableKey).child(TableFeatures.class, tableFeaturesKey); + TableFeatures tableFeaturesData = new TableFeaturesBuilder().withKey(tableFeaturesKey).build(); + InstanceIdentifier tableFeaturesII = InstanceIdentifier.create(Nodes.class) + .child(Node.class, NODE_KEY).augmentation(FlowCapableNode.class) + .child(TableFeatures.class, tableFeaturesKey); WriteTransaction writeTx = getDataBroker().newWriteOnlyTransaction(); writeTx.put(LogicalDatastoreType.CONFIGURATION, tableFeaturesII, tableFeaturesData); - assertCommit(writeTx.submit()); + assertCommit(writeTx.commit()); - tableFeaturesData = new TableFeaturesBuilder().setKey(tableFeaturesKey).setName("dummy name").build(); + tableFeaturesData = new TableFeaturesBuilder().withKey(tableFeaturesKey).setName("dummy name").build(); writeTx = getDataBroker().newWriteOnlyTransaction(); writeTx.put(LogicalDatastoreType.CONFIGURATION, tableFeaturesII, tableFeaturesData); - assertCommit(writeTx.submit()); + assertCommit(writeTx.commit()); SalTableServiceMock salTableServiceMock = (SalTableServiceMock) forwardingRulesManager.getSalTableService(); + await().atMost(10, SECONDS).until(() -> salTableServiceMock.getUpdateTableInput().size() == 1); List updateTableInputs = salTableServiceMock.getUpdateTableInput(); assertEquals(1, updateTableInputs.size()); assertEquals("DOM-0", updateTableInputs.get(0).getTransactionUri().getValue()); + } + @After + public void tearDown() throws Exception { forwardingRulesManager.close(); } }