Remove trailing whitespace
[openflowjava.git] / openflow-protocol-impl / src / test / java / org / opendaylight / openflowjava / protocol / impl / serialization / factories / MeterModInputMessageFactoryTest.java
index 16a1e1bb8bfd0af62633c75484cf55142fa7db77..4884643bf29a506af9e685bbbf8aa804c8508a35 100644 (file)
-/* Copyright (C)2013 Pantheon Technologies, s.r.o. All rights reserved. */\r
-package org.opendaylight.openflowjava.protocol.impl.serialization.factories;\r
-\r
-import io.netty.buffer.ByteBuf;\r
-import io.netty.buffer.UnpooledByteBufAllocator;\r
-\r
-import java.util.ArrayList;\r
-import java.util.List;\r
-\r
-import junit.framework.Assert;\r
-\r
-import org.junit.Test;\r
-import org.opendaylight.openflowjava.protocol.impl.deserialization.factories.HelloMessageFactoryTest;\r
-import org.opendaylight.openflowjava.protocol.impl.util.BufferHelper;\r
-import org.opendaylight.openflowjava.protocol.impl.util.EncodeConstants;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.MeterBandType;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.MeterFlags;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.MeterId;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.MeterModCommand;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.MeterModInput;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.MeterModInputBuilder;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.meter.band.header.meter.band.MeterBandDropBuilder;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.meter.band.header.meter.band.MeterBandDscpRemarkBuilder;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.meter.band.header.meter.band.MeterBandExperimenterBuilder;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.meter.mod.Bands;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.meter.mod.BandsBuilder;\r
-\r
-/**\r
- * @author timotej.kubas\r
- * @author michal.polkorab\r
- */\r
-public class MeterModInputMessageFactoryTest {\r
-\r
-    /**\r
-     * @throws Exception \r
-     * Testing of {@link MeterModInputMessageFactory} for correct translation from POJO\r
-     */\r
-    @Test\r
-    public void testMeterModInputMessage() throws Exception {\r
-        MeterModInputBuilder builder = new MeterModInputBuilder();\r
-        BufferHelper.setupHeader(builder, EncodeConstants.OF13_VERSION_ID);\r
-        builder.setCommand(MeterModCommand.forValue(1));\r
-        builder.setFlags(new MeterFlags(false, true, true, false));\r
-        builder.setMeterId(new MeterId(2248L));\r
-        builder.setBands(createBandsList());\r
-        MeterModInput message = builder.build();\r
-        \r
-        ByteBuf out = UnpooledByteBufAllocator.DEFAULT.buffer();\r
-        MeterModInputMessageFactory factory = MeterModInputMessageFactory.getInstance();\r
-        factory.messageToBuffer(HelloMessageFactoryTest.VERSION_YET_SUPPORTED, out, message);\r
-        \r
-        BufferHelper.checkHeaderV13(out, factory.getMessageType(), 64);\r
-        Assert.assertEquals("Wrong meterModCommand", message.getCommand().getIntValue(), out.readUnsignedShort());\r
-        Assert.assertEquals("Wrong meterFlags", message.getFlags(), decodeMeterModFlags(out.readShort()));\r
-        Assert.assertEquals("Wrong meterId", message.getMeterId().getValue().intValue(), out.readUnsignedInt());\r
-        Assert.assertEquals("Wrong bands", message.getBands(), decodeBandsList(out));\r
-    }\r
-    \r
-    private static MeterFlags decodeMeterModFlags(short input){\r
-        final Boolean _oFPMFKBPS = (input & (1 << 0)) > 0;\r
-        final Boolean _oFPMFPKTPS = (input & (1 << 1)) > 0;\r
-        final Boolean _oFPMFBURST = (input & (1 << 2)) > 0; \r
-        final Boolean _oFPMFSTATS = (input & (1 << 3)) > 0;\r
-        return new MeterFlags(_oFPMFBURST, _oFPMFKBPS, _oFPMFPKTPS, _oFPMFSTATS);\r
-    }\r
-    \r
-    private static List<Bands> createBandsList(){\r
-        List<Bands> bandsList = new ArrayList<>();\r
-        BandsBuilder bandsBuilder = new BandsBuilder();\r
-        MeterBandDropBuilder dropBand = new MeterBandDropBuilder();\r
-        dropBand.setType(MeterBandType.OFPMBTDROP);\r
-        dropBand.setRate(1L);\r
-        dropBand.setBurstSize(2L);\r
-        bandsList.add(bandsBuilder.setMeterBand(dropBand.build()).build());\r
-        MeterBandDscpRemarkBuilder dscpRemarkBand = new MeterBandDscpRemarkBuilder();\r
-        dscpRemarkBand.setType(MeterBandType.OFPMBTDSCPREMARK);\r
-        dscpRemarkBand.setRate(1L);\r
-        dscpRemarkBand.setBurstSize(2L);\r
-        dscpRemarkBand.setPrecLevel((short) 3);\r
-        bandsList.add(bandsBuilder.setMeterBand(dscpRemarkBand.build()).build());\r
-        MeterBandExperimenterBuilder experimenterBand = new MeterBandExperimenterBuilder();\r
-        experimenterBand.setType(MeterBandType.OFPMBTEXPERIMENTER);\r
-        experimenterBand.setRate(1L);\r
-        experimenterBand.setBurstSize(2L);\r
-        experimenterBand.setExperimenter(4L);\r
-        bandsList.add(bandsBuilder.setMeterBand(experimenterBand.build()).build());\r
-        return bandsList;\r
-    }\r
-    \r
-    private static List<Bands> decodeBandsList(ByteBuf input){\r
-        List<Bands> bandsList = new ArrayList<>();\r
-        BandsBuilder bandsBuilder = new BandsBuilder();\r
-        MeterBandDropBuilder dropBand = new MeterBandDropBuilder();\r
-        dropBand.setType(MeterBandType.forValue(input.readUnsignedShort()));\r
-        input.skipBytes(Short.SIZE/Byte.SIZE);\r
-        dropBand.setRate(input.readUnsignedInt());\r
-        dropBand.setBurstSize(input.readUnsignedInt());\r
-        input.skipBytes(4);\r
-        bandsList.add(bandsBuilder.setMeterBand(dropBand.build()).build());\r
-        MeterBandDscpRemarkBuilder dscpRemarkBand = new MeterBandDscpRemarkBuilder();\r
-        dscpRemarkBand.setType(MeterBandType.forValue(input.readUnsignedShort()));\r
-        input.skipBytes(Short.SIZE/Byte.SIZE);\r
-        dscpRemarkBand.setRate(input.readUnsignedInt());\r
-        dscpRemarkBand.setBurstSize(input.readUnsignedInt());\r
-        dscpRemarkBand.setPrecLevel(input.readUnsignedByte());\r
-        input.skipBytes(3);\r
-        bandsList.add(bandsBuilder.setMeterBand(dscpRemarkBand.build()).build());\r
-        MeterBandExperimenterBuilder experimenterBand = new MeterBandExperimenterBuilder();\r
-        experimenterBand.setType(MeterBandType.forValue(input.readUnsignedShort()));\r
-        input.skipBytes(Short.SIZE/Byte.SIZE);\r
-        experimenterBand.setRate(input.readUnsignedInt());\r
-        experimenterBand.setBurstSize(input.readUnsignedInt());\r
-        experimenterBand.setExperimenter(input.readUnsignedInt());\r
-        bandsList.add(bandsBuilder.setMeterBand(experimenterBand.build()).build());\r
-        return bandsList;\r
-    }\r
-    \r
-}\r
+/*
+ * Copyright (c) 2013 Pantheon Technologies s.r.o. 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.openflowjava.protocol.impl.serialization.factories;
+
+import io.netty.buffer.ByteBuf;
+import io.netty.buffer.UnpooledByteBufAllocator;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+import org.opendaylight.openflowjava.protocol.api.extensibility.MessageTypeKey;
+import org.opendaylight.openflowjava.protocol.api.extensibility.OFSerializer;
+import org.opendaylight.openflowjava.protocol.api.extensibility.SerializerRegistry;
+import org.opendaylight.openflowjava.protocol.impl.serialization.SerializerRegistryImpl;
+import org.opendaylight.openflowjava.protocol.impl.util.BufferHelper;
+import org.opendaylight.openflowjava.protocol.api.util.EncodeConstants;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.MeterBandType;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.MeterFlags;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.MeterId;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.MeterModCommand;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.MeterModInput;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.MeterModInputBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.meter.band.header.meter.band.MeterBandDropCaseBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.meter.band.header.meter.band.MeterBandDscpRemarkCaseBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.meter.band.header.meter.band.meter.band.drop._case.MeterBandDropBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.meter.band.header.meter.band.meter.band.dscp.remark._case.MeterBandDscpRemarkBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.meter.mod.Bands;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.meter.mod.BandsBuilder;
+
+/**
+ * @author timotej.kubas
+ * @author michal.polkorab
+ */
+public class MeterModInputMessageFactoryTest {
+
+    private SerializerRegistry registry;
+    private OFSerializer<MeterModInput> meterModFactory;
+
+    /**
+     * Initializes serializer registry and stores correct factory in field
+     */
+    @Before
+    public void startUp() {
+        registry = new SerializerRegistryImpl();
+        registry.init();
+        meterModFactory = registry.getSerializer(
+                new MessageTypeKey<>(EncodeConstants.OF13_VERSION_ID, MeterModInput.class));
+    }
+
+    /**
+     * @throws Exception
+     * Testing of {@link MeterModInputMessageFactory} for correct translation from POJO
+     */
+    @Test
+    public void testMeterModInputMessage() throws Exception {
+        MeterModInputBuilder builder = new MeterModInputBuilder();
+        BufferHelper.setupHeader(builder, EncodeConstants.OF13_VERSION_ID);
+        builder.setCommand(MeterModCommand.forValue(1));
+        builder.setFlags(new MeterFlags(false, true, true, false));
+        builder.setMeterId(new MeterId(2248L));
+        builder.setBands(createBandsList());
+        MeterModInput message = builder.build();
+
+        ByteBuf out = UnpooledByteBufAllocator.DEFAULT.buffer();
+        meterModFactory.serialize(message, out);
+
+        BufferHelper.checkHeaderV13(out, (byte) 29, 48);
+        Assert.assertEquals("Wrong meterModCommand", message.getCommand().getIntValue(), out.readUnsignedShort());
+        Assert.assertEquals("Wrong meterFlags", message.getFlags(), decodeMeterModFlags(out.readShort()));
+        Assert.assertEquals("Wrong meterId", message.getMeterId().getValue().intValue(), out.readUnsignedInt());
+        Assert.assertEquals("Wrong bands", message.getBands(), decodeBandsList(out));
+    }
+
+    private static MeterFlags decodeMeterModFlags(short input){
+        final Boolean _oFPMFKBPS = (input & (1 << 0)) > 0;
+        final Boolean _oFPMFPKTPS = (input & (1 << 1)) > 0;
+        final Boolean _oFPMFBURST = (input & (1 << 2)) > 0;
+        final Boolean _oFPMFSTATS = (input & (1 << 3)) > 0;
+        return new MeterFlags(_oFPMFBURST, _oFPMFKBPS, _oFPMFPKTPS, _oFPMFSTATS);
+    }
+
+    private static List<Bands> createBandsList(){
+        List<Bands> bandsList = new ArrayList<>();
+        BandsBuilder bandsBuilder = new BandsBuilder();
+        MeterBandDropCaseBuilder dropCaseBuilder = new MeterBandDropCaseBuilder();
+        MeterBandDropBuilder dropBand = new MeterBandDropBuilder();
+        dropBand.setType(MeterBandType.OFPMBTDROP);
+        dropBand.setRate(1L);
+        dropBand.setBurstSize(2L);
+        dropCaseBuilder.setMeterBandDrop(dropBand.build());
+        bandsList.add(bandsBuilder.setMeterBand(dropCaseBuilder.build()).build());
+        MeterBandDscpRemarkCaseBuilder dscpCaseBuilder = new MeterBandDscpRemarkCaseBuilder();
+        MeterBandDscpRemarkBuilder dscpRemarkBand = new MeterBandDscpRemarkBuilder();
+        dscpRemarkBand.setType(MeterBandType.OFPMBTDSCPREMARK);
+        dscpRemarkBand.setRate(1L);
+        dscpRemarkBand.setBurstSize(2L);
+        dscpRemarkBand.setPrecLevel((short) 3);
+        dscpCaseBuilder.setMeterBandDscpRemark(dscpRemarkBand.build());
+        bandsList.add(bandsBuilder.setMeterBand(dscpCaseBuilder.build()).build());
+        return bandsList;
+    }
+
+    private static List<Bands> decodeBandsList(ByteBuf input){
+        List<Bands> bandsList = new ArrayList<>();
+        BandsBuilder bandsBuilder = new BandsBuilder();
+        MeterBandDropCaseBuilder dropCaseBuilder = new MeterBandDropCaseBuilder();
+        MeterBandDropBuilder dropBand = new MeterBandDropBuilder();
+        dropBand.setType(MeterBandType.forValue(input.readUnsignedShort()));
+        input.skipBytes(Short.SIZE/Byte.SIZE);
+        dropBand.setRate(input.readUnsignedInt());
+        dropBand.setBurstSize(input.readUnsignedInt());
+        input.skipBytes(4);
+        dropCaseBuilder.setMeterBandDrop(dropBand.build());
+        bandsList.add(bandsBuilder.setMeterBand(dropCaseBuilder.build()).build());
+        MeterBandDscpRemarkCaseBuilder dscpCaseBuilder = new MeterBandDscpRemarkCaseBuilder();
+        MeterBandDscpRemarkBuilder dscpRemarkBand = new MeterBandDscpRemarkBuilder();
+        dscpRemarkBand.setType(MeterBandType.forValue(input.readUnsignedShort()));
+        input.skipBytes(Short.SIZE/Byte.SIZE);
+        dscpRemarkBand.setRate(input.readUnsignedInt());
+        dscpRemarkBand.setBurstSize(input.readUnsignedInt());
+        dscpRemarkBand.setPrecLevel(input.readUnsignedByte());
+        input.skipBytes(3);
+        dscpCaseBuilder.setMeterBandDscpRemark(dscpRemarkBand.build());
+        bandsList.add(bandsBuilder.setMeterBand(dscpCaseBuilder.build()).build());
+        return bandsList;
+    }
+
+    /**
+     * @throws Exception
+     * Testing of {@link MeterModInputMessageFactory} for correct translation from POJO
+     */
+    @Test
+    public void testMeterModInputMessageWithNoBands() throws Exception {
+        MeterModInputBuilder builder = new MeterModInputBuilder();
+        BufferHelper.setupHeader(builder, EncodeConstants.OF13_VERSION_ID);
+        builder.setCommand(MeterModCommand.forValue(1));
+        builder.setFlags(new MeterFlags(false, true, true, false));
+        builder.setMeterId(new MeterId(2248L));
+        builder.setBands(null);
+        MeterModInput message = builder.build();
+
+        ByteBuf out = UnpooledByteBufAllocator.DEFAULT.buffer();
+        meterModFactory.serialize(message, out);
+
+        BufferHelper.checkHeaderV13(out, (byte) 29, 16);
+        Assert.assertEquals("Wrong meterModCommand", message.getCommand().getIntValue(), out.readUnsignedShort());
+        Assert.assertEquals("Wrong meterFlags", message.getFlags(), decodeMeterModFlags(out.readShort()));
+        Assert.assertEquals("Wrong meterId", message.getMeterId().getValue().intValue(), out.readUnsignedInt());
+        Assert.assertTrue("Unexpected data", out.readableBytes() == 0);
+    }
+}
\ No newline at end of file