X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=pcep%2Fspi%2Fsrc%2Ftest%2Fjava%2Forg%2Fopendaylight%2Fprotocol%2Fpcep%2Fspi%2FRegistryTest.java;h=53c49bc1b25ae947ba846518f5cecc94acf97616;hb=2f3cf555f60c85d54af16d9d8d8f4e55523db2c3;hp=a27addcc46e8700d14cd9e0f9a9d6670ac8f0862;hpb=a81d2224e7f84d98d894faf58a3bb3b73c8ec5dd;p=bgpcep.git diff --git a/pcep/spi/src/test/java/org/opendaylight/protocol/pcep/spi/RegistryTest.java b/pcep/spi/src/test/java/org/opendaylight/protocol/pcep/spi/RegistryTest.java index a27addcc46..53c49bc1b2 100644 --- a/pcep/spi/src/test/java/org/opendaylight/protocol/pcep/spi/RegistryTest.java +++ b/pcep/spi/src/test/java/org/opendaylight/protocol/pcep/spi/RegistryTest.java @@ -7,6 +7,11 @@ */ package org.opendaylight.protocol.pcep.spi; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.anyBoolean; +import static org.mockito.Mockito.doNothing; +import static org.mockito.Mockito.doReturn; + import io.netty.buffer.ByteBuf; import io.netty.buffer.Unpooled; import java.util.ArrayList; @@ -14,32 +19,38 @@ import java.util.Collections; import java.util.List; import org.junit.Before; import org.junit.Test; +import org.junit.runner.RunWith; import org.mockito.Mock; -import org.mockito.Mockito; -import org.mockito.MockitoAnnotations; +import org.mockito.junit.MockitoJUnitRunner; import org.opendaylight.protocol.pcep.spi.pojo.AbstractPCEPExtensionProviderActivator; import org.opendaylight.protocol.pcep.spi.pojo.ServiceLoaderPCEPExtensionProviderContext; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.message.rev131007.Keepalive; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.message.rev131007.KeepaliveBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.Message; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.Object; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.ObjectHeader; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.Tlv; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.exclude.route.object.xro.Subobject; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.exclude.route.object.xro.SubobjectBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.of.list.tlv.OfList; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.of.list.tlv.OfListBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.open.object.OpenBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.rp.object.Rp; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.rsvp.rev130820.basic.explicit.route.subobjects.subobject.type.AsNumberCase; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.rsvp.rev130820.basic.explicit.route.subobjects.subobject.type.AsNumberCaseBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.rsvp.rev130820.basic.explicit.route.subobjects.subobject.type.IpPrefixCase; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.rsvp.rev130820.label.subobject.LabelType; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.rsvp.rev130820.label.subobject.label.type.Type1LabelCase; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.rsvp.rev130820.label.subobject.label.type.Type1LabelCaseBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.rsvp.rev130820.record.route.subobjects.subobject.type.IpPrefixCaseBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.rsvp.rev130820.record.route.subobjects.subobject.type.LabelCase; - +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.iana.rev130816.EnterpriseNumber; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.message.rev181109.Keepalive; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.message.rev181109.KeepaliveBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev181109.Message; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev181109.Object; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev181109.ObjectHeader; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev181109.Tlv; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev181109.exclude.route.object.xro.Subobject; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev181109.exclude.route.object.xro.SubobjectBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev181109.of.list.tlv.OfList; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev181109.of.list.tlv.OfListBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev181109.open.object.OpenBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev181109.rp.object.Rp; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev181109.vendor.information.EnterpriseSpecificInformation; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev181109.vendor.information.objects.VendorInformationObject; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev181109.vendor.information.tlvs.VendorInformationTlv; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.rsvp.rev150820.basic.explicit.route.subobjects.subobject.type.AsNumberCase; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.rsvp.rev150820.basic.explicit.route.subobjects.subobject.type.AsNumberCaseBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.rsvp.rev150820.basic.explicit.route.subobjects.subobject.type.IpPrefixCase; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.rsvp.rev150820.label.subobject.LabelType; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.rsvp.rev150820.label.subobject.label.type.Type1LabelCase; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.rsvp.rev150820.label.subobject.label.type.Type1LabelCaseBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.rsvp.rev150820.record.route.subobjects.subobject.type.IpPrefixCaseBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.rsvp.rev150820.record.route.subobjects.subobject.type.LabelCase; +import org.opendaylight.yangtools.concepts.Registration; + +@RunWith(MockitoJUnitRunner.StrictStubs.class) public class RegistryTest { @Mock @@ -64,6 +75,7 @@ public class RegistryTest { @Mock ObjectParser objectParser; + @Mock ObjectSerializer objectSerializer; @@ -77,41 +89,52 @@ public class RegistryTest { @Mock LabelSerializer labelSerializer; - public final List regs = new ArrayList<>(); + @Mock + VendorInformationObject esi; + + @Mock + EnterpriseSpecificInformation es; + + @Mock + VendorInformationTlv viTlv; - AbstractPCEPExtensionProviderActivator activator = new AbstractPCEPExtensionProviderActivator() { + public final List regs = new ArrayList<>(); + + final AbstractPCEPExtensionProviderActivator activator = new AbstractPCEPExtensionProviderActivator() { @Override - protected List startImpl(PCEPExtensionProviderContext context) { + protected List startImpl(final PCEPExtensionProviderContext context) { return RegistryTest.this.regs; } }; - PCEPExtensionProviderContext ctx = ServiceLoaderPCEPExtensionProviderContext.getSingletonInstance(); + final PCEPExtensionProviderContext ctx = ServiceLoaderPCEPExtensionProviderContext.getSingletonInstance(); @Before public void setUp() throws PCEPDeserializerException { - MockitoAnnotations.initMocks(this); - Mockito.doReturn(null).when(this.xroParser).parseSubobject(Mockito.any(ByteBuf.class), Mockito.anyBoolean()); - Mockito.doNothing().when(this.xroSerializer).serializeSubobject(Mockito.any(Subobject.class), Mockito.any(ByteBuf.class)); + doReturn(null).when(this.xroParser).parseSubobject(any(ByteBuf.class), anyBoolean()); + doNothing().when(this.xroSerializer).serializeSubobject(any(Subobject.class), any(ByteBuf.class)); + + doReturn(this.viTlv).when(this.tlvParser).parseTlv(any(ByteBuf.class)); + doNothing().when(this.tlvSerializer).serializeTlv(any(Tlv.class), any(ByteBuf.class)); - Mockito.doReturn(null).when(this.rroParser).parseSubobject(Mockito.any(ByteBuf.class)); - Mockito.doNothing().when(this.rroSerializer).serializeSubobject(Mockito.any(org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.reported.route.object.rro.Subobject.class), Mockito.any(ByteBuf.class)); + doReturn(5).when(this.objectParser).getObjectClass(); + doReturn(1).when(this.objectParser).getObjectType(); + doReturn(new OpenBuilder().build()).when(this.objectParser).parseObject(any(ObjectHeader.class), + any(ByteBuf.class)); + doNothing().when(this.objectSerializer).serializeObject(any(Object.class), any(ByteBuf.class)); - Mockito.doReturn(null).when(this.eroParser).parseSubobject(Mockito.any(ByteBuf.class), Mockito.anyBoolean()); - Mockito.doNothing().when(this.eroSerializer).serializeSubobject(Mockito.any(org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.explicit.route.object.ero.Subobject.class), Mockito.any(ByteBuf.class)); + doReturn(null).when(this.msgParser).parseMessage(any(ByteBuf.class), any(List.class)); + doNothing().when(this.msgSerializer).serializeMessage(any(Message.class), any(ByteBuf.class)); - Mockito.doReturn(null).when(this.tlvParser).parseTlv(Mockito.any(ByteBuf.class)); - Mockito.doNothing().when(this.tlvSerializer).serializeTlv(Mockito.any(Tlv.class), Mockito.any(ByteBuf.class)); + doNothing().when(this.labelSerializer).serializeLabel(anyBoolean(), anyBoolean(), any(LabelType.class), + any(ByteBuf.class)); - Mockito.doReturn(null).when(this.objectParser).parseObject(Mockito.any(ObjectHeader.class), Mockito.any(ByteBuf.class)); - Mockito.doNothing().when(this.objectSerializer).serializeObject(Mockito.any(Object.class), Mockito.any(ByteBuf.class)); + doReturn(this.es).when(this.esi).getEnterpriseSpecificInformation(); - Mockito.doReturn(null).when(this.msgParser).parseMessage(Mockito.any(ByteBuf.class), Mockito.any(List.class)); - Mockito.doNothing().when(this.msgSerializer).serializeMessage(Mockito.any(Message.class), Mockito.any(ByteBuf.class)); + doReturn(this.es).when(this.viTlv).getEnterpriseSpecificInformation(); - Mockito.doReturn(null).when(this.labelParser).parseLabel(Mockito.any(ByteBuf.class)); - Mockito.doNothing().when(this.labelSerializer).serializeLabel(Mockito.anyBoolean(), Mockito.anyBoolean(), Mockito.any(LabelType.class), Mockito.any(ByteBuf.class)); + doReturn(EnterpriseSpecificInformation.class).when(this.es).getImplementedInterface(); } @Test @@ -128,7 +151,7 @@ public class RegistryTest { this.regs.add(this.ctx.registerTlvParser(1, this.tlvParser)); this.regs.add(this.ctx.registerTlvSerializer(OfList.class, this.tlvSerializer)); - this.regs.add(this.ctx.registerObjectParser(5, 1, this.objectParser)); + this.regs.add(this.ctx.registerObjectParser(this.objectParser)); this.regs.add(this.ctx.registerObjectSerializer(Rp.class, this.objectSerializer)); this.regs.add(this.ctx.registerMessageParser(6, this.msgParser)); @@ -136,15 +159,29 @@ public class RegistryTest { this.regs.add(this.ctx.registerLabelParser(7, this.labelParser)); this.regs.add(this.ctx.registerLabelSerializer(Type1LabelCase.class, this.labelSerializer)); + + this.regs.add(this.ctx.registerVendorInformationObjectParser(new EnterpriseNumber(10L), this.objectParser)); + this.regs.add(this.ctx.registerVendorInformationObjectSerializer(EnterpriseSpecificInformation.class, + this.objectSerializer)); + + this.regs.add(this.ctx.registerVendorInformationTlvParser(new EnterpriseNumber(12L), this.tlvParser)); + this.regs.add(this.ctx.registerVendorInformationTlvSerializer(EnterpriseSpecificInformation.class, + this.tlvSerializer)); + final ByteBuf buffer = Unpooled.buffer(); this.ctx.getXROSubobjectHandlerRegistry().parseSubobject(2, buffer, false); - this.ctx.getXROSubobjectHandlerRegistry().serializeSubobject(new SubobjectBuilder().setSubobjectType(new AsNumberCaseBuilder().build()).build(), buffer); + this.ctx.getXROSubobjectHandlerRegistry().serializeSubobject(new SubobjectBuilder() + .setSubobjectType(new AsNumberCaseBuilder().build()).build(), buffer); this.ctx.getEROSubobjectHandlerRegistry().parseSubobject(3, buffer, true); - this.ctx.getEROSubobjectHandlerRegistry().serializeSubobject(new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.explicit.route.object.ero.SubobjectBuilder().setSubobjectType(new AsNumberCaseBuilder().build()).build(), buffer); + this.ctx.getEROSubobjectHandlerRegistry().serializeSubobject(new org.opendaylight.yang.gen.v1.urn.opendaylight + .params.xml.ns.yang.pcep.types.rev181109.explicit.route.object.ero.SubobjectBuilder() + .setSubobjectType(new AsNumberCaseBuilder().build()).build(), buffer); this.ctx.getRROSubobjectHandlerRegistry().parseSubobject(4, buffer); - this.ctx.getRROSubobjectHandlerRegistry().serializeSubobject(new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.reported.route.object.rro.SubobjectBuilder().setSubobjectType(new IpPrefixCaseBuilder().build()).build(), buffer); + this.ctx.getRROSubobjectHandlerRegistry().serializeSubobject(new org.opendaylight.yang.gen.v1.urn.opendaylight + .params.xml.ns.yang.pcep.types.rev181109.reported.route.object.rro.SubobjectBuilder() + .setSubobjectType(new IpPrefixCaseBuilder().build()).build(), buffer); this.ctx.getLabelHandlerRegistry().parseLabel(1, buffer); this.ctx.getLabelHandlerRegistry().serializeLabel(true, false, new Type1LabelCaseBuilder().build(), buffer); @@ -155,9 +192,16 @@ public class RegistryTest { this.ctx.getObjectHandlerRegistry().parseObject(4, 1, new ObjectHeaderImpl(true, false), buffer); this.ctx.getObjectHandlerRegistry().serializeObject(new OpenBuilder().build(), buffer); - this.ctx.getMessageHandlerRegistry().parseMessage(6, buffer, Collections. emptyList()); + this.ctx.getMessageHandlerRegistry().parseMessage(6, buffer, Collections.emptyList()); this.ctx.getMessageHandlerRegistry().serializeMessage(new KeepaliveBuilder().build(), buffer); + this.ctx.getVendorInformationObjectRegistry().parseVendorInformationObject(new EnterpriseNumber(10L), + new ObjectHeaderImpl(true, false), buffer); + this.ctx.getVendorInformationObjectRegistry().serializeVendorInformationObject(this.esi, buffer); + + this.ctx.getVendorInformationTlvRegistry().parseVendorInformationTlv(new EnterpriseNumber(12L), buffer); + this.ctx.getVendorInformationTlvRegistry().serializeVendorInformationTlv(this.viTlv, buffer); + this.activator.start(this.ctx); this.activator.close(); }