--- /dev/null
+/**
+ * Copyright (c) 2015 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.openflowplugin.impl.common;
+
+import com.google.common.base.Preconditions;
+import javax.annotation.CheckForNull;
+import javax.annotation.Nonnull;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.MultipartRequestFlags;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.MultipartType;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.MultipartRequestInput;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.MultipartRequestInputBuilder;
+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;
+
+/**
+ * openflowplugin-impl
+ * org.opendaylight.openflowplugin.impl.common
+ *
+ * Factory class is designed for easy producing a MultipartRequestInput. Class should help
+ * to understand a relationship between {@link MultipartType} and {@link MultipartRequestInput}
+ * without touch OF specification 1.3.2 - a section 7.3.5. Multipart Messages
+ * {@see https://www.opennetworking.org/images/stories/downloads/sdn-resources/onf-specifications/openflow/openflow-spec-v1.3.2.pdf}
+ *
+ * @author <a href="mailto:vdemcak@cisco.com">Vaclav Demcak</a>
+ *
+ * Created: Mar 27, 2015
+ */
+public final class MultipartRequestInputFactory {
+
+ private MultipartRequestInputFactory () {
+ throw new UnsupportedOperationException("Factory class");
+ }
+
+ /**
+ * Method validate input and makes {@link MultipartRequestInput} from input values. Method set
+ * a moreRequest marker to false and it creates default empty {@link MultipartRequestBody}
+ * by {@link MultipartType}
+ *
+ * @param xid
+ * @param type
+ * @param ofVersion
+ * @return
+ */
+ public static MultipartRequestInput makeMultipartRequestInput(final long xid, final short ofVersion,
+ @Nonnull final MultipartType type) {
+ return maker(xid, type, ofVersion, false, makeDefaultEmptyRequestBody(type));
+ }
+
+ /**
+ * Method validate input values and makes {@link MultipartRequestInput} from input values. Method set
+ * a moreRequest marker to false.
+ *
+ * @param xid
+ * @param type
+ * @param ofVersion
+ * @param body
+ * @return
+ */
+ public static MultipartRequestInput makeMultipartRequestInput(final long xid, final short ofVersion,
+ @Nonnull final MultipartType type, @Nonnull final MultipartRequestBody body) {
+ Preconditions.checkArgument(validationOfMultipartTypeAndRequestBody(type, body));
+ return maker(xid, type, ofVersion, false, body);
+ }
+
+ /**
+ * Method validates input and makes {@link MultipartRequestInput} from input values. Method creates
+ * default empty {@link MultipartRequestBody} by {@link MultipartType}
+ *
+ * @param xid
+ * @param type
+ * @param ofVersion
+ * @param moreRequests
+ * @return
+ */
+ public static MultipartRequestInput makeMultipartRequestInput(final long xid, final short ofVersion,
+ @Nonnull final MultipartType type, final boolean moreRequests) {
+ return maker(xid, type, ofVersion, moreRequests, makeDefaultEmptyRequestBody(type));
+ }
+
+ /**
+ * Method validates input values and makes {@link MultipartRequestInput} from input values.
+ *
+ * @param xid
+ * @param type
+ * @param ofVersion
+ * @param moreRequests
+ * @param body
+ * @return
+ */
+ public static MultipartRequestInput makeMultipartRequestInput(final long xid, final short ofVersion,
+ @Nonnull final MultipartType type, final boolean moreRequests,
+ @Nonnull final MultipartRequestBody body) {
+ Preconditions.checkArgument(validationOfMultipartTypeAndRequestBody(type, body));
+ return maker(xid, type, ofVersion, moreRequests, body);
+ }
+
+ /**
+ * Method build {@link MultipartRequestInput} from input values. It is private because we would like
+ * to validate only what is really need to be validate.
+ *
+ * @param xid
+ * @param type
+ * @param ofVersion
+ * @param moreRequests
+ * @param body
+ * @return
+ */
+ private static MultipartRequestInput maker(final long xid, final MultipartType type,
+ final short ofVersion, final boolean moreRequests, final MultipartRequestBody body) {
+ final MultipartRequestInputBuilder builder = new MultipartRequestInputBuilder();
+ builder.setFlags(new MultipartRequestFlags(moreRequests));
+ builder.setMultipartRequestBody(body);
+ builder.setVersion(ofVersion);
+ builder.setType(type);
+ builder.setXid(xid);
+ return builder.build();
+ }
+
+ private static MultipartRequestBody makeDefaultEmptyRequestBody(@CheckForNull final MultipartType type) {
+ Preconditions.checkArgument(type != null, "Multipart Request can not by build without type!");
+ switch (type) {
+ case OFPMPDESC:
+ return new MultipartRequestDescCaseBuilder().build();
+ case OFPMPFLOW:
+ return new MultipartRequestFlowCaseBuilder().build();
+ case OFPMPAGGREGATE:
+ return new MultipartRequestAggregateCaseBuilder().build();
+ case OFPMPTABLE:
+ return new MultipartRequestTableCaseBuilder().build();
+ case OFPMPPORTSTATS:
+ return new MultipartRequestPortStatsCaseBuilder().build();
+ case OFPMPQUEUE:
+ return new MultipartRequestQueueCaseBuilder().build();
+ case OFPMPGROUP:
+ return new MultipartRequestGroupCaseBuilder().build();
+ case OFPMPGROUPDESC:
+ return new MultipartRequestGroupDescCaseBuilder().build();
+ case OFPMPGROUPFEATURES:
+ return new MultipartRequestGroupFeaturesCaseBuilder().build();
+ case OFPMPMETER:
+ return new MultipartRequestMeterCaseBuilder().build();
+ case OFPMPMETERCONFIG:
+ return new MultipartRequestMeterConfigCaseBuilder().build();
+ case OFPMPMETERFEATURES:
+ return new MultipartRequestMeterFeaturesCaseBuilder().build();
+ case OFPMPTABLEFEATURES:
+ return new MultipartRequestTableFeaturesCaseBuilder().build();
+ case OFPMPPORTDESC:
+ return new MultipartRequestPortDescCaseBuilder().build();
+ case OFPMPEXPERIMENTER:
+ return new MultipartRequestExperimenterCaseBuilder().build();
+ default:
+ throw new IllegalArgumentException("Unknown MultipartType " + type);
+ }
+ }
+
+ private static boolean validationOfMultipartTypeAndRequestBody(@CheckForNull final MultipartType type,
+ @CheckForNull final MultipartRequestBody body) {
+ Preconditions.checkArgument(type != null, "Multipart Request can not by build without type!");
+ Preconditions.checkArgument(body != null, "Multipart Request can not by build without body!");
+ switch (type) {
+ case OFPMPDESC:
+ return body instanceof MultipartRequestDescCase;
+ case OFPMPFLOW:
+ return body instanceof MultipartRequestFlowCase;
+ case OFPMPAGGREGATE:
+ return body instanceof MultipartRequestAggregateCase;
+ case OFPMPTABLE:
+ return body instanceof MultipartRequestTableCase;
+ case OFPMPPORTSTATS:
+ return body instanceof MultipartRequestPortStatsCase;
+ case OFPMPQUEUE:
+ return body instanceof MultipartRequestQueueCase;
+ case OFPMPGROUP:
+ return body instanceof MultipartRequestGroupCase;
+ case OFPMPGROUPDESC:
+ return body instanceof MultipartRequestGroupDescCase;
+ case OFPMPGROUPFEATURES:
+ return body instanceof MultipartRequestGroupFeaturesCase;
+ case OFPMPMETER:
+ return body instanceof MultipartRequestMeterCase;
+ case OFPMPMETERCONFIG:
+ return body instanceof MultipartRequestMeterConfigCase;
+ case OFPMPMETERFEATURES:
+ return body instanceof MultipartRequestMeterFeaturesCase;
+ case OFPMPTABLEFEATURES:
+ return body instanceof MultipartRequestTableFeaturesCase;
+ case OFPMPPORTDESC:
+ return body instanceof MultipartRequestPortDescCase;
+ case OFPMPEXPERIMENTER:
+ return body instanceof MultipartRequestExperimenterCase;
+ default:
+ throw new IllegalArgumentException("Unknown MultipartType " + type);
+ }
+ }
+}
--- /dev/null
+/**
+ * Copyright (c) 2015 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.openflowplugin.impl.common;
+
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+import org.opendaylight.openflowplugin.api.openflow.device.XidGenerator;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.MultipartType;
+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;
+
+/**
+ * openflowplugin-impl
+ * org.opendaylight.openflowplugin.impl.common
+ *
+ * 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>
+ *
+ * Created: Mar 28, 2015
+ */
+public class MultipartRequestInputFactoryTest {
+
+ private XidGenerator xidGenerator;
+ private short ofVersion;
+
+ @Before
+ public void initialization() {
+ xidGenerator = new XidGenerator();
+ 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 = xidGenerator.generate().getValue();
+ MultipartRequestInputFactory.makeMultipartRequestInput(xid, ofVersion, null);
+ }
+
+ /**
+ * Test method for {@link MultipartRequestInputFactory#makeMultipartRequestInput(long, short, MultipartType)}.
+ * {@link MultipartType.OFPMPDESC}
+ */
+ @Test
+ public void testMakeMultipartRequestInputLongShortMultipartTypeDesc(){
+ final long xid = xidGenerator.generate().getValue();
+ 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
+ public void testMakeMultipartRequestInputLongShortMultipartTypeFlow(){
+ final long xid = xidGenerator.generate().getValue();
+ final MultipartType type = MultipartType.OFPMPFLOW;
+ final MultipartRequestInput multipartReqInput = MultipartRequestInputFactory.makeMultipartRequestInput(xid, ofVersion, type);
+ final MultipartRequestFlowCase defaultBodyForComparison = new MultipartRequestFlowCaseBuilder().build();
+ validation(multipartReqInput, xid, type, defaultBodyForComparison);
+ }
+
+ /**
+ * Test method for {@link MultipartRequestInputFactory#makeMultipartRequestInput(long, short, MultipartType)}.
+ * {@link MultipartType.OFPMPAGGREGATE}
+ */
+ @Test
+ public void testMakeMultipartRequestInputLongShortMultipartTypeAggr(){
+ final long xid = xidGenerator.generate().getValue();
+ final MultipartType type = MultipartType.OFPMPAGGREGATE;
+ final MultipartRequestInput multipartReqInput = MultipartRequestInputFactory.makeMultipartRequestInput(xid, ofVersion, type);
+ final MultipartRequestAggregateCase defaultBodyForComparison = new MultipartRequestAggregateCaseBuilder().build();
+ validation(multipartReqInput, xid, type, defaultBodyForComparison);
+ }
+
+ /**
+ * Test method for {@link MultipartRequestInputFactory#makeMultipartRequestInput(long, short, MultipartType)}.
+ * {@link MultipartType.OFPMPTABLE}
+ */
+ @Test
+ public void testMakeMultipartRequestInputLongShortMultipartTypeTable(){
+ final long xid = xidGenerator.generate().getValue();
+ final MultipartType type = MultipartType.OFPMPTABLE;
+ final MultipartRequestInput multipartReqInput = MultipartRequestInputFactory.makeMultipartRequestInput(xid, ofVersion, type);
+ final MultipartRequestTableCase defaultBodyForComparison = new MultipartRequestTableCaseBuilder().build();
+ validation(multipartReqInput, xid, type, defaultBodyForComparison);
+ }
+
+ /**
+ * Test method for {@link MultipartRequestInputFactory#makeMultipartRequestInput(long, short, MultipartType)}.
+ * {@link MultipartType.OFPMPPORTSTATS}
+ */
+ @Test
+ public void testMakeMultipartRequestInputLongShortMultipartTypePortStat(){
+ final long xid = xidGenerator.generate().getValue();
+ 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 = xidGenerator.generate().getValue();
+ final MultipartType type = MultipartType.OFPMPQUEUE;
+ final MultipartRequestInput multipartReqInput = MultipartRequestInputFactory.makeMultipartRequestInput(xid, ofVersion, type);
+ final MultipartRequestQueueCase defaultBodyForComparison = new MultipartRequestQueueCaseBuilder().build();
+ validation(multipartReqInput, xid, type, defaultBodyForComparison);
+ }
+
+ /**
+ * Test method for {@link MultipartRequestInputFactory#makeMultipartRequestInput(long, short, MultipartType)}.
+ * {@link MultipartType.OFPMPGROUP}
+ */
+ @Test
+ public void testMakeMultipartRequestInputLongShortMultipartTypeGroup(){
+ final long xid = xidGenerator.generate().getValue();
+ 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 = xidGenerator.generate().getValue();
+ 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 = xidGenerator.generate().getValue();
+ final MultipartType type = MultipartType.OFPMPGROUPFEATURES;
+ final MultipartRequestInput multipartReqInput = MultipartRequestInputFactory.makeMultipartRequestInput(xid, ofVersion, type);
+ final MultipartRequestGroupFeaturesCase defaultBodyForComparison = new MultipartRequestGroupFeaturesCaseBuilder().build();
+ validation(multipartReqInput, xid, type, defaultBodyForComparison);
+ }
+
+ /**
+ * Test method for {@link MultipartRequestInputFactory#makeMultipartRequestInput(long, short, MultipartType)}.
+ * {@link MultipartType.OFPMPMETER}
+ */
+ @Test
+ public void testMakeMultipartRequestInputLongShortMultipartTypeMeter(){
+ final long xid = xidGenerator.generate().getValue();
+ final MultipartType type = MultipartType.OFPMPMETER;
+ final MultipartRequestInput multipartReqInput = MultipartRequestInputFactory.makeMultipartRequestInput(xid, ofVersion, type);
+ final MultipartRequestMeterCase defaultBodyForComparison = new MultipartRequestMeterCaseBuilder().build();
+ validation(multipartReqInput, xid, type, defaultBodyForComparison);
+ }
+
+ /**
+ * Test method for {@link MultipartRequestInputFactory#makeMultipartRequestInput(long, short, MultipartType)}.
+ * {@link MultipartType.OFPMPMETERCONFIG}
+ */
+ @Test
+ public void testMakeMultipartRequestInputLongShortMultipartTypeMeterConf(){
+ final long xid = xidGenerator.generate().getValue();
+ final MultipartType type = MultipartType.OFPMPMETERCONFIG;
+ final MultipartRequestInput multipartReqInput = MultipartRequestInputFactory.makeMultipartRequestInput(xid, ofVersion, type);
+ final MultipartRequestMeterConfigCase defaultBodyForComparison = new MultipartRequestMeterConfigCaseBuilder().build();
+ validation(multipartReqInput, xid, type, defaultBodyForComparison);
+ }
+
+ /**
+ * Test method for {@link MultipartRequestInputFactory#makeMultipartRequestInput(long, short, MultipartType)}.
+ * {@link MultipartType.OFPMPMETERFEATURES}
+ */
+ @Test
+ public void testMakeMultipartRequestInputLongShortMultipartTypeMeterFeatures(){
+ final long xid = xidGenerator.generate().getValue();
+ final MultipartType type = MultipartType.OFPMPMETERFEATURES;
+ final MultipartRequestInput multipartReqInput = MultipartRequestInputFactory.makeMultipartRequestInput(xid, ofVersion, type);
+ final MultipartRequestMeterFeaturesCase defaultBodyForComparison = new MultipartRequestMeterFeaturesCaseBuilder().build();
+ validation(multipartReqInput, xid, type, defaultBodyForComparison);
+ }
+
+ /**
+ * Test method for {@link MultipartRequestInputFactory#makeMultipartRequestInput(long, short, MultipartType)}.
+ * {@link MultipartType.OFPMPMETERFEATURES}
+ */
+ @Test
+ public void testMakeMultipartRequestInputLongShortMultipartTypeTableFeatures(){
+ final long xid = xidGenerator.generate().getValue();
+ final MultipartType type = MultipartType.OFPMPTABLEFEATURES;
+ final MultipartRequestInput multipartReqInput = MultipartRequestInputFactory.makeMultipartRequestInput(xid, ofVersion, type);
+ final MultipartRequestTableFeaturesCase defaultBodyForComparison = new MultipartRequestTableFeaturesCaseBuilder().build();
+ validation(multipartReqInput, xid, type, defaultBodyForComparison);
+ }
+
+ /**
+ * Test method for {@link MultipartRequestInputFactory#makeMultipartRequestInput(long, short, MultipartType)}.
+ * {@link MultipartType.OFPMPPORTDESC}
+ */
+ @Test
+ public void testMakeMultipartRequestInputLongShortMultipartTypePortDesc(){
+ final long xid = xidGenerator.generate().getValue();
+ final MultipartType type = MultipartType.OFPMPPORTDESC;
+ final MultipartRequestInput multipartReqInput = MultipartRequestInputFactory.makeMultipartRequestInput(xid, ofVersion, type);
+ final MultipartRequestPortDescCase defaultBodyForComparison = new MultipartRequestPortDescCaseBuilder().build();
+ validation(multipartReqInput, xid, type, defaultBodyForComparison);
+ }
+
+ /**
+ * Test method for {@link MultipartRequestInputFactory#makeMultipartRequestInput(long, short, MultipartType)}.
+ * {@link MultipartType.OFPMPEXPERIMENTER}
+ */
+ @Test
+ public void testMakeMultipartRequestInputLongShortMultipartTypeExperimenter(){
+ final long xid = xidGenerator.generate().getValue();
+ final MultipartType type = MultipartType.OFPMPEXPERIMENTER;
+ final MultipartRequestInput multipartReqInput = MultipartRequestInputFactory.makeMultipartRequestInput(xid, ofVersion, type);
+ final MultipartRequestExperimenterCase defaultBodyForComparison = new MultipartRequestExperimenterCaseBuilder().build();
+ validation(multipartReqInput, xid, type, defaultBodyForComparison);
+ }
+
+ /**
+ * Test method for {@link MultipartRequestInputFactory#makeMultipartRequestInput(long, short, MultipartType, MultipartRequestBody)}.
+ * {@link MultipartType.OFPMPDESC}
+ */
+ @Test
+ public void testMakeMultipartRequestInputLongShortMultipartTypeMultipartRequestBodyDesc(){
+ final long xid = xidGenerator.generate().getValue();
+ 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);
+ }
+
+ /**
+ * Test method for {@link MultipartRequestInputFactory#makeMultipartRequestInput(long, short, MultipartType, MultipartRequestBody)}.
+ * {@link MultipartType.OFPMPFLOW}
+ */
+ @Test
+ public void testMakeMultipartRequestInputLongShortMultipartTypeMultipartRequestBodyFlow(){
+ final long xid = xidGenerator.generate().getValue();
+ 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);
+ }
+
+ /**
+ * Test method for {@link MultipartRequestInputFactory#makeMultipartRequestInput(long, short, MultipartType, MultipartRequestBody)}.
+ * {@link MultipartType.OFPMPAGGREGATE}
+ */
+ @Test
+ public void testMakeMultipartRequestInputLongShortMultipartTypeMultipartRequestBodyAggr(){
+ final long xid = xidGenerator.generate().getValue();
+ 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);
+ }
+
+ /**
+ * Test method for {@link MultipartRequestInputFactory#makeMultipartRequestInput(long, short, MultipartType, MultipartRequestBody)}.
+ * {@link MultipartType.OFPMPTABLE}
+ */
+ @Test
+ public void testMakeMultipartRequestInputLongShortMultipartTypeMultipartRequestBodyTable(){
+ final long xid = xidGenerator.generate().getValue();
+ 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);
+ }
+
+ /**
+ * Test method for {@link MultipartRequestInputFactory#makeMultipartRequestInput(long, short, MultipartType, MultipartRequestBody)}.
+ * {@link MultipartType.OFPMPPORTSTATS}
+ */
+ @Test
+ public void testMakeMultipartRequestInputLongShortMultipartTypeMultipartRequestBodyPortStat(){
+ final long xid = xidGenerator.generate().getValue();
+ 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);
+ }
+
+ /**
+ * Test method for {@link MultipartRequestInputFactory#makeMultipartRequestInput(long, short, MultipartType, MultipartRequestBody)}.
+ * {@link MultipartType.OFPMPQUEUE}
+ */
+ @Test
+ public void testMakeMultipartRequestInputLongShortMultipartTypeMultipartRequestBodyQueue(){
+ final long xid = xidGenerator.generate().getValue();
+ 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);
+ }
+
+ /**
+ * Test method for {@link MultipartRequestInputFactory#makeMultipartRequestInput(long, short, MultipartType, MultipartRequestBody)}.
+ * {@link MultipartType.OFPMPGROUP}
+ */
+ @Test
+ public void testMakeMultipartRequestInputLongShortMultipartTypeMultipartRequestBodyGroup(){
+ final long xid = xidGenerator.generate().getValue();
+ 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);
+ }
+
+ /**
+ * Test method for {@link MultipartRequestInputFactory#makeMultipartRequestInput(long, short, MultipartType, MultipartRequestBody)}.
+ * {@link MultipartType.OFPMPGROUPDESC}
+ */
+ @Test
+ public void testMakeMultipartRequestInputLongShortMultipartTypeMultipartRequestBodyGrupDesc(){
+ final long xid = xidGenerator.generate().getValue();
+ 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);
+ }
+
+ /**
+ * Test method for {@link MultipartRequestInputFactory#makeMultipartRequestInput(long, short, MultipartType, MultipartRequestBody)}.
+ * {@link MultipartType.OFPMPGROUPFEATURES}
+ */
+ @Test
+ public void testMakeMultipartRequestInputLongShortMultipartTypeMultipartRequestBodyGroupFeaturs(){
+ final long xid = xidGenerator.generate().getValue();
+ 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);
+ }
+
+ /**
+ * Test method for {@link MultipartRequestInputFactory#makeMultipartRequestInput(long, short, MultipartType, MultipartRequestBody)}.
+ * {@link MultipartType.OFPMPMETER}
+ */
+ @Test
+ public void testMakeMultipartRequestInputLongShortMultipartTypeMultipartRequestBodyMeter(){
+ final long xid = xidGenerator.generate().getValue();
+ 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);
+ }
+
+ /**
+ * Test method for {@link MultipartRequestInputFactory#makeMultipartRequestInput(long, short, MultipartType, MultipartRequestBody)}.
+ * {@link MultipartType.OFPMPMETERCONFIG}
+ */
+ @Test
+ public void testMakeMultipartRequestInputLongShortMultipartTypeMultipartRequestBodyMeterConf(){
+ final long xid = xidGenerator.generate().getValue();
+ 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);
+ }
+
+ /**
+ * Test method for {@link MultipartRequestInputFactory#makeMultipartRequestInput(long, short, MultipartType, MultipartRequestBody)}.
+ * {@link MultipartType.OFPMPMETERFEATURES}
+ */
+ @Test
+ public void testMakeMultipartRequestInputLongShortMultipartTypeMultipartRequestBodyMeterFeatures(){
+ final long xid = xidGenerator.generate().getValue();
+ 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);
+ }
+
+ /**
+ * Test method for {@link MultipartRequestInputFactory#makeMultipartRequestInput(long, short, MultipartType, MultipartRequestBody)}.
+ * {@link MultipartType.OFPMPMETERFEATURES}
+ */
+ @Test
+ public void testMakeMultipartRequestInputLongShortMultipartTypeMultipartRequestBodyTableFeatures(){
+ final long xid = xidGenerator.generate().getValue();
+ 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);
+ }
+
+ /**
+ * Test method for {@link MultipartRequestInputFactory#makeMultipartRequestInput(long, short, MultipartType, MultipartRequestBody)}.
+ * {@link MultipartType.OFPMPPORTDESC}
+ */
+ @Test
+ public void testMakeMultipartRequestInputLongShortMultipartTypeMultipartRequestBodyPortDesc(){
+ final long xid = xidGenerator.generate().getValue();
+ 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);
+ }
+
+ /**
+ * Test method for {@link MultipartRequestInputFactory#makeMultipartRequestInput(long, short, MultipartType, MultipartRequestBody)}.
+ * {@link MultipartType.OFPMPEXPERIMENTER}
+ */
+ @Test
+ public void testMakeMultipartRequestInputLongShortMultipartTypeMultipartRequestBodyExperimenter(){
+ final long xid = xidGenerator.generate().getValue();
+ 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 = xidGenerator.generate().getValue();
+ final MultipartRequestDescCase body = new MultipartRequestDescCaseBuilder().build();
+ MultipartRequestInputFactory.makeMultipartRequestInput(xid, ofVersion, null, body);
+ }
+
+ /**
+ * 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 = xidGenerator.generate().getValue();
+ 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 = xidGenerator.generate().getValue();
+ 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 = xidGenerator.generate().getValue();
+ 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());
+ }
+
+ /**
+ * 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 = xidGenerator.generate().getValue();
+ 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 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());
+ }
+}