Fix raw type warnings in bgp/bmp
[bgpcep.git] / bgp / parser-spi / src / test / java / org / opendaylight / protocol / bgp / parser / spi / pojo / BgpTestActivator.java
index 5624cccdb04daf8dc3e8eca1084fe4e2759b049f..28f4e7b7f4c27959e2a412a6b65f8e3fa0564223 100644 (file)
@@ -5,41 +5,70 @@
  * 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.collect.Lists;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyInt;
+import static org.mockito.Mockito.doNothing;
+import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.mock;
+
 import io.netty.buffer.ByteBuf;
+import java.util.ArrayList;
 import java.util.List;
-import org.junit.Assert;
 import org.mockito.Mock;
-import org.mockito.Mockito;
 import org.mockito.MockitoAnnotations;
 import org.opendaylight.protocol.bgp.parser.BGPDocumentedException;
 import org.opendaylight.protocol.bgp.parser.BGPParsingException;
-import org.opendaylight.protocol.bgp.parser.spi.AbstractBGPExtensionProviderActivator;
+import org.opendaylight.protocol.bgp.parser.BGPTreatAsWithdrawException;
 import org.opendaylight.protocol.bgp.parser.spi.AttributeParser;
 import org.opendaylight.protocol.bgp.parser.spi.AttributeSerializer;
+import org.opendaylight.protocol.bgp.parser.spi.BGPExtensionProviderActivator;
 import org.opendaylight.protocol.bgp.parser.spi.BGPExtensionProviderContext;
+import org.opendaylight.protocol.bgp.parser.spi.BgpPrefixSidTlvParser;
+import org.opendaylight.protocol.bgp.parser.spi.BgpPrefixSidTlvSerializer;
 import org.opendaylight.protocol.bgp.parser.spi.CapabilityParser;
 import org.opendaylight.protocol.bgp.parser.spi.CapabilitySerializer;
 import org.opendaylight.protocol.bgp.parser.spi.MessageParser;
 import org.opendaylight.protocol.bgp.parser.spi.MessageSerializer;
+import org.opendaylight.protocol.bgp.parser.spi.NextHopParserSerializer;
 import org.opendaylight.protocol.bgp.parser.spi.NlriParser;
 import org.opendaylight.protocol.bgp.parser.spi.NlriSerializer;
+import org.opendaylight.protocol.bgp.parser.spi.ParameterLengthOverflowException;
 import org.opendaylight.protocol.bgp.parser.spi.ParameterParser;
 import org.opendaylight.protocol.bgp.parser.spi.ParameterSerializer;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.open.message.BgpParameters;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.open.message.bgp.parameters.optional.capabilities.CParameters;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.path.attributes.AttributesBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.multiprotocol.rev130919.update.attributes.MpReachNlriBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.multiprotocol.rev130919.update.attributes.MpUnreachNlriBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev130919.Ipv4AddressFamily;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev130919.UnicastSubsequentAddressFamily;
+import org.opendaylight.protocol.bgp.parser.spi.PeerSpecificParserConstraint;
+import org.opendaylight.protocol.bgp.parser.spi.RevisedErrorHandling;
+import org.opendaylight.protocol.bgp.parser.spi.extended.community.ExtendedCommunityParser;
+import org.opendaylight.protocol.bgp.parser.spi.extended.community.ExtendedCommunitySerializer;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4AddressNoZone;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev200120.open.message.BgpParameters;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev200120.open.message.bgp.parameters.optional.capabilities.CParameters;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev200120.path.attributes.Attributes;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev200120.path.attributes.AttributesBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev200120.path.attributes.attributes.bgp.prefix.sid.bgp.prefix.sid.tlvs.BgpPrefixSidTlv;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.multiprotocol.rev180329.attributes.reach.MpReachNlriBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.multiprotocol.rev180329.attributes.unreach.MpUnreachNlriBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev200120.Ipv4AddressFamily;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev200120.Ipv6AddressFamily;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev200120.UnicastSubsequentAddressFamily;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev200120.extended.community.extended.community.RouteTargetIpv4Case;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev200120.next.hop.CNextHop;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev200120.next.hop.c.next.hop.Ipv4NextHopCase;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev200120.next.hop.c.next.hop.Ipv4NextHopCaseBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev200120.next.hop.c.next.hop.Ipv6NextHopCase;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev200120.next.hop.c.next.hop.ipv4.next.hop._case.Ipv4NextHopBuilder;
+import org.opendaylight.yangtools.concepts.Registration;
 import org.opendaylight.yangtools.yang.binding.DataObject;
 import org.opendaylight.yangtools.yang.binding.Notification;
 
-public class BgpTestActivator extends AbstractBGPExtensionProviderActivator {
+public class BgpTestActivator implements BGPExtensionProviderActivator {
+    interface MockNotification extends DataObject, Notification<MockNotification> {
+        @Override
+        default Class<MockNotification> implementedInterface() {
+            return MockNotification.class;
+        }
+    }
 
     protected static final int TYPE = 0;
     private static final String EMPTY = "";
@@ -69,27 +98,65 @@ public class BgpTestActivator extends AbstractBGPExtensionProviderActivator {
     @Mock
     protected NlriSerializer nlriSerializer;
 
+    @Mock
+    protected ExtendedCommunityParser exParser;
+    @Mock
+    protected ExtendedCommunitySerializer exSerializer;
+
+    protected NextHopParserSerializer nextHopParserSerializer;
+
+    @Mock
+    protected BgpPrefixSidTlvParser sidTlvParser;
+    @Mock
+    protected BgpPrefixSidTlvSerializer sidTlvSerializer;
+
     @Override
-    protected List<AutoCloseable> startImpl(final BGPExtensionProviderContext context) {
+    public List<? extends Registration> start(final BGPExtensionProviderContext context) {
         initMock();
-        final List<AutoCloseable> regs = Lists.newArrayList();
-        regs.add(context.registerAttributeParser(TYPE, this.attrParser));
-        regs.add(context.registerAttributeSerializer(DataObject.class, this.attrSerializer));
+        final List<Registration> regs = new ArrayList<>();
+        regs.add(context.registerAttributeParser(TYPE, attrParser));
+        regs.add(context.registerAttributeSerializer(DataObject.class, attrSerializer));
+
+        regs.add(context.registerParameterParser(TYPE, paramParser));
+        regs.add(context.registerParameterSerializer(BgpParameters.class, paramSerializer));
 
-        regs.add(context.registerParameterParser(TYPE, this.paramParser));
-        regs.add(context.registerParameterSerializer(BgpParameters.class, this.paramSerializer));
+        regs.add(context.registerCapabilityParser(TYPE, capaParser));
+        regs.add(context.registerCapabilitySerializer(CParameters.class, capaSerializer));
 
-        regs.add(context.registerCapabilityParser(TYPE, this.capaParser));
-        regs.add(context.registerCapabilitySerializer(CParameters.class, this.capaSerializer));
+        regs.add(context.registerBgpPrefixSidTlvParser(TYPE, sidTlvParser));
+        regs.add(context.registerBgpPrefixSidTlvSerializer(BgpPrefixSidTlv.class, sidTlvSerializer));
 
-        regs.add(context.registerMessageParser(TYPE, this.msgParser));
-        regs.add(context.registerMessageSerializer(Notification.class, this.msgSerializer));
+        regs.add(context.registerMessageParser(TYPE, msgParser));
+        regs.add(context.registerMessageSerializer(MockNotification.class, msgSerializer));
 
         regs.add(context.registerAddressFamily(Ipv4AddressFamily.class, 1));
+        regs.add(context.registerAddressFamily(Ipv6AddressFamily.class, 2));
         regs.add(context.registerSubsequentAddressFamily(UnicastSubsequentAddressFamily.class, 1));
 
-        regs.add(context.registerNlriParser(Ipv4AddressFamily.class, UnicastSubsequentAddressFamily.class, this.nlriParser));
-        regs.add(context.registerNlriSerializer(DataObject.class, this.nlriSerializer));
+        nextHopParserSerializer = new NextHopParserSerializer() {
+            @Override
+            public CNextHop parseNextHop(final ByteBuf buffer) throws BGPParsingException {
+                return new Ipv4NextHopCaseBuilder().setIpv4NextHop(new Ipv4NextHopBuilder()
+                    .setGlobal(new Ipv4AddressNoZone("127.0.0.1")).build()).build();
+            }
+
+            @Override
+            public void serializeNextHop(final CNextHop cnextHop, final ByteBuf byteAggregator) {
+                final byte[] mpReachBytes = {
+                    0x7f, 0x00, 0x00, 0x01
+                };
+                byteAggregator.writeBytes(mpReachBytes);
+            }
+        };
+
+        regs.add(context.registerNlriParser(Ipv4AddressFamily.class, UnicastSubsequentAddressFamily.class, nlriParser,
+            nextHopParserSerializer, Ipv4NextHopCase.class));
+        regs.add(context.registerNlriParser(Ipv6AddressFamily.class, UnicastSubsequentAddressFamily.class, nlriParser,
+            nextHopParserSerializer, Ipv6NextHopCase.class));
+        regs.add(context.registerNlriSerializer(DataObject.class, nlriSerializer));
+
+        regs.add(context.registerExtendedCommunityParser(0, 0, exParser));
+        regs.add(context.registerExtendedCommunitySerializer(RouteTargetIpv4Case.class, exSerializer));
 
         return regs;
     }
@@ -97,32 +164,42 @@ public class BgpTestActivator extends AbstractBGPExtensionProviderActivator {
     private void initMock() {
         MockitoAnnotations.initMocks(this);
         try {
-            Mockito.doNothing().when(this.attrParser).parseAttribute(Mockito.any(ByteBuf.class), Mockito.any(AttributesBuilder.class));
-            Mockito.doReturn(EMPTY).when(this.attrParser).toString();
-            Mockito.doNothing().when(this.attrSerializer).serializeAttribute(Mockito.any(DataObject.class), Mockito.any(ByteBuf.class));
-            Mockito.doReturn(EMPTY).when(this.attrSerializer).toString();
-
-            Mockito.doReturn(null).when(this.paramParser).parseParameter(Mockito.any(ByteBuf.class));
-            Mockito.doReturn(EMPTY).when(this.paramParser).toString();
-            Mockito.doNothing().when(this.paramSerializer).serializeParameter(Mockito.any(BgpParameters.class), Mockito.any(ByteBuf.class));
-            Mockito.doReturn(EMPTY).when(this.paramSerializer).toString();
-
-            Mockito.doReturn(null).when(this.capaParser).parseCapability(Mockito.any(ByteBuf.class));
-            Mockito.doReturn(EMPTY).when(this.capaParser).toString();
-            Mockito.doNothing().when(this.capaSerializer).serializeCapability(Mockito.any(CParameters.class), Mockito.any(ByteBuf.class));
-            Mockito.doReturn(EMPTY).when(this.capaSerializer).toString();
-
-            Mockito.doReturn(Mockito.mock(Notification.class)).when(this.msgParser).parseMessageBody(Mockito.any(ByteBuf.class), Mockito.anyInt());
-            Mockito.doReturn(EMPTY).when(this.msgParser).toString();
-            Mockito.doNothing().when(this.msgSerializer).serializeMessage(Mockito.any(Notification.class), Mockito.any(ByteBuf.class));
-            Mockito.doReturn(EMPTY).when(this.msgSerializer).toString();
-
-            Mockito.doNothing().when(this.nlriParser).parseNlri(Mockito.any(ByteBuf.class), Mockito.any(MpUnreachNlriBuilder.class));
-            Mockito.doNothing().when(this.nlriParser).parseNlri(Mockito.any(ByteBuf.class), Mockito.any(MpReachNlriBuilder.class));
-            Mockito.doReturn(EMPTY).when(this.nlriParser).toString();
-        } catch (BGPDocumentedException | BGPParsingException e) {
-            Assert.fail();
+            doNothing().when(attrParser).parseAttribute(any(ByteBuf.class), any(AttributesBuilder.class),
+                any(RevisedErrorHandling.class), any(PeerSpecificParserConstraint.class));
+            doReturn(EMPTY).when(attrParser).toString();
+            doNothing().when(attrSerializer).serializeAttribute(any(Attributes.class), any(ByteBuf.class));
+            doReturn(EMPTY).when(attrSerializer).toString();
+
+            doReturn(null).when(paramParser).parseParameter(any(ByteBuf.class));
+            doReturn(EMPTY).when(paramParser).toString();
+            doNothing().when(paramSerializer).serializeParameter(any(BgpParameters.class), any(ByteBuf.class));
+            doReturn(EMPTY).when(paramSerializer).toString();
+
+            doReturn(null).when(capaParser).parseCapability(any(ByteBuf.class));
+            doReturn(EMPTY).when(capaParser).toString();
+            doNothing().when(capaSerializer).serializeCapability(any(CParameters.class), any(ByteBuf.class));
+            doReturn(EMPTY).when(capaSerializer).toString();
+
+            doReturn(null).when(sidTlvParser).parseBgpPrefixSidTlv(any(ByteBuf.class));
+            doReturn(EMPTY).when(sidTlvParser).toString();
+            doNothing().when(sidTlvSerializer).serializeBgpPrefixSidTlv(any(BgpPrefixSidTlv.class),
+                any(ByteBuf.class));
+            doReturn(EMPTY).when(sidTlvSerializer).toString();
+            doReturn(0).when(sidTlvSerializer).getType();
+
+            doReturn(mock(Notification.class)).when(msgParser).parseMessageBody(any(ByteBuf.class), anyInt(),
+                any(PeerSpecificParserConstraint.class));
+            doReturn(EMPTY).when(msgParser).toString();
+            doNothing().when(msgSerializer).serializeMessage(any(Notification.class), any(ByteBuf.class));
+            doReturn(EMPTY).when(msgSerializer).toString();
+
+            doNothing().when(nlriParser).parseNlri(any(ByteBuf.class), any(MpUnreachNlriBuilder.class), any());
+            doNothing().when(nlriParser).parseNlri(any(ByteBuf.class), any(MpReachNlriBuilder.class), any());
+            doReturn(EMPTY).when(nlriParser).toString();
+
+        } catch (BGPDocumentedException | BGPParsingException | BGPTreatAsWithdrawException
+                | ParameterLengthOverflowException e) {
+            throw new IllegalStateException("Mock setup failed", e);
         }
     }
-
 }