From 0defbf17077c77c7f93d3d1ac7eb78ac40243aa0 Mon Sep 17 00:00:00 2001 From: Vaclav Demcak Date: Sat, 28 Mar 2015 18:12:41 +0100 Subject: [PATCH] MultipartRequestInputFactory Note: Factory class produces MultipartRequestInput object for ConnectinAdapter.multipartRequest method. Class should help a newbie to understand relationship between MultipartType and set MultipartRequestBody children. * factory class with an input validation * test suite for factory MultipartRequestInput Change-Id: Id728fa3e6f15cf8c83442a23b0b118fd35f2c5ee Signed-off-by: Vaclav Demcak --- .../common/MultipartRequestInputFactory.java | 231 ++++++++ .../MultipartRequestInputFactoryTest.java | 545 ++++++++++++++++++ 2 files changed, 776 insertions(+) create mode 100644 openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/common/MultipartRequestInputFactory.java create mode 100644 openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/common/MultipartRequestInputFactoryTest.java diff --git a/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/common/MultipartRequestInputFactory.java b/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/common/MultipartRequestInputFactory.java new file mode 100644 index 0000000000..5b166866c4 --- /dev/null +++ b/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/common/MultipartRequestInputFactory.java @@ -0,0 +1,231 @@ +/** + * 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 Vaclav Demcak + * + * 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); + } + } +} diff --git a/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/common/MultipartRequestInputFactoryTest.java b/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/common/MultipartRequestInputFactoryTest.java new file mode 100644 index 0000000000..567e7af33a --- /dev/null +++ b/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/common/MultipartRequestInputFactoryTest.java @@ -0,0 +1,545 @@ +/** + * 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 Vaclav Demcak + * + * 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()); + } +} -- 2.36.6