X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=bgp%2Fparser-impl%2Fsrc%2Ftest%2Fjava%2Forg%2Fopendaylight%2Fprotocol%2Fbgp%2Fparser%2Fimpl%2FPathAttributeParserTest.java;h=7be43ba9c7e16e40bd48f858dae682b4d7ac4284;hb=3c135df98a164d4207775de96a5217a392d1949e;hp=f68034c9920459ea3912430554f21d20da4eaef3;hpb=1d5bd3bd3d3b83d61c758fbc4df747a56fe44343;p=bgpcep.git 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 f68034c992..7be43ba9c7 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 @@ -9,28 +9,81 @@ package org.opendaylight.protocol.bgp.parser.impl; import static org.junit.Assert.assertArrayEquals; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; -import io.netty.buffer.Unpooled; +import io.netty.buffer.ByteBuf; +import io.netty.buffer.Unpooled; +import java.util.Arrays; import org.junit.Test; import org.opendaylight.protocol.bgp.parser.BGPDocumentedException; import org.opendaylight.protocol.bgp.parser.BGPParsingException; +import org.opendaylight.protocol.bgp.parser.impl.message.update.AigpAttributeParser; +import org.opendaylight.protocol.bgp.parser.spi.AttributeUtil; +import org.opendaylight.protocol.bgp.parser.spi.BGPExtensionProviderContext; import org.opendaylight.protocol.bgp.parser.spi.pojo.ServiceLoaderBGPExtensionProviderContext; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.path.attributes.Attributes; +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.message.rev130919.path.attributes.attributes.Aigp; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.path.attributes.attributes.aigp.AigpTlv; /* - * To test incorrect values. + * This class is aimed to test parsing and serializing path attributes. */ public class PathAttributeParserTest { - @Test - public void testOriginParser() throws Exception { - try { - 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()); - assertArrayEquals(new byte[] { 0x01, 0x01, 0x04 }, e.getData()); - } catch (final BGPParsingException e) { - fail("This exception should not occur."); - } - } + + @Test + public void testOriginParser() { + try { + 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()); + assertArrayEquals(new byte[] { 0x01, 0x01, 0x04 }, e.getData()); + } catch (final BGPParsingException e) { + fail("This exception should not occur."); + } + } + + @Test + public void testParsingAigpAttributeWithCorrectTLV() throws BGPDocumentedException, BGPParsingException { + final byte[] value = new byte[] { 1, 0, 11, 0, 0, 0, 0, 0, 0, 0, 8 }; + final ByteBuf buffer = Unpooled.buffer(); + + AttributeUtil.formatAttribute(AttributeUtil.OPTIONAL, AigpAttributeParser.TYPE, Unpooled.copiedBuffer(value), buffer); + + final BGPExtensionProviderContext providerContext = ServiceLoaderBGPExtensionProviderContext.getSingletonInstance(); + final Attributes pathAttributes = providerContext.getAttributeRegistry().parseAttributes(buffer); + final Aigp aigp = pathAttributes.getAigp(); + final AigpTlv tlv = aigp.getAigpTlv(); + + assertNotNull("Tlv should not be null.", tlv); + assertEquals("Aigp tlv should have metric with value 8.", 8, tlv.getMetric().getValue().intValue()); + } + + @Test + public void testSerializingAigpAttribute() throws BGPDocumentedException, BGPParsingException { + final byte[] value = new byte[] { 1, 0, 11, 0, 0, 0, 0, 0, 0, 0, 8 }; + final ByteBuf inputData = Unpooled.buffer(); + final ByteBuf testBuffer = Unpooled.buffer(); + + AttributeUtil.formatAttribute(AttributeUtil.OPTIONAL, AigpAttributeParser.TYPE, Unpooled.copiedBuffer(value), inputData); + + final BGPExtensionProviderContext providerContext = ServiceLoaderBGPExtensionProviderContext.getSingletonInstance(); + final Attributes pathAttributes = providerContext.getAttributeRegistry().parseAttributes(inputData); + final Aigp aigp = pathAttributes.getAigp(); + + final AttributesBuilder pathAttributesBuilder = new AttributesBuilder(); + pathAttributesBuilder.setAigp(aigp); + + final AigpAttributeParser parser = new AigpAttributeParser(); + parser.serializeAttribute(pathAttributesBuilder.build(), testBuffer); + + final byte[] unparserData = inputData.copy(0, inputData.writerIndex()).array(); + final byte[] serializedData = testBuffer.copy(0, inputData.writerIndex()).array(); + + assertTrue("Buffers should be the same.", Arrays.equals(unparserData, serializedData)); + } }