Merge "BUG-730 : added test for pcep-spi registry."
authorRobert Varga <rovarga@cisco.com>
Sun, 13 Jul 2014 15:06:40 +0000 (15:06 +0000)
committerGerrit Code Review <gerrit@opendaylight.org>
Sun, 13 Jul 2014 15:06:40 +0000 (15:06 +0000)
pcep/spi/src/test/java/org/opendaylight/protocol/pcep/spi/RegistryTest.java [new file with mode: 0644]

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
new file mode 100644 (file)
index 0000000..a27addc
--- /dev/null
@@ -0,0 +1,164 @@
+/*
+ * Copyright (c) 2014 Cisco Systems, Inc. and others.  All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * 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.pcep.spi;
+
+import io.netty.buffer.ByteBuf;
+import io.netty.buffer.Unpooled;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import org.junit.Before;
+import org.junit.Test;
+import org.mockito.Mock;
+import org.mockito.Mockito;
+import org.mockito.MockitoAnnotations;
+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;
+
+public class RegistryTest {
+
+    @Mock
+    XROSubobjectParser xroParser;
+    @Mock
+    XROSubobjectSerializer xroSerializer;
+
+    @Mock
+    RROSubobjectParser rroParser;
+    @Mock
+    RROSubobjectSerializer rroSerializer;
+
+    @Mock
+    EROSubobjectParser eroParser;
+    @Mock
+    EROSubobjectSerializer eroSerializer;
+
+    @Mock
+    TlvParser tlvParser;
+    @Mock
+    TlvSerializer tlvSerializer;
+
+    @Mock
+    ObjectParser objectParser;
+    @Mock
+    ObjectSerializer objectSerializer;
+
+    @Mock
+    MessageParser msgParser;
+    @Mock
+    MessageSerializer msgSerializer;
+
+    @Mock
+    LabelParser labelParser;
+    @Mock
+    LabelSerializer labelSerializer;
+
+    public final List<AutoCloseable> regs = new ArrayList<>();
+
+    AbstractPCEPExtensionProviderActivator activator = new AbstractPCEPExtensionProviderActivator() {
+
+        @Override
+        protected List<AutoCloseable> startImpl(PCEPExtensionProviderContext context) {
+            return RegistryTest.this.regs;
+        }
+    };
+
+    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));
+
+        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));
+
+        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));
+
+        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));
+
+        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));
+
+        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));
+
+        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));
+    }
+
+    @Test
+    public void testRegistry() throws PCEPDeserializerException {
+        this.regs.add(this.ctx.registerXROSubobjectParser(2, this.xroParser));
+        this.regs.add(this.ctx.registerXROSubobjectSerializer(AsNumberCase.class, this.xroSerializer));
+
+        this.regs.add(this.ctx.registerRROSubobjectParser(3, this.rroParser));
+        this.regs.add(this.ctx.registerRROSubobjectSerializer(LabelCase.class, this.rroSerializer));
+
+        this.regs.add(this.ctx.registerEROSubobjectParser(4, this.eroParser));
+        this.regs.add(this.ctx.registerEROSubobjectSerializer(IpPrefixCase.class, this.eroSerializer));
+
+        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.registerObjectSerializer(Rp.class, this.objectSerializer));
+
+        this.regs.add(this.ctx.registerMessageParser(6, this.msgParser));
+        this.regs.add(this.ctx.registerMessageSerializer(Keepalive.class, this.msgSerializer));
+
+        this.regs.add(this.ctx.registerLabelParser(7, this.labelParser));
+        this.regs.add(this.ctx.registerLabelSerializer(Type1LabelCase.class, this.labelSerializer));
+        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.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.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.getLabelHandlerRegistry().parseLabel(1, buffer);
+        this.ctx.getLabelHandlerRegistry().serializeLabel(true, false, new Type1LabelCaseBuilder().build(), buffer);
+
+        this.ctx.getTlvHandlerRegistry().parseTlv(2, buffer);
+        this.ctx.getTlvHandlerRegistry().serializeTlv(new OfListBuilder().build(), buffer);
+
+        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.<Message> emptyList());
+        this.ctx.getMessageHandlerRegistry().serializeMessage(new KeepaliveBuilder().build(), buffer);
+
+        this.activator.start(this.ctx);
+        this.activator.close();
+    }
+}