import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
+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.impl.message.open.LlGracefulCapabilityHandler;
+import org.opendaylight.protocol.bgp.parser.spi.AddressFamilyRegistry;
import org.opendaylight.protocol.bgp.parser.spi.BGPExtensionProviderContext;
+import org.opendaylight.protocol.bgp.parser.spi.SubsequentAddressFamilyRegistry;
import org.opendaylight.protocol.bgp.parser.spi.pojo.ServiceLoaderBGPExtensionProviderContext;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev180329.open.message.bgp.parameters.optional.capabilities.CParameters;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev180329.open.message.bgp.parameters.optional.capabilities.CParametersBuilder;
private LlGracefulCapabilityHandler handler;
+ @Mock
+ private AddressFamilyRegistry afir;
+ @Mock
+ private SubsequentAddressFamilyRegistry safir;
+
+
@Before
public void setUp() {
+ MockitoAnnotations.initMocks(this);
+ Mockito.doReturn(Ipv4AddressFamily.class).when(this.afir).classForFamily(1);
+ Mockito.doReturn(Ipv6AddressFamily.class).when(this.afir).classForFamily(2);
+ Mockito.doReturn(null).when(this.afir).classForFamily(256);
+ Mockito.doReturn(UnicastSubsequentAddressFamily.class).when(this.safir).classForFamily(1);
+ Mockito.doReturn(null).when(this.safir).classForFamily(-123);
+
final BGPExtensionProviderContext ctx = ServiceLoaderBGPExtensionProviderContext.getSingletonInstance();
this.handler = new LlGracefulCapabilityHandler(
ctx.getAddressFamilyRegistry(), ctx.getSubsequentAddressFamilyRegistry());
this.handler.serializeCapability(cParameters, buffer);
}
+ @Test
+ public void testRecvdUnsupportedAfi() {
+ final byte[] capaBytes = {
+ //header
+ (byte) 0x47, (byte) 0x15,
+ // Ipv4 Unicast, afiFlags = false, timer = 10
+ (byte) 0x00, (byte) 0x01, (byte) 0x01,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x0a,
+ // Unsupported afi, afiFlags = true, timer = 160
+ (byte) 0x01, (byte) 0x00, (byte) 0x01,
+ (byte) 0x80, (byte) 0x00, (byte) 0x00, (byte) 0xa0,
+ //Ipv6 Unicast afiFlags = false, timer = 160
+ (byte) 0x00, (byte) 0x02, (byte) 0x01,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0xa0
+ };
+ final LlGracefulRestartCapability capability = new LlGracefulRestartCapabilityBuilder()
+ .setTables(Arrays.asList(new TablesBuilder()
+ .setAfi(Ipv4AddressFamily.class)
+ .setSafi(UnicastSubsequentAddressFamily.class)
+ .setAfiFlags(new Tables.AfiFlags(Boolean.FALSE))
+ .setLongLivedStaleTime(TEN)
+ .build(),
+ new TablesBuilder()
+ .setAfi(Ipv6AddressFamily.class)
+ .setSafi(UnicastSubsequentAddressFamily.class)
+ .setAfiFlags(new Tables.AfiFlags(Boolean.FALSE))
+ .setLongLivedStaleTime(new Uint24(Uint32.valueOf(160)))
+ .build())).build();
+
+ final CParameters cParameters = new CParametersBuilder().addAugmentation(CParameters1.class,
+ new CParameters1Builder().setLlGracefulRestartCapability(capability).build()).build();
+ LlGracefulCapabilityHandler handler1 = new LlGracefulCapabilityHandler(
+ afir, safir);
+ Assert.assertEquals(cParameters, handler1.parseCapability(Unpooled.wrappedBuffer(capaBytes)
+ .slice(2, capaBytes.length - 2)));
+ }
+
@Test(expected = IllegalArgumentException.class)
public void testUnsupportedSafi() {
final LlGracefulRestartCapability capability = new LlGracefulRestartCapabilityBuilder()
final ByteBuf buffer = Unpooled.buffer();
this.handler.serializeCapability(cParameters, buffer);
}
+
+ @Test
+ public void testRecvdUnsupportedSafi() {
+ final byte[] capaBytes = {
+ //header
+ (byte) 0x47, (byte) 0x15,
+ // Ipv4 Unicast, afiFlags = false, timer = 10
+ (byte) 0x00, (byte) 0x01, (byte) 0x01,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x0a,
+ // Unsupported safi, afiFlags = true, timer = 160
+ (byte) 0x00, (byte) 0x01, (byte) 0x85,
+ (byte) 0x80, (byte) 0x00, (byte) 0x00, (byte) 0xa0,
+ //Ipv6 Unicast afiFlags = false, timer = 160
+ (byte) 0x00, (byte) 0x02, (byte) 0x01,
+ (byte) 0x80, (byte) 0x00, (byte) 0x00, (byte) 0xa0
+ };
+
+ final LlGracefulRestartCapability capability = new LlGracefulRestartCapabilityBuilder()
+ .setTables(Arrays.asList(new TablesBuilder()
+ .setAfi(Ipv4AddressFamily.class)
+ .setSafi(UnicastSubsequentAddressFamily.class)
+ .setAfiFlags(new Tables.AfiFlags(Boolean.FALSE))
+ .setLongLivedStaleTime(TEN)
+ .build(),
+ new TablesBuilder()
+ .setAfi(Ipv6AddressFamily.class)
+ .setSafi(UnicastSubsequentAddressFamily.class)
+ .setAfiFlags(new Tables.AfiFlags(Boolean.TRUE))
+ .setLongLivedStaleTime(new Uint24(Uint32.valueOf(160)))
+ .build())).build();
+
+ final CParameters cParameters = new CParametersBuilder().addAugmentation(CParameters1.class,
+ new CParameters1Builder().setLlGracefulRestartCapability(capability).build()).build();
+ LlGracefulCapabilityHandler handler1 = new LlGracefulCapabilityHandler(
+ afir, safir);
+ Assert.assertEquals(cParameters, handler1.parseCapability(Unpooled.wrappedBuffer(capaBytes)
+ .slice(2, capaBytes.length - 2)));
+ }
}