X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=bgp%2Fconcepts%2Fsrc%2Ftest%2Fjava%2Forg%2Fopendaylight%2Fbgp%2Fconcepts%2FNextHopUtilTest.java;h=c65495ff83ef7e6c281d3c8ce8d8e7e6ad177243;hb=b9399827daa6f7ced6cd72a18e4474e863d39378;hp=2e54b4920395cc679937731ac344e775e89caec0;hpb=75aeebc0b23c415b49c389b9a9040822f3aa3a64;p=bgpcep.git diff --git a/bgp/concepts/src/test/java/org/opendaylight/bgp/concepts/NextHopUtilTest.java b/bgp/concepts/src/test/java/org/opendaylight/bgp/concepts/NextHopUtilTest.java index 2e54b49203..c65495ff83 100644 --- a/bgp/concepts/src/test/java/org/opendaylight/bgp/concepts/NextHopUtilTest.java +++ b/bgp/concepts/src/test/java/org/opendaylight/bgp/concepts/NextHopUtilTest.java @@ -7,47 +7,88 @@ */ package org.opendaylight.bgp.concepts; +import static org.junit.Assert.assertArrayEquals; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNull; import static org.junit.Assert.fail; +import io.netty.buffer.ByteBuf; import io.netty.buffer.Unpooled; import org.junit.Test; +import org.opendaylight.protocol.util.ByteArray; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv4Address; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv6Address; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev130919.next.hop.CNextHop; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev130919.next.hop.c.next.hop.Ipv4NextHopCase; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev130919.next.hop.c.next.hop.Ipv4NextHopCaseBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev130919.next.hop.c.next.hop.Ipv6NextHopCase; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev130919.next.hop.c.next.hop.Ipv6NextHopCaseBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev130919.next.hop.c.next.hop.ipv4.next.hop._case.Ipv4NextHopBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev130919.next.hop.c.next.hop.ipv6.next.hop._case.Ipv6NextHopBuilder; public class NextHopUtilTest { + private static final byte[] ipv4B = { 42, 42, 42, 42 }; + private static final byte[] ipv6B = { 0x20, 1, 0x0d, (byte) 0xb8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 }; + private static final byte[] ipv6lB = { 0x20, 1, 0x0d, (byte) 0xb8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, (byte) 0xfe, (byte) 0x80, 0, 0, 0, 0, 0, 0, (byte) 0xc0, 1, 0x0b, (byte) 0xff, (byte) 0xfe, 0x7e, 0, 0 }; + + private static final Ipv4Address ipv4 = new Ipv4Address("42.42.42.42"); + private static final Ipv6Address ipv6 = new Ipv6Address("2001:db8::1"); + private static final Ipv6Address ipv6l = new Ipv6Address("fe80::c001:bff:fe7e:0"); + + @Test + public void testSerializeNextHop() { + CNextHop hop = new Ipv4NextHopCaseBuilder().setIpv4NextHop(new Ipv4NextHopBuilder().setGlobal(ipv4).build()).build(); + final ByteBuf buffer = Unpooled.buffer(); + NextHopUtil.serializeNextHop(hop, buffer); + assertArrayEquals(ipv4B, ByteArray.readAllBytes(buffer)); + + hop = new Ipv6NextHopCaseBuilder().setIpv6NextHop(new Ipv6NextHopBuilder().setGlobal(ipv6).build()).build(); + buffer.clear(); + NextHopUtil.serializeNextHop(hop, buffer); + assertArrayEquals(ipv6B, ByteArray.readAllBytes(buffer)); + + hop = new Ipv6NextHopCaseBuilder().setIpv6NextHop(new Ipv6NextHopBuilder().setGlobal(ipv6).setLinkLocal(ipv6l).build()).build(); + buffer.clear(); + NextHopUtil.serializeNextHop(hop, buffer); + assertArrayEquals(ipv6lB, ByteArray.readAllBytes(buffer)); + + hop = new Ipv6NextHopCaseBuilder().setIpv6NextHop(new Ipv6NextHopBuilder().setLinkLocal(ipv6l).build()).build(); + buffer.clear(); + try { + NextHopUtil.serializeNextHop(hop, buffer); + fail("Exception should happen"); + } catch (final IllegalArgumentException e) { + assertEquals("Ipv6 Next Hop is missing Global address.", e.getMessage()); + } + } + @Test - public void testNlriUtil() { + public void testParseNextHop() { CNextHop hop = null; - final byte[] ipv4 = new byte[] { 42, 42, 42, 42 }; try { - hop = NextHopUtil.parseNextHop(Unpooled.wrappedBuffer(ipv4)); + hop = NextHopUtil.parseNextHop(Unpooled.wrappedBuffer(ipv4B)); } catch (final IllegalArgumentException e) { fail("This exception should not happen"); } - assertEquals("42.42.42.42", ((Ipv4NextHopCase) hop).getIpv4NextHop().getGlobal().getValue()); + assertEquals(ipv4, ((Ipv4NextHopCase) hop).getIpv4NextHop().getGlobal()); - final byte[] ipv6 = new byte[] { (byte) 0x20, (byte) 0x01, (byte) 0x0d, (byte) 0xb8, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 01 }; try { - hop = NextHopUtil.parseNextHop(Unpooled.wrappedBuffer(ipv6)); + hop = NextHopUtil.parseNextHop(Unpooled.wrappedBuffer(ipv6B)); } catch (final IllegalArgumentException e) { fail("This exception should not happen"); } - assertEquals("2001:db8::1", ((Ipv6NextHopCase) hop).getIpv6NextHop().getGlobal().getValue()); + assertEquals(ipv6, ((Ipv6NextHopCase) hop).getIpv6NextHop().getGlobal()); assertNull(((Ipv6NextHopCase) hop).getIpv6NextHop().getLinkLocal()); - final byte[] ipv6l = new byte[] { (byte) 0x20, (byte) 0x01, (byte) 0x0d, (byte) 0xb8, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, - 01, (byte) 0xfe, (byte) 0x80, 00, 00, 00, 00, 00, 00, (byte) 0xc0, 01, 0x0b, (byte) 0xff, (byte) 0xfe, 0x7e, 00, 00 }; try { - hop = NextHopUtil.parseNextHop(Unpooled.wrappedBuffer(ipv6l)); + hop = NextHopUtil.parseNextHop(Unpooled.wrappedBuffer(ipv6lB)); } catch (final IllegalArgumentException e) { fail("This exception should not happen"); } - assertEquals("2001:db8::1", ((Ipv6NextHopCase) hop).getIpv6NextHop().getGlobal().getValue()); - assertEquals("fe80::c001:bff:fe7e:0", ((Ipv6NextHopCase) hop).getIpv6NextHop().getLinkLocal().getValue()); + assertEquals(ipv6, ((Ipv6NextHopCase) hop).getIpv6NextHop().getGlobal()); + assertEquals(ipv6l, ((Ipv6NextHopCase) hop).getIpv6NextHop().getLinkLocal()); final byte[] wrong = new byte[] { (byte) 0x20, (byte) 0x01, (byte) 0x0d }; try {