Bug-730: Test Vendor-Information object/tlv in message/object 88/10988/1
authorMilos Fabian <milfabia@cisco.com>
Tue, 9 Sep 2014 12:53:37 +0000 (14:53 +0200)
committerMilos Fabian <milfabia@cisco.com>
Wed, 10 Sep 2014 11:14:00 +0000 (13:14 +0200)
Change-Id: I726bf160eaa64799b660aeff907204c1b0f3a356
Signed-off-by: Milos Fabian <milfabia@cisco.com>
pcep/spi/src/test/java/org/opendaylight/protocol/pcep/spi/AbstractMessageParserTest.java
pcep/spi/src/test/java/org/opendaylight/protocol/pcep/spi/AbstractObjectWithTlvsTest.java

index 1007e51ecba51d3971962f77a4717f32db8e80bd..b2e48ec272d14d918885e0b57b6a147d884dc3ef 100644 (file)
@@ -10,6 +10,7 @@ package org.opendaylight.protocol.pcep.spi;
 import static org.junit.Assert.assertEquals;
 
 import com.google.common.base.Optional;
+import com.google.common.collect.Lists;
 import io.netty.buffer.ByteBuf;
 import io.netty.buffer.Unpooled;
 import java.util.Collections;
@@ -19,35 +20,62 @@ import org.junit.Test;
 import org.mockito.Mock;
 import org.mockito.Mockito;
 import org.mockito.MockitoAnnotations;
+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.rev131007.Pcerr;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.message.rev131007.Pcrep;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.message.rev131007.PcrepBuilder;
 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.pcep.error.object.ErrorObject;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.pcep.error.object.ErrorObjectBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.pcrep.message.PcrepMessageBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.pcrep.message.pcrep.message.RepliesBuilder;
 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.pcep.types.rev131005.vendor.information.objects.VendorInformationObject;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.vendor.information.objects.VendorInformationObjectBuilder;
 
 public class AbstractMessageParserTest {
 
+    private static final EnterpriseNumber EN = new EnterpriseNumber(0L);
+
     private Object object;
 
+    private VendorInformationObject viObject;
+
     @Mock
     private ObjectRegistry registry;
 
+    @Mock
+    private VendorInformationObjectRegistry viRegistry;
+
     private class Abs extends AbstractMessageParser {
 
         protected Abs(ObjectRegistry registry) {
             super(registry);
         }
 
+        protected Abs(ObjectRegistry registry, VendorInformationObjectRegistry viRegistry) {
+            super(registry, viRegistry);
+        }
+
         @Override
         public void serializeMessage(Message message, ByteBuf buffer) {
         }
 
         @Override
         protected Message validate(List<Object> objects, List<Message> errors) throws PCEPDeserializerException {
-            final short errorType = ((ErrorObject) objects.get(0)).getType();
-            final short errorValue = ((ErrorObject) objects.get(0)).getValue();
-            return createErrorMsg(PCEPErrors.forValue(errorType, errorValue), Optional.<Rp>absent());
+            if (objects.get(0) instanceof VendorInformationObject) {
+                final RepliesBuilder repsBuilder = new RepliesBuilder();
+                repsBuilder.setVendorInformationObject(addVendorInformationObjects(objects));
+                final PcrepBuilder builder = new PcrepBuilder();
+                builder.setPcrepMessage(new PcrepMessageBuilder().setReplies(Lists.newArrayList(repsBuilder.build())).build());
+                return builder.build();
+            } else if (objects.get(0) instanceof ErrorObject) {
+                final short errorType = ((ErrorObject) objects.get(0)).getType();
+                final short errorValue = ((ErrorObject) objects.get(0)).getValue();
+                return createErrorMsg(PCEPErrors.forValue(errorType, errorValue), Optional.<Rp>absent());
+            }
+            return null;
         }
     };
 
@@ -55,6 +83,9 @@ public class AbstractMessageParserTest {
     public void setUp() throws PCEPDeserializerException {
         MockitoAnnotations.initMocks(this);
         this.object = new ErrorObjectBuilder().setType((short) 1).setValue((short) 1).build();
+        this.viObject = new VendorInformationObjectBuilder().setEnterpriseNumber(EN).build();
+        Mockito.doNothing().when(this.viRegistry).serializeVendorInformationObject(Mockito.any(VendorInformationObject.class), Mockito.any(ByteBuf.class));
+        Mockito.doReturn(Optional.of(this.viObject)).when(this.viRegistry).parseVendorInformationObject(EN, new ObjectHeaderImpl(true, true), Unpooled.wrappedBuffer(new byte[] { 0, 0, 0, 0 }));
         Mockito.doNothing().when(this.registry).serializeObject(Mockito.any(Object.class), Mockito.any(ByteBuf.class));
         Mockito.doReturn(this.object).when(this.registry).parseObject(13, 1, new ObjectHeaderImpl(true, true), Unpooled.wrappedBuffer(new byte[] { 0, 0, 1, 1 }));
     }
@@ -65,10 +96,23 @@ public class AbstractMessageParserTest {
         ByteBuf buffer = Unpooled.buffer();
         a.serializeObject(this.object, buffer);
 
-        Mockito.verify(this.registry, Mockito.only()).serializeObject(Mockito.any(Object.class), Mockito.any(ByteBuf.class));;
+        Mockito.verify(this.registry, Mockito.only()).serializeObject(Mockito.any(Object.class), Mockito.any(ByteBuf.class));
 
         Message b = a.parseMessage(Unpooled.wrappedBuffer(new byte[] {0x0D, 0x13, 0, 0x08, 0, 0, 1, 1 }), Collections.<Message> emptyList());
 
         assertEquals(this.object, ((Pcerr) b).getPcerrMessage().getErrors().get(0).getErrorObject());
     }
+
+    @Test
+    public void testParseVendorInformationObject() throws PCEPDeserializerException {
+        final Abs parser = new Abs(this.registry, this.viRegistry);
+        final ByteBuf buffer = Unpooled.buffer();
+
+        parser.serializeVendorInformationObjects(Lists.newArrayList(viObject), buffer);
+        Mockito.verify(this.viRegistry, Mockito.only()).serializeVendorInformationObject(Mockito.any(VendorInformationObject.class), Mockito.any(ByteBuf.class));
+
+        final Message msg = parser.parseMessage(Unpooled.wrappedBuffer(new byte[] {0x22, 0x13, 0x00, 0x08, 0, 0, 0, 0 }), Collections.<Message> emptyList());
+
+        assertEquals(this.viObject, ((Pcrep)msg).getPcrepMessage().getReplies().get(0).getVendorInformationObject().get(0));
+    }
 }
index 9831e8e608ae1fe8f018e2cade6475c12b62290f..e312b4ef818d36c21fb27d8de66a9e00a14fb9e0 100644 (file)
@@ -9,6 +9,7 @@ package org.opendaylight.protocol.pcep.spi;
 
 import static org.junit.Assert.assertEquals;
 
+import com.google.common.base.Optional;
 import com.google.common.collect.Lists;
 import io.netty.buffer.ByteBuf;
 import io.netty.buffer.Unpooled;
@@ -18,6 +19,7 @@ import org.junit.Test;
 import org.mockito.Mock;
 import org.mockito.Mockito;
 import org.mockito.MockitoAnnotations;
+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.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.OfId;
@@ -26,11 +28,16 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.typ
 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.open.TlvsBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.vendor.information.tlvs.VendorInformationTlv;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev131005.vendor.information.tlvs.VendorInformationTlvBuilder;
 
 public class AbstractObjectWithTlvsTest {
 
+    private static final EnterpriseNumber EN = new EnterpriseNumber(0L);
+
     private Tlv tlv;
 
+    private VendorInformationTlv viTlv;
+
     @Mock
     private TlvRegistry tlvRegistry;
 
@@ -67,6 +74,9 @@ public class AbstractObjectWithTlvsTest {
     public void setUp() throws PCEPDeserializerException {
         MockitoAnnotations.initMocks(this);
         this.tlv = new OfListBuilder().setCodes(Lists.newArrayList(new OfId(10))).build();
+        this.viTlv = new VendorInformationTlvBuilder().setEnterpriseNumber(EN).build();
+        Mockito.doNothing().when(this.viTlvRegistry).serializeVendorInformationTlv(Mockito.any(VendorInformationTlv.class), Mockito.any(ByteBuf.class));
+        Mockito.doReturn(Optional.of(this.viTlv)).when(this.viTlvRegistry).parseVendorInformationTlv(EN, Unpooled.wrappedBuffer(new byte[0]));
         Mockito.doNothing().when(this.tlvRegistry).serializeTlv(Mockito.any(Tlv.class), Mockito.any(ByteBuf.class));
         Mockito.doReturn(this.tlv).when(this.tlvRegistry).parseTlv(4, Unpooled.wrappedBuffer(new byte[] { 5, 6 }));
     }
@@ -77,11 +87,24 @@ public class AbstractObjectWithTlvsTest {
         ByteBuf buffer = Unpooled.buffer();
         a.serializeTlv(this.tlv, buffer);
 
-        Mockito.verify(this.tlvRegistry, Mockito.only()).serializeTlv(Mockito.any(Tlv.class), Mockito.any(ByteBuf.class));;
+        Mockito.verify(this.tlvRegistry, Mockito.only()).serializeTlv(Mockito.any(Tlv.class), Mockito.any(ByteBuf.class));
 
         TlvsBuilder b = new TlvsBuilder();
         a.parseTlvs(b, Unpooled.wrappedBuffer(new byte[] { 0, 4, 0, 2, 5, 6, 0, 0 }));
 
         assertEquals(this.tlv, b.getOfList());
     }
+
+    @Test
+    public void testParseVendorInformationTlv() throws PCEPDeserializerException {
+        final Abs parser = new Abs(this.tlvRegistry, this.viTlvRegistry);
+        final ByteBuf buffer = Unpooled.buffer();
+
+        parser.serializeVendorInformationTlvs(Lists.newArrayList(this.viTlv), buffer);
+        Mockito.verify(this.viTlvRegistry, Mockito.only()).serializeVendorInformationTlv(Mockito.any(VendorInformationTlv.class), Mockito.any(ByteBuf.class));
+
+        final TlvsBuilder tlvsBuilder = new TlvsBuilder();
+        parser.parseTlvs(tlvsBuilder, Unpooled.wrappedBuffer(new byte[] { 0x00, 0x07, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00 }));
+        assertEquals(this.viTlv, tlvsBuilder.getVendorInformationTlv().get(0));
+    }
 }