Bug 1254 - added basic functionality test for TableFeaturesConvertor 11/11611/4
authorMartin Bobak <mbobak@cisco.com>
Fri, 26 Sep 2014 08:56:59 +0000 (10:56 +0200)
committermichal rehak <mirehak@cisco.com>
Sun, 12 Oct 2014 18:47:07 +0000 (18:47 +0000)
Change-Id: Idd990ad4e479f4f67945e053a77ecc2de0ffe261
Signed-off-by: Martin Bobak <mbobak@cisco.com>
openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/TableFeaturesConvertorTest.java [new file with mode: 0644]

diff --git a/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/TableFeaturesConvertorTest.java b/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/TableFeaturesConvertorTest.java
new file mode 100644 (file)
index 0000000..30ba6f2
--- /dev/null
@@ -0,0 +1,367 @@
+/*
+ * Copyright (c) 2014 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.openflow.md.core.sal.convertor;
+
+import static org.mockito.Mockito.when;
+
+import java.math.BigInteger;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import junit.framework.TestCase;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.MockitoAnnotations;
+import org.mockito.runners.MockitoJUnitRunner;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.CopyTtlInCaseBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.CopyTtlOutCaseBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.DecMplsTtlCaseBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.DecNwTtlCaseBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.GroupActionCaseBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.OutputActionCaseBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.PopMplsActionCaseBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.PopPbbActionCaseBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.PopVlanActionCaseBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.PushMplsActionCaseBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.PushPbbActionCaseBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.PushVlanActionCaseBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetFieldCaseBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetMplsTtlActionCaseBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetNwTtlActionCaseBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetQueueActionCaseBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.ActionBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.instruction.ApplyActionsCaseBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.instruction.ClearActionsCaseBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.instruction.GoToTableCaseBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.instruction.MeterCaseBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.instruction.WriteActionsCaseBuilder;
+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.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.SetFieldMatchBuilder;
+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.feature.prop.type.table.feature.prop.type.ApplyActionsMiss;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.feature.prop.type.table.feature.prop.type.ApplyActionsMissBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.feature.prop.type.table.feature.prop.type.ApplySetfield;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.feature.prop.type.table.feature.prop.type.ApplySetfieldBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.feature.prop.type.table.feature.prop.type.ApplySetfieldMiss;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.feature.prop.type.table.feature.prop.type.ApplySetfieldMissBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.feature.prop.type.table.feature.prop.type.Instructions;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.feature.prop.type.table.feature.prop.type.InstructionsBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.feature.prop.type.table.feature.prop.type.InstructionsMiss;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.feature.prop.type.table.feature.prop.type.InstructionsMissBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.feature.prop.type.table.feature.prop.type.Match;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.feature.prop.type.table.feature.prop.type.MatchBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.feature.prop.type.table.feature.prop.type.NextTable;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.feature.prop.type.table.feature.prop.type.NextTableBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.feature.prop.type.table.feature.prop.type.NextTableMiss;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.feature.prop.type.table.feature.prop.type.NextTableMissBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.feature.prop.type.table.feature.prop.type.Wildcards;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.feature.prop.type.table.feature.prop.type.WildcardsBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.feature.prop.type.table.feature.prop.type.WriteActions;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.feature.prop.type.table.feature.prop.type.WriteActionsBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.feature.prop.type.table.feature.prop.type.WriteActionsMissBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.feature.prop.type.table.feature.prop.type.WriteSetfield;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.feature.prop.type.table.feature.prop.type.WriteSetfieldBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.feature.prop.type.table.feature.prop.type.WriteSetfieldMiss;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.feature.prop.type.table.feature.prop.type.WriteSetfieldMissBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.features.table.features.TableProperties;
+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;
+
+@RunWith(MockitoJUnitRunner.class)
+public class TableFeaturesConvertorTest extends TestCase {
+
+    @MockitoAnnotations.Mock
+    private TableFeatures tableFeatures;
+    private static final TablePropertiesBuilder tablePropertiesBuilder = new TablePropertiesBuilder();
+    private static final Map<Class<? extends TableFeaturePropType>, Object> 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 void setupInstructionsList() {
+        instructionsList.add((org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.Instruction) new GoToTableCaseBuilder().build());
+        instructionsList.add((org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.Instruction) new WriteMetadataCaseBuilder().build());
+        instructionsList.add((org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.Instruction) new WriteActionsCaseBuilder().build());
+        instructionsList.add((org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.Instruction) new ApplyActionsCaseBuilder().build());
+        instructionsList.add((org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.Instruction) new ClearActionsCaseBuilder().build());
+        instructionsList.add((org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.Instruction) new MeterCaseBuilder().build());
+    }
+
+    private 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.TcpFlag.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 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(NextTableMiss.class, writeActionsBuilder.build());
+
+        WriteActionsMissBuilder writeActionsMissBuilder = new WriteActionsMissBuilder();
+        augmentationsMap.put(WriteActions.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());
+    }
+
+    @Test
+    /**
+     * Basic functionality test method for {@link org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.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();
+        for (int i = 0; i < 10; i++) {
+            tableFeaturesBuilder.setTableId((short) i);
+            tableFeaturesBuilder.setName(String.format("table:%d", i));
+            tableFeaturesBuilder.setMetadataMatch(BigInteger.ONE);
+            tableFeaturesBuilder.setMetadataWrite(BigInteger.ONE);
+            tableFeaturesBuilder.setMaxEntries((long) 1 + (10 * i));
+            tableFeaturesBuilder.setConfig(new TableConfig(false));
+            tableFeaturesBuilder.setTableProperties(getTableProperties());
+            tableFeaturesList.add(tableFeaturesBuilder.build());
+        }
+        when(tableFeatures.getTableFeatures()).thenReturn(tableFeaturesList);
+        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 = TableFeaturesConvertor.toTableFeaturesRequest(tableFeatures);
+        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();
+                break;
+            }
+        }
+
+        assertNotNull(applyActionsMiss);
+        assertEquals(actions.size(), applyActionsMiss.getApplyActionsMiss().getAction().size());
+
+    }
+
+    private TableProperties getTableProperties() {
+        TableFeaturePropertiesBuilder tableFeaturePropertiesBuilder = new TableFeaturePropertiesBuilder();
+        List<TableFeatureProperties> tableFeaturePropertieses = new ArrayList<>();
+        int counter = 0;
+        for (Map.Entry entry : augmentationsMap.entrySet()) {
+            counter++;
+            tableFeaturePropertiesBuilder.setTableFeaturePropType((TableFeaturePropType) entry.getValue());
+            tableFeaturePropertiesBuilder.setOrder(counter);
+            tableFeaturePropertieses.add(tableFeaturePropertiesBuilder.build());
+        }
+        tableFeaturePropertieses.add(tableFeaturePropertiesBuilder.build());
+        tablePropertiesBuilder.setTableFeatureProperties(tableFeaturePropertieses);
+        return tablePropertiesBuilder.build();
+    }
+}
\ No newline at end of file