From 890a14f136d4ec7c828f6ef61fd1ee20339791fd Mon Sep 17 00:00:00 2001 From: Tom Pantelis Date: Wed, 15 Jun 2016 06:28:03 -0400 Subject: [PATCH] Add blueprint XML for bgp-parser-spi Added blueprint XML file, bgp-parser-spi.xml, to the spi bundle that Utilizes the new blueprint extension, "specific-reference-list" (added by https://git.opendaylight.org/gerrit/#/c/40267/), to obtain the specific list of RSVPExtensionProviderActivator OSGi service instances. The specific expected services are announced via META-INF/services/org.opendaylight.protocol.bgp.parser.spi.BGPExtensionProviderActivator resources in the provider bundles which the "specific-reference-list" extension scans so it knows which services to look for. Once all expectedservices are obtained, the RSVPExtensionProviderActivator instance List bean is created and injected into the SimpleRSVPExtensionProviderContextActivator bean instance which calls start on each. The SimpleBGPExtensionProviderContextModule was deprecated but still remains for now to provide the BGPExtensionProviderContext instance created via blueprint to the config system so it can be injected into other users. Once the other user(s) are converted to blueprint then the config yang and Module classes can be removed. Change-Id: Id41d410b449699ac3d82b3d0352ea84eb66f22ca Signed-off-by: Tom Pantelis --- .../yang/bmp/impl/AbstractBmpModuleTest.java | 65 ++++++++ .../bmp/impl/BaseBmpParserModuleTest.java | 5 +- .../bmp/impl/BmpDispatcherImplModuleTest.java | 40 +---- .../bmp/impl/BmpMonitorImplModuleTest.java | 31 +--- .../src/main/resources/initial/31-bgp.xml | 37 +---- .../config/yang/bgp/evpn/EvpnModuleTest.java | 76 ---------- .../yang/bgp/flowspec/FlowspecModuleTest.java | 80 ---------- .../unicast/LabeledUnicastModuleTest.java | 77 ---------- .../bgp/linkstate/LinkstateModuleTest.java | 141 ------------------ .../org/opendaylight/blueprint/bgp-parser.xml | 9 ++ ...mpleBGPExtensionProviderContextModule.java | 42 ++++-- ...ExtensionProviderContextModuleFactory.java | 26 +++- ...eBGPExtensionProviderContextActivator.java | 50 +++++++ .../opendaylight/blueprint/bgp-parser-spi.xml | 24 +++ .../src/main/yang/odl-bgp-parser-spi-cfg.yang | 1 + ...BGPExtensionProviderContextModuleTest.java | 63 -------- .../bgp/rib/impl/BaseBGPParserModule.java | 41 ----- .../rib/impl/BaseBGPParserModuleFactory.java | 24 --- .../src/main/yang/odl-bgp-rib-impl-cfg.yang | 12 -- .../rib/impl/AbstractRIBImplModuleTest.java | 8 +- .../bgp/rib/impl/BaseBGPParserModuleTest.java | 50 ------- .../src/main/yang/odl-bgp-rib-spi-cfg.yang | 1 + 22 files changed, 220 insertions(+), 683 deletions(-) create mode 100644 bgp/bmp-impl/src/test/java/org/opendaylight/controller/config/yang/bmp/impl/AbstractBmpModuleTest.java delete mode 100644 bgp/evpn/src/test/java/org/opendaylight/controller/config/yang/bgp/evpn/EvpnModuleTest.java delete mode 100644 bgp/flowspec/src/test/java/org/opendaylight/controller/config/yang/bgp/flowspec/FlowspecModuleTest.java delete mode 100755 bgp/labeled-unicast/src/test/java/org/opendaylight/controller/config/yang/bgp/labeled/unicast/LabeledUnicastModuleTest.java delete mode 100644 bgp/linkstate/src/test/java/org/opendaylight/controller/config/yang/bgp/linkstate/LinkstateModuleTest.java create mode 100644 bgp/parser-impl/src/main/resources/org/opendaylight/blueprint/bgp-parser.xml create mode 100644 bgp/parser-spi/src/main/java/org/opendaylight/protocol/bgp/parser/spi/pojo/SimpleBGPExtensionProviderContextActivator.java create mode 100644 bgp/parser-spi/src/main/resources/org/opendaylight/blueprint/bgp-parser-spi.xml delete mode 100644 bgp/parser-spi/src/test/java/org/opendaylight/controller/config/yang/bgp/parser/spi/SimpleBGPExtensionProviderContextModuleTest.java delete mode 100644 bgp/rib-impl/src/main/java/org/opendaylight/controller/config/yang/bgp/rib/impl/BaseBGPParserModule.java delete mode 100644 bgp/rib-impl/src/main/java/org/opendaylight/controller/config/yang/bgp/rib/impl/BaseBGPParserModuleFactory.java delete mode 100644 bgp/rib-impl/src/test/java/org/opendaylight/controller/config/yang/bgp/rib/impl/BaseBGPParserModuleTest.java diff --git a/bgp/bmp-impl/src/test/java/org/opendaylight/controller/config/yang/bmp/impl/AbstractBmpModuleTest.java b/bgp/bmp-impl/src/test/java/org/opendaylight/controller/config/yang/bmp/impl/AbstractBmpModuleTest.java new file mode 100644 index 0000000000..cb4eadc020 --- /dev/null +++ b/bgp/bmp-impl/src/test/java/org/opendaylight/controller/config/yang/bmp/impl/AbstractBmpModuleTest.java @@ -0,0 +1,65 @@ +/* + * Copyright (c) 2016 Brocade Communications Systems, Inc. and others. All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this distribution, + * and is available at http://www.eclipse.org/legal/epl-v10.html + */ +package org.opendaylight.controller.config.yang.bmp.impl; + +import static org.mockito.Matchers.any; +import static org.mockito.Matchers.anyString; +import static org.mockito.Matchers.contains; +import static org.mockito.Mockito.doAnswer; +import static org.mockito.Mockito.doReturn; +import static org.mockito.Mockito.mock; +import org.junit.Before; +import org.mockito.Mockito; +import org.mockito.invocation.InvocationOnMock; +import org.mockito.stubbing.Answer; +import org.opendaylight.controller.config.manager.impl.AbstractConfigTest; +import org.opendaylight.protocol.bgp.parser.spi.AddressFamilyRegistry; +import org.opendaylight.protocol.bgp.parser.spi.BGPExtensionProviderContext; +import org.opendaylight.protocol.bgp.parser.spi.MessageRegistry; +import org.opendaylight.protocol.bgp.parser.spi.SubsequentAddressFamilyRegistry; +import org.osgi.framework.Filter; +import org.osgi.framework.ServiceListener; +import org.osgi.framework.ServiceReference; + +/** + * Abstract base class for bmp module tests. + * + * @author Thomas Pantelis + */ +public class AbstractBmpModuleTest extends AbstractConfigTest { + @Before + public void setUp() throws Exception { + doAnswer(new Answer() { + @Override + public Filter answer(final InvocationOnMock invocation) { + final String str = invocation.getArgumentAt(0, String.class); + final Filter mockFilter = mock(Filter.class); + doReturn(str).when(mockFilter).toString(); + return mockFilter; + } + }).when(mockedContext).createFilter(anyString()); + + Mockito.doNothing().when(this.mockedContext).addServiceListener(any(ServiceListener.class), Mockito.anyString()); + Mockito.doNothing().when(this.mockedContext).removeServiceListener(any(ServiceListener.class)); + + BGPExtensionProviderContext mockContext = mock(BGPExtensionProviderContext.class); + doReturn(mock(AddressFamilyRegistry.class)).when(mockContext).getAddressFamilyRegistry(); + doReturn(mock(MessageRegistry.class)).when(mockContext).getMessageRegistry(); + doReturn(mock(SubsequentAddressFamilyRegistry.class)).when(mockContext).getSubsequentAddressFamilyRegistry(); + setupMockService(BGPExtensionProviderContext.class, mockContext); + } + + void setupMockService(final Class serviceInterface, final Object instance) throws Exception { + final ServiceReference mockServiceRef = mock(ServiceReference.class); + doReturn(new ServiceReference[]{mockServiceRef}).when(mockedContext). + getServiceReferences(anyString(), contains(serviceInterface.getName())); + doReturn(new ServiceReference[]{mockServiceRef}).when(mockedContext). + getServiceReferences(serviceInterface.getName(), null); + doReturn(instance).when(mockedContext).getService(mockServiceRef); + } +} diff --git a/bgp/bmp-impl/src/test/java/org/opendaylight/controller/config/yang/bmp/impl/BaseBmpParserModuleTest.java b/bgp/bmp-impl/src/test/java/org/opendaylight/controller/config/yang/bmp/impl/BaseBmpParserModuleTest.java index 843d7f61c5..a9ecee150b 100644 --- a/bgp/bmp-impl/src/test/java/org/opendaylight/controller/config/yang/bmp/impl/BaseBmpParserModuleTest.java +++ b/bgp/bmp-impl/src/test/java/org/opendaylight/controller/config/yang/bmp/impl/BaseBmpParserModuleTest.java @@ -12,19 +12,20 @@ import javax.management.ObjectName; import org.junit.Before; import org.junit.Test; import org.opendaylight.controller.config.api.jmx.CommitStatus; -import org.opendaylight.controller.config.manager.impl.AbstractConfigTest; import org.opendaylight.controller.config.manager.impl.factoriesresolver.HardcodedModuleFactoriesResolver; import org.opendaylight.controller.config.util.ConfigTransactionJMXClient; import org.opendaylight.controller.config.yang.bgp.parser.spi.SimpleBGPExtensionProviderContextModuleFactory; import org.opendaylight.controller.config.yang.bgp.parser.spi.SimpleBGPExtensionProviderContextModuleMXBean; -public class BaseBmpParserModuleTest extends AbstractConfigTest { +public class BaseBmpParserModuleTest extends AbstractBmpModuleTest { private static final String INSTANCE_NAME = "parser-instance-bmp"; private static final String FACTORY_NAME = BaseBmpParserModuleFactory.NAME; private static final String BGP_EXTENSION_INSTANCE_NAME = "extension-impl-bgp"; + @Override @Before public void setUp() throws Exception { + super.setUp(); super.initConfigTransactionManagerImpl(new HardcodedModuleFactoriesResolver(this.mockedContext, new BaseBmpParserModuleFactory(), new SimpleBGPExtensionProviderContextModuleFactory())); } diff --git a/bgp/bmp-impl/src/test/java/org/opendaylight/controller/config/yang/bmp/impl/BmpDispatcherImplModuleTest.java b/bgp/bmp-impl/src/test/java/org/opendaylight/controller/config/yang/bmp/impl/BmpDispatcherImplModuleTest.java index a77fe1112e..32cda8e839 100644 --- a/bgp/bmp-impl/src/test/java/org/opendaylight/controller/config/yang/bmp/impl/BmpDispatcherImplModuleTest.java +++ b/bgp/bmp-impl/src/test/java/org/opendaylight/controller/config/yang/bmp/impl/BmpDispatcherImplModuleTest.java @@ -7,12 +7,6 @@ */ package org.opendaylight.controller.config.yang.bmp.impl; -import static org.mockito.Matchers.any; -import static org.mockito.Matchers.anyString; -import static org.mockito.Matchers.contains; -import static org.mockito.Mockito.doAnswer; -import static org.mockito.Mockito.doNothing; -import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.mock; import io.netty.channel.EventLoopGroup; import io.netty.util.Timer; @@ -21,10 +15,7 @@ import javax.management.InstanceAlreadyExistsException; import javax.management.ObjectName; import org.junit.Before; import org.junit.Test; -import org.mockito.invocation.InvocationOnMock; -import org.mockito.stubbing.Answer; import org.opendaylight.controller.config.api.jmx.CommitStatus; -import org.opendaylight.controller.config.manager.impl.AbstractConfigTest; import org.opendaylight.controller.config.manager.impl.factoriesresolver.HardcodedModuleFactoriesResolver; import org.opendaylight.controller.config.util.ConfigTransactionJMXClient; import org.opendaylight.controller.config.yang.bmp.spi.SimpleBmpExtensionProviderContextModuleFactory; @@ -32,11 +23,8 @@ import org.opendaylight.controller.config.yang.bmp.spi.SimpleBmpExtensionProvide import org.opendaylight.controller.config.yang.netty.eventexecutor.GlobalEventExecutorModuleFactory; import org.opendaylight.controller.config.yang.netty.threadgroup.NettyThreadgroupModuleFactory; import org.opendaylight.controller.config.yang.netty.threadgroup.NettyThreadgroupModuleMXBean; -import org.osgi.framework.Filter; -import org.osgi.framework.ServiceListener; -import org.osgi.framework.ServiceReference; -public class BmpDispatcherImplModuleTest extends AbstractConfigTest { +public class BmpDispatcherImplModuleTest extends AbstractBmpModuleTest { private static final String INSTANCE_NAME = "bmp-message-fct"; private static final String FACTORY_NAME = BmpDispatcherImplModuleFactory.NAME; @@ -44,35 +32,19 @@ public class BmpDispatcherImplModuleTest extends AbstractConfigTest { private static final String BOSS_TG_INSTANCE_NAME = "boss-threadgroup-impl"; private static final String WORKER_TG_INSTANCE_NAME = "worker-threadgroup-impl"; + @Override @Before public void setUp() throws Exception { + super.setUp(); super.initConfigTransactionManagerImpl(new HardcodedModuleFactoriesResolver(this.mockedContext, new BmpDispatcherImplModuleFactory(), new NettyThreadgroupModuleFactory(), new GlobalEventExecutorModuleFactory(), new SimpleBmpExtensionProviderContextModuleFactory())); - doAnswer(new Answer() { - @Override - public Filter answer(InvocationOnMock invocation) { - String str = invocation.getArgumentAt(0, String.class); - Filter mockFilter = mock(Filter.class); - doReturn(str).when(mockFilter).toString(); - return mockFilter; - } - }).when(mockedContext).createFilter(anyString()); - doNothing().when(mockedContext).addServiceListener(any(ServiceListener.class), anyString()); - - setupMockService(EventLoopGroup.class); - setupMockService(Timer.class); - setupMockService(EventExecutor.class); - } - - private void setupMockService(Class serviceInterface) throws Exception { - ServiceReference mockServiceRef = mock(ServiceReference.class); - doReturn(new ServiceReference[]{mockServiceRef}).when(mockedContext). - getServiceReferences(anyString(), contains(serviceInterface.getName())); - doReturn(mock(serviceInterface)).when(mockedContext).getService(mockServiceRef); + setupMockService(EventLoopGroup.class, mock(EventLoopGroup.class)); + setupMockService(Timer.class, mock(Timer.class)); + setupMockService(EventExecutor.class, mock(EventExecutor.class)); } @Test diff --git a/bgp/bmp-impl/src/test/java/org/opendaylight/controller/config/yang/bmp/impl/BmpMonitorImplModuleTest.java b/bgp/bmp-impl/src/test/java/org/opendaylight/controller/config/yang/bmp/impl/BmpMonitorImplModuleTest.java index a9f1595f28..c03cafa238 100644 --- a/bgp/bmp-impl/src/test/java/org/opendaylight/controller/config/yang/bmp/impl/BmpMonitorImplModuleTest.java +++ b/bgp/bmp-impl/src/test/java/org/opendaylight/controller/config/yang/bmp/impl/BmpMonitorImplModuleTest.java @@ -8,8 +8,6 @@ package org.opendaylight.controller.config.yang.bmp.impl; import static org.mockito.Matchers.any; -import static org.mockito.Matchers.anyString; -import static org.mockito.Matchers.contains; import static org.mockito.Mockito.doAnswer; import static org.mockito.Mockito.doNothing; import static org.mockito.Mockito.doReturn; @@ -39,7 +37,6 @@ import org.mockito.MockitoAnnotations; import org.mockito.invocation.InvocationOnMock; import org.mockito.stubbing.Answer; import org.opendaylight.controller.config.api.jmx.CommitStatus; -import org.opendaylight.controller.config.manager.impl.AbstractConfigTest; import org.opendaylight.controller.config.manager.impl.factoriesresolver.HardcodedModuleFactoriesResolver; import org.opendaylight.controller.config.util.ConfigTransactionJMXClient; import org.opendaylight.controller.config.yang.bgp.rib.spi.RIBExtensionsImplModuleFactory; @@ -77,11 +74,9 @@ import org.opendaylight.yangtools.yang.parser.stmt.reactor.CrossSourceStatementR import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.YangInferencePipeline; import org.osgi.framework.Bundle; import org.osgi.framework.BundleListener; -import org.osgi.framework.Filter; -import org.osgi.framework.ServiceListener; import org.osgi.framework.ServiceReference; -public class BmpMonitorImplModuleTest extends AbstractConfigTest { +public class BmpMonitorImplModuleTest extends AbstractBmpModuleTest { private static final String FACTORY_NAME = BmpMonitorImplModuleFactory.NAME; private static final String INSTANCE_NAME = "bmp-monitor-impl-instance"; @@ -95,11 +90,13 @@ public class BmpMonitorImplModuleTest extends AbstractConfigTest { @Mock private CheckedFuture mockedFuture; @Mock private RpcResult mockedResult; + @Override @SuppressWarnings("unchecked") @Before public void setUp() throws Exception { MockitoAnnotations.initMocks(this); + super.setUp(); super.initConfigTransactionManagerImpl(new HardcodedModuleFactoriesResolver(this.mockedContext, new BmpMonitorImplModuleFactory(), new RIBExtensionsImplModuleFactory(), @@ -111,24 +108,11 @@ public class BmpMonitorImplModuleTest extends AbstractConfigTest { new GlobalEventExecutorModuleFactory(), new SchemaServiceImplSingletonModuleFactory())); - doAnswer(new Answer() { - @Override - public Filter answer(final InvocationOnMock invocation) { - final String str = invocation.getArgumentAt(0, String.class); - final Filter mockFilter = mock(Filter.class); - doReturn(str).when(mockFilter).toString(); - return mockFilter; - } - }).when(mockedContext).createFilter(anyString()); - final ServiceReference emptyServiceReference = mock(ServiceReference.class, "Empty"); final ServiceReference classLoadingStrategySR = mock(ServiceReference.class, "ClassLoadingStrategy"); final ServiceReference dataProviderServiceReference = mock(ServiceReference.class, "Data Provider"); final ServiceReference schemaServiceReference = mock(ServiceReference.class, "schemaServiceReference"); - Mockito.doNothing().when(this.mockedContext).addServiceListener(any(ServiceListener.class), Mockito.anyString()); - Mockito.doNothing().when(this.mockedContext).removeServiceListener(any(ServiceListener.class)); - Mockito.doNothing().when(this.mockedContext).addBundleListener(any(BundleListener.class)); Mockito.doNothing().when(this.mockedContext).removeBundleListener(any(BundleListener.class)); @@ -186,15 +170,6 @@ public class BmpMonitorImplModuleTest extends AbstractConfigTest { setupMockService(EventExecutor.class, AutoCloseableEventExecutor.CloseableEventExecutorMixin.globalEventExecutor()); } - private void setupMockService(final Class serviceInterface, final Object instance) throws Exception { - final ServiceReference mockServiceRef = mock(ServiceReference.class); - doReturn(new ServiceReference[]{mockServiceRef}).when(mockedContext). - getServiceReferences(anyString(), contains(serviceInterface.getName())); - doReturn(new ServiceReference[]{mockServiceRef}).when(mockedContext). - getServiceReferences(serviceInterface.getName(), null); - doReturn(instance).when(mockedContext).getService(mockServiceRef); - } - private static SchemaContext parseYangStreams(final Collection streams) { final CrossSourceStatementReactor.BuildAction reactor = YangInferencePipeline.RFC6020_REACTOR.newBuild(); try { diff --git a/bgp/controller-config/src/main/resources/initial/31-bgp.xml b/bgp/controller-config/src/main/resources/initial/31-bgp.xml index f8001836ff..2cb0cd1102 100644 --- a/bgp/controller-config/src/main/resources/initial/31-bgp.xml +++ b/bgp/controller-config/src/main/resources/initial/31-bgp.xml @@ -31,39 +31,8 @@ prefix:bgp-extensions-impl global-bgp-extensions - - bgpspi:extension - base-bgp-parser - - - bgpspi:extension - bgp-linkstate - - - bgpspi:extension - bgp-flowspec - - - bgpspi:extension - bgp-labeled-unicast - - - bgpspi:extension - bgp-vpn-ipv4 - - - bgpspi:extension - bgp-vpn-ipv6 - - - bgpspi:extension - bgp-evpn - - - - prefix:base-bgp-parser - base-bgp-parser + prefix:strict-bgp-peer-registry @@ -449,10 +418,6 @@ bgpspi:extension - - base-bgp-parser - /modules/module[type='base-bgp-parser'][name='base-bgp-parser'] - bgp-linkstate /modules/module[type='bgp-linkstate'][name='bgp-linkstate'] diff --git a/bgp/evpn/src/test/java/org/opendaylight/controller/config/yang/bgp/evpn/EvpnModuleTest.java b/bgp/evpn/src/test/java/org/opendaylight/controller/config/yang/bgp/evpn/EvpnModuleTest.java deleted file mode 100644 index 82cdddc60d..0000000000 --- a/bgp/evpn/src/test/java/org/opendaylight/controller/config/yang/bgp/evpn/EvpnModuleTest.java +++ /dev/null @@ -1,76 +0,0 @@ -/* - * Copyright (c) 2016 Cisco Systems, Inc. and others. All rights reserved. - * - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License v1.0 which accompanies this distribution, - * and is available at http://www.eclipse.org/legal/epl-v10.html - */ -package org.opendaylight.controller.config.yang.bgp.evpn; - -import com.google.common.collect.Lists; -import javax.management.ObjectName; -import org.junit.Before; -import org.junit.Test; -import org.opendaylight.controller.config.api.jmx.CommitStatus; -import org.opendaylight.controller.config.manager.impl.AbstractConfigTest; -import org.opendaylight.controller.config.manager.impl.factoriesresolver.HardcodedModuleFactoriesResolver; -import org.opendaylight.controller.config.util.ConfigTransactionJMXClient; -import org.opendaylight.controller.config.yang.bgp.parser.spi.SimpleBGPExtensionProviderContextModuleFactory; -import org.opendaylight.controller.config.yang.bgp.parser.spi.SimpleBGPExtensionProviderContextModuleTest; -import org.opendaylight.controller.config.yang.bgp.rib.spi.RIBExtensionsImplModuleFactory; -import org.opendaylight.controller.config.yang.bgp.rib.spi.RIBExtensionsImplModuleTest; - -public final class EvpnModuleTest extends AbstractConfigTest { - private static final String FACTORY_NAME = EvpnModuleFactory.NAME; - private static final String INSTANCE_NAME = "bgp-evpn-impl"; - - @Before - public void setUp() { - super.initConfigTransactionManagerImpl(new HardcodedModuleFactoriesResolver(mockedContext, new EvpnModuleFactory(), - new SimpleBGPExtensionProviderContextModuleFactory(), new RIBExtensionsImplModuleFactory())); - } - - @Test - public void testLSTypeDefaultValue() throws Exception { - final CommitStatus status = createEvpnModuleInstance(); - assertBeanCount(1, FACTORY_NAME); - assertStatus(status, 3, 0, 0); - } - - @Test - public void testCreateBean() throws Exception { - final CommitStatus status = createEvpnModuleInstance(); - assertBeanCount(1, FACTORY_NAME); - assertStatus(status, 3, 0, 0); - } - - @Test - public void testReusingOldInstance() throws Exception { - createEvpnModuleInstance(); - final ConfigTransactionJMXClient transaction = configRegistryClient.createTransaction(); - assertBeanCount(1, FACTORY_NAME); - final CommitStatus status = transaction.commit(); - assertBeanCount(1, FACTORY_NAME); - assertStatus(status, 0, 0, 3); - } - - @Test - public void testReconfigureInstance() throws Exception { - createEvpnModuleInstance(); - ConfigTransactionJMXClient transaction = configRegistryClient.createTransaction(); - assertBeanCount(1, FACTORY_NAME); - CommitStatus status = transaction.commit(); - assertBeanCount(1, FACTORY_NAME); - assertStatus(status, 0, 0, 3); - } - - private CommitStatus createEvpnModuleInstance() throws Exception { - final ConfigTransactionJMXClient transaction = configRegistryClient.createTransaction(); - final ObjectName evpnON = transaction.createModule(FACTORY_NAME, INSTANCE_NAME); - - SimpleBGPExtensionProviderContextModuleTest.createBGPExtensionsModuleInstance(transaction, Lists.newArrayList(evpnON)); - RIBExtensionsImplModuleTest.createRIBExtensionsModuleInstance(transaction, Lists.newArrayList(evpnON)); - return transaction.commit(); - } - -} \ No newline at end of file diff --git a/bgp/flowspec/src/test/java/org/opendaylight/controller/config/yang/bgp/flowspec/FlowspecModuleTest.java b/bgp/flowspec/src/test/java/org/opendaylight/controller/config/yang/bgp/flowspec/FlowspecModuleTest.java deleted file mode 100644 index 5693e868ab..0000000000 --- a/bgp/flowspec/src/test/java/org/opendaylight/controller/config/yang/bgp/flowspec/FlowspecModuleTest.java +++ /dev/null @@ -1,80 +0,0 @@ -/* - * Copyright (c) 2015 Cisco Systems, Inc. and others. All rights reserved. - * - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License v1.0 which accompanies this distribution, - * and is available at http://www.eclipse.org/legal/epl-v10.html - */ -package org.opendaylight.controller.config.yang.bgp.flowspec; - -import com.google.common.collect.Lists; -import javax.management.ObjectName; -import org.junit.Before; -import org.junit.Test; -import org.opendaylight.controller.config.api.jmx.CommitStatus; -import org.opendaylight.controller.config.manager.impl.AbstractConfigTest; -import org.opendaylight.controller.config.manager.impl.factoriesresolver.HardcodedModuleFactoriesResolver; -import org.opendaylight.controller.config.util.ConfigTransactionJMXClient; -import org.opendaylight.controller.config.yang.bgp.parser.spi.SimpleBGPExtensionProviderContextModuleFactory; -import org.opendaylight.controller.config.yang.bgp.parser.spi.SimpleBGPExtensionProviderContextModuleTest; -import org.opendaylight.controller.config.yang.bgp.rib.spi.RIBExtensionsImplModuleFactory; -import org.opendaylight.controller.config.yang.bgp.rib.spi.RIBExtensionsImplModuleTest; - -/** - * Created by cgasparini on 18.6.2015. - */ -public class FlowspecModuleTest extends AbstractConfigTest { - - private static final String FACTORY_NAME = FlowspecModuleFactory.NAME; - private static final String INSTANCE_NAME = "bgp-flowspec-impl"; - - @Before - public void setUp() { - super.initConfigTransactionManagerImpl(new HardcodedModuleFactoriesResolver(mockedContext, new FlowspecModuleFactory(), - new SimpleBGPExtensionProviderContextModuleFactory(), new RIBExtensionsImplModuleFactory())); - } - - @Test - public void testLSTypeDefaultValue() throws Exception { - final CommitStatus status = createFlowspecModuleInstance(); - assertBeanCount(1, FACTORY_NAME); - assertStatus(status, 3, 0, 0); - } - - @Test - public void testCreateBean() throws Exception { - final CommitStatus status = createFlowspecModuleInstance(); - assertBeanCount(1, FACTORY_NAME); - assertStatus(status, 3, 0, 0); - } - - @Test - public void testReusingOldInstance() throws Exception { - createFlowspecModuleInstance(); - final ConfigTransactionJMXClient transaction = configRegistryClient.createTransaction(); - assertBeanCount(1, FACTORY_NAME); - final CommitStatus status = transaction.commit(); - assertBeanCount(1, FACTORY_NAME); - assertStatus(status, 0, 0, 3); - } - - @Test - public void testReconfigureInstance() throws Exception { - createFlowspecModuleInstance(); - ConfigTransactionJMXClient transaction = configRegistryClient.createTransaction(); - assertBeanCount(1, FACTORY_NAME); - CommitStatus status = transaction.commit(); - assertBeanCount(1, FACTORY_NAME); - assertStatus(status, 0, 0, 3); - } - - private CommitStatus createFlowspecModuleInstance() throws Exception { - final ConfigTransactionJMXClient transaction = configRegistryClient.createTransaction(); - final ObjectName flowspecON = transaction.createModule(FACTORY_NAME, INSTANCE_NAME); - - SimpleBGPExtensionProviderContextModuleTest.createBGPExtensionsModuleInstance(transaction, Lists.newArrayList(flowspecON)); - RIBExtensionsImplModuleTest.createRIBExtensionsModuleInstance(transaction, Lists.newArrayList(flowspecON)); - return transaction.commit(); - } - -} \ No newline at end of file diff --git a/bgp/labeled-unicast/src/test/java/org/opendaylight/controller/config/yang/bgp/labeled/unicast/LabeledUnicastModuleTest.java b/bgp/labeled-unicast/src/test/java/org/opendaylight/controller/config/yang/bgp/labeled/unicast/LabeledUnicastModuleTest.java deleted file mode 100755 index 2da510de71..0000000000 --- a/bgp/labeled-unicast/src/test/java/org/opendaylight/controller/config/yang/bgp/labeled/unicast/LabeledUnicastModuleTest.java +++ /dev/null @@ -1,77 +0,0 @@ -/* - * Copyright (c) 2015 Cisco Systems, Inc. and others. All rights reserved. - * - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License v1.0 which accompanies this distribution, - * and is available at http://www.eclipse.org/legal/epl-v10.html - */ -package org.opendaylight.controller.config.yang.bgp.labeled.unicast; - -import com.google.common.collect.Lists; -import javax.management.ObjectName; -import org.junit.Before; -import org.junit.Test; -import org.opendaylight.controller.config.api.jmx.CommitStatus; -import org.opendaylight.controller.config.manager.impl.AbstractConfigTest; -import org.opendaylight.controller.config.manager.impl.factoriesresolver.HardcodedModuleFactoriesResolver; -import org.opendaylight.controller.config.util.ConfigTransactionJMXClient; -import org.opendaylight.controller.config.yang.bgp.parser.spi.SimpleBGPExtensionProviderContextModuleFactory; -import org.opendaylight.controller.config.yang.bgp.parser.spi.SimpleBGPExtensionProviderContextModuleTest; -import org.opendaylight.controller.config.yang.bgp.rib.spi.RIBExtensionsImplModuleFactory; -import org.opendaylight.controller.config.yang.bgp.rib.spi.RIBExtensionsImplModuleTest; - -public class LabeledUnicastModuleTest extends AbstractConfigTest { - - private static final String FACTORY_NAME = LabeledUnicastModuleFactory.NAME; - private static final String INSTANCE_NAME = "bgp-labeled-unicast-impl"; - - @Before - public void setUp() { - super.initConfigTransactionManagerImpl(new HardcodedModuleFactoriesResolver(mockedContext, new LabeledUnicastModuleFactory(), - new SimpleBGPExtensionProviderContextModuleFactory(), new RIBExtensionsImplModuleFactory())); - } - - @Test - public void testLSTypeDefaultValue() throws Exception { - final CommitStatus status = createLabeledUnicastModuleInstance(); - assertBeanCount(1, FACTORY_NAME); - assertStatus(status, 3, 0, 0); - } - - @Test - public void testCreateBean() throws Exception { - final CommitStatus status = createLabeledUnicastModuleInstance(); - assertBeanCount(1, FACTORY_NAME); - assertStatus(status, 3, 0, 0); - } - - @Test - public void testReusingOldInstance() throws Exception { - createLabeledUnicastModuleInstance(); - final ConfigTransactionJMXClient transaction = configRegistryClient.createTransaction(); - assertBeanCount(1, FACTORY_NAME); - final CommitStatus status = transaction.commit(); - assertBeanCount(1, FACTORY_NAME); - assertStatus(status, 0, 0, 3); - } - - @Test - public void testReconfigureInstance() throws Exception { - createLabeledUnicastModuleInstance(); - final ConfigTransactionJMXClient transaction = configRegistryClient.createTransaction(); - assertBeanCount(1, FACTORY_NAME); - final CommitStatus status = transaction.commit(); - assertBeanCount(1, FACTORY_NAME); - assertStatus(status, 0, 0, 3); - } - - private CommitStatus createLabeledUnicastModuleInstance() throws Exception { - final ConfigTransactionJMXClient transaction = configRegistryClient.createTransaction(); - final ObjectName LabeledUnicastON = transaction.createModule(FACTORY_NAME, INSTANCE_NAME); - - SimpleBGPExtensionProviderContextModuleTest.createBGPExtensionsModuleInstance(transaction, Lists.newArrayList(LabeledUnicastON)); - RIBExtensionsImplModuleTest.createRIBExtensionsModuleInstance(transaction, Lists.newArrayList(LabeledUnicastON)); - return transaction.commit(); - } - -} diff --git a/bgp/linkstate/src/test/java/org/opendaylight/controller/config/yang/bgp/linkstate/LinkstateModuleTest.java b/bgp/linkstate/src/test/java/org/opendaylight/controller/config/yang/bgp/linkstate/LinkstateModuleTest.java deleted file mode 100644 index 8274108e54..0000000000 --- a/bgp/linkstate/src/test/java/org/opendaylight/controller/config/yang/bgp/linkstate/LinkstateModuleTest.java +++ /dev/null @@ -1,141 +0,0 @@ -/* - * Copyright (c) 2014 Cisco Systems, Inc. and others. All rights reserved. - * - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License v1.0 which accompanies this distribution, - * and is available at http://www.eclipse.org/legal/epl-v10.html - */ - -package org.opendaylight.controller.config.yang.bgp.linkstate; - -import static org.junit.Assert.assertTrue; -import static org.mockito.Matchers.any; -import static org.mockito.Matchers.anyString; -import static org.mockito.Matchers.contains; -import static org.mockito.Mockito.doAnswer; -import static org.mockito.Mockito.doReturn; -import static org.mockito.Mockito.mock; -import com.google.common.base.Optional; -import com.google.common.collect.Lists; -import javax.management.InstanceAlreadyExistsException; -import javax.management.ObjectName; -import org.junit.Before; -import org.junit.Test; -import org.mockito.Mockito; -import org.mockito.invocation.InvocationOnMock; -import org.mockito.stubbing.Answer; -import org.opendaylight.controller.config.api.jmx.CommitStatus; -import org.opendaylight.controller.config.manager.impl.AbstractConfigTest; -import org.opendaylight.controller.config.manager.impl.factoriesresolver.HardcodedModuleFactoriesResolver; -import org.opendaylight.controller.config.util.ConfigTransactionJMXClient; -import org.opendaylight.controller.config.yang.bgp.parser.spi.SimpleBGPExtensionProviderContextModuleFactory; -import org.opendaylight.controller.config.yang.bgp.parser.spi.SimpleBGPExtensionProviderContextModuleTest; -import org.opendaylight.controller.config.yang.bgp.rib.spi.RIBExtensionsImplModuleFactory; -import org.opendaylight.controller.config.yang.bgp.rib.spi.RIBExtensionsImplModuleTest; -import org.opendaylight.controller.config.yang.rsvp.spi.SimpleRSVPExtensionProviderContextModuleFactory; -import org.opendaylight.controller.config.yang.rsvp.spi.SimpleRSVPExtensionProviderContextModuleMXBean; -import org.opendaylight.protocol.rsvp.parser.spi.RSVPExtensionProviderContext; -import org.opendaylight.protocol.rsvp.parser.spi.pojo.SimpleRSVPExtensionProviderContext; -import org.osgi.framework.Filter; -import org.osgi.framework.ServiceListener; -import org.osgi.framework.ServiceReference; - -public class LinkstateModuleTest extends AbstractConfigTest { - - private static final String FACTORY_NAME = LinkstateModuleFactory.NAME; - private static final String INSTANCE_NAME = "bgp-linkstate-impl"; - private static final String RSVP_EXTENSION_INSTANCE_NAME = "extension-impl-rsvp"; - private ObjectName rspvInstance; - - @Before - public void setUp() throws Exception { - super.initConfigTransactionManagerImpl(new HardcodedModuleFactoriesResolver(mockedContext, new - LinkstateModuleFactory(), new SimpleBGPExtensionProviderContextModuleFactory(), new - RIBExtensionsImplModuleFactory(), new SimpleRSVPExtensionProviderContextModuleFactory())); - - doAnswer(new Answer() { - @Override - public Filter answer(final InvocationOnMock invocation) { - final String str = invocation.getArgumentAt(0, String.class); - final Filter mockFilter = mock(Filter.class); - doReturn(str).when(mockFilter).toString(); - return mockFilter; - } - }).when(mockedContext).createFilter(anyString()); - - Mockito.doNothing().when(this.mockedContext).addServiceListener(any(ServiceListener.class), Mockito.anyString()); - Mockito.doNothing().when(this.mockedContext).removeServiceListener(any(ServiceListener.class)); - - setupMockService(RSVPExtensionProviderContext.class, new SimpleRSVPExtensionProviderContext()); - } - - private void setupMockService(final Class serviceInterface, final Object instance) throws Exception { - final ServiceReference mockServiceRef = mock(ServiceReference.class); - doReturn(new ServiceReference[]{mockServiceRef}).when(mockedContext). - getServiceReferences(anyString(), contains(serviceInterface.getName())); - doReturn(new ServiceReference[]{mockServiceRef}).when(mockedContext). - getServiceReferences(serviceInterface.getName(), null); - doReturn(instance).when(mockedContext).getService(mockServiceRef); - } - - @Test - public void testLSTypeDefaultValue() throws Exception { - final CommitStatus status = createLinkstateModuleInstance(Optional.absent()); - assertBeanCount(1, FACTORY_NAME); - assertStatus(status, 4, 0, 0); - final ConfigTransactionJMXClient transaction = configRegistryClient.createTransaction(); - final LinkstateModuleMXBean mxBean = transaction.newMXBeanProxy(transaction.lookupConfigBean(FACTORY_NAME, INSTANCE_NAME), LinkstateModuleMXBean.class); - assertTrue(mxBean.getIanaLinkstateAttributeType()); - } - - @Test - public void testCreateBean() throws Exception { - final CommitStatus status = createLinkstateModuleInstance(Optional.of(false)); - assertBeanCount(1, FACTORY_NAME); - assertStatus(status, 4, 0, 0); - } - - @Test - public void testReusingOldInstance() throws Exception { - createLinkstateModuleInstance(Optional.of(false)); - final ConfigTransactionJMXClient transaction = configRegistryClient.createTransaction(); - assertBeanCount(1, FACTORY_NAME); - final CommitStatus status = transaction.commit(); - assertBeanCount(1, FACTORY_NAME); - assertStatus(status, 0, 0, 4); - } - - @Test - public void testReconfigureInstance() throws Exception { - createLinkstateModuleInstance(Optional.of(false)); - ConfigTransactionJMXClient transaction = configRegistryClient.createTransaction(); - assertBeanCount(1, FACTORY_NAME); - final LinkstateModuleMXBean mxBean = transaction.newMXBeanProxy(transaction.lookupConfigBean(FACTORY_NAME, INSTANCE_NAME), LinkstateModuleMXBean.class); - mxBean.setIanaLinkstateAttributeType(true); - mxBean.setRsvpExtensions(rspvInstance); - CommitStatus status = transaction.commit(); - assertBeanCount(1, FACTORY_NAME); - assertStatus(status, 0, 3, 1); - } - - private CommitStatus createLinkstateModuleInstance(final Optional ianaLSAttributeType) throws Exception { - final ConfigTransactionJMXClient transaction = configRegistryClient.createTransaction(); - final ObjectName linkstateON = transaction.createModule(FACTORY_NAME, INSTANCE_NAME); - final LinkstateModuleMXBean mxBean = transaction.newMXBeanProxy(linkstateON, LinkstateModuleMXBean.class); - if(ianaLSAttributeType.isPresent()) { - mxBean.setIanaLinkstateAttributeType(ianaLSAttributeType.get()); - } - rspvInstance = createRsvpExtensionsInstance(transaction); - mxBean.setRsvpExtensions(rspvInstance); - SimpleBGPExtensionProviderContextModuleTest.createBGPExtensionsModuleInstance(transaction, Lists.newArrayList(linkstateON)); - RIBExtensionsImplModuleTest.createRIBExtensionsModuleInstance(transaction, Lists.newArrayList(linkstateON)); - return transaction.commit(); - } - - private ObjectName createRsvpExtensionsInstance(final ConfigTransactionJMXClient transaction) throws InstanceAlreadyExistsException { - final ObjectName nameCreated = transaction.createModule(SimpleRSVPExtensionProviderContextModuleFactory.NAME, - RSVP_EXTENSION_INSTANCE_NAME); - transaction.newMXBeanProxy(nameCreated, SimpleRSVPExtensionProviderContextModuleMXBean.class); - return nameCreated; - } -} diff --git a/bgp/parser-impl/src/main/resources/org/opendaylight/blueprint/bgp-parser.xml b/bgp/parser-impl/src/main/resources/org/opendaylight/blueprint/bgp-parser.xml new file mode 100644 index 0000000000..2a24e057bd --- /dev/null +++ b/bgp/parser-impl/src/main/resources/org/opendaylight/blueprint/bgp-parser.xml @@ -0,0 +1,9 @@ + + + + + + + \ No newline at end of file diff --git a/bgp/parser-spi/src/main/java/org/opendaylight/controller/config/yang/bgp/parser/spi/SimpleBGPExtensionProviderContextModule.java b/bgp/parser-spi/src/main/java/org/opendaylight/controller/config/yang/bgp/parser/spi/SimpleBGPExtensionProviderContextModule.java index 266b0c9af2..0d12e06282 100644 --- a/bgp/parser-spi/src/main/java/org/opendaylight/controller/config/yang/bgp/parser/spi/SimpleBGPExtensionProviderContextModule.java +++ b/bgp/parser-spi/src/main/java/org/opendaylight/controller/config/yang/bgp/parser/spi/SimpleBGPExtensionProviderContextModule.java @@ -16,14 +16,20 @@ */ package org.opendaylight.controller.config.yang.bgp.parser.spi; -import org.opendaylight.protocol.bgp.parser.spi.BGPExtensionProviderActivator; -import org.opendaylight.protocol.bgp.parser.spi.pojo.SimpleBGPExtensionProviderContext; +import com.google.common.reflect.AbstractInvocationHandler; +import com.google.common.reflect.Reflection; +import java.lang.reflect.Method; +import org.opendaylight.controller.config.api.osgi.WaitingServiceTracker; +import org.opendaylight.protocol.bgp.parser.spi.BGPExtensionProviderContext; +import org.osgi.framework.BundleContext; /** - * + * @deprecated Replaced by blueprint wiring */ +@Deprecated public final class SimpleBGPExtensionProviderContextModule extends org.opendaylight.controller.config.yang.bgp.parser.spi.AbstractSimpleBGPExtensionProviderContextModule { + private BundleContext bundleContext; public SimpleBGPExtensionProviderContextModule(final org.opendaylight.controller.config.api.ModuleIdentifier identifier, final org.opendaylight.controller.config.api.DependencyResolver dependencyResolver) { @@ -42,20 +48,28 @@ public final class SimpleBGPExtensionProviderContextModule extends } @Override - public java.lang.AutoCloseable createInstance() { - final class SimpleBGPExtensionProviderContextAutoCloseable extends SimpleBGPExtensionProviderContext implements AutoCloseable { + public AutoCloseable createInstance() { + final WaitingServiceTracker tracker = + WaitingServiceTracker.create(BGPExtensionProviderContext.class, bundleContext); + final BGPExtensionProviderContext service = tracker.waitForService(WaitingServiceTracker.FIVE_MINUTES); + + return Reflection.newProxy(AutoCloseableBGPExtensionProviderContext.class, new AbstractInvocationHandler() { @Override - public void close() { - for (final BGPExtensionProviderActivator e : getExtensionDependency()) { - e.stop(); + protected Object handleInvocation(Object proxy, Method method, Object[] args) throws Throwable { + if (method.getName().equals("close")) { + tracker.close(); + return null; + } else { + return method.invoke(service, args); } } - } + }); + } + + void setBundleContext(BundleContext bundleContext) { + this.bundleContext = bundleContext; + } - final SimpleBGPExtensionProviderContextAutoCloseable ret = new SimpleBGPExtensionProviderContextAutoCloseable(); - for (final BGPExtensionProviderActivator e : getExtensionDependency()) { - e.start(ret); - } - return ret; + private static interface AutoCloseableBGPExtensionProviderContext extends BGPExtensionProviderContext, AutoCloseable { } } diff --git a/bgp/parser-spi/src/main/java/org/opendaylight/controller/config/yang/bgp/parser/spi/SimpleBGPExtensionProviderContextModuleFactory.java b/bgp/parser-spi/src/main/java/org/opendaylight/controller/config/yang/bgp/parser/spi/SimpleBGPExtensionProviderContextModuleFactory.java index 4a88ee9896..cc6d037c92 100644 --- a/bgp/parser-spi/src/main/java/org/opendaylight/controller/config/yang/bgp/parser/spi/SimpleBGPExtensionProviderContextModuleFactory.java +++ b/bgp/parser-spi/src/main/java/org/opendaylight/controller/config/yang/bgp/parser/spi/SimpleBGPExtensionProviderContextModuleFactory.java @@ -16,10 +16,28 @@ */ package org.opendaylight.controller.config.yang.bgp.parser.spi; +import org.opendaylight.controller.config.api.DependencyResolver; +import org.osgi.framework.BundleContext; + /** -* -*/ -public class SimpleBGPExtensionProviderContextModuleFactory extends - org.opendaylight.controller.config.yang.bgp.parser.spi.AbstractSimpleBGPExtensionProviderContextModuleFactory { + * @deprecated Replaced by blueprint wiring + */ +@Deprecated +public class SimpleBGPExtensionProviderContextModuleFactory extends AbstractSimpleBGPExtensionProviderContextModuleFactory { + @Override + public SimpleBGPExtensionProviderContextModule instantiateModule(String instanceName, DependencyResolver dependencyResolver, + SimpleBGPExtensionProviderContextModule oldModule, AutoCloseable oldInstance, BundleContext bundleContext) { + SimpleBGPExtensionProviderContextModule module = super.instantiateModule(instanceName, dependencyResolver, oldModule, + oldInstance, bundleContext); + module.setBundleContext(bundleContext); + return module; + } + @Override + public SimpleBGPExtensionProviderContextModule instantiateModule(String instanceName, DependencyResolver dependencyResolver, + BundleContext bundleContext) { + SimpleBGPExtensionProviderContextModule module = super.instantiateModule(instanceName, dependencyResolver, bundleContext); + module.setBundleContext(bundleContext); + return module; + } } diff --git a/bgp/parser-spi/src/main/java/org/opendaylight/protocol/bgp/parser/spi/pojo/SimpleBGPExtensionProviderContextActivator.java b/bgp/parser-spi/src/main/java/org/opendaylight/protocol/bgp/parser/spi/pojo/SimpleBGPExtensionProviderContextActivator.java new file mode 100644 index 0000000000..11bac1d23f --- /dev/null +++ b/bgp/parser-spi/src/main/java/org/opendaylight/protocol/bgp/parser/spi/pojo/SimpleBGPExtensionProviderContextActivator.java @@ -0,0 +1,50 @@ +/* + * Copyright (c) 2016 Brocade Communications Systems, Inc. and others. All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this distribution, + * and is available at http://www.eclipse.org/legal/epl-v10.html + */ +package org.opendaylight.protocol.bgp.parser.spi.pojo; + +import com.google.common.base.Preconditions; +import java.util.List; +import org.opendaylight.protocol.bgp.parser.spi.BGPExtensionProviderActivator; +import org.opendaylight.protocol.bgp.parser.spi.BGPExtensionProviderContext; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * Starts and stops BGPExtensionProviderActivator instances for a BGPExtensionProviderContext. + * + * @author Thomas Pantelis + */ +public class SimpleBGPExtensionProviderContextActivator implements AutoCloseable { + private static final Logger LOG = LoggerFactory.getLogger(SimpleBGPExtensionProviderContextActivator.class); + + private final BGPExtensionProviderContext providerContext; + private final List extensionActivators; + + public SimpleBGPExtensionProviderContextActivator(final BGPExtensionProviderContext providerContext, + final List extensionActivators) { + this.providerContext = Preconditions.checkNotNull(providerContext); + this.extensionActivators = Preconditions.checkNotNull(extensionActivators); + } + + public void start() { + LOG.debug("Starting {} BGPExtensionProviderActivator instances", extensionActivators.size()); + + for(final BGPExtensionProviderActivator e : extensionActivators) { + e.start(providerContext); + } + } + + @Override + public void close() { + LOG.debug("Stopping {} BGPExtensionProviderActivator instances", extensionActivators.size()); + + for(final BGPExtensionProviderActivator e : extensionActivators) { + e.stop(); + } + } +} diff --git a/bgp/parser-spi/src/main/resources/org/opendaylight/blueprint/bgp-parser-spi.xml b/bgp/parser-spi/src/main/resources/org/opendaylight/blueprint/bgp-parser-spi.xml new file mode 100644 index 0000000000..0a371ef788 --- /dev/null +++ b/bgp/parser-spi/src/main/resources/org/opendaylight/blueprint/bgp-parser-spi.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + org.opendaylight.protocol.bgp.parser.spi.BGPExtensionProviderContext + org.opendaylight.protocol.bgp.parser.spi.BGPExtensionConsumerContext + + + \ No newline at end of file diff --git a/bgp/parser-spi/src/main/yang/odl-bgp-parser-spi-cfg.yang b/bgp/parser-spi/src/main/yang/odl-bgp-parser-spi-cfg.yang index 126ba291bc..07868d3f61 100644 --- a/bgp/parser-spi/src/main/yang/odl-bgp-parser-spi-cfg.yang +++ b/bgp/parser-spi/src/main/yang/odl-bgp-parser-spi-cfg.yang @@ -50,6 +50,7 @@ module odl-bgp-parser-spi-cfg { base "config:service-type"; config:java-class "org.opendaylight.protocol.bgp.parser.spi.BGPExtensionProviderActivator"; + config:disable-osgi-service-registration; } identity bgp-extensions-impl { diff --git a/bgp/parser-spi/src/test/java/org/opendaylight/controller/config/yang/bgp/parser/spi/SimpleBGPExtensionProviderContextModuleTest.java b/bgp/parser-spi/src/test/java/org/opendaylight/controller/config/yang/bgp/parser/spi/SimpleBGPExtensionProviderContextModuleTest.java deleted file mode 100644 index 90ae2a02a7..0000000000 --- a/bgp/parser-spi/src/test/java/org/opendaylight/controller/config/yang/bgp/parser/spi/SimpleBGPExtensionProviderContextModuleTest.java +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved. - * - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License v1.0 which accompanies this distribution, - * and is available at http://www.eclipse.org/legal/epl-v10.html - */ -package org.opendaylight.controller.config.yang.bgp.parser.spi; - -import java.util.List; - -import javax.management.ObjectName; - -import org.junit.Before; -import org.junit.Test; -import org.opendaylight.controller.config.api.jmx.CommitStatus; -import org.opendaylight.controller.config.manager.impl.AbstractConfigTest; -import org.opendaylight.controller.config.manager.impl.factoriesresolver.HardcodedModuleFactoriesResolver; -import org.opendaylight.controller.config.util.ConfigTransactionJMXClient; - -public class SimpleBGPExtensionProviderContextModuleTest extends AbstractConfigTest { - - private static final String FACTORY_NAME = SimpleBGPExtensionProviderContextModuleFactory.NAME; - private static final String INSTANCE_NAME = "bgp-extensions-impl"; - - @Before - public void setUp() throws Exception { - super.initConfigTransactionManagerImpl(new HardcodedModuleFactoriesResolver(mockedContext, new SimpleBGPExtensionProviderContextModuleFactory())); - } - - @Test - public void testCreateBean() throws Exception { - CommitStatus status = createInstance(); - assertBeanCount(1, FACTORY_NAME); - assertStatus(status, 1, 0, 0); - } - - @Test - public void testReusingOldInstance() throws Exception { - createInstance(); - ConfigTransactionJMXClient transaction = configRegistryClient.createTransaction(); - assertBeanCount(1, FACTORY_NAME); - CommitStatus status = transaction.commit(); - assertBeanCount(1, FACTORY_NAME); - assertStatus(status, 0, 0, 1); - } - - private CommitStatus createInstance() throws Exception { - ConfigTransactionJMXClient transaction = configRegistryClient.createTransaction(); - transaction.createModule(FACTORY_NAME, INSTANCE_NAME); - return transaction.commit(); - } - - public static ObjectName createBGPExtensionsModuleInstance(final ConfigTransactionJMXClient transaction, - final List extensions) throws Exception { - final ObjectName objectName = transaction.createModule(FACTORY_NAME, INSTANCE_NAME); - SimpleBGPExtensionProviderContextModuleMXBean mxBean = transaction.newMXBeanProxy(objectName, - SimpleBGPExtensionProviderContextModuleMXBean.class); - mxBean.setExtension(extensions); - return objectName; - } - -} diff --git a/bgp/rib-impl/src/main/java/org/opendaylight/controller/config/yang/bgp/rib/impl/BaseBGPParserModule.java b/bgp/rib-impl/src/main/java/org/opendaylight/controller/config/yang/bgp/rib/impl/BaseBGPParserModule.java deleted file mode 100644 index f10b0ffd9d..0000000000 --- a/bgp/rib-impl/src/main/java/org/opendaylight/controller/config/yang/bgp/rib/impl/BaseBGPParserModule.java +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved. - * - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License v1.0 which accompanies this distribution, - * and is available at http://www.eclipse.org/legal/epl-v10.html - */ -/** - * Generated file - - * Generated from: yang module name: bgp-rib-impl yang module local name: base-bgp-parser - * Generated by: org.opendaylight.controller.config.yangjmxgenerator.plugin.JMXGenerator - * Generated at: Mon Nov 18 10:59:18 CET 2013 - * - * Do not modify this file unless it is present under src/main directory - */ -package org.opendaylight.controller.config.yang.bgp.rib.impl; - -import org.opendaylight.protocol.bgp.parser.impl.BGPActivator; - -/** - * - */ -public final class BaseBGPParserModule extends org.opendaylight.controller.config.yang.bgp.rib.impl.AbstractBaseBGPParserModule { - - public BaseBGPParserModule(final org.opendaylight.controller.config.api.ModuleIdentifier identifier, - final org.opendaylight.controller.config.api.DependencyResolver dependencyResolver) { - super(identifier, dependencyResolver); - } - - public BaseBGPParserModule(final org.opendaylight.controller.config.api.ModuleIdentifier identifier, - final org.opendaylight.controller.config.api.DependencyResolver dependencyResolver, final BaseBGPParserModule oldModule, - final java.lang.AutoCloseable oldInstance) { - super(identifier, dependencyResolver, oldModule, oldInstance); - } - - @Override - public java.lang.AutoCloseable createInstance() { - return new BGPActivator(); - } -} diff --git a/bgp/rib-impl/src/main/java/org/opendaylight/controller/config/yang/bgp/rib/impl/BaseBGPParserModuleFactory.java b/bgp/rib-impl/src/main/java/org/opendaylight/controller/config/yang/bgp/rib/impl/BaseBGPParserModuleFactory.java deleted file mode 100644 index 83e3bf3291..0000000000 --- a/bgp/rib-impl/src/main/java/org/opendaylight/controller/config/yang/bgp/rib/impl/BaseBGPParserModuleFactory.java +++ /dev/null @@ -1,24 +0,0 @@ -/* - * Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved. - * - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License v1.0 which accompanies this distribution, - * and is available at http://www.eclipse.org/legal/epl-v10.html - */ -/** - * Generated file - - * Generated from: yang module name: bgp-rib-impl yang module local name: base-bgp-parser - * Generated by: org.opendaylight.controller.config.yangjmxgenerator.plugin.JMXGenerator - * Generated at: Mon Nov 18 10:59:18 CET 2013 - * - * Do not modify this file unless it is present under src/main directory - */ -package org.opendaylight.controller.config.yang.bgp.rib.impl; - -/** -* -*/ -public class BaseBGPParserModuleFactory extends org.opendaylight.controller.config.yang.bgp.rib.impl.AbstractBaseBGPParserModuleFactory { - -} diff --git a/bgp/rib-impl/src/main/yang/odl-bgp-rib-impl-cfg.yang b/bgp/rib-impl/src/main/yang/odl-bgp-rib-impl-cfg.yang index c84324ed73..3c12ba3457 100644 --- a/bgp/rib-impl/src/main/yang/odl-bgp-rib-impl-cfg.yang +++ b/bgp/rib-impl/src/main/yang/odl-bgp-rib-impl-cfg.yang @@ -50,18 +50,6 @@ module odl-bgp-rib-impl-cfg { "Initial revision"; } - identity base-bgp-parser { - base config:module-type; - config:java-name-prefix BaseBGPParser; - config:provided-service bgpspi:extension; - } - - augment "/config:modules/config:module/config:configuration" { - case base-bgp-parser { - when "/config:modules/config:module/config:type = 'base-bgp-parser'"; - } - } - identity bgp-dispatcher { description "Service representing a BGP Dispatcher."; diff --git a/bgp/rib-impl/src/test/java/org/opendaylight/controller/config/yang/bgp/rib/impl/AbstractRIBImplModuleTest.java b/bgp/rib-impl/src/test/java/org/opendaylight/controller/config/yang/bgp/rib/impl/AbstractRIBImplModuleTest.java index 13a00ac071..797bcb8cfc 100755 --- a/bgp/rib-impl/src/test/java/org/opendaylight/controller/config/yang/bgp/rib/impl/AbstractRIBImplModuleTest.java +++ b/bgp/rib-impl/src/test/java/org/opendaylight/controller/config/yang/bgp/rib/impl/AbstractRIBImplModuleTest.java @@ -78,6 +78,8 @@ import org.opendaylight.controller.md.sal.dom.api.DOMRpcProviderService; import org.opendaylight.controller.md.sal.dom.api.DOMRpcService; import org.opendaylight.controller.sal.core.api.model.SchemaService; import org.opendaylight.controller.sal.core.api.model.YangTextSourceProvider; +import org.opendaylight.protocol.bgp.parser.spi.BGPExtensionProviderContext; +import org.opendaylight.protocol.bgp.parser.spi.MessageRegistry; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv4Address; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.rib.rev130925.RibId; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev130919.BgpId; @@ -206,6 +208,10 @@ public abstract class AbstractRIBImplModuleTest extends AbstractConfigTest { BindingToNormalizedNodeCodecFactory.getOrCreateInstance( GeneratedClassLoadingStrategy.getTCCLClassLoadingStrategy(), mockedSchemaService); + BGPExtensionProviderContext mockContext = mock(BGPExtensionProviderContext.class); + doReturn(mock(MessageRegistry.class)).when(mockContext).getMessageRegistry(); + setupMockService(BGPExtensionProviderContext.class, mockContext); + setupMockService(EventLoopGroup.class, NioEventLoopGroupCloseable.newInstance(0)); setupMockService(EventExecutor.class, AutoCloseableEventExecutor.CloseableEventExecutorMixin.globalEventExecutor()); @@ -216,7 +222,7 @@ public abstract class AbstractRIBImplModuleTest extends AbstractConfigTest { setupMockService(DOMMountPointService.class, mock(DOMMountPointService.class)); } - private void setupMockService(final Class serviceInterface, final Object instance) throws Exception { + protected void setupMockService(final Class serviceInterface, final Object instance) throws Exception { final ServiceReference mockServiceRef = mock(ServiceReference.class); doReturn(new ServiceReference[]{mockServiceRef}).when(mockedContext). getServiceReferences(anyString(), contains(serviceInterface.getName())); diff --git a/bgp/rib-impl/src/test/java/org/opendaylight/controller/config/yang/bgp/rib/impl/BaseBGPParserModuleTest.java b/bgp/rib-impl/src/test/java/org/opendaylight/controller/config/yang/bgp/rib/impl/BaseBGPParserModuleTest.java deleted file mode 100644 index 27fca17048..0000000000 --- a/bgp/rib-impl/src/test/java/org/opendaylight/controller/config/yang/bgp/rib/impl/BaseBGPParserModuleTest.java +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Copyright (c) 2014 Cisco Systems, Inc. and others. All rights reserved. - * - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License v1.0 which accompanies this distribution, - * and is available at http://www.eclipse.org/legal/epl-v10.html - */ - -package org.opendaylight.controller.config.yang.bgp.rib.impl; - -import org.junit.Before; -import org.junit.Test; -import org.opendaylight.controller.config.api.jmx.CommitStatus; -import org.opendaylight.controller.config.manager.impl.AbstractConfigTest; -import org.opendaylight.controller.config.manager.impl.factoriesresolver.HardcodedModuleFactoriesResolver; -import org.opendaylight.controller.config.util.ConfigTransactionJMXClient; - -public class BaseBGPParserModuleTest extends AbstractConfigTest { - - private static final String INSTANCE_NAME = "bgp-parser-instance"; - private static final String FACTORY_NAME = BaseBGPParserModuleFactory.NAME; - - @Before - public void setUp() throws Exception { - super.initConfigTransactionManagerImpl(new HardcodedModuleFactoriesResolver(this.mockedContext, new BaseBGPParserModuleFactory())); - } - - @Test - public void testCreateBean() throws Exception { - final CommitStatus status = createInstance(); - assertBeanCount(1, FACTORY_NAME); - assertStatus(status, 1, 0, 0); - } - - @Test - public void testReusingOldInstance() throws Exception { - createInstance(); - final ConfigTransactionJMXClient transaction = this.configRegistryClient.createTransaction(); - assertBeanCount(1, FACTORY_NAME); - final CommitStatus status = transaction.commit(); - assertBeanCount(1, FACTORY_NAME); - assertStatus(status, 0, 0, 1); - } - - private CommitStatus createInstance() throws Exception { - final ConfigTransactionJMXClient transaction = this.configRegistryClient.createTransaction(); - transaction.createModule(FACTORY_NAME, INSTANCE_NAME); - return transaction.commit(); - } -} diff --git a/bgp/rib-spi/src/main/yang/odl-bgp-rib-spi-cfg.yang b/bgp/rib-spi/src/main/yang/odl-bgp-rib-spi-cfg.yang index 93e16044ed..ca1c079e44 100644 --- a/bgp/rib-spi/src/main/yang/odl-bgp-rib-spi-cfg.yang +++ b/bgp/rib-spi/src/main/yang/odl-bgp-rib-spi-cfg.yang @@ -50,6 +50,7 @@ module odl-bgp-rib-spi-cfg { base "config:service-type"; config:java-class "org.opendaylight.protocol.bgp.rib.spi.RIBExtensionProviderActivator"; + config:disable-osgi-service-registration; } identity bgp-rib-extensions-impl { -- 2.36.6