* 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.openflow.md.core.sal.convertor;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
-import java.math.BigInteger;
import java.util.ArrayList;
-import java.util.Collections;
+import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Optional;
-import org.junit.Before;
import org.junit.Test;
import org.opendaylight.openflowplugin.api.OFConstants;
import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.data.VersionConvertorData;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.instruction.WriteMetadataCaseBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.list.Instruction;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.list.InstructionBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.list.InstructionKey;
import org.opendaylight.yang.gen.v1.urn.opendaylight.table.service.rev131026.table.update.UpdatedTableBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.TableConfig;
import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.TableFeatures;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.set.field.match.SetFieldMatch;
import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.set.field.match.SetFieldMatchBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.set.field.match.SetFieldMatchKey;
import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.feature.prop.type.TableFeaturePropType;
import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.feature.prop.type.table.feature.prop.type.ApplyActions;
import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.feature.prop.type.table.feature.prop.type.ApplyActionsBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.features.table.features.TablePropertiesBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.features.table.features.table.properties.TableFeatureProperties;
import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.features.table.features.table.properties.TableFeaturePropertiesBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.features.table.features.table.properties.TableFeaturePropertiesKey;
+import org.opendaylight.yangtools.yang.binding.util.BindingMap;
+import org.opendaylight.yangtools.yang.common.Uint32;
+import org.opendaylight.yangtools.yang.common.Uint64;
+import org.opendaylight.yangtools.yang.common.Uint8;
public class TableFeaturesConvertorTest {
- private static final TablePropertiesBuilder tablePropertiesBuilder = new TablePropertiesBuilder();
- private static final Map<Class<? extends TableFeaturePropType>, TableFeaturePropType> augmentationsMap = new HashMap<>();
- private static final List<org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.Instruction> instructionsList = new ArrayList<>();
- private static final List<org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.Action> actions = new ArrayList<>();
- private static final List<org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.set.field.match.SetFieldMatch> fieldTableFeatures = new ArrayList<>();
-
- private static void setupInstructionsList() {
- instructionsList.add(new GoToTableCaseBuilder().build());
- instructionsList.add(new WriteMetadataCaseBuilder().build());
- instructionsList.add(new WriteActionsCaseBuilder().build());
- instructionsList.add(new ApplyActionsCaseBuilder().build());
- instructionsList.add(new ClearActionsCaseBuilder().build());
- instructionsList.add(new MeterCaseBuilder().build());
- }
-
- private static void setupFieldTableFeatures() {
- SetFieldMatchBuilder setFieldMatchBuilder = new SetFieldMatchBuilder();
- setFieldMatchBuilder.setHasMask(true);
- setFieldMatchBuilder.setMatchType(org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.ArpOp.class);
- fieldTableFeatures.add(setFieldMatchBuilder.build());
- setFieldMatchBuilder.setMatchType(org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.ArpSha.class);
- fieldTableFeatures.add(setFieldMatchBuilder.build());
- setFieldMatchBuilder.setMatchType(org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.ArpSpa.class);
- fieldTableFeatures.add(setFieldMatchBuilder.build());
- setFieldMatchBuilder.setMatchType(org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.ArpTha.class);
- fieldTableFeatures.add(setFieldMatchBuilder.build());
- setFieldMatchBuilder.setMatchType(org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.ArpTpa.class);
- fieldTableFeatures.add(setFieldMatchBuilder.build());
- setFieldMatchBuilder.setMatchType(org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.EthDst.class);
- fieldTableFeatures.add(setFieldMatchBuilder.build());
- setFieldMatchBuilder.setMatchType(org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.EthSrc.class);
- fieldTableFeatures.add(setFieldMatchBuilder.build());
- setFieldMatchBuilder.setMatchType(org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.EthType.class);
- fieldTableFeatures.add(setFieldMatchBuilder.build());
- setFieldMatchBuilder.setMatchType(org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.Icmpv4Code.class);
- fieldTableFeatures.add(setFieldMatchBuilder.build());
- setFieldMatchBuilder.setMatchType(org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.Icmpv4Type.class);
- fieldTableFeatures.add(setFieldMatchBuilder.build());
- setFieldMatchBuilder.setMatchType(org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.Icmpv6Code.class);
- fieldTableFeatures.add(setFieldMatchBuilder.build());
- setFieldMatchBuilder.setMatchType(org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.Icmpv6Type.class);
- fieldTableFeatures.add(setFieldMatchBuilder.build());
- setFieldMatchBuilder.setMatchType(org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.InPhyPort.class);
- fieldTableFeatures.add(setFieldMatchBuilder.build());
- setFieldMatchBuilder.setMatchType(org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.InPort.class);
- fieldTableFeatures.add(setFieldMatchBuilder.build());
- setFieldMatchBuilder.setMatchType(org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.IpDscp.class);
- fieldTableFeatures.add(setFieldMatchBuilder.build());
- setFieldMatchBuilder.setMatchType(org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.IpEcn.class);
- fieldTableFeatures.add(setFieldMatchBuilder.build());
- setFieldMatchBuilder.setMatchType(org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.IpProto.class);
- fieldTableFeatures.add(setFieldMatchBuilder.build());
- setFieldMatchBuilder.setMatchType(org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.Ipv4Dst.class);
- fieldTableFeatures.add(setFieldMatchBuilder.build());
- setFieldMatchBuilder.setMatchType(org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.Ipv4Src.class);
- fieldTableFeatures.add(setFieldMatchBuilder.build());
- setFieldMatchBuilder.setMatchType(org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.Ipv6Dst.class);
- fieldTableFeatures.add(setFieldMatchBuilder.build());
- setFieldMatchBuilder.setMatchType(org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.Ipv6Exthdr.class);
- fieldTableFeatures.add(setFieldMatchBuilder.build());
- setFieldMatchBuilder.setMatchType(org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.Ipv6Flabel.class);
- fieldTableFeatures.add(setFieldMatchBuilder.build());
- setFieldMatchBuilder.setMatchType(org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.Ipv6NdSll.class);
- fieldTableFeatures.add(setFieldMatchBuilder.build());
- setFieldMatchBuilder.setMatchType(org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.Ipv6NdTarget.class);
- fieldTableFeatures.add(setFieldMatchBuilder.build());
- setFieldMatchBuilder.setMatchType(org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.Ipv6NdTll.class);
- fieldTableFeatures.add(setFieldMatchBuilder.build());
- setFieldMatchBuilder.setMatchType(org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.Ipv6Src.class);
- fieldTableFeatures.add(setFieldMatchBuilder.build());
- setFieldMatchBuilder.setMatchType(org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.Metadata.class);
- fieldTableFeatures.add(setFieldMatchBuilder.build());
- setFieldMatchBuilder.setMatchType(org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.MplsBos.class);
- fieldTableFeatures.add(setFieldMatchBuilder.build());
- setFieldMatchBuilder.setMatchType(org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.MplsLabel.class);
- fieldTableFeatures.add(setFieldMatchBuilder.build());
- setFieldMatchBuilder.setMatchType(org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.MplsTc.class);
- fieldTableFeatures.add(setFieldMatchBuilder.build());
- setFieldMatchBuilder.setMatchType(org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.PbbIsid.class);
- fieldTableFeatures.add(setFieldMatchBuilder.build());
- setFieldMatchBuilder.setMatchType(org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.SctpDst.class);
- fieldTableFeatures.add(setFieldMatchBuilder.build());
- setFieldMatchBuilder.setMatchType(org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.SctpSrc.class);
- fieldTableFeatures.add(setFieldMatchBuilder.build());
- setFieldMatchBuilder.setMatchType(org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.TcpDst.class);
- fieldTableFeatures.add(setFieldMatchBuilder.build());
- setFieldMatchBuilder.setMatchType(org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.TcpSrc.class);
- fieldTableFeatures.add(setFieldMatchBuilder.build());
- setFieldMatchBuilder.setMatchType(org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.TunnelId.class);
- fieldTableFeatures.add(setFieldMatchBuilder.build());
- setFieldMatchBuilder.setMatchType(org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.UdpDst.class);
- fieldTableFeatures.add(setFieldMatchBuilder.build());
- setFieldMatchBuilder.setMatchType(org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.UdpDst.class);
- fieldTableFeatures.add(setFieldMatchBuilder.build());
- setFieldMatchBuilder.setMatchType(org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.VlanPcp.class);
- fieldTableFeatures.add(setFieldMatchBuilder.build());
- setFieldMatchBuilder.setMatchType(org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.VlanVid.class);
- fieldTableFeatures.add(setFieldMatchBuilder.build());
- setFieldMatchBuilder.setMatchType(org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.TcpFlags.class);
- fieldTableFeatures.add(setFieldMatchBuilder.build());
- setFieldMatchBuilder.setMatchType(org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.TunnelIpv4Dst.class);
- fieldTableFeatures.add(setFieldMatchBuilder.build());
- setFieldMatchBuilder.setMatchType(org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.TunnelIpv4Src.class);
- fieldTableFeatures.add(setFieldMatchBuilder.build());
- }
-
- private static void setupActions() {
- org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.ActionBuilder _actionBuilder = new ActionBuilder();
-
- OutputActionCaseBuilder outputActionCaseBuilder = new OutputActionCaseBuilder();
- actions.add(_actionBuilder.setAction(outputActionCaseBuilder.build()).build());
-
- GroupActionCaseBuilder groupActionCaseBuilder = new GroupActionCaseBuilder();
- actions.add(_actionBuilder.setAction(groupActionCaseBuilder.build()).build());
-
- CopyTtlOutCaseBuilder copyTtlOutCaseBuilder = new CopyTtlOutCaseBuilder();
- actions.add(_actionBuilder.setAction(copyTtlOutCaseBuilder.build()).build());
-
- CopyTtlInCaseBuilder copyTtlInCaseBuilder = new CopyTtlInCaseBuilder();
- actions.add(_actionBuilder.setAction(copyTtlInCaseBuilder.build()).build());
-
- SetMplsTtlActionCaseBuilder setMplsTtlActionCaseBuilder = new SetMplsTtlActionCaseBuilder();
- actions.add(_actionBuilder.setAction(setMplsTtlActionCaseBuilder.build()).build());
-
- DecMplsTtlCaseBuilder decMplsTtlCaseBuilder = new DecMplsTtlCaseBuilder();
- actions.add(_actionBuilder.setAction(decMplsTtlCaseBuilder.build()).build());
-
- PushVlanActionCaseBuilder pushVlanActionCaseBuilder = new PushVlanActionCaseBuilder();
- actions.add(_actionBuilder.setAction(pushVlanActionCaseBuilder.build()).build());
-
- PopVlanActionCaseBuilder popVlanActionCaseBuilder = new PopVlanActionCaseBuilder();
- actions.add(_actionBuilder.setAction(popVlanActionCaseBuilder.build()).build());
-
- PushMplsActionCaseBuilder pushMplsActionCaseBuilder = new PushMplsActionCaseBuilder();
- actions.add(_actionBuilder.setAction(pushMplsActionCaseBuilder.build()).build());
-
- PopMplsActionCaseBuilder popMplsActionCaseBuilder = new PopMplsActionCaseBuilder();
- actions.add(_actionBuilder.setAction(popMplsActionCaseBuilder.build()).build());
-
- SetQueueActionCaseBuilder setQueueActionCaseBuilder = new SetQueueActionCaseBuilder();
- actions.add(_actionBuilder.setAction(setQueueActionCaseBuilder.build()).build());
-
- SetNwTtlActionCaseBuilder setNwTtlActionCaseBuilder = new SetNwTtlActionCaseBuilder();
- actions.add(_actionBuilder.setAction(setNwTtlActionCaseBuilder.build()).build());
-
- DecNwTtlCaseBuilder decNwTtlCaseBuilder = new DecNwTtlCaseBuilder();
- actions.add(_actionBuilder.setAction(decNwTtlCaseBuilder.build()).build());
-
- SetFieldCaseBuilder setFieldCaseBuilder = new SetFieldCaseBuilder();
- actions.add(_actionBuilder.setAction(setFieldCaseBuilder.build()).build());
-
- PushPbbActionCaseBuilder pushPbbActionCaseBuilder = new PushPbbActionCaseBuilder();
- actions.add(_actionBuilder.setAction(pushPbbActionCaseBuilder.build()).build());
-
- PopPbbActionCaseBuilder popPbbActionCaseBuilder = new PopPbbActionCaseBuilder();
- actions.add(_actionBuilder.setAction(popPbbActionCaseBuilder.build()).build());
-
- }
-
- @Before
- public void setupTest() {
- setupInstructionsList();
- setupActions();
- setupFieldTableFeatures();
- InstructionsBuilder instructionsBuilder = new InstructionsBuilder();
- List<Instruction> instructions = new ArrayList<>();
- for (int i = 0; i < instructionsList.size(); i++) {
- InstructionBuilder instructionBuilder = new InstructionBuilder();
- instructionBuilder.setInstruction(instructionsList.get(i));
- instructions.add(instructionBuilder.build());
- }
- org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.feature.prop.type.table.feature.prop.type.instructions.InstructionsBuilder instructionsBuilder1 = new org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.feature.prop.type.table.feature.prop.type.instructions.InstructionsBuilder();
- instructionsBuilder1.setInstruction(instructions);
- instructionsBuilder.setInstructions(instructionsBuilder1.build());
-
- augmentationsMap.put(Instructions.class, instructionsBuilder.build());
-
- InstructionsMissBuilder instructionsMissBuilder = new InstructionsMissBuilder();
- org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.feature.prop.type.table.feature.prop.type.instructions.miss.InstructionsMissBuilder instructionsMissBuilder1 = new org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.feature.prop.type.table.feature.prop.type.instructions.miss.InstructionsMissBuilder();
- instructionsMissBuilder1.setInstruction(instructions);
- instructionsMissBuilder.setInstructionsMiss(instructionsMissBuilder1.build());
- augmentationsMap.put(InstructionsMiss.class, instructionsMissBuilder.build());
-
- NextTableBuilder nextTableBuilder = new NextTableBuilder();
- augmentationsMap.put(NextTable.class, nextTableBuilder.build());
-
- NextTableMissBuilder nextTableMissBuilder = new NextTableMissBuilder();
- augmentationsMap.put(NextTableMiss.class, nextTableMissBuilder.build());
-
- WriteActionsBuilder writeActionsBuilder = new WriteActionsBuilder();
- augmentationsMap.put(WriteActions.class, writeActionsBuilder.build());
-
- WriteActionsMissBuilder writeActionsMissBuilder = new WriteActionsMissBuilder();
- augmentationsMap.put(WriteActionsMiss.class, writeActionsMissBuilder.build());
-
- ApplyActionsBuilder applyActionsBuilder = new ApplyActionsBuilder();
- augmentationsMap.put(ApplyActions.class, applyActionsBuilder.build());
-
- ApplyActionsMissBuilder applyActionsMissBuilder = new ApplyActionsMissBuilder();
- org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.feature.prop.type.table.feature.prop.type.apply.actions.miss.ApplyActionsMissBuilder applyActionsMissBuilder1 = new org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.feature.prop.type.table.feature.prop.type.apply.actions.miss.ApplyActionsMissBuilder();
- applyActionsMissBuilder1.setAction(actions);
- applyActionsMissBuilder.setApplyActionsMiss(applyActionsMissBuilder1.build());
- augmentationsMap.put(ApplyActionsMiss.class, applyActionsMissBuilder.build());
-
- MatchBuilder matchBuilder = new MatchBuilder();
- augmentationsMap.put(Match.class, matchBuilder.build());
-
- WildcardsBuilder wildcardsBuilder = new WildcardsBuilder();
- augmentationsMap.put(Wildcards.class, wildcardsBuilder.build());
-
- WriteSetfieldBuilder writeSetfieldBuilder = new WriteSetfieldBuilder();
- augmentationsMap.put(WriteSetfield.class, writeSetfieldBuilder.build());
-
- WriteSetfieldMissBuilder writeSetfieldMissBuilder = new WriteSetfieldMissBuilder();
- augmentationsMap.put(WriteSetfieldMiss.class, writeSetfieldMissBuilder.build());
-
- ApplySetfieldBuilder applySetfieldBuilder = new ApplySetfieldBuilder();
- org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.feature.prop.type.table.feature.prop.type.apply.setfield.ApplySetfieldBuilder applySetfieldBuilder1 = new org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.feature.prop.type.table.feature.prop.type.apply.setfield.ApplySetfieldBuilder();
- applySetfieldBuilder1.setSetFieldMatch(fieldTableFeatures);
- applySetfieldBuilder.setApplySetfield(applySetfieldBuilder1.build());
- augmentationsMap.put(ApplySetfield.class, applySetfieldBuilder.build());
-
- ApplySetfieldMissBuilder applySetfieldMissBuilder = new ApplySetfieldMissBuilder();
- augmentationsMap.put(ApplySetfieldMiss.class, applySetfieldMissBuilder.build());
+ private static final Map<SetFieldMatchKey, SetFieldMatch> FIELD_TABLE_FEATURES =
+ BindingMap.<SetFieldMatchKey, SetFieldMatch>ordered(
+ new SetFieldMatchBuilder().setHasMask(true)
+ .setMatchType(org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.ArpOp.VALUE)
+ .build(),
+ new SetFieldMatchBuilder().setHasMask(true)
+ .setMatchType(org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.ArpSha.VALUE)
+ .build(),
+ new SetFieldMatchBuilder().setHasMask(true)
+ .setMatchType(org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.ArpSpa.VALUE)
+ .build(),
+ new SetFieldMatchBuilder().setHasMask(true)
+ .setMatchType(org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.ArpTha.VALUE)
+ .build(),
+ new SetFieldMatchBuilder().setHasMask(true)
+ .setMatchType(org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.ArpTpa.VALUE)
+ .build(),
+ new SetFieldMatchBuilder().setHasMask(true)
+ .setMatchType(org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.EthDst.VALUE)
+ .build(),
+ new SetFieldMatchBuilder().setHasMask(true)
+ .setMatchType(org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.EthSrc.VALUE)
+ .build(),
+ new SetFieldMatchBuilder().setHasMask(true)
+ .setMatchType(org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.EthType.VALUE)
+ .build(),
+ new SetFieldMatchBuilder().setHasMask(true)
+ .setMatchType(org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.Icmpv4Code.VALUE)
+ .build(),
+ new SetFieldMatchBuilder().setHasMask(true)
+ .setMatchType(org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.Icmpv4Type.VALUE)
+ .build(),
+ new SetFieldMatchBuilder().setHasMask(true)
+ .setMatchType(org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.Icmpv6Code.VALUE)
+ .build(),
+ new SetFieldMatchBuilder().setHasMask(true)
+ .setMatchType(org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.Icmpv6Type.VALUE)
+ .build(),
+ new SetFieldMatchBuilder().setHasMask(true)
+ .setMatchType(org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.InPhyPort.VALUE)
+ .build(),
+ new SetFieldMatchBuilder().setHasMask(true)
+ .setMatchType(org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.InPort.VALUE)
+ .build(),
+ new SetFieldMatchBuilder().setHasMask(true)
+ .setMatchType(org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.IpDscp.VALUE)
+ .build(),
+ new SetFieldMatchBuilder().setHasMask(true)
+ .setMatchType(org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.IpEcn.VALUE)
+ .build(),
+ new SetFieldMatchBuilder().setHasMask(true)
+ .setMatchType(org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.IpProto.VALUE)
+ .build(),
+ new SetFieldMatchBuilder().setHasMask(true)
+ .setMatchType(org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.Ipv4Dst.VALUE)
+ .build(),
+ new SetFieldMatchBuilder().setHasMask(true)
+ .setMatchType(org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.Ipv4Src.VALUE)
+ .build(),
+ new SetFieldMatchBuilder().setHasMask(true)
+ .setMatchType(org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.Ipv6Dst.VALUE)
+ .build(),
+ new SetFieldMatchBuilder().setHasMask(true)
+ .setMatchType(org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.Ipv6Exthdr.VALUE)
+ .build(),
+ new SetFieldMatchBuilder().setHasMask(true)
+ .setMatchType(org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.Ipv6Flabel.VALUE)
+ .build(),
+ new SetFieldMatchBuilder().setHasMask(true)
+ .setMatchType(org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.Ipv6NdSll.VALUE)
+ .build(),
+ new SetFieldMatchBuilder().setHasMask(true)
+ .setMatchType(org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.Ipv6NdTarget.VALUE)
+ .build(),
+ new SetFieldMatchBuilder().setHasMask(true)
+ .setMatchType(org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.Ipv6NdTll.VALUE)
+ .build(),
+ new SetFieldMatchBuilder().setHasMask(true)
+ .setMatchType(org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.Ipv6Src.VALUE)
+ .build(),
+ new SetFieldMatchBuilder().setHasMask(true)
+ .setMatchType(org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.Metadata.VALUE)
+ .build(),
+ new SetFieldMatchBuilder().setHasMask(true)
+ .setMatchType(org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.MplsBos.VALUE)
+ .build(),
+ new SetFieldMatchBuilder().setHasMask(true)
+ .setMatchType(org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.MplsLabel.VALUE)
+ .build(),
+ new SetFieldMatchBuilder().setHasMask(true)
+ .setMatchType(org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.MplsTc.VALUE)
+ .build(),
+ new SetFieldMatchBuilder().setHasMask(true)
+ .setMatchType(org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.PbbIsid.VALUE)
+ .build(),
+ new SetFieldMatchBuilder().setHasMask(true)
+ .setMatchType(org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.SctpDst.VALUE)
+ .build(),
+ new SetFieldMatchBuilder().setHasMask(true)
+ .setMatchType(org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.SctpSrc.VALUE)
+ .build(),
+ new SetFieldMatchBuilder().setHasMask(true)
+ .setMatchType(org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.TcpDst.VALUE)
+ .build(),
+ new SetFieldMatchBuilder().setHasMask(true)
+ .setMatchType(org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.TcpSrc.VALUE)
+ .build(),
+ new SetFieldMatchBuilder().setHasMask(true)
+ .setMatchType(org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.TunnelId.VALUE)
+ .build(),
+ new SetFieldMatchBuilder().setHasMask(true)
+ .setMatchType(org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.UdpDst.VALUE)
+ .build(),
+ new SetFieldMatchBuilder().setHasMask(true)
+ .setMatchType(org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.UdpSrc.VALUE)
+ .build(),
+ new SetFieldMatchBuilder().setHasMask(true)
+ .setMatchType(org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.VlanPcp.VALUE)
+ .build(),
+ new SetFieldMatchBuilder().setHasMask(true)
+ .setMatchType(org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.VlanVid.VALUE)
+ .build(),
+ new SetFieldMatchBuilder().setHasMask(true)
+ .setMatchType(org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.TcpFlags.VALUE)
+ .build(),
+ new SetFieldMatchBuilder().setHasMask(true)
+ .setMatchType(org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.TunnelIpv4Dst.VALUE)
+ .build(),
+ new SetFieldMatchBuilder().setHasMask(true)
+ .setMatchType(org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.TunnelIpv4Src.VALUE)
+ .build());
+
+ private static final Map<Class<? extends TableFeaturePropType>, TableFeaturePropType> AUGMENTATIONS_MAP =
+ new HashMap<>();
+
+ static {
+ var instructions = BindingMap.<InstructionKey, Instruction>ordered(
+ new InstructionBuilder().setOrder(0).setInstruction(new GoToTableCaseBuilder().build()).build(),
+ new InstructionBuilder().setOrder(1).setInstruction(new WriteMetadataCaseBuilder().build()).build(),
+ new InstructionBuilder().setOrder(2).setInstruction(new WriteActionsCaseBuilder().build()).build(),
+ new InstructionBuilder().setOrder(3).setInstruction(new ApplyActionsCaseBuilder().build()).build(),
+ new InstructionBuilder().setOrder(4).setInstruction(new ClearActionsCaseBuilder().build()).build(),
+ new InstructionBuilder().setOrder(5).setInstruction(new MeterCaseBuilder().build()).build());
+
+ AUGMENTATIONS_MAP.put(Instructions.class, new InstructionsBuilder()
+ .setInstructions(new org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.feature.prop
+ .type.table.feature.prop.type.instructions.InstructionsBuilder()
+ .setInstruction(instructions)
+ .build())
+ .build());
+ AUGMENTATIONS_MAP.put(InstructionsMiss.class, new InstructionsMissBuilder()
+ .setInstructionsMiss(new org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.feature
+ .prop.type.table.feature.prop.type.instructions.miss.InstructionsMissBuilder()
+ .setInstruction(instructions)
+ .build())
+ .build());
+ AUGMENTATIONS_MAP.put(NextTable.class, new NextTableBuilder().build());
+ AUGMENTATIONS_MAP.put(NextTableMiss.class, new NextTableMissBuilder().build());
+ AUGMENTATIONS_MAP.put(WriteActions.class, new WriteActionsBuilder().build());
+ AUGMENTATIONS_MAP.put(WriteActionsMiss.class, new WriteActionsMissBuilder().build());
+ AUGMENTATIONS_MAP.put(ApplyActions.class, new ApplyActionsBuilder().build());
+ AUGMENTATIONS_MAP.put(ApplyActionsMiss.class, new ApplyActionsMissBuilder()
+ .setApplyActionsMiss(new org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.feature
+ .prop.type.table.feature.prop.type.apply.actions.miss.ApplyActionsMissBuilder()
+ .setAction(BindingMap.ordered(
+ new ActionBuilder().setOrder(0).setAction(new OutputActionCaseBuilder().build()).build(),
+ new ActionBuilder().setOrder(1).setAction(new GroupActionCaseBuilder().build()).build(),
+ new ActionBuilder().setOrder(2).setAction(new CopyTtlOutCaseBuilder().build()).build(),
+ new ActionBuilder().setOrder(3).setAction(new CopyTtlInCaseBuilder().build()).build(),
+ new ActionBuilder().setOrder(4).setAction(new SetMplsTtlActionCaseBuilder().build()).build(),
+ new ActionBuilder().setOrder(5).setAction(new DecMplsTtlCaseBuilder().build()).build(),
+ new ActionBuilder().setOrder(6).setAction(new PushVlanActionCaseBuilder().build()).build(),
+ new ActionBuilder().setOrder(7).setAction(new PopVlanActionCaseBuilder().build()).build(),
+ new ActionBuilder().setOrder(8).setAction(new PushMplsActionCaseBuilder().build()).build(),
+ new ActionBuilder().setOrder(9).setAction(new PopMplsActionCaseBuilder().build()).build(),
+ new ActionBuilder().setOrder(10).setAction(new SetQueueActionCaseBuilder().build()).build(),
+ new ActionBuilder().setOrder(11).setAction(new SetNwTtlActionCaseBuilder().build()).build(),
+ new ActionBuilder().setOrder(12).setAction(new DecNwTtlCaseBuilder().build()).build(),
+ new ActionBuilder().setOrder(13).setAction(new SetFieldCaseBuilder().build()).build(),
+ new ActionBuilder().setOrder(14).setAction(new PushPbbActionCaseBuilder().build()).build(),
+ new ActionBuilder().setOrder(15).setAction(new PopPbbActionCaseBuilder().build()).build()))
+ .build())
+ .build());
+ AUGMENTATIONS_MAP.put(Match.class, new MatchBuilder().build());
+ AUGMENTATIONS_MAP.put(Wildcards.class, new WildcardsBuilder().build());
+ AUGMENTATIONS_MAP.put(WriteSetfield.class, new WriteSetfieldBuilder().build());
+ AUGMENTATIONS_MAP.put(WriteSetfieldMiss.class, new WriteSetfieldMissBuilder().build());
+ AUGMENTATIONS_MAP.put(ApplySetfield.class, new ApplySetfieldBuilder()
+ .setApplySetfield(new org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.feature.prop
+ .type.table.feature.prop.type.apply.setfield.ApplySetfieldBuilder()
+ .setSetFieldMatch(FIELD_TABLE_FEATURES)
+ .build())
+ .build());
+ AUGMENTATIONS_MAP.put(ApplySetfieldMiss.class, new ApplySetfieldMissBuilder().build());
}
@Test
- /**
- * Basic functionality test method for {@link TableFeaturesConvertor#toTableFeaturesRequest(org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.TableFeatures)}
- */
- public void testToTableFeaturesRequest() throws Exception {
- List<org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.features.TableFeatures> tableFeaturesList = new ArrayList<>();
- org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.features.TableFeaturesBuilder tableFeaturesBuilder = new org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.features.TableFeaturesBuilder();
+ public void testToTableFeaturesRequest() {
+ List<org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.features.TableFeatures>
+ tableFeaturesList = new ArrayList<>();
+ org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.features.TableFeaturesBuilder
+ tableFeaturesBuilder = new org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table
+ .features.TableFeaturesBuilder();
for (int i = 0; i < 10; i++) {
- tableFeaturesBuilder.setTableId((short) i);
+ tableFeaturesBuilder.setTableId(Uint8.valueOf(i));
tableFeaturesBuilder.setName(String.format("table:%d", i));
- tableFeaturesBuilder.setMetadataMatch(BigInteger.ONE);
- tableFeaturesBuilder.setMetadataWrite(BigInteger.ONE);
- tableFeaturesBuilder.setMaxEntries((long) 1 + (10 * i));
+ tableFeaturesBuilder.setMetadataMatch(Uint64.ONE);
+ tableFeaturesBuilder.setMetadataWrite(Uint64.ONE);
+ tableFeaturesBuilder.setMaxEntries(Uint32.valueOf(1 + 10 * i));
tableFeaturesBuilder.setConfig(new TableConfig(false));
tableFeaturesBuilder.setTableProperties(getTableProperties());
tableFeaturesList.add(tableFeaturesBuilder.build());
}
TableFeatures tableFeatures = new UpdatedTableBuilder()
- .setTableFeatures(tableFeaturesList)
+ .setTableFeatures(BindingMap.ordered(tableFeaturesList))
.build();
+ // FIXME: this seems to be completely unused!
final ConvertorManager convertorManager = ConvertorManagerFactory.createDefaultManager();
-
- Optional<List<org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.multipart.request.table.features._case.multipart.request.table.features.TableFeatures>> tableFeaturesesOptional =
- convertorManager.convert(tableFeatures, new VersionConvertorData(OFConstants.OFP_VERSION_1_3));
-
- List<org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request.multipart.request.body.multipart.request.table.features._case.multipart.request.table.features.TableFeatures> tableFeatureses =
- tableFeaturesesOptional.orElse(Collections.emptyList());
+ Optional<List<org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.request
+ .multipart.request.body.multipart.request.table.features._case.multipart.request.table.features
+ .TableFeatures>> tableFeaturesesOptional =
+ convertorManager.convert(tableFeatures, new VersionConvertorData(OFConstants.OFP_VERSION_1_3));
assertNotNull(tableFeatures);
- assertEquals(10, tableFeatures.getTableFeatures().size());
- List<TableFeatureProperties> tableFeaturePropertieses = tableFeatures.getTableFeatures().get(0).getTableProperties().getTableFeatureProperties();
- assertEquals(augmentationsMap.size() + 1, tableFeaturePropertieses.size());
-
- org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.feature.prop.type.table.feature.prop.type.ApplyActionsMiss applyActionsMiss = null;
- for (int i = 0; i < tableFeaturePropertieses.size(); i++) {
- if (tableFeaturePropertieses.get(i).getTableFeaturePropType().getImplementedInterface().isAssignableFrom(org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.feature.prop.type.table.feature.prop.type.ApplyActionsMiss.class)) {
- applyActionsMiss = (org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.feature.prop.type.table.feature.prop.type.ApplyActionsMiss) tableFeaturePropertieses.get(i).getTableFeaturePropType();
+ assertEquals(10, tableFeatures.nonnullTableFeatures().size());
+ Collection<TableFeatureProperties> tableFeaturePropertieses = tableFeatures.nonnullTableFeatures().values()
+ .iterator().next().getTableProperties().nonnullTableFeatureProperties().values();
+ assertEquals(AUGMENTATIONS_MAP.size() + 1, tableFeaturePropertieses.size());
+
+ org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.feature.prop.type.table.feature
+ .prop.type.ApplyActionsMiss applyActionsMiss = null;
+ for (var featureProp : tableFeaturePropertieses) {
+ var prop = featureProp.getTableFeaturePropType();
+ if (prop.implementedInterface().isAssignableFrom(org.opendaylight.yang.gen.v1.urn.opendaylight.table.types
+ .rev131026.table.feature.prop.type.table.feature.prop.type.ApplyActionsMiss.class)) {
+ applyActionsMiss = (org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.feature
+ .prop.type.table.feature.prop.type.ApplyActionsMiss) prop;
break;
}
}
assertNotNull(applyActionsMiss);
- assertEquals(actions.size(), applyActionsMiss.getApplyActionsMiss().getAction().size());
-
+ assertEquals(16, applyActionsMiss.getApplyActionsMiss().getAction().size());
}
private static TableProperties getTableProperties() {
TableFeaturePropertiesBuilder tableFeaturePropertiesBuilder = new TableFeaturePropertiesBuilder();
List<TableFeatureProperties> tableFeaturePropertieses = new ArrayList<>();
int counter = 0;
- for (Entry<Class<? extends TableFeaturePropType>, TableFeaturePropType> entry : augmentationsMap.entrySet()) {
+ int order = 0;
+ for (Entry<Class<? extends TableFeaturePropType>, TableFeaturePropType> entry : AUGMENTATIONS_MAP.entrySet()) {
counter++;
tableFeaturePropertiesBuilder.setTableFeaturePropType(entry.getValue());
tableFeaturePropertiesBuilder.setOrder(counter);
+ tableFeaturePropertiesBuilder.withKey(new TableFeaturePropertiesKey(order++));
tableFeaturePropertieses.add(tableFeaturePropertiesBuilder.build());
}
- tableFeaturePropertieses.add(tableFeaturePropertiesBuilder.build());
- tablePropertiesBuilder.setTableFeatureProperties(tableFeaturePropertieses);
- return tablePropertiesBuilder.build();
+ tableFeaturePropertieses.add(
+ tableFeaturePropertiesBuilder.withKey(new TableFeaturePropertiesKey(order++)).build());
+ return new TablePropertiesBuilder()
+ .setTableFeatureProperties(BindingMap.ordered(tableFeaturePropertieses))
+ .build();
}
}