From: Milos Fabian Date: Wed, 23 Apr 2014 07:45:36 +0000 (+0200) Subject: Bug 498 - Fixed PCEP and BGP testtools X-Git-Tag: release/helium~327^2 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=commitdiff_plain;h=d2dc28c16b2d8dc0ca58b7ad267f57af937ea710;p=bgpcep.git Bug 498 - Fixed PCEP and BGP testtools -added missing registration of extension parsers/serializers -refactored ServiceLoaderBGPExtensionProviderContext - BGPExtensionProviderContext hold as a singleton Change-Id: Idc5991a017c9bbc7550a1d4170f88f2086fd6416 Signed-off-by: Milos Fabian --- diff --git a/bgp/parser-impl/src/test/java/org/opendaylight/protocol/bgp/parser/impl/BGPParserTest.java b/bgp/parser-impl/src/test/java/org/opendaylight/protocol/bgp/parser/impl/BGPParserTest.java index 79464e6cdc..e604fd3578 100644 --- a/bgp/parser-impl/src/test/java/org/opendaylight/protocol/bgp/parser/impl/BGPParserTest.java +++ b/bgp/parser-impl/src/test/java/org/opendaylight/protocol/bgp/parser/impl/BGPParserTest.java @@ -132,7 +132,7 @@ public class BGPParserTest { @BeforeClass public static void setUp() throws Exception { - updateParser = new BGPUpdateMessageParser(ServiceLoaderBGPExtensionProviderContext.createConsumerContext().getAttributeRegistry()); + updateParser = new BGPUpdateMessageParser(ServiceLoaderBGPExtensionProviderContext.getSingletonInstance().getAttributeRegistry()); for (int i = 1; i <= COUNTER; i++) { final String name = "/up" + i + ".bin"; @@ -1169,7 +1169,7 @@ public class BGPParserTest { */ @Test public void testOpenMessage() throws Exception { - final MessageRegistry msgReg = ServiceLoaderBGPExtensionProviderContext.createConsumerContext().getMessageRegistry(); + final MessageRegistry msgReg = ServiceLoaderBGPExtensionProviderContext.getSingletonInstance().getMessageRegistry(); final Open open = (Open) msgReg.parseMessage(Unpooled.copiedBuffer(inputBytes.get(13))); final Set types = Sets.newHashSet(); for (final BgpParameters param : open.getBgpParameters()) { diff --git a/bgp/parser-impl/src/test/java/org/opendaylight/protocol/bgp/parser/impl/ComplementaryTest.java b/bgp/parser-impl/src/test/java/org/opendaylight/protocol/bgp/parser/impl/ComplementaryTest.java index 7a0d7e544c..e27f0a621c 100644 --- a/bgp/parser-impl/src/test/java/org/opendaylight/protocol/bgp/parser/impl/ComplementaryTest.java +++ b/bgp/parser-impl/src/test/java/org/opendaylight/protocol/bgp/parser/impl/ComplementaryTest.java @@ -243,7 +243,7 @@ public class ComplementaryTest { @Test public void testBGPHeaderParser() throws Exception { - final MessageRegistry msgReg = ServiceLoaderBGPExtensionProviderContext.createConsumerContext().getMessageRegistry(); + final MessageRegistry msgReg = ServiceLoaderBGPExtensionProviderContext.getSingletonInstance().getMessageRegistry(); try { msgReg.parseMessage(Unpooled.copiedBuffer(new byte[] { (byte) 0, (byte) 0 })); fail("Exception should have occured."); @@ -268,7 +268,7 @@ public class ComplementaryTest { @Test public void testMessageParser() throws Exception { - final MessageRegistry msgReg = ServiceLoaderBGPExtensionProviderContext.createConsumerContext().getMessageRegistry(); + final MessageRegistry msgReg = ServiceLoaderBGPExtensionProviderContext.getSingletonInstance().getMessageRegistry(); String ex = ""; try { msgReg.serializeMessage(null); diff --git a/bgp/parser-impl/src/test/java/org/opendaylight/protocol/bgp/parser/impl/OpenTest.java b/bgp/parser-impl/src/test/java/org/opendaylight/protocol/bgp/parser/impl/OpenTest.java index 32ad4b0ae1..cba188b722 100644 --- a/bgp/parser-impl/src/test/java/org/opendaylight/protocol/bgp/parser/impl/OpenTest.java +++ b/bgp/parser-impl/src/test/java/org/opendaylight/protocol/bgp/parser/impl/OpenTest.java @@ -41,7 +41,7 @@ public class OpenTest { new As4BytesCaseBuilder().setAs4BytesCapability(new As4BytesCapabilityBuilder().setAsNumber(new AsNumber(1000L)).build()).build()).build()); final Open open = new OpenBuilder().setBgpIdentifier(new Ipv4Address("127.0.0.1")).setMyAsNumber(30).setHoldTimer(3).setVersion( new ProtocolVersion((short) 4)).setBgpParameters(tlvs).build(); - final byte[] msg = new BGPOpenMessageParser(ServiceLoaderBGPExtensionProviderContext.createConsumerContext().getParameterRegistry()).serializeMessage(open); + final byte[] msg = new BGPOpenMessageParser(ServiceLoaderBGPExtensionProviderContext.getSingletonInstance().getParameterRegistry()).serializeMessage(open); assertArrayEquals(this.result, msg); } } diff --git a/bgp/parser-impl/src/test/java/org/opendaylight/protocol/bgp/parser/impl/ParserTest.java b/bgp/parser-impl/src/test/java/org/opendaylight/protocol/bgp/parser/impl/ParserTest.java index 799079c7ad..f8150ac9a4 100644 --- a/bgp/parser-impl/src/test/java/org/opendaylight/protocol/bgp/parser/impl/ParserTest.java +++ b/bgp/parser-impl/src/test/java/org/opendaylight/protocol/bgp/parser/impl/ParserTest.java @@ -85,7 +85,7 @@ public class ParserTest { @BeforeClass public static void setupClass() throws Exception { - reg = ServiceLoaderBGPExtensionProviderContext.createConsumerContext().getMessageRegistry(); + reg = ServiceLoaderBGPExtensionProviderContext.getSingletonInstance().getMessageRegistry(); } @Test diff --git a/bgp/parser-impl/src/test/java/org/opendaylight/protocol/bgp/parser/impl/PathAttributeParserTest.java b/bgp/parser-impl/src/test/java/org/opendaylight/protocol/bgp/parser/impl/PathAttributeParserTest.java index d9fcf82a29..f68034c992 100644 --- a/bgp/parser-impl/src/test/java/org/opendaylight/protocol/bgp/parser/impl/PathAttributeParserTest.java +++ b/bgp/parser-impl/src/test/java/org/opendaylight/protocol/bgp/parser/impl/PathAttributeParserTest.java @@ -24,7 +24,7 @@ public class PathAttributeParserTest { @Test public void testOriginParser() throws Exception { try { - ServiceLoaderBGPExtensionProviderContext.createConsumerContext().getAttributeRegistry().parseAttributes(Unpooled.copiedBuffer(new byte[] { 0x40, 0x01, 0x01, 0x04 })); + ServiceLoaderBGPExtensionProviderContext.getSingletonInstance().getAttributeRegistry().parseAttributes(Unpooled.copiedBuffer(new byte[] { 0x40, 0x01, 0x01, 0x04 })); fail("This needs to fail."); } catch (final BGPDocumentedException e) { assertEquals("Unknown Origin type.", e.getMessage()); diff --git a/bgp/parser-spi/src/main/java/org/opendaylight/protocol/bgp/parser/spi/pojo/ServiceLoaderBGPExtensionProviderContext.java b/bgp/parser-spi/src/main/java/org/opendaylight/protocol/bgp/parser/spi/pojo/ServiceLoaderBGPExtensionProviderContext.java index 2a35d08bd2..98c00d01f8 100644 --- a/bgp/parser-spi/src/main/java/org/opendaylight/protocol/bgp/parser/spi/pojo/ServiceLoaderBGPExtensionProviderContext.java +++ b/bgp/parser-spi/src/main/java/org/opendaylight/protocol/bgp/parser/spi/pojo/ServiceLoaderBGPExtensionProviderContext.java @@ -9,23 +9,39 @@ package org.opendaylight.protocol.bgp.parser.spi.pojo; import java.util.ServiceLoader; -import org.opendaylight.protocol.bgp.parser.spi.BGPExtensionConsumerContext; import org.opendaylight.protocol.bgp.parser.spi.BGPExtensionProviderActivator; import org.opendaylight.protocol.bgp.parser.spi.BGPExtensionProviderContext; public final class ServiceLoaderBGPExtensionProviderContext { - private ServiceLoaderBGPExtensionProviderContext() { + private static final class Holder { + private static final BGPExtensionProviderContext INSTANCE; - } + static { + try { + INSTANCE = create(); + } catch (final Exception e) { + throw new ExceptionInInitializerError(e); + } + } + } - public static BGPExtensionConsumerContext createConsumerContext() { - final BGPExtensionProviderContext ctx = new SimpleBGPExtensionProviderContext(); + public static BGPExtensionProviderContext create() throws Exception { + final BGPExtensionProviderContext ctx = new SimpleBGPExtensionProviderContext(); - final ServiceLoader loader = ServiceLoader.load(BGPExtensionProviderActivator.class); - for (BGPExtensionProviderActivator a : loader) { - a.start(ctx); - } + final ServiceLoader loader = ServiceLoader + .load(BGPExtensionProviderActivator.class); + for (BGPExtensionProviderActivator a : loader) { + a.start(ctx); + } - return ctx; - } + return ctx; + } + + public static BGPExtensionProviderContext getSingletonInstance() { + return Holder.INSTANCE; + } + + private ServiceLoaderBGPExtensionProviderContext() { + + } } diff --git a/bgp/testtool/src/main/java/org/opendaylight/protocol/bgp/testtool/Main.java b/bgp/testtool/src/main/java/org/opendaylight/protocol/bgp/testtool/Main.java index dae066981f..3beecf8048 100644 --- a/bgp/testtool/src/main/java/org/opendaylight/protocol/bgp/testtool/Main.java +++ b/bgp/testtool/src/main/java/org/opendaylight/protocol/bgp/testtool/Main.java @@ -17,6 +17,7 @@ import java.util.HashMap; import java.util.Map; import org.opendaylight.protocol.bgp.parser.BGPSessionListener; +import org.opendaylight.protocol.bgp.parser.impl.BGPActivator; import org.opendaylight.protocol.bgp.parser.spi.pojo.ServiceLoaderBGPExtensionProviderContext; import org.opendaylight.protocol.bgp.rib.impl.BGPDispatcherImpl; import org.opendaylight.protocol.bgp.rib.impl.BGPSessionProposalImpl; @@ -63,7 +64,9 @@ public final class Main { private static final int RECONNECT_MILLIS = 5000; private Main() throws Exception { - this.dispatcher = new BGPDispatcherImpl(ServiceLoaderBGPExtensionProviderContext.createConsumerContext().getMessageRegistry(), + BGPActivator bgpActivator = new BGPActivator(); + bgpActivator.start(ServiceLoaderBGPExtensionProviderContext.getSingletonInstance()); + this.dispatcher = new BGPDispatcherImpl(ServiceLoaderBGPExtensionProviderContext.getSingletonInstance().getMessageRegistry(), new HashedWheelTimer(), new NioEventLoopGroup(), new NioEventLoopGroup()); } diff --git a/bgp/testtool/src/test/java/org/opendaylight/protocol/bgp/testtool/BGPSpeakerMock.java b/bgp/testtool/src/test/java/org/opendaylight/protocol/bgp/testtool/BGPSpeakerMock.java index 298d723933..4b85141182 100644 --- a/bgp/testtool/src/test/java/org/opendaylight/protocol/bgp/testtool/BGPSpeakerMock.java +++ b/bgp/testtool/src/test/java/org/opendaylight/protocol/bgp/testtool/BGPSpeakerMock.java @@ -84,7 +84,7 @@ public class BGPSpeakerMock, L extends SessionLi final SessionNegotiatorFactory snf = new BGPSessionNegotiatorFactory(new HashedWheelTimer(), prefs, new AsNumber(72L)); - final BGPSpeakerMock mock = new BGPSpeakerMock<>(snf, new BGPHandlerFactory(ServiceLoaderBGPExtensionProviderContext.createConsumerContext().getMessageRegistry()), new DefaultPromise(GlobalEventExecutor.INSTANCE)); + final BGPSpeakerMock mock = new BGPSpeakerMock<>(snf, new BGPHandlerFactory(ServiceLoaderBGPExtensionProviderContext.getSingletonInstance().getMessageRegistry()), new DefaultPromise(GlobalEventExecutor.INSTANCE)); mock.createServer(new InetSocketAddress("127.0.0.2", 12345), f); } diff --git a/integration-tests/src/test/java/org/opendaylight/protocol/integration/bgp/ParserToSalTest.java b/integration-tests/src/test/java/org/opendaylight/protocol/integration/bgp/ParserToSalTest.java index 189424545f..fde8121d85 100644 --- a/integration-tests/src/test/java/org/opendaylight/protocol/integration/bgp/ParserToSalTest.java +++ b/integration-tests/src/test/java/org/opendaylight/protocol/integration/bgp/ParserToSalTest.java @@ -96,7 +96,7 @@ public class ParserToSalTest { public void setUp() throws Exception { MockitoAnnotations.initMocks(this); final List bgpMessages = HexDumpBGPFileParser.parseMessages(ParserToSalTest.class.getResourceAsStream(this.hex_messages)); - this.mock = new BGPMock(new EventBus("test"), ServiceLoaderBGPExtensionProviderContext.createConsumerContext().getMessageRegistry(), Lists.newArrayList(fixMessages(bgpMessages))); + this.mock = new BGPMock(new EventBus("test"), ServiceLoaderBGPExtensionProviderContext.getSingletonInstance().getMessageRegistry(), Lists.newArrayList(fixMessages(bgpMessages))); Mockito.doReturn(this.mockedTransaction).when(this.providerService).beginTransaction(); diff --git a/pcep/testtool/src/main/java/org/opendaylight/protocol/pcep/testtool/Main.java b/pcep/testtool/src/main/java/org/opendaylight/protocol/pcep/testtool/Main.java index 7ae1c16e1c..7ce538f9ae 100644 --- a/pcep/testtool/src/main/java/org/opendaylight/protocol/pcep/testtool/Main.java +++ b/pcep/testtool/src/main/java/org/opendaylight/protocol/pcep/testtool/Main.java @@ -15,6 +15,7 @@ import java.net.InetSocketAddress; import org.opendaylight.protocol.pcep.PCEPSessionProposalFactory; import org.opendaylight.protocol.pcep.ietf.initiated00.Stateful07SessionProposalFactory; +import org.opendaylight.protocol.pcep.ietf.stateful07.StatefulActivator; import org.opendaylight.protocol.pcep.impl.DefaultPCEPSessionNegotiatorFactory; import org.opendaylight.protocol.pcep.impl.PCEPDispatcherImpl; import org.opendaylight.protocol.pcep.spi.pojo.ServiceLoaderPCEPExtensionProviderContext; @@ -116,6 +117,9 @@ public final class Main { final Open prefs = spf.getSessionProposal(address, 0); + StatefulActivator activator07 = new StatefulActivator(); + activator07.start(ServiceLoaderPCEPExtensionProviderContext.getSingletonInstance()); + final PCEPDispatcherImpl dispatcher = new PCEPDispatcherImpl(ServiceLoaderPCEPExtensionProviderContext.getSingletonInstance().getMessageHandlerRegistry(), new DefaultPCEPSessionNegotiatorFactory(new HashedWheelTimer(), prefs, 5), new NioEventLoopGroup(), new NioEventLoopGroup()); dispatcher.createServer(address, new TestingSessionListenerFactory()).get();