Remove redundant exception declarations
[openflowplugin.git] / openflowplugin-impl / src / test / java / org / opendaylight / openflowplugin / impl / common / MultipartRequestInputFactoryTest.java
index b7892cd00c283609078094dffa0b1be078b600be..546c202ee7f5951d1a92696028fccc2a52b37a15 100644 (file)
@@ -1,4 +1,4 @@
-/**
+/*
  * Copyright (c) 2015 Cisco Systems, Inc. and others.  All rights reserved.
  *
  * This program and the accompanying materials are made available under the
@@ -10,544 +10,260 @@ package org.opendaylight.openflowplugin.impl.common;
 
 import org.junit.Assert;
 import org.junit.Before;
-import org.junit.Ignore;
 import org.junit.Test;
 import org.opendaylight.openflowplugin.api.OFConstants;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.MultipartType;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.OxmMatchType;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.MultipartRequestInput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.MultipartRequestBody;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestAggregateCase;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestAggregateCaseBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestDescCase;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestDescCaseBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestExperimenterCase;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestExperimenterCaseBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestFlowCase;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestFlowCaseBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestGroupCase;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestGroupCaseBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestGroupDescCase;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestGroupDescCaseBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestGroupFeaturesCase;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestGroupFeaturesCaseBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestMeterCase;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestMeterCaseBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestMeterConfigCase;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestMeterConfigCaseBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestMeterFeaturesCase;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestMeterFeaturesCaseBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestPortDescCase;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestPortDescCaseBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestPortStatsCase;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestPortStatsCaseBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestQueueCase;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestQueueCaseBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestTableCase;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestTableCaseBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestTableFeaturesCase;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.MultipartRequestTableFeaturesCaseBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.multipart.request.queue._case.MultipartRequestQueueBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.multipart.request.flow._case.MultipartRequestFlow;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.multipart.request.group._case.MultipartRequestGroup;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.multipart.request.meter._case.MultipartRequestMeter;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.multipart.request.meter.config._case.MultipartRequestMeterConfig;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.multipart.request.port.stats._case.MultipartRequestPortStats;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.multipart.request.queue._case.MultipartRequestQueue;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.multipart.request.table.features._case.MultipartRequestTableFeatures;
+import org.opendaylight.yangtools.yang.binding.DataContainer;
 
 /**
- * openflowplugin-impl
- * org.opendaylight.openflowplugin.impl.common
- * <p/>
- * Test class for testing {@link org.opendaylight.openflowplugin.impl.common.MultipartRequestInputFactory}
- * static methods and validations for {@link org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.MultipartType}.
- *
- * @author <a href="mailto:vdemcak@cisco.com">Vaclav Demcak</a>
- *         <p/>
- *         Created: Mar 28, 2015
+ * Test for {@link MultipartRequestInputFactory}.
  */
 public class MultipartRequestInputFactoryTest {
 
+    private final long xid = 42L;
     private short ofVersion;
 
     @Before
-    public void initialization() {
-        ofVersion = 13;
-    }
-
-    /**
-     * Test method for {@link MultipartRequestInputFactory#makeMultipartRequestInput(long, short, MultipartType)}.
-     * Validation for null input type expect IllegalArgumentException
-     */
-    @Test(expected = IllegalArgumentException.class)
-    public void testMakeMultipartRequestInputLongShortMultipartTypeNullType() {
-        final long xid = 1l;
-        MultipartRequestInputFactory.makeMultipartRequestInput(xid, ofVersion, null);
-    }
-
-    /**
-     * Test method for {@link MultipartRequestInputFactory#makeMultipartRequestInput(long, short, MultipartType)}.
-     * {@link MultipartType.OFPMPDESC}
-     */
-    @Test
-    public void testMakeMultipartRequestInputLongShortMultipartTypeDesc() {
-        final long xid = 1l;
-        final MultipartType type = MultipartType.OFPMPDESC;
-        final MultipartRequestInput multipartReqInput = MultipartRequestInputFactory.makeMultipartRequestInput(xid, ofVersion, type);
-        final MultipartRequestDescCase defaultBodyForComparison = new MultipartRequestDescCaseBuilder().build();
-        validation(multipartReqInput, xid, type, defaultBodyForComparison);
-    }
 
-    /**
-     * Test method for {@link MultipartRequestInputFactory#makeMultipartRequestInput(long, short, MultipartType)}.
-     * {@link MultipartType.OFPMPFLOW}
-     */
-    @Test
-    @Ignore
-    public void testMakeMultipartRequestInputLongShortMultipartTypeFlow() {
-        final long xid = 1l;
-        final MultipartType type = MultipartType.OFPMPFLOW;
-        final MultipartRequestInput multipartReqInput = MultipartRequestInputFactory.makeMultipartRequestInput(xid, ofVersion, type);
-        final MultipartRequestFlowCase defaultBodyForComparison = new MultipartRequestFlowCaseBuilder().build();
-        validation(multipartReqInput, xid, type, defaultBodyForComparison);
+    public void setUp() {
+        ofVersion = OFConstants.OFP_VERSION_1_3;
     }
 
-    /**
-     * Test method for {@link MultipartRequestInputFactory#makeMultipartRequestInput(long, short, MultipartType)}.
-     * {@link MultipartType.OFPMPAGGREGATE}
-     */
     @Test
-    public void testMakeMultipartRequestInputLongShortMultipartTypeAggr() {
-        final long xid = 1l;
-        final MultipartType type = MultipartType.OFPMPAGGREGATE;
-        final MultipartRequestInput multipartReqInput = MultipartRequestInputFactory.makeMultipartRequestInput(xid, ofVersion, type);
-        final MultipartRequestAggregateCase defaultBodyForComparison = new MultipartRequestAggregateCaseBuilder().build();
-        validation(multipartReqInput, xid, type, defaultBodyForComparison);
+    public void testMakeMultipartRequestInput_DESC() {
+        MultipartType mpType = MultipartType.OFPMPDESC;
+        final MultipartRequestInput mpRqInput =
+            (MultipartRequestInput) MultipartRequestInputFactory.makeMultipartRequest(xid, ofVersion, mpType, false);
+        checkHeader(mpRqInput, mpType);
+        checkEmptyBody(mpRqInput.getMultipartRequestBody().getImplementedInterface(), MultipartRequestDescCase.class);
     }
 
-    /**
-     * Test method for {@link MultipartRequestInputFactory#makeMultipartRequestInput(long, short, MultipartType)}.
-     * {@link MultipartType.OFPMPTABLE}
-     */
     @Test
-    public void testMakeMultipartRequestInputLongShortMultipartTypeTable() {
-        final long xid = 1l;
-        final MultipartType type = MultipartType.OFPMPTABLE;
-        final MultipartRequestInput multipartReqInput = MultipartRequestInputFactory.makeMultipartRequestInput(xid, ofVersion, type);
-        final MultipartRequestTableCase defaultBodyForComparison = new MultipartRequestTableCaseBuilder().build();
-        validation(multipartReqInput, xid, type, defaultBodyForComparison);
-    }
+    public void testMakeMultipartRequestInput_FLOW_13() {
+        final MultipartType mpType = MultipartType.OFPMPFLOW;
+        final MultipartRequestInput mpRqInput =
+            (MultipartRequestInput) MultipartRequestInputFactory.makeMultipartRequest(xid, ofVersion, mpType, false);
+        checkHeader(mpRqInput, mpType);
+        final MultipartRequestBody mpRqBody = mpRqInput.getMultipartRequestBody();
+        Assert.assertTrue(mpRqBody instanceof MultipartRequestFlowCase);
 
-    /**
-     * Test method for {@link MultipartRequestInputFactory#makeMultipartRequestInput(long, short, MultipartType)}.
-     * {@link MultipartType.OFPMPPORTSTATS}
-     */
-    @Test
-    public void testMakeMultipartRequestInputLongShortMultipartTypePortStat() {
-        final long xid = 1l;
-        final MultipartType type = MultipartType.OFPMPPORTSTATS;
-        final MultipartRequestInput multipartReqInput = MultipartRequestInputFactory.makeMultipartRequestInput(xid, ofVersion, type);
-        final MultipartRequestPortStatsCase defaultBodyForComparison = new MultipartRequestPortStatsCaseBuilder().build();
-        validation(multipartReqInput, xid, type, defaultBodyForComparison);
-    }
-
-    /**
-     * Test method for {@link MultipartRequestInputFactory#makeMultipartRequestInput(long, short, MultipartType)}.
-     * {@link MultipartType.OFPMPQUEUE}
-     */
-    @Test
-    public void testMakeMultipartRequestInputLongShortMultipartTypeQueue() {
-        final long xid = 1l;
-        final MultipartType type = MultipartType.OFPMPQUEUE;
-        final MultipartRequestInput multipartReqInput = MultipartRequestInputFactory.makeMultipartRequestInput(xid, ofVersion, type);
-
-        MultipartRequestQueueCaseBuilder multipartRequestQueueCaseBuilder = new MultipartRequestQueueCaseBuilder();
-        MultipartRequestQueueBuilder multipartRequestQueueBuilder = new MultipartRequestQueueBuilder();
-        multipartRequestQueueBuilder.setPortNo(OFConstants.OFPP_ANY);
-        multipartRequestQueueBuilder.setQueueId(OFConstants.OFPQ_ANY);
-        multipartRequestQueueCaseBuilder.setMultipartRequestQueue(multipartRequestQueueBuilder.build());
-
-        validation(multipartReqInput, xid, type, multipartRequestQueueCaseBuilder.build());
-    }
-
-    /**
-     * Test method for {@link MultipartRequestInputFactory#makeMultipartRequestInput(long, short, MultipartType)}.
-     * {@link MultipartType.OFPMPGROUP}
-     */
-    @Test
-    public void testMakeMultipartRequestInputLongShortMultipartTypeGroup() {
-        final long xid = 1l;
-        final MultipartType type = MultipartType.OFPMPGROUP;
-        final MultipartRequestInput multipartReqInput = MultipartRequestInputFactory.makeMultipartRequestInput(xid, ofVersion, type);
-        final MultipartRequestGroupCase defaultBodyForComparison = new MultipartRequestGroupCaseBuilder().build();
-        validation(multipartReqInput, xid, type, defaultBodyForComparison);
-    }
-
-    /**
-     * Test method for {@link MultipartRequestInputFactory#makeMultipartRequestInput(long, short, MultipartType)}.
-     * {@link MultipartType.OFPMPGROUPDESC}
-     */
-    @Test
-    public void testMakeMultipartRequestInputLongShortMultipartTypeGrupDesc() {
-        final long xid = 1l;
-        final MultipartType type = MultipartType.OFPMPGROUPDESC;
-        final MultipartRequestInput multipartReqInput = MultipartRequestInputFactory.makeMultipartRequestInput(xid, ofVersion, type);
-        final MultipartRequestGroupDescCase defaultBodyForComparison = new MultipartRequestGroupDescCaseBuilder().build();
-        validation(multipartReqInput, xid, type, defaultBodyForComparison);
-    }
-
-    /**
-     * Test method for {@link MultipartRequestInputFactory#makeMultipartRequestInput(long, short, MultipartType)}.
-     * {@link MultipartType.OFPMPGROUPFEATURES}
-     */
-    @Test
-    public void testMakeMultipartRequestInputLongShortMultipartTypeGroupFeaturs() {
-        final long xid = 1l;
-        final MultipartType type = MultipartType.OFPMPGROUPFEATURES;
-        final MultipartRequestInput multipartReqInput = MultipartRequestInputFactory.makeMultipartRequestInput(xid, ofVersion, type);
-        final MultipartRequestGroupFeaturesCase defaultBodyForComparison = new MultipartRequestGroupFeaturesCaseBuilder().build();
-        validation(multipartReqInput, xid, type, defaultBodyForComparison);
-    }
+        MultipartRequestFlow mpRq = ((MultipartRequestFlowCase) mpRqBody).getMultipartRequestFlow();
+        Assert.assertEquals(OFConstants.OFPTT_ALL, mpRq.getTableId());
+        Assert.assertEquals(OFConstants.OFPP_ANY, mpRq.getOutPort());
+        Assert.assertEquals(OFConstants.OFPG_ANY, mpRq.getOutGroup());
+        Assert.assertEquals(0, mpRq.getCookie().intValue());
+        Assert.assertEquals(0, mpRq.getCookieMask().intValue());
+        Assert.assertNotNull(mpRq.getMatch());
+        Assert.assertNull(mpRq.getMatchV10());
 
-    /**
-     * Test method for {@link MultipartRequestInputFactory#makeMultipartRequestInput(long, short, MultipartType)}.
-     * {@link MultipartType.OFPMPMETER}
-     */
-    @Test
-    public void testMakeMultipartRequestInputLongShortMultipartTypeMeter() {
-        final long xid = 1l;
-        final MultipartType type = MultipartType.OFPMPMETER;
-        final MultipartRequestInput multipartReqInput = MultipartRequestInputFactory.makeMultipartRequestInput(xid, ofVersion, type);
-        final MultipartRequestMeterCase defaultBodyForComparison = new MultipartRequestMeterCaseBuilder().build();
-        validation(multipartReqInput, xid, type, defaultBodyForComparison);
+        Assert.assertEquals(OxmMatchType.class, mpRq.getMatch().getType());
     }
 
-    /**
-     * Test method for {@link MultipartRequestInputFactory#makeMultipartRequestInput(long, short, MultipartType)}.
-     * {@link MultipartType.OFPMPMETERCONFIG}
-     */
     @Test
-    public void testMakeMultipartRequestInputLongShortMultipartTypeMeterConf() {
-        final long xid = 1l;
-        final MultipartType type = MultipartType.OFPMPMETERCONFIG;
-        final MultipartRequestInput multipartReqInput = MultipartRequestInputFactory.makeMultipartRequestInput(xid, ofVersion, type);
-        final MultipartRequestMeterConfigCase defaultBodyForComparison = new MultipartRequestMeterConfigCaseBuilder().build();
-        validation(multipartReqInput, xid, type, defaultBodyForComparison);
-    }
+    public void testMakeMultipartRequestInput_FLOW_10() {
+        final MultipartType mpType = MultipartType.OFPMPFLOW;
+        ofVersion = OFConstants.OFP_VERSION_1_0;
+        final MultipartRequestInput mpRqInput =
+            (MultipartRequestInput) MultipartRequestInputFactory.makeMultipartRequest(xid, ofVersion, mpType, false);
+        checkHeader(mpRqInput, mpType);
+        final MultipartRequestBody mpRqBody = mpRqInput.getMultipartRequestBody();
+        Assert.assertTrue(mpRqBody instanceof MultipartRequestFlowCase);
 
-    /**
-     * Test method for {@link MultipartRequestInputFactory#makeMultipartRequestInput(long, short, MultipartType)}.
-     * {@link MultipartType.OFPMPMETERFEATURES}
-     */
-    @Test
-    public void testMakeMultipartRequestInputLongShortMultipartTypeMeterFeatures() {
-        final long xid = 1l;
-        final MultipartType type = MultipartType.OFPMPMETERFEATURES;
-        final MultipartRequestInput multipartReqInput = MultipartRequestInputFactory.makeMultipartRequestInput(xid, ofVersion, type);
-        final MultipartRequestMeterFeaturesCase defaultBodyForComparison = new MultipartRequestMeterFeaturesCaseBuilder().build();
-        validation(multipartReqInput, xid, type, defaultBodyForComparison);
+        MultipartRequestFlow mpRq = ((MultipartRequestFlowCase) mpRqBody).getMultipartRequestFlow();
+        Assert.assertEquals(OFConstants.OFPTT_ALL, mpRq.getTableId());
+        Assert.assertEquals(OFConstants.OFPP_ANY, mpRq.getOutPort());
+        Assert.assertEquals(OFConstants.OFPG_ANY, mpRq.getOutGroup());
+        Assert.assertEquals(0, mpRq.getCookie().intValue());
+        Assert.assertEquals(0, mpRq.getCookieMask().intValue());
+        Assert.assertNull(mpRq.getMatch());
+        Assert.assertNotNull(mpRq.getMatchV10());
     }
 
-    /**
-     * Test method for {@link MultipartRequestInputFactory#makeMultipartRequestInput(long, short, MultipartType)}.
-     * {@link MultipartType.OFPMPMETERFEATURES}
-     */
     @Test
-    @Ignore // table features are not working correctly in OVS so we have workaround
-    public void testMakeMultipartRequestInputLongShortMultipartTypeTableFeatures() {
-        final long xid = 1l;
-        final MultipartType type = MultipartType.OFPMPTABLEFEATURES;
-        final MultipartRequestInput multipartReqInput = MultipartRequestInputFactory.makeMultipartRequestInput(xid, ofVersion, type);
-        final MultipartRequestTableFeaturesCase defaultBodyForComparison = new MultipartRequestTableFeaturesCaseBuilder().build();
-        validation(multipartReqInput, xid, type, defaultBodyForComparison);
+    public void testMakeMultipartRequestInputAggregate() {
+        MultipartType mpType = MultipartType.OFPMPAGGREGATE;
+        final MultipartRequestInput mpRqInput =
+            (MultipartRequestInput) MultipartRequestInputFactory.makeMultipartRequest(xid, ofVersion, mpType, false);
+        checkHeader(mpRqInput, mpType);
+        checkEmptyBody(mpRqInput.getMultipartRequestBody().getImplementedInterface(),
+                MultipartRequestAggregateCase.class);
     }
 
-    /**
-     * Test method for {@link MultipartRequestInputFactory#makeMultipartRequestInput(long, short, MultipartType)}.
-     * {@link MultipartType.OFPMPPORTDESC}
-     */
     @Test
-    public void testMakeMultipartRequestInputLongShortMultipartTypePortDesc() {
-        final long xid = 1l;
-        final MultipartType type = MultipartType.OFPMPPORTDESC;
-        final MultipartRequestInput multipartReqInput = MultipartRequestInputFactory.makeMultipartRequestInput(xid, ofVersion, type);
-        final MultipartRequestPortDescCase defaultBodyForComparison = new MultipartRequestPortDescCaseBuilder().build();
-        validation(multipartReqInput, xid, type, defaultBodyForComparison);
+    public void testMakeMultipartRequestInputTable() {
+        MultipartType mpType = MultipartType.OFPMPTABLE;
+        final MultipartRequestInput mpRqInput =
+            (MultipartRequestInput) MultipartRequestInputFactory.makeMultipartRequest(xid, ofVersion, mpType, false);
+        checkHeader(mpRqInput, mpType);
+        checkEmptyBody(mpRqInput.getMultipartRequestBody().getImplementedInterface(), MultipartRequestTableCase.class);
     }
 
-    /**
-     * Test method for {@link MultipartRequestInputFactory#makeMultipartRequestInput(long, short, MultipartType)}.
-     * {@link MultipartType.OFPMPEXPERIMENTER}
-     */
     @Test
-    public void testMakeMultipartRequestInputLongShortMultipartTypeExperimenter() {
-        final long xid = 1l;
-        final MultipartType type = MultipartType.OFPMPEXPERIMENTER;
-        final MultipartRequestInput multipartReqInput = MultipartRequestInputFactory.makeMultipartRequestInput(xid, ofVersion, type);
-        final MultipartRequestExperimenterCase defaultBodyForComparison = new MultipartRequestExperimenterCaseBuilder().build();
-        validation(multipartReqInput, xid, type, defaultBodyForComparison);
-    }
+    public void testMakeMultipartRequestInputPortStats() {
+        final MultipartType mpType = MultipartType.OFPMPPORTSTATS;
+        final MultipartRequestInput mpRqInput =
+            (MultipartRequestInput) MultipartRequestInputFactory.makeMultipartRequest(xid, ofVersion, mpType, false);
+        checkHeader(mpRqInput, mpType);
+        final MultipartRequestBody mpRqBody = mpRqInput.getMultipartRequestBody();
+        Assert.assertTrue(mpRqBody instanceof MultipartRequestPortStatsCase);
 
-    /**
-     * Test method for {@link MultipartRequestInputFactory#makeMultipartRequestInput(long, short, MultipartType, MultipartRequestBody)}.
-     * {@link MultipartType.OFPMPDESC}
-     */
-    @Test
-    public void testMakeMultipartRequestInputLongShortMultipartTypeMultipartRequestBodyDesc() {
-        final long xid = 1l;
-        final MultipartType type = MultipartType.OFPMPDESC;
-        final MultipartRequestDescCase body = new MultipartRequestDescCaseBuilder().build();
-        final MultipartRequestInput multipartReqInput = MultipartRequestInputFactory.makeMultipartRequestInput(xid, ofVersion, type, body);
-        validation(multipartReqInput, xid, type, body);
+        MultipartRequestPortStats mpRq = ((MultipartRequestPortStatsCase) mpRqBody).getMultipartRequestPortStats();
+        Assert.assertEquals(OFConstants.OFPP_ANY, mpRq.getPortNo());
     }
 
-    /**
-     * Test method for {@link MultipartRequestInputFactory#makeMultipartRequestInput(long, short, MultipartType, MultipartRequestBody)}.
-     * {@link MultipartType.OFPMPFLOW}
-     */
     @Test
-    public void testMakeMultipartRequestInputLongShortMultipartTypeMultipartRequestBodyFlow() {
-        final long xid = 1l;
-        final MultipartType type = MultipartType.OFPMPFLOW;
-        final MultipartRequestFlowCase body = new MultipartRequestFlowCaseBuilder().build();
-        final MultipartRequestInput multipartReqInput = MultipartRequestInputFactory.makeMultipartRequestInput(xid, ofVersion, type, body);
-        validation(multipartReqInput, xid, type, body);
-    }
+    public void testMakeMultipartRequestInputQueue() {
+        final MultipartType mpType = MultipartType.OFPMPQUEUE;
+        final MultipartRequestInput mpRqInput =
+            (MultipartRequestInput) MultipartRequestInputFactory.makeMultipartRequest(xid, ofVersion, mpType, false);
+        checkHeader(mpRqInput, mpType);
+        final MultipartRequestBody mpRqBody = mpRqInput.getMultipartRequestBody();
+        Assert.assertTrue(mpRqBody instanceof MultipartRequestQueueCase);
 
-    /**
-     * Test method for {@link MultipartRequestInputFactory#makeMultipartRequestInput(long, short, MultipartType, MultipartRequestBody)}.
-     * {@link MultipartType.OFPMPAGGREGATE}
-     */
-    @Test
-    public void testMakeMultipartRequestInputLongShortMultipartTypeMultipartRequestBodyAggr() {
-        final long xid = 1l;
-        final MultipartType type = MultipartType.OFPMPAGGREGATE;
-        final MultipartRequestAggregateCase body = new MultipartRequestAggregateCaseBuilder().build();
-        final MultipartRequestInput multipartReqInput = MultipartRequestInputFactory.makeMultipartRequestInput(xid, ofVersion, type, body);
-        validation(multipartReqInput, xid, type, body);
+        MultipartRequestQueue mpRq = ((MultipartRequestQueueCase) mpRqBody).getMultipartRequestQueue();
+        Assert.assertEquals(OFConstants.OFPP_ANY, mpRq.getPortNo());
+        Assert.assertEquals(OFConstants.OFPQ_ALL, mpRq.getQueueId());
     }
 
-    /**
-     * Test method for {@link MultipartRequestInputFactory#makeMultipartRequestInput(long, short, MultipartType, MultipartRequestBody)}.
-     * {@link MultipartType.OFPMPTABLE}
-     */
     @Test
-    public void testMakeMultipartRequestInputLongShortMultipartTypeMultipartRequestBodyTable() {
-        final long xid = 1l;
-        final MultipartType type = MultipartType.OFPMPTABLE;
-        final MultipartRequestTableCase body = new MultipartRequestTableCaseBuilder().build();
-        final MultipartRequestInput multipartReqInput = MultipartRequestInputFactory.makeMultipartRequestInput(xid, ofVersion, type, body);
-        validation(multipartReqInput, xid, type, body);
-    }
+    public void testMakeMultipartRequestInputGroup() {
+        final MultipartType mpType = MultipartType.OFPMPGROUP;
+        final MultipartRequestInput mpRqInput =
+            (MultipartRequestInput) MultipartRequestInputFactory.makeMultipartRequest(xid, ofVersion, mpType, false);
+        checkHeader(mpRqInput, mpType);
+        final MultipartRequestBody mpRqBody = mpRqInput.getMultipartRequestBody();
+        Assert.assertTrue(mpRqBody instanceof MultipartRequestGroupCase);
 
-    /**
-     * Test method for {@link MultipartRequestInputFactory#makeMultipartRequestInput(long, short, MultipartType, MultipartRequestBody)}.
-     * {@link MultipartType.OFPMPPORTSTATS}
-     */
-    @Test
-    public void testMakeMultipartRequestInputLongShortMultipartTypeMultipartRequestBodyPortStat() {
-        final long xid = 1l;
-        final MultipartType type = MultipartType.OFPMPPORTSTATS;
-        final MultipartRequestPortStatsCase body = new MultipartRequestPortStatsCaseBuilder().build();
-        final MultipartRequestInput multipartReqInput = MultipartRequestInputFactory.makeMultipartRequestInput(xid, ofVersion, type, body);
-        validation(multipartReqInput, xid, type, body);
+        MultipartRequestGroup mpRq = ((MultipartRequestGroupCase) mpRqBody).getMultipartRequestGroup();
+        Assert.assertEquals(OFConstants.OFPG_ALL, mpRq.getGroupId().getValue());
     }
 
-    /**
-     * Test method for {@link MultipartRequestInputFactory#makeMultipartRequestInput(long, short, MultipartType, MultipartRequestBody)}.
-     * {@link MultipartType.OFPMPQUEUE}
-     */
     @Test
-    public void testMakeMultipartRequestInputLongShortMultipartTypeMultipartRequestBodyQueue() {
-        final long xid = 1l;
-        final MultipartType type = MultipartType.OFPMPQUEUE;
-        final MultipartRequestQueueCase body = new MultipartRequestQueueCaseBuilder().build();
-        final MultipartRequestInput multipartReqInput = MultipartRequestInputFactory.makeMultipartRequestInput(xid, ofVersion, type, body);
-        validation(multipartReqInput, xid, type, body);
+    public void testMakeMultipartRequestInputGroupDesc() {
+        MultipartType mpType = MultipartType.OFPMPGROUPDESC;
+        final MultipartRequestInput mpRqInput =
+            (MultipartRequestInput) MultipartRequestInputFactory.makeMultipartRequest(xid, ofVersion, mpType, false);
+        checkHeader(mpRqInput, mpType);
+        checkEmptyBody(mpRqInput.getMultipartRequestBody().getImplementedInterface(),
+                MultipartRequestGroupDescCase.class);
     }
 
-    /**
-     * Test method for {@link MultipartRequestInputFactory#makeMultipartRequestInput(long, short, MultipartType, MultipartRequestBody)}.
-     * {@link MultipartType.OFPMPGROUP}
-     */
     @Test
-    public void testMakeMultipartRequestInputLongShortMultipartTypeMultipartRequestBodyGroup() {
-        final long xid = 1l;
-        final MultipartType type = MultipartType.OFPMPGROUP;
-        final MultipartRequestGroupCase body = new MultipartRequestGroupCaseBuilder().build();
-        final MultipartRequestInput multipartReqInput = MultipartRequestInputFactory.makeMultipartRequestInput(xid, ofVersion, type, body);
-        validation(multipartReqInput, xid, type, body);
+    public void testMakeMultipartRequestInputGroupFeatures() {
+        MultipartType mpType = MultipartType.OFPMPGROUPFEATURES;
+        final MultipartRequestInput mpRqInput =
+            (MultipartRequestInput) MultipartRequestInputFactory.makeMultipartRequest(xid, ofVersion, mpType, false);
+        checkHeader(mpRqInput, mpType);
+        checkEmptyBody(mpRqInput.getMultipartRequestBody().getImplementedInterface(),
+                MultipartRequestGroupFeaturesCase.class);
     }
 
-    /**
-     * Test method for {@link MultipartRequestInputFactory#makeMultipartRequestInput(long, short, MultipartType, MultipartRequestBody)}.
-     * {@link MultipartType.OFPMPGROUPDESC}
-     */
     @Test
-    public void testMakeMultipartRequestInputLongShortMultipartTypeMultipartRequestBodyGrupDesc() {
-        final long xid = 1l;
-        final MultipartType type = MultipartType.OFPMPGROUPDESC;
-        final MultipartRequestGroupDescCase body = new MultipartRequestGroupDescCaseBuilder().build();
-        final MultipartRequestInput multipartReqInput = MultipartRequestInputFactory.makeMultipartRequestInput(xid, ofVersion, type, body);
-        validation(multipartReqInput, xid, type, body);
-    }
+    public void testMakeMultipartRequestInputMeter() {
+        final MultipartType mpType = MultipartType.OFPMPMETER;
+        final MultipartRequestInput mpRqInput =
+            (MultipartRequestInput) MultipartRequestInputFactory.makeMultipartRequest(xid, ofVersion, mpType, false);
+        checkHeader(mpRqInput, mpType);
+        final MultipartRequestBody mpRqBody = mpRqInput.getMultipartRequestBody();
+        Assert.assertTrue(mpRqBody instanceof MultipartRequestMeterCase);
 
-    /**
-     * Test method for {@link MultipartRequestInputFactory#makeMultipartRequestInput(long, short, MultipartType, MultipartRequestBody)}.
-     * {@link MultipartType.OFPMPGROUPFEATURES}
-     */
-    @Test
-    public void testMakeMultipartRequestInputLongShortMultipartTypeMultipartRequestBodyGroupFeaturs() {
-        final long xid = 1l;
-        final MultipartType type = MultipartType.OFPMPGROUPFEATURES;
-        final MultipartRequestGroupFeaturesCase body = new MultipartRequestGroupFeaturesCaseBuilder().build();
-        final MultipartRequestInput multipartReqInput = MultipartRequestInputFactory.makeMultipartRequestInput(xid, ofVersion, type, body);
-        validation(multipartReqInput, xid, type, body);
+        MultipartRequestMeter mpRq = ((MultipartRequestMeterCase) mpRqBody).getMultipartRequestMeter();
+        Assert.assertEquals(OFConstants.OFPM_ALL, mpRq.getMeterId().getValue());
     }
 
-    /**
-     * Test method for {@link MultipartRequestInputFactory#makeMultipartRequestInput(long, short, MultipartType, MultipartRequestBody)}.
-     * {@link MultipartType.OFPMPMETER}
-     */
     @Test
-    public void testMakeMultipartRequestInputLongShortMultipartTypeMultipartRequestBodyMeter() {
-        final long xid = 1l;
-        final MultipartType type = MultipartType.OFPMPMETER;
-        final MultipartRequestMeterCase body = new MultipartRequestMeterCaseBuilder().build();
-        final MultipartRequestInput multipartReqInput = MultipartRequestInputFactory.makeMultipartRequestInput(xid, ofVersion, type, body);
-        validation(multipartReqInput, xid, type, body);
-    }
+    public void testMakeMultipartRequestInputMeterConfig() {
+        final MultipartType mpType = MultipartType.OFPMPMETERCONFIG;
+        final MultipartRequestInput mpRqInput =
+            (MultipartRequestInput) MultipartRequestInputFactory.makeMultipartRequest(xid, ofVersion, mpType, false);
+        checkHeader(mpRqInput, mpType);
+        final MultipartRequestBody mpRqBody = mpRqInput.getMultipartRequestBody();
+        Assert.assertTrue(mpRqBody instanceof MultipartRequestMeterConfigCase);
 
-    /**
-     * Test method for {@link MultipartRequestInputFactory#makeMultipartRequestInput(long, short, MultipartType, MultipartRequestBody)}.
-     * {@link MultipartType.OFPMPMETERCONFIG}
-     */
-    @Test
-    public void testMakeMultipartRequestInputLongShortMultipartTypeMultipartRequestBodyMeterConf() {
-        final long xid = 1l;
-        final MultipartType type = MultipartType.OFPMPMETERCONFIG;
-        final MultipartRequestMeterConfigCase body = new MultipartRequestMeterConfigCaseBuilder().build();
-        final MultipartRequestInput multipartReqInput = MultipartRequestInputFactory.makeMultipartRequestInput(xid, ofVersion, type, body);
-        validation(multipartReqInput, xid, type, body);
+        MultipartRequestMeterConfig mpRq =
+                ((MultipartRequestMeterConfigCase) mpRqBody).getMultipartRequestMeterConfig();
+        Assert.assertEquals(OFConstants.OFPM_ALL, mpRq.getMeterId().getValue());
     }
 
-    /**
-     * Test method for {@link MultipartRequestInputFactory#makeMultipartRequestInput(long, short, MultipartType, MultipartRequestBody)}.
-     * {@link MultipartType.OFPMPMETERFEATURES}
-     */
     @Test
-    public void testMakeMultipartRequestInputLongShortMultipartTypeMultipartRequestBodyMeterFeatures() {
-        final long xid = 1l;
-        final MultipartType type = MultipartType.OFPMPMETERFEATURES;
-        final MultipartRequestMeterFeaturesCase body = new MultipartRequestMeterFeaturesCaseBuilder().build();
-        final MultipartRequestInput multipartReqInput = MultipartRequestInputFactory.makeMultipartRequestInput(xid, ofVersion, type, body);
-        validation(multipartReqInput, xid, type, body);
+    public void testMakeMultipartRequestInputMeterFeatures() {
+        MultipartType mpType = MultipartType.OFPMPMETERFEATURES;
+        final MultipartRequestInput mpRqInput =
+            (MultipartRequestInput) MultipartRequestInputFactory.makeMultipartRequest(xid, ofVersion, mpType, false);
+        checkHeader(mpRqInput, mpType);
+        checkEmptyBody(mpRqInput.getMultipartRequestBody().getImplementedInterface(),
+                MultipartRequestMeterFeaturesCase.class);
     }
 
-    /**
-     * Test method for {@link MultipartRequestInputFactory#makeMultipartRequestInput(long, short, MultipartType, MultipartRequestBody)}.
-     * {@link MultipartType.OFPMPMETERFEATURES}
-     */
     @Test
-    public void testMakeMultipartRequestInputLongShortMultipartTypeMultipartRequestBodyTableFeatures() {
-        final long xid = 1l;
-        final MultipartType type = MultipartType.OFPMPTABLEFEATURES;
-        final MultipartRequestTableFeaturesCase body = new MultipartRequestTableFeaturesCaseBuilder().build();
-        final MultipartRequestInput multipartReqInput = MultipartRequestInputFactory.makeMultipartRequestInput(xid, ofVersion, type, body);
-        validation(multipartReqInput, xid, type, body);
-    }
+    public void testMakeMultipartRequestInputTableFeatures() {
+        final MultipartType mpType = MultipartType.OFPMPTABLEFEATURES;
+        final MultipartRequestInput mpRqInput =
+            (MultipartRequestInput) MultipartRequestInputFactory.makeMultipartRequest(xid, ofVersion, mpType, false);
+        checkHeader(mpRqInput, mpType);
+        final MultipartRequestBody mpRqBody = mpRqInput.getMultipartRequestBody();
+        Assert.assertTrue(mpRqBody instanceof MultipartRequestTableFeaturesCase);
 
-    /**
-     * Test method for {@link MultipartRequestInputFactory#makeMultipartRequestInput(long, short, MultipartType, MultipartRequestBody)}.
-     * {@link MultipartType.OFPMPPORTDESC}
-     */
-    @Test
-    public void testMakeMultipartRequestInputLongShortMultipartTypeMultipartRequestBodyPortDesc() {
-        final long xid = 1l;
-        final MultipartType type = MultipartType.OFPMPPORTDESC;
-        final MultipartRequestPortDescCase body = new MultipartRequestPortDescCaseBuilder().build();
-        final MultipartRequestInput multipartReqInput = MultipartRequestInputFactory.makeMultipartRequestInput(xid, ofVersion, type, body);
-        validation(multipartReqInput, xid, type, body);
+        MultipartRequestTableFeatures mpRq =
+                ((MultipartRequestTableFeaturesCase) mpRqBody).getMultipartRequestTableFeatures();
+        Assert.assertNotNull(mpRq);
     }
 
-    /**
-     * Test method for {@link MultipartRequestInputFactory#makeMultipartRequestInput(long, short, MultipartType, MultipartRequestBody)}.
-     * {@link MultipartType.OFPMPEXPERIMENTER}
-     */
     @Test
-    public void testMakeMultipartRequestInputLongShortMultipartTypeMultipartRequestBodyExperimenter() {
-        final long xid = 1l;
-        final MultipartType type = MultipartType.OFPMPEXPERIMENTER;
-        final MultipartRequestExperimenterCase body = new MultipartRequestExperimenterCaseBuilder().build();
-        final MultipartRequestInput multipartReqInput = MultipartRequestInputFactory.makeMultipartRequestInput(xid, ofVersion, type, body);
-        validation(multipartReqInput, xid, type, body);
-    }
-
-    /**
-     * Test method for {@link MultipartRequestInputFactory#makeMultipartRequestInput(long, short, MultipartType, MultipartRequestBody)}.
-     * Validation for null input type expect IllegalArgumentException
-     */
-    @Test(expected = IllegalArgumentException.class)
-    public void testMakeMultipartRequestInputLongShortMultipartTypeMultipartRequestBodyNullType() {
-        final long xid = 1l;
-        final MultipartRequestDescCase body = new MultipartRequestDescCaseBuilder().build();
-        MultipartRequestInputFactory.makeMultipartRequestInput(xid, ofVersion, null, body);
+    public void testMakeMultipartRequestInputPortDesc() {
+        MultipartType mpType = MultipartType.OFPMPPORTDESC;
+        final MultipartRequestInput mpRqInput =
+            (MultipartRequestInput) MultipartRequestInputFactory.makeMultipartRequest(xid, ofVersion, mpType, false);
+        checkHeader(mpRqInput, mpType);
+        checkEmptyBody(mpRqInput.getMultipartRequestBody().getImplementedInterface(),
+                MultipartRequestPortDescCase.class);
     }
 
-    /**
-     * Test method for {@link MultipartRequestInputFactory#makeMultipartRequestInput(long, short, MultipartType, MultipartRequestBody)}.
-     * Validation for null input body expect IllegalArgumentException
-     */
-    @Test(expected = IllegalArgumentException.class)
-    public void testMakeMultipartRequestInputLongShortMultipartTypeMultipartRequestBodyNullBody() {
-        final long xid = 1l;
-        final MultipartType type = MultipartType.OFPMPDESC;
-        MultipartRequestInputFactory.makeMultipartRequestInput(xid, ofVersion, type, null);
-    }
-
-    /**
-     * Test method for {@link MultipartRequestInputFactory#makeMultipartRequestInput(long, short, MultipartType, MultipartRequestBody)}.
-     * Validation for bad input body Class expect IllegalArgumentException
-     */
-    @Test(expected = IllegalArgumentException.class)
-    public void testMakeMultipartRequestInputLongShortMultipartTypeMultipartRequestBodyBadType() {
-        final long xid = 1l;
-        final MultipartType type = MultipartType.OFPMPEXPERIMENTER;
-        final MultipartRequestDescCase body = new MultipartRequestDescCaseBuilder().build();
-        MultipartRequestInputFactory.makeMultipartRequestInput(xid, ofVersion, type, body);
-    }
-
-    /**
-     * Test method for {@link MultipartRequestInputFactory#makeMultipartRequestInput(long, short, MultipartType, boolean)}.
-     * {@link MultipartType.OFPMPDESC}
-     * note: we are able to add next test suite for all MultipartType but I guess it is same as suite before
-     */
     @Test
-    public void testMakeMultipartRequestInputLongShortMultipartTypeBoolean() {
-        final long xid = 1l;
-        final MultipartType type = MultipartType.OFPMPDESC;
-        final MultipartRequestInput multipartReqInput = MultipartRequestInputFactory.makeMultipartRequestInput(xid, ofVersion, type, true);
-        final MultipartRequestDescCase defaultBodyForComparison = new MultipartRequestDescCaseBuilder().build();
-        validation(multipartReqInput, xid, type, defaultBodyForComparison);
-        Assert.assertTrue(multipartReqInput.getFlags().isOFPMPFREQMORE());
+    public void testMakeMultipartRequestInputExperimenter() {
+        MultipartType mpType = MultipartType.OFPMPEXPERIMENTER;
+        final MultipartRequestInput mpRqInput =
+            (MultipartRequestInput) MultipartRequestInputFactory.makeMultipartRequest(xid, ofVersion, mpType, false);
+        checkHeader(mpRqInput, mpType);
+        checkEmptyBody(mpRqInput.getMultipartRequestBody().getImplementedInterface(),
+                MultipartRequestExperimenterCase.class);
     }
 
-    /**
-     * Test method for {@link MultipartRequestInputFactory#makeMultipartRequestInput(long, short, MultipartType, boolean, MultipartRequestBody)}.
-     * {@link MultipartType.OFPMPDESC}
-     * note: we are able to add next test suite for all MultipartType but I guess it is same as suite before
-     */
-    @Test
-    public void testMakeMultipartRequestInputLongShortMultipartTypeBooleanMultipartRequestBody() {
-        final long xid = 1l;
-        final MultipartType type = MultipartType.OFPMPDESC;
-        final MultipartRequestDescCase body = new MultipartRequestDescCaseBuilder().build();
-        final MultipartRequestInput multipartReqInput = MultipartRequestInputFactory.makeMultipartRequestInput(xid, ofVersion, type, true, body);
-        validation(multipartReqInput, xid, type, body);
-        Assert.assertTrue(multipartReqInput.getFlags().isOFPMPFREQMORE());
+    private void checkHeader(MultipartRequestInput mpRqInput, MultipartType mpType) {
+        Assert.assertFalse(mpRqInput.getFlags().isOFPMPFREQMORE());
+        Assert.assertEquals(ofVersion, mpRqInput.getVersion().shortValue());
+        Assert.assertEquals(mpType, mpRqInput.getType());
+        Assert.assertEquals(xid, mpRqInput.getXid().longValue());
     }
 
-    private void validation(final MultipartRequestInput multipartReqInput, final long xid, final MultipartType type, final MultipartRequestBody body) {
-        Assert.assertNotNull(multipartReqInput);
-        Assert.assertEquals(xid, multipartReqInput.getXid().longValue());
-        Assert.assertEquals(ofVersion, multipartReqInput.getVersion().shortValue());
-        Assert.assertNotNull(multipartReqInput.getType());
-        Assert.assertEquals(type, multipartReqInput.getType());
-        Assert.assertNotNull(multipartReqInput.getMultipartRequestBody());
-        Assert.assertEquals(body.getClass(), multipartReqInput.getMultipartRequestBody().getClass());
-        Assert.assertEquals(body, multipartReqInput.getMultipartRequestBody());
+    private void checkEmptyBody(Class<? extends DataContainer> mpRqBody, Class<? extends
+            MultipartRequestBody> expectedMpRqBodyClass) {
+        Assert.assertTrue(expectedMpRqBodyClass.isAssignableFrom(mpRqBody));
+        Assert.assertEquals(expectedMpRqBodyClass, mpRqBody);
     }
 }