Test cases committed. 61/3061/1
authorusha <usha.m.s@ericsson.com>
Mon, 25 Nov 2013 12:47:42 +0000 (18:17 +0530)
committerusha <usha.m.s@ericsson.com>
Mon, 25 Nov 2013 12:47:42 +0000 (18:17 +0530)
Action convertor imports updated.
PortConvertor removed unwanted code,port_mod api takes input as list .

Signed-off-by: usha <usha.m.s@ericsson.com>
openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/ActionConvertor.java
openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/PortConvertor.java
openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/ActionConvertorTest.java [new file with mode: 0644]
openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/GroupConvertorTest.java [new file with mode: 0644]
openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/MeterConvertorTest.java [new file with mode: 0644]
openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/PortConvertorTest.java [new file with mode: 0644]

index 4c91a0f260b2c0ef996f529468e908702f5c82aa..6c0a9ed6d90a99b32d4cd78c35f232b6bc24341a 100644 (file)
@@ -5,10 +5,6 @@ import java.util.List;
 
 import org.opendaylight.controller.sal.core.NodeConnector.NodeConnectorIDType;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Uri;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.CopyTtlIn;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.CopyTtlOut;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.DecMplsTtl;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.GroupAction;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.OutputAction;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.PopMplsAction;
@@ -17,7 +13,6 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.acti
 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.PushMplsAction;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.PushPbbAction;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.PushVlanAction;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetField;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetMplsTtlAction;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetNwTtlAction;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetQueueAction;
@@ -40,6 +35,9 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev131002
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev131002.PortActionBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev131002.QueueIdAction;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev131002.QueueIdActionBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.CopyTtlIn;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.CopyTtlOut;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.DecMplsTtl;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.DecNwTtl;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.Experimenter;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.Group;
@@ -48,6 +46,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev1
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.PushMpls;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.PushPbb;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.PushVlan;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.SetField;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.SetMplsTtl;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.SetNwTtl;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.SetQueue;
@@ -90,7 +89,8 @@ public final class ActionConvertor {
 
         for (int actionItem = 0; actionItem < actions.size(); actionItem++)
       {
-            Action action = actions.get(
+
+            org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action action = actions.get(
                     actionItem).getAction();
 
             if (action instanceof OutputAction)
@@ -137,11 +137,13 @@ public final class ActionConvertor {
     }
 
 
-    private static ActionsList SalToOFSetField(Action action, ActionBuilder actionBuilder,
+    private static ActionsList SalToOFSetField(
+            org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action action,
+            ActionBuilder actionBuilder,
             ActionsListBuilder actionsListBuilder) {
 
-        org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.Match match = ((SetField) action)
-                .getMatch();
+        org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetField setField = (org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetField) action;
+        org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.Match match = setField.getMatch();
 
         List<MatchEntries> matchEntries = FlowConvertor.toMatch(match);
 
@@ -158,7 +160,9 @@ public final class ActionConvertor {
 
     }
 
-    private static ActionsList SalToOFDecNwTtl(Action action, ActionBuilder actionBuilder,
+    private static ActionsList SalToOFDecNwTtl(
+            org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action action,
+            ActionBuilder actionBuilder,
             ActionsListBuilder actionsListBuilder) {
         actionBuilder.setType(DecNwTtl.class);
 
@@ -166,7 +170,8 @@ public final class ActionConvertor {
     }
 
     private static ActionsList SalToOFPushMplsAction(
-Action action, ActionBuilder actionBuilder,
+            org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action action,
+            ActionBuilder actionBuilder,
             ActionsListBuilder actionsListBuilder) {
 
         actionBuilder.setType(PushMpls.class);
@@ -176,7 +181,8 @@ Action action, ActionBuilder actionBuilder,
     }
 
     private static ActionsList SalToOFPushPbbAction(
-Action action, ActionBuilder actionBuilder,
+            org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action action,
+            ActionBuilder actionBuilder,
             ActionsListBuilder actionsListBuilder) {
         actionBuilder.setType(PushPbb.class);
 
@@ -184,7 +190,8 @@ Action action, ActionBuilder actionBuilder,
     }
 
     private static ActionsList SalToOFPushVlanAction(
-Action action, ActionBuilder actionBuilder,
+            org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action action,
+            ActionBuilder actionBuilder,
             ActionsListBuilder actionsListBuilder) {
 
         PushVlanAction pushVlanAction = (PushVlanAction) action;
@@ -197,7 +204,8 @@ Action action, ActionBuilder actionBuilder,
     }
 
     private static ActionsList SalToOFSetNwTtl(
-Action action, ActionBuilder actionBuilder,
+            org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action action,
+            ActionBuilder actionBuilder,
             ActionsListBuilder actionsListBuilder) {
 
         NwTtlActionBuilder nwTtlActionBuilder = new NwTtlActionBuilder();
@@ -212,7 +220,8 @@ Action action, ActionBuilder actionBuilder,
     }
 
     private static ActionsList SalToOFSetQueue(
-Action action, ActionBuilder actionBuilder,
+            org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action action,
+            ActionBuilder actionBuilder,
             ActionsListBuilder actionsListBuilder) {
 
         SetQueueAction setQueueAction = (SetQueueAction) action;
@@ -227,7 +236,8 @@ Action action, ActionBuilder actionBuilder,
     }
 
     private static ActionsList SalToOFPopMpls(
-Action action, ActionBuilder actionBuilder,
+            org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action action,
+            ActionBuilder actionBuilder,
             ActionsListBuilder actionsListBuilder) {
 
         actionBuilder.setType(PopMpls.class);
@@ -236,7 +246,8 @@ Action action, ActionBuilder actionBuilder,
     }
 
     private static ActionsList SalToOFPopVlan(
-Action action, ActionBuilder actionBuilder,
+            org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action action,
+            ActionBuilder actionBuilder,
             ActionsListBuilder actionsListBuilder) {
 
         actionBuilder.setType(PushMpls.class);
@@ -244,14 +255,17 @@ Action action, ActionBuilder actionBuilder,
         return emtpyAction(actionBuilder, actionsListBuilder);
     }
 
-    private static ActionsList SalToOFPopPBB(Action action, ActionBuilder actionBuilder,
+    private static ActionsList SalToOFPopPBB(
+            org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action action,
+            ActionBuilder actionBuilder,
             ActionsListBuilder actionsListBuilder) {
         actionBuilder.setType(PopPbb.class);
         return emtpyAction(actionBuilder, actionsListBuilder);
     }
 
     private static ActionsList SalToOFExperimenter(
-Action action, ActionBuilder actionBuilder,
+            org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action action,
+            ActionBuilder actionBuilder,
             ActionsListBuilder actionsListBuilder) {
 
         ExperimenterActionBuilder experimenterActionBuilder = new ExperimenterActionBuilder();
@@ -267,7 +281,8 @@ Action action, ActionBuilder actionBuilder,
     }
 
     private static ActionsList SalToOFGroupAction(
-Action action, ActionBuilder actionBuilder,
+            org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action action,
+            ActionBuilder actionBuilder,
             ActionsListBuilder actionsListBuilder) {
 
         GroupAction groupAction = (GroupAction) action;
@@ -299,7 +314,8 @@ Action action, ActionBuilder actionBuilder,
     }
 
     private static ActionsList SalToOFSetMplsTtl(
-Action action, ActionBuilder actionBuilder,
+            org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action action,
+            ActionBuilder actionBuilder,
             ActionsListBuilder actionsListBuilder) {
 
         SetMplsTtlAction mplsTtlAction = (SetMplsTtlAction) action;
@@ -332,7 +348,9 @@ Action action, ActionBuilder actionBuilder,
         return actionsListBuilder.build();
     }
 
-    private static ActionsList salToOFOutputAction(Action action, ActionBuilder actionBuilder,
+    private static ActionsList salToOFOutputAction(
+            org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.Action action,
+            ActionBuilder actionBuilder,
             ActionsListBuilder actionsListBuilder) {
 
 
@@ -365,13 +383,11 @@ Action action, ActionBuilder actionBuilder,
             }
 
             if (uri.getValue() == NodeConnectorIDType.CONTROLLER) {
-                // TODO:Check with michael
-                // portAction.setPort(new PortNumber((long)
-                // OFPort.OFPP_CONTROLLER.getValue()));
-                // FIXME: these constants are different among protocols, we need to know target 
-                // version and we need to create enums for all (2) protocols (prefferably 
-                // yang generated) and we definitely need to remove the old stuff 
-            }
+
+            // portAction.setPort(new PortNumber((long)
+            // OFPort.OFPP_CONTROLLER.getValue()));
+
+        }
 
         actionBuilder
                 .setType(org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.Output.class);
index fe8a2357713d77f1d938ef7fae278483fe8f437f..2581eedee245e868c41353170600df698c116ef6 100644 (file)
@@ -1,15 +1,15 @@
 package org.opendaylight.openflowplugin.openflow.md.core.sal.convertor;
 
+import java.util.List;
+
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev100924.MacAddress;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.port.mod.port.Port;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.PortConfig;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.PortFeatures;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.PortNumber;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.PortReason;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.PortState;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.PortModInput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.PortModInputBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.PortStatus;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.PortStatusMessageBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.reply.multipart.reply.body.multipart.reply.port.desc.Ports;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.reply.multipart.reply.body.multipart.reply.port.desc.PortsBuilder;
 import org.slf4j.Logger;
@@ -33,19 +33,22 @@ public final class PortConvertor {
      * @param source
      * @return
      */
+
     public static PortModInput toPortModInput(
-            org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.port.mod.port.Port source) {
+            org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortMod input) {
+
+        List<Port> source = input.getPort().getPort();
 
         PortConfig config = null;
 
         PortModInputBuilder portModInputBuilder = new PortModInputBuilder();
-        portModInputBuilder.setAdvertise(getPortFeatures(source.getAdvertisedFeatures()));
-        portModInputBuilder.setPortNo(new PortNumber(source.getPortNumber()));
-        maskPortConfigFields(source.getConfiguration(), config);
+        portModInputBuilder.setAdvertise(getPortFeatures(source.get(0).getAdvertisedFeatures()));
+        portModInputBuilder.setPortNo(new PortNumber(source.get(0).getPortNumber()));
+        maskPortConfigFields(source.get(0).getConfiguration(), config);
         portModInputBuilder.setConfig(config);
-        portModInputBuilder.setHwAddress(new MacAddress(source.getHardwareAddress()));
+        portModInputBuilder.setHwAddress(new MacAddress(source.get(0).getHardwareAddress()));
         config = null;
-        maskPortConfigFields(source.getMask(), config);
+        maskPortConfigFields(source.get(0).getMask(), config);
         portModInputBuilder.setMask(config);
 
         return portModInputBuilder.build();
@@ -139,53 +142,6 @@ public final class PortConvertor {
 
     }
 
-    /**
-     * This method is used called when the ports are added, modi ed, and removed
-     * from the datapath, the controller needs to be informed with the
-     * OFPT_PORT_STATUS message
-     *
-     * @param source
-     *            :SAL Layer input from say REST API
-     * @return OF Layer data required for constructing the OFPT_PORT_STATUS
-     *         message
-     */
-    public static PortStatus toGetPortStatus(
-            org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.FlowPortStatus source) {
-
-        PortConfig config = null;
-        PortState portState = null;
-
-        PortStatusMessageBuilder portStatusMessageBuilder = new PortStatusMessageBuilder();
 
-        if (source.getReason().getIntValue() == 0)
-            portStatusMessageBuilder.setReason(PortReason.OFPPRADD);
-
-        else if (source.getReason().getIntValue() == 1)
-            portStatusMessageBuilder.setReason(PortReason.OFPPRDELETE);
-
-        else if (source.getReason().getIntValue() == 2)
-            portStatusMessageBuilder.setReason(PortReason.OFPPRMODIFY);
-
-        portStatusMessageBuilder.setPortNo(source.getPortNumber()); // portNO
-
-        portStatusMessageBuilder.setHwAddr(source.getHardwareAddress());
-        portStatusMessageBuilder.setName(source.getName());
-
-        maskPortConfigFields(source.getConfiguration(), config);
-
-        portStatusMessageBuilder.setConfig(config);
-
-        getPortState(source.getState(), portState);
-        portStatusMessageBuilder.setState(portState);
-        portStatusMessageBuilder.setCurrentFeatures(getPortFeatures(source.getCurrentFeature()));
-        portStatusMessageBuilder.setAdvertisedFeatures(getPortFeatures(source.getAdvertisedFeatures()));
-        portStatusMessageBuilder.setSupportedFeatures(getPortFeatures(source.getSupported()));
-        portStatusMessageBuilder.setPeerFeatures(getPortFeatures(source.getPeerFeatures()));
-        portStatusMessageBuilder.setCurrSpeed(source.getCurrentSpeed());
-        portStatusMessageBuilder.setMaxSpeed(source.getMaximumSpeed());
-
-        return portStatusMessageBuilder.build();
-
-    }
 
 }
diff --git a/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/ActionConvertorTest.java b/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/ActionConvertorTest.java
new file mode 100644 (file)
index 0000000..bf1c514
--- /dev/null
@@ -0,0 +1,385 @@
+package org.opendaylight.openflowplugin.openflow.md.core.sal.convertor;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import junit.framework.Assert;
+
+import org.junit.Test;
+import org.opendaylight.controller.sal.action.PopVlan;
+import org.opendaylight.controller.sal.core.NodeConnector.NodeConnectorIDType;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Uri;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.CopyTtlInBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.CopyTtlOutBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.DecMplsTtlBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.DecNwTtlBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.GroupActionBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.PopMplsActionBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.PopPbbActionBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.PopVlanActionBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.PushMplsActionBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.PushPbbActionBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.PushVlanActionBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetFieldBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetMplsTtlActionBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetNwTtlActionBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetQueueActionBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.field.MatchBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.Action;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.ActionBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.l2.types.rev130827.VlanId;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev131002.EthertypeAction;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev131002.GroupIdAction;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev131002.MaxLengthAction;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev131002.OxmFieldsAction;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev131002.PortNumberMatchEntry;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.CopyTtlIn;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.CopyTtlOut;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.DecNwTtl;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.Output;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.PopMpls;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.PushMpls;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.PushPbb;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.PushVlan;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.SetField;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.SetMplsTtl;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.SetNwTtl;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.SetQueue;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.actions.ActionsList;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.InPort;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev130731.OpenflowBasicClass;
+
+public class ActionConvertorTest {
+
+    List<Action> actions = new ArrayList<Action>();
+    static Integer actionItem = 0;
+
+    @Test
+    public void testActionConvertorwithallParameters() {
+        OutputActionData();
+        CopyTtlData();
+        MplsTtlActionData();
+        vlanActionData();
+        mplsActionData();
+        setQueueActionData();
+        setGroupAction();
+        NwTtlAction();
+        pbbActionData();
+        setFieldData();
+        setExperimenterData();
+        List<ActionsList> OFActionsList = ActionConvertor.getActionList(actions);
+
+        OutputActions(OFActionsList);
+
+    }
+
+    private void setExperimenterData() {
+
+        // TODO:SAL API Missing
+
+    }
+
+    private void setFieldData() {
+
+        SetFieldBuilder setFA = new SetFieldBuilder();
+
+        MatchBuilder matchBuilder = new MatchBuilder();
+
+        matchBuilder.setInPort(2125L);
+
+        SetFieldBuilder setFB = new SetFieldBuilder();
+        setFB.setMatch(matchBuilder.build());
+
+        ActionBuilder AB = new ActionBuilder();
+        AB.setAction(setFB.build());
+
+        actions.add(actionItem++, AB.build());
+
+    }
+
+    private void pbbActionData() {
+        PushPbbActionBuilder pushpbb = new PushPbbActionBuilder();
+        pushpbb.setEthernetType(10);
+
+        ActionBuilder AB = new ActionBuilder();
+        AB.setAction(pushpbb.build());
+
+        actions.add(actionItem++, AB.build());
+
+        PopPbbActionBuilder popPBB = new PopPbbActionBuilder();
+
+        ActionBuilder AB1 = new ActionBuilder();
+        AB1.setAction(popPBB.build());
+
+        actions.add(actionItem++, AB1.build());
+
+    }
+
+    private void NwTtlAction() {
+        SetNwTtlActionBuilder setNwTtlActionBuilder = new SetNwTtlActionBuilder();
+
+        setNwTtlActionBuilder.setNwTtl((short) 1);
+        ActionBuilder AB = new ActionBuilder();
+        AB.setAction(setNwTtlActionBuilder.build());
+
+        actions.add(actionItem++, AB.build());
+
+        DecNwTtlBuilder necNwTtlBuilder = new DecNwTtlBuilder();
+
+
+        ActionBuilder AB1 = new ActionBuilder();
+        AB1.setAction(necNwTtlBuilder.build());
+
+        actions.add(actionItem++, AB1.build());
+
+    }
+
+    private void setGroupAction() {
+
+        GroupActionBuilder grpIdAB = new GroupActionBuilder();
+        grpIdAB.setGroup("98");
+
+        ActionBuilder AB = new ActionBuilder();
+        AB.setAction(grpIdAB.build());
+
+        actions.add(actionItem++, AB.build());
+
+    }
+
+    private void OutputActions(List<ActionsList> oFActionsList) {
+
+        for (int item = 0; item < oFActionsList.size(); item++) {
+
+            org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.actions.actions.list.Action action = oFActionsList
+                    .get(item).getAction();
+
+            if (action.getType().equals(Output.class)) {
+                Assert.assertEquals((Integer) 10, (action.getAugmentation(MaxLengthAction.class)).getMaxLength());
+                // TOD0: OF needs to changed,once that is done ,revalidation of
+                // the data required.
+                // Assert.assertEquals(-3, (long)
+                // (action.getAugmentation(PortAction.class)).getPort().getValue());
+                // // short
+
+            }
+            if (action.getType().equals(CopyTtlIn.class)) {
+                Assert.assertEquals(action.getType(), CopyTtlIn.class);
+
+            }
+            if (action.getType().equals(CopyTtlOut.class)) {
+
+                Assert.assertEquals(action.getType(),
+                        org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.CopyTtlOut.class);
+
+            }
+
+            if (action.getType().equals(
+            // TODO:getMplsTtl is missing.
+                    SetMplsTtl.class)) {
+                Assert.assertEquals(action.getType(), SetMplsTtl.class);
+
+            }
+            if (action.getType().equals(
+                    org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.DecMplsTtl.class)) {
+                Assert.assertEquals(action.getType(),
+                        org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.DecMplsTtl.class);
+
+            }
+
+            if (action.getType().equals(PushMpls.class)) {
+
+                EthertypeAction etherTypeAction = action
+                        .getAugmentation(org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev131002.EthertypeAction.class);
+
+                if (etherTypeAction != null) {
+
+
+                    Assert.assertEquals((Integer) 10, etherTypeAction.getEthertype().getValue());
+                }
+            }
+
+            if (action.getType().equals(PopMpls.class)) {
+                Assert.assertEquals((Integer) 10, (action.getAugmentation(EthertypeAction.class)).getEthertype()
+                        .getValue());
+
+            }
+
+            if (action.getType().equals(
+
+            // TODO:SetQueue,I dont have getQueueId
+                    SetQueue.class)) {
+                Assert.assertEquals(action.getType(), SetQueue.class);
+            }
+
+            if (action.getType().equals(
+
+            GroupIdAction.class)) {
+
+                Assert.assertEquals(98, (long) (action.getAugmentation(GroupIdAction.class)).getGroupId());
+
+            }
+
+            if (action.getType().equals(
+
+                    PushVlan.class)) {
+
+                Assert.assertEquals(action.getType(), PushVlan.class);
+
+                    }
+            if (action.getType().equals(
+
+            PopVlan.class)) {
+
+                Assert.assertEquals(action.getType(), PopVlan.class);
+
+            }
+
+            if (action.getType().equals(
+
+            SetNwTtl.class)) {
+
+                Assert.assertEquals(action.getType(), SetNwTtl.class);
+
+            }
+            if (action.getType().equals(
+
+            DecNwTtl.class)) {
+
+                Assert.assertEquals(action.getType(), SetNwTtl.class);
+
+            }
+            if (action.getType().equals(PushPbb.class)) {
+
+                EthertypeAction etherTypeAction = action
+                        .getAugmentation(org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev131002.EthertypeAction.class);
+
+                if (etherTypeAction != null) {
+
+                    Assert.assertEquals((Integer) 10, etherTypeAction.getEthertype().getValue());
+                }
+            }
+
+            if (action.getType().equals(PopMpls.class)) {
+                Assert.assertEquals(action.getType(), PopMpls.class);
+
+            }
+
+            if (action.getType().equals(SetField.class)) {
+
+                OxmFieldsAction sf = action.getAugmentation(OxmFieldsAction.class);
+
+                Assert.assertEquals(OpenflowBasicClass.class, sf.getMatchEntries().get(0).getOxmClass());
+
+                if (sf.getMatchEntries().get(0).getOxmMatchField().equals(InPort.class)) {
+                    Assert.assertEquals(2125, sf.getMatchEntries().get(0).getAugmentation(PortNumberMatchEntry.class)
+                            .getPortNumber().getValue().intValue());
+
+
+                    }
+
+            }
+
+        }
+
+    }
+
+    private void OutputActionData() {
+
+        org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.OutputActionBuilder outputB = new org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.OutputActionBuilder();
+        outputB.setMaxLength(10);
+        Uri uri = new Uri(NodeConnectorIDType.CONTROLLER);
+        outputB.setOutputNodeConnector(uri);
+
+        ActionBuilder AB = new ActionBuilder();
+        AB.setAction(outputB.build());
+
+        actions.add(actionItem++, AB.build());
+
+    }
+
+    private void CopyTtlData() {
+        CopyTtlOutBuilder copyB = new CopyTtlOutBuilder();
+
+        ActionBuilder AB = new ActionBuilder();
+        AB.setAction(copyB.build());
+
+        actions.add(actionItem++, AB.build());
+
+        CopyTtlInBuilder copyTtlInBuilder = new CopyTtlInBuilder();
+
+        ActionBuilder AB1 = new ActionBuilder();
+        AB1.setAction(copyTtlInBuilder.build());
+
+        actions.add(actionItem++, AB1.build());
+
+    }
+
+    private void MplsTtlActionData() {
+
+        SetMplsTtlActionBuilder setMplsTtlActionB = new SetMplsTtlActionBuilder();
+
+        setMplsTtlActionB.setMplsTtl((short) 10);
+        ActionBuilder AB1 = new ActionBuilder();
+        AB1.setAction(setMplsTtlActionB.build());
+
+        actions.add(actionItem++, AB1.build());
+
+        DecMplsTtlBuilder decMplsTtlB = new DecMplsTtlBuilder();
+
+        ActionBuilder AB = new ActionBuilder();
+        AB.setAction(decMplsTtlB.build());
+
+        actions.add(actionItem++, AB1.build());
+    }
+
+    private void vlanActionData() {
+        PushVlanActionBuilder pvB = new PushVlanActionBuilder();
+
+        pvB.setVlanId(new VlanId(10));
+
+        ActionBuilder AB1 = new ActionBuilder();
+        AB1.setAction(pvB.build());
+
+        actions.add(actionItem++, AB1.build());
+
+        PopVlanActionBuilder popVAB = new PopVlanActionBuilder();
+
+        ActionBuilder AB = new ActionBuilder();
+        AB.setAction(popVAB.build());
+
+        actions.add(actionItem++, AB.build());
+
+    }
+
+    private void mplsActionData() {
+
+        PushMplsActionBuilder pushMB = new PushMplsActionBuilder();
+        pushMB.setEthernetType(10);
+
+        ActionBuilder AB = new ActionBuilder();
+        AB.setAction(pushMB.build());
+
+        actions.add(actionItem++, AB.build());
+
+        PopMplsActionBuilder popMB = new PopMplsActionBuilder();
+        popMB.setEthernetType(10);
+
+        ActionBuilder AB1 = new ActionBuilder();
+        AB1.setAction(popMB.build());
+
+        actions.add(actionItem++, AB1.build());
+    }
+
+    private void setQueueActionData() {
+
+        SetQueueActionBuilder setQB = new SetQueueActionBuilder();
+        setQB.setQueue("99");
+
+        ActionBuilder AB1 = new ActionBuilder();
+        AB1.setAction(setQB.build());
+
+        actions.add(actionItem++, AB1.build());
+
+    }
+
+}
\ No newline at end of file
diff --git a/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/GroupConvertorTest.java b/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/GroupConvertorTest.java
new file mode 100644 (file)
index 0000000..9c79690
--- /dev/null
@@ -0,0 +1,145 @@
+package org.opendaylight.openflowplugin.openflow.md.core.sal.convertor;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.junit.Assert;
+import org.junit.Test;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.CopyTtlIn;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.CopyTtlInBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.GroupAction;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.GroupActionBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetMplsTtlAction;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetMplsTtlActionBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.ActionBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.group.service.rev130918.AddGroupInputBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.GroupId;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group.Buckets;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group.BucketsBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group.buckets.Bucket;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group.buckets.BucketBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.augments.rev131002.GroupIdAction;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.actions.ActionsList;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.GroupModCommand;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.GroupType;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.GroupModInput;
+
+public class GroupConvertorTest {
+
+    @Test
+    public void testGroupModConvertorwithallParameters() {
+
+        AddGroupInputBuilder addGroupBuilder = new AddGroupInputBuilder();
+
+        addGroupBuilder.setGroupId(new GroupId(10L));
+
+        addGroupBuilder
+                .setGroupType(org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.GroupTypes.GroupType.GroupAll);
+        List<Bucket> bucketList = new ArrayList<Bucket>();
+        List<org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.Action> actionsList = new ArrayList<org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.Action>();
+        List<org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.Action> actionsList1 = new ArrayList<org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.list.Action>();
+
+        // Action1
+        GroupActionBuilder groupActionBuilder = new GroupActionBuilder();
+        groupActionBuilder.setGroup("005");
+        GroupAction groupIdaction = groupActionBuilder.build();
+        ActionBuilder actionsB = new ActionBuilder();
+        actionsB.setAction(groupIdaction);
+
+        // Action2:
+        GroupActionBuilder groupActionBuilder1 = new GroupActionBuilder();
+        groupActionBuilder1.setGroup("006");
+        GroupAction groupIdaction1 = groupActionBuilder.build();
+        ActionBuilder actionsB1 = new ActionBuilder();
+        actionsB1.setAction(groupIdaction1);
+
+        actionsList.add(actionsB.build());
+        actionsList.add(actionsB1.build());
+
+
+        BucketsBuilder bucketsB = new BucketsBuilder();
+
+        BucketBuilder bucketB = new BucketBuilder();
+        bucketB.setWeight(10);
+        bucketB.setWatchPort(20L);
+        bucketB.setWatchGroup(22L);
+
+        bucketB.setAction(actionsList);
+        Bucket bucket = bucketB.build();
+
+        bucketList.add(bucket); // List of bucket
+
+        BucketBuilder bucketB1 = new BucketBuilder();
+        bucketB1.setWeight(50);
+        bucketB1.setWatchPort(60L);
+        bucketB1.setWatchGroup(70L);
+
+        // Action1
+        CopyTtlInBuilder copyTtlB = new CopyTtlInBuilder();
+        CopyTtlIn copyTtl = copyTtlB.build();
+        ActionBuilder actionsB2 = new ActionBuilder();
+        actionsB2.setAction(copyTtl);
+
+        // Action2:
+        SetMplsTtlActionBuilder setMplsTtlActionBuilder = new SetMplsTtlActionBuilder();
+        setMplsTtlActionBuilder.setMplsTtl((short)0X1);
+        SetMplsTtlAction setMAction = setMplsTtlActionBuilder.build();
+        ActionBuilder actionsB3 = new ActionBuilder();
+
+        actionsB3.setAction(setMAction);
+
+
+        actionsList1.add(actionsB2.build());
+        actionsList1.add(actionsB3.build());
+
+        bucketB1.setAction(actionsList);
+
+        Bucket bucket1 = bucketB1.build(); // second bucket
+
+        bucketList.add(bucket1);
+
+        bucketsB.setBucket(bucketList);// List of bucket added to the Buckets
+        Buckets buckets = bucketsB.build();
+
+        addGroupBuilder.setBuckets(buckets);
+
+        GroupModInput outAddGroupInput = GroupConvertor.toGroupModInput(addGroupBuilder.build());
+
+        Assert.assertEquals(GroupModCommand.OFPGCADD, outAddGroupInput.getCommand());
+        Assert.assertEquals(GroupType.OFPGTALL, outAddGroupInput.getType());
+
+        Assert.assertEquals(10L, (long) outAddGroupInput.getGroupId());
+        Assert.assertEquals(10, (int) outAddGroupInput.getBucketsList().get(0).getWeight());
+        Assert.assertEquals(20L, (long) outAddGroupInput.getBucketsList().get(0).getWatchPort().getValue());
+        Assert.assertEquals((Long) 22L, outAddGroupInput.getBucketsList().get(0).getWatchGroup());
+
+        List<ActionsList> outActionList = outAddGroupInput.getBucketsList().get(0).getActionsList();
+        for (int outItem = 0; outItem < outActionList.size(); outItem++) {
+            org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.actions.actions.list.Action action = outActionList
+                    .get(outItem).getAction();
+            if (action instanceof GroupIdAction) {
+                Assert.assertEquals((Long) 5L, ((GroupIdAction) action).getGroupId());
+
+            }
+            // TODO:setMplsTTL :OF layer doesnt have get();
+        }
+
+        Assert.assertEquals((Integer) 50, outAddGroupInput.getBucketsList().get(1).getWeight());
+        Assert.assertEquals((long) 60, (long) outAddGroupInput.getBucketsList().get(1).getWatchPort().getValue());
+        Assert.assertEquals((Long) 70L, outAddGroupInput.getBucketsList().get(1).getWatchGroup());
+        List<ActionsList> outActionList1 = outAddGroupInput.getBucketsList().get(1).getActionsList();
+        for (int outItem = 0; outItem < outActionList1.size(); outItem++) {
+            org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev130731.actions.actions.list.Action action = outActionList1
+                    .get(outItem).getAction();
+            if (action instanceof GroupIdAction) {
+
+                Assert.assertEquals((Long) 6L, ((GroupIdAction) action).getGroupId());
+
+
+            }
+            // TODO:setMplsTTL :OF layer doesnt have get();
+        }
+
+    }
+
+}
diff --git a/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/MeterConvertorTest.java b/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/MeterConvertorTest.java
new file mode 100644 (file)
index 0000000..2f80002
--- /dev/null
@@ -0,0 +1,181 @@
+package org.opendaylight.openflowplugin.openflow.md.core.sal.convertor;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import junit.framework.Assert;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+
+
+import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.MeterConvertor;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.service.rev130918.AddMeterInput;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.service.rev130918.AddMeterInputBuilder;
+
+import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.MeterBandType;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.MeterFlags.Flags;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.band.type.BandType;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.band.type.band.type.Drop;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.band.type.band.type.DropBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.band.type.band.type.DscpRemark;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.band.type.band.type.DscpRemarkBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.band.type.band.type.Experimenter;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.band.type.band.type.ExperimenterBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.meter.MeterBandHeaders;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.meter.MeterBandHeadersBuilder;
+
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.MeterModInput;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.meter.band.header.MeterBand;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.meter.meter.band.headers.MeterBandHeader;
+
+import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.meter.meter.band.headers.MeterBandHeaderBuilder;
+
+import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.meter.meter.band.headers.meter.band.header.MeterBandTypesBuilder;
+
+
+
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.MeterModCommand;
+
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.meter.band.header.meter.band.MeterBandDrop;
+
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.meter.band.header.meter.band.MeterBandDscpRemark;
+
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.meter.band.header.meter.band.MeterBandExperimenter;
+
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.meter.mod.Bands;
+
+
+public class MeterConvertorTest {
+       
+
+        
+@Test
+public void testMeterModCommandConvertorwithAllParameters()
+{
+
+       /// DROP Band 
+       MeterBandHeaderBuilder meterBandHeaderBuilder = new MeterBandHeaderBuilder();
+       MeterBandTypesBuilder meterBandTypesB = new MeterBandTypesBuilder();
+       
+       org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.MeterBandType.Flags bandFlag = new org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.MeterBandType.Flags(true, false, false);
+       meterBandTypesB.setFlags(bandFlag);//_ofpmbtDrop
+       DropBuilder drop = new DropBuilder();
+       drop.setBurstSize(10L);
+       drop.setRate(20L);
+       Drop drp = drop.build();
+       meterBandHeaderBuilder.setBandType(drp);
+       meterBandHeaderBuilder.setMeterBandTypes(meterBandTypesB.build());
+       
+       
+       
+       MeterBandHeader meterBH = meterBandHeaderBuilder.build();
+               
+       //DSCP Mark
+       MeterBandHeaderBuilder meterBandHeaderBuilder1 = new MeterBandHeaderBuilder();
+       MeterBandTypesBuilder meterBandTypesB1 = new MeterBandTypesBuilder();
+       org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.MeterBandType.Flags bandFlag1 = new org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.MeterBandType.Flags(false, true, false);
+       
+       meterBandTypesB1.setFlags(bandFlag1);
+       DscpRemarkBuilder dscp = new DscpRemarkBuilder();
+       dscp.setBurstSize(11L);
+       dscp.setRate(21L);
+       dscp.setPercLevel((short)1);
+       DscpRemark dscpRemark = dscp.build();   
+       meterBandHeaderBuilder1.setBandType(dscpRemark);
+       meterBandHeaderBuilder1.setMeterBandTypes(meterBandTypesB1.build());
+       
+       MeterBandHeader meterBH1 = meterBandHeaderBuilder1.build();
+       
+       //Experimental
+       
+               MeterBandHeaderBuilder meterBandHeaderBuilder2 = new MeterBandHeaderBuilder();
+               MeterBandTypesBuilder meterBandTypesB2 = new MeterBandTypesBuilder();
+               org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.MeterBandType.Flags bandFlag2 = new org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.MeterBandType.Flags(false,false, true);
+               meterBandTypesB2.setFlags(bandFlag2);
+               
+               ExperimenterBuilder exp = new ExperimenterBuilder();
+               exp.setBurstSize(12L);
+               exp.setRate(22L);
+               exp.setExperimenter(23L);
+               Experimenter experimenter = exp.build();
+               meterBandHeaderBuilder2.setBandType(experimenter);
+               meterBandHeaderBuilder2.setMeterBandTypes(meterBandTypesB2.build());
+               MeterBandHeader meterBH2 = meterBandHeaderBuilder2.build();
+               
+       
+       List<MeterBandHeader> meterBandList = new ArrayList<MeterBandHeader>();
+       meterBandList.add(0,meterBH);
+       meterBandList.add(1,meterBH1);
+       meterBandList.add(2,meterBH2);
+       
+       //Constructing List of Bands
+       MeterBandHeadersBuilder meterBandHeadersBuilder = new MeterBandHeadersBuilder();
+       meterBandHeadersBuilder.setMeterBandHeader(meterBandList);
+       
+       MeterBandHeaders meterBandHeaders =meterBandHeadersBuilder.build(); 
+       
+
+       AddMeterInputBuilder addMeterFromSAL = new AddMeterInputBuilder();
+
+       
+       addMeterFromSAL.setMeterBandHeaders(meterBandHeaders); //MeterBands added to the meter command.
+Long temp = 10L;
+       
+        //NodeKey key = new NodeKey(new NodeId("24"));
+     //InstanceIdentifier<Node> path = InstanceIdentifier.builder().node(Nodes.class).node(Node.class, key).toInstance();
+        
+       addMeterFromSAL.setMeterId(new org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.MeterId(10L));
+
+               
+               Flags flagV = new Flags(true, true, true,true);
+               addMeterFromSAL.setFlags(flagV);
+               
+       AddMeterInput meterInputCommand = addMeterFromSAL.build();
+       MeterModInput outMeterModInput = MeterConvertor.toMeterModInput(meterInputCommand);
+       
+       
+       
+       
+        Assert.assertEquals(MeterModCommand.OFPMCADD, outMeterModInput.getCommand());
+       Assert.assertTrue(outMeterModInput.getFlags().isOFPMFBURST()); 
+       Assert.assertEquals(temp,outMeterModInput.getMeterId().getValue());
+       //BandInformation starts here:
+       
+             List<Bands> bands =  outMeterModInput.getBands();
+                       for (Bands currentBand : bands) {
+                   MeterBand meterBand = currentBand.getMeterBand();
+                       if(meterBand instanceof MeterBandDrop){
+                               
+                                       Assert.assertEquals(org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.MeterBandType.OFPMBTDROP, ((MeterBandDrop) meterBand).getType());
+                                       Assert.assertEquals((long)20,(long)((MeterBandDrop) meterBand).getBurstSize());
+                                       Assert.assertEquals((long)10, (long)((MeterBandDrop) meterBand).getRate());
+                       
+                       }                                       
+                       if(meterBand instanceof MeterBandDscpRemark)
+                       {
+                               Assert.assertEquals(org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.MeterBandType.OFPMBTDSCPREMARK, ((MeterBandDscpRemark) meterBand).getType());
+                               Assert.assertEquals((long)11,(long)((MeterBandDscpRemark) meterBand).getBurstSize());
+                               Assert.assertEquals((long)21, (long)((MeterBandDscpRemark) meterBand).getRate());
+                               Assert.assertEquals((short)1, (short)((MeterBandDscpRemark) meterBand).getPrecLevel());
+                               
+                       }
+                       if(meterBand instanceof MeterBandExperimenter)
+                       {
+                               Assert.assertEquals(org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.MeterBandType.OFPMBTEXPERIMENTER, ((MeterBandExperimenter) meterBand).getType());
+                               Assert.assertEquals((long)12,(long)((MeterBandExperimenter) meterBand).getBurstSize());
+                               Assert.assertEquals((long)22, (long)((MeterBandExperimenter) meterBand).getRate());
+                               Assert.assertEquals((long)23, (long)((MeterBandExperimenter) meterBand).getExperimenter());
+
+                       }
+                   
+                   }    
+                       
+                       
+}
+
+
+       
+}
diff --git a/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/PortConvertorTest.java b/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/sal/convertor/PortConvertorTest.java
new file mode 100644 (file)
index 0000000..5eae3ff
--- /dev/null
@@ -0,0 +1,38 @@
+package org.opendaylight.openflowplugin.openflow.md.core.sal.convertor;
+
+import org.junit.Test;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.PortFeatures;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.port.service.rev131107.UpdatePortInput;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.port.service.rev131107.UpdatePortInputBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.port.service.rev131107.port.update.UpdatedPortBuilder;
+
+public class PortConvertorTest {
+
+
+       @Test
+       public void testPortModCommandConvertorwithAllParameters()
+       {
+
+
+           UpdatePortInputBuilder updatePortInputB = new UpdatePortInputBuilder();
+           UpdatedPortBuilder updatedPortBuilder = new UpdatedPortBuilder();
+
+        PortFeatures features = new PortFeatures(true, null, null, null, null, null, null, null, null, null, null,
+                null, null, null, null, null);
+
+
+           updatePortInputB.setUpdatedPort(updatedPortBuilder.build());
+
+        UpdatePortInput source = updatePortInputB.build();
+
+
+
+      // PortModInput portOut = PortConvertor.toPortModInput();
+
+
+               return;
+
+
+
+       }
+}