Bump upstreams
[openflowplugin.git] / extension / openflowjava-extension-nicira / src / test / java / org / opendaylight / openflowjava / nx / codec / action / ConntrackCodecTest.java
index df699deb1d698ca794101242db8a87e5e25e32f7..e048d645d452ff693e0f80b594962b63752adb2c 100644 (file)
@@ -1,19 +1,16 @@
-/**
+/*
  * Copyright (c) 2016, 2017 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.openflowjava.nx.codec.action;
 
 import io.netty.buffer.ByteBuf;
 import io.netty.buffer.ByteBufAllocator;
-
 import java.util.ArrayList;
 import java.util.List;
-
 import org.junit.Assert;
 import org.junit.Before;
 import org.junit.Test;
@@ -25,15 +22,22 @@ import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.actions.grouping.Action;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.actions.grouping.ActionBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.ExperimenterId;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.action.rev140421.action.container.action.choice.ActionConntrack;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.action.rev140421.action.container.action.choice.ActionConntrackBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.action.rev140421.ofj.aug.nx.action.ActionConntrack;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.action.rev140421.ofj.aug.nx.action.ActionConntrackBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.action.rev140421.ofj.nx.action.conntrack.grouping.NxActionConntrackBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.action.rev140421.ofj.nx.action.conntrack.grouping.nx.action.conntrack.CtActions;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.action.rev140421.ofj.nx.action.conntrack.grouping.nx.action.conntrack.CtActionsBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.action.rev140421.ofpact.actions.ofpact.actions.NxActionCtMarkCase;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.action.rev140421.ofpact.actions.ofpact.actions.NxActionCtMarkCaseBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.action.rev140421.ofpact.actions.ofpact.actions.NxActionNatCase;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.action.rev140421.ofpact.actions.ofpact.actions.NxActionNatCaseBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.action.rev140421.ofpact.actions.ofpact.actions.nx.action.ct.mark._case.NxActionCtMark;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.action.rev140421.ofpact.actions.ofpact.actions.nx.action.ct.mark._case.NxActionCtMarkBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.action.rev140421.ofpact.actions.ofpact.actions.nx.action.nat._case.NxActionNat;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.action.rev140421.ofpact.actions.ofpact.actions.nx.action.nat._case.NxActionNatBuilder;
+import org.opendaylight.yangtools.yang.common.Uint16;
+import org.opendaylight.yangtools.yang.common.Uint32;
+import org.opendaylight.yangtools.yang.common.Uint8;
 
 public class ConntrackCodecTest {
 
@@ -48,6 +52,10 @@ public class ConntrackCodecTest {
     private final int nxNatLengthAction2 = 24;
     private final byte nxastNatSubtype = 36;
 
+    private final byte nxmCtMarkFieldCode = 107;
+    private final byte setFieldCode = 25;
+    private final int setFieldLength = 16;
+
     @Before
     public void setUp() {
         conntrackCodec = new ConntrackCodec();
@@ -59,9 +67,10 @@ public class ConntrackCodecTest {
         action = createAction();
         conntrackCodec.serialize(action, buffer);
 
-        Assert.assertEquals(length + nxNatLengthAction1 + nxNatLengthAction2, buffer.readableBytes());
+        Assert.assertEquals(length + nxNatLengthAction1 + nxNatLengthAction2 + setFieldLength, buffer.readableBytes());
         Assert.assertEquals(EncodeConstants.EXPERIMENTER_VALUE, buffer.readUnsignedShort());
-        Assert.assertEquals(length + nxNatLengthAction1 + nxNatLengthAction2, buffer.readUnsignedShort());
+        Assert.assertEquals(length + nxNatLengthAction1 + nxNatLengthAction2 + setFieldLength,
+                buffer.readUnsignedShort());
         Assert.assertEquals(NiciraConstants.NX_VENDOR_ID.intValue(), buffer.readUnsignedInt());
         Assert.assertEquals(nxastConntrackSubtype, buffer.readUnsignedShort());
         Assert.assertEquals(1, buffer.readUnsignedShort());
@@ -91,6 +100,13 @@ public class ConntrackCodecTest {
         Assert.assertEquals(3232235520L, buffer.readUnsignedInt());
         Assert.assertEquals(4000, buffer.readUnsignedShort());
         buffer.skipBytes(2);
+        Assert.assertEquals(setFieldCode, buffer.readUnsignedShort());
+        Assert.assertEquals(setFieldLength, buffer.readUnsignedShort());
+        buffer.skipBytes(2);
+        Assert.assertEquals(nxmCtMarkFieldCode << 1, buffer.readByte() & 0xFF);
+        buffer.skipBytes(1);
+        Assert.assertEquals(36, buffer.readUnsignedInt());
+        buffer.skipBytes(4);
     }
 
     @Test
@@ -112,9 +128,8 @@ public class ConntrackCodecTest {
 
     @Test
     public void deserializeTest() {
-        createBufer(buffer);
+        createBuffer(buffer);
         action = conntrackCodec.deserialize(buffer);
-
         ActionConntrack result = (ActionConntrack) action.getActionChoice();
 
         Assert.assertEquals(1, result.getNxActionConntrack().getFlags().shortValue());
@@ -136,11 +151,14 @@ public class ConntrackCodecTest {
         Assert.assertEquals(0x21, natAction.getRangePresent().intValue());
         Assert.assertEquals("192.168.0.0", natAction.getIpAddressMin().getIpv4Address().getValue());
         Assert.assertEquals(4000, natAction.getPortMax().shortValue());
+        NxActionCtMarkCase nxActionCtMarkCase = (NxActionCtMarkCase) ctActions.get(2).getOfpactActions();
+        NxActionCtMark ctMarkAction = nxActionCtMarkCase.getNxActionCtMark();
+        Assert.assertEquals(36, ctMarkAction.getCtMark().longValue());
     }
 
     @Test
     public void deserializeTestWithoutCtAction() {
-        createBuferWIthoutCtAction(buffer);
+        createBufferWIthoutCtAction(buffer);
         action = conntrackCodec.deserialize(buffer);
 
         ActionConntrack result = (ActionConntrack) action.getActionChoice();
@@ -151,21 +169,21 @@ public class ConntrackCodecTest {
         Assert.assertEquals(4, result.getNxActionConntrack().getRecircTable().byteValue());
     }
 
-    private Action createAction() {
+    private static Action createAction() {
 
         NxActionConntrackBuilder nxActionConntrackBuilder = new NxActionConntrackBuilder();
-        nxActionConntrackBuilder.setFlags(1);
-        nxActionConntrackBuilder.setZoneSrc((long) 2);
-        nxActionConntrackBuilder.setConntrackZone(3);
-        nxActionConntrackBuilder.setRecircTable((short) 4);
+        nxActionConntrackBuilder.setFlags(Uint16.ONE);
+        nxActionConntrackBuilder.setZoneSrc(Uint32.TWO);
+        nxActionConntrackBuilder.setConntrackZone(Uint16.valueOf(3));
+        nxActionConntrackBuilder.setRecircTable(Uint8.valueOf(4));
 
         NxActionNatBuilder nxActionNatBuilder = new NxActionNatBuilder();
-        nxActionNatBuilder.setFlags(5);
-        nxActionNatBuilder.setRangePresent(0x3F);
-        nxActionNatBuilder.setIpAddressMin(new IpAddress("192.168.0.0".toCharArray()));
-        nxActionNatBuilder.setIpAddressMax(new IpAddress("192.168.10.0".toCharArray()));
-        nxActionNatBuilder.setPortMin(3000);
-        nxActionNatBuilder.setPortMax(4000);
+        nxActionNatBuilder.setFlags(Uint16.valueOf(5));
+        nxActionNatBuilder.setRangePresent(Uint16.valueOf(0x3F));
+        nxActionNatBuilder.setIpAddressMin(new IpAddress(new Ipv4Address("192.168.0.0")));
+        nxActionNatBuilder.setIpAddressMax(new IpAddress(new Ipv4Address("192.168.10.0")));
+        nxActionNatBuilder.setPortMin(Uint16.valueOf(3000));
+        nxActionNatBuilder.setPortMax(Uint16.valueOf(4000));
         NxActionNatCaseBuilder nxActionNatCaseBuilder = new NxActionNatCaseBuilder();
         nxActionNatCaseBuilder.setNxActionNat(nxActionNatBuilder.build());
         CtActionsBuilder ctActionsBuilder = new CtActionsBuilder();
@@ -173,10 +191,10 @@ public class ConntrackCodecTest {
         List<CtActions> ctActionsList = new  ArrayList<>();
         ctActionsList.add(ctActionsBuilder.build());
         nxActionNatBuilder = new NxActionNatBuilder();
-        nxActionNatBuilder.setFlags(5);
-        nxActionNatBuilder.setRangePresent(0x21);
-        nxActionNatBuilder.setIpAddressMin(new IpAddress("192.168.0.0".toCharArray()));
-        nxActionNatBuilder.setPortMax(4000);
+        nxActionNatBuilder.setFlags(Uint16.valueOf(5));
+        nxActionNatBuilder.setRangePresent(Uint16.valueOf(0x21));
+        nxActionNatBuilder.setIpAddressMin(new IpAddress(new Ipv4Address("192.168.0.0")));
+        nxActionNatBuilder.setPortMax(Uint16.valueOf(4000));
         nxActionNatCaseBuilder = new NxActionNatCaseBuilder();
         nxActionNatCaseBuilder.setNxActionNat(nxActionNatBuilder.build());
         ctActionsBuilder = new CtActionsBuilder();
@@ -184,6 +202,15 @@ public class ConntrackCodecTest {
         ctActionsList.add(ctActionsBuilder.build());
         nxActionConntrackBuilder.setCtActions(ctActionsList);
 
+        NxActionCtMarkBuilder nxActionCtMarkBuilder = new NxActionCtMarkBuilder();
+        nxActionCtMarkBuilder.setCtMark(Uint32.valueOf(36));
+        NxActionCtMarkCaseBuilder nxActionCtMarkCaseBuilder = new NxActionCtMarkCaseBuilder();
+        nxActionCtMarkCaseBuilder.setNxActionCtMark(nxActionCtMarkBuilder.build());
+        ctActionsBuilder = new CtActionsBuilder();
+        ctActionsBuilder.setOfpactActions(nxActionCtMarkCaseBuilder.build());
+        ctActionsList.add(ctActionsBuilder.build());
+        nxActionConntrackBuilder.setCtActions(ctActionsList);
+
         ExperimenterId experimenterId = new ExperimenterId(NiciraConstants.NX_VENDOR_ID);
         ActionBuilder actionBuilder = new ActionBuilder();
         actionBuilder.setExperimenterId(experimenterId);
@@ -194,13 +221,13 @@ public class ConntrackCodecTest {
         return actionBuilder.build();
     }
 
-    private Action createActionWithoutCtAction() {
+    private static Action createActionWithoutCtAction() {
 
         NxActionConntrackBuilder nxActionConntrackBuilder = new NxActionConntrackBuilder();
-        nxActionConntrackBuilder.setFlags(1);
-        nxActionConntrackBuilder.setZoneSrc((long) 2);
-        nxActionConntrackBuilder.setConntrackZone(3);
-        nxActionConntrackBuilder.setRecircTable((short) 4);
+        nxActionConntrackBuilder.setFlags(Uint16.ONE);
+        nxActionConntrackBuilder.setZoneSrc(Uint32.TWO);
+        nxActionConntrackBuilder.setConntrackZone(Uint16.valueOf(3));
+        nxActionConntrackBuilder.setRecircTable(Uint8.valueOf(4));
 
         ExperimenterId experimenterId = new ExperimenterId(NiciraConstants.NX_VENDOR_ID);
         ActionBuilder actionBuilder = new ActionBuilder();
@@ -212,9 +239,9 @@ public class ConntrackCodecTest {
         return actionBuilder.build();
     }
 
-    private void createBufer(ByteBuf message) {
+    private void createBuffer(final ByteBuf message) {
         message.writeShort(EncodeConstants.EXPERIMENTER_VALUE);
-        message.writeShort(length + nxNatLengthAction1 + nxNatLengthAction2);
+        message.writeShort(length + nxNatLengthAction1 + nxNatLengthAction2 + setFieldLength);
         message.writeInt(NiciraConstants.NX_VENDOR_ID.intValue());
         message.writeShort(nxastConntrackSubtype);
         //FLAG = 1
@@ -237,9 +264,9 @@ public class ConntrackCodecTest {
         //RANGE PRESENT
         message.writeShort(0x3F);
         //IP ADDRESS MIN
-        message.writeBytes(IetfInetUtil.INSTANCE.ipv4AddressBytes(new Ipv4Address("192.168.0.0")));
+        message.writeBytes(IetfInetUtil.ipv4AddressBytes(new Ipv4Address("192.168.0.0")));
         //IP ADDRESS MAX
-        message.writeBytes(IetfInetUtil.INSTANCE.ipv4AddressBytes(new Ipv4Address("192.168.10.0")));
+        message.writeBytes(IetfInetUtil.ipv4AddressBytes(new Ipv4Address("192.168.10.0")));
         //PORT MIN
         message.writeShort(3000);
         //PORT MAX
@@ -256,13 +283,23 @@ public class ConntrackCodecTest {
         //RANGE PRESENT
         message.writeShort(0x21);
         //IP ADDRESS MIN
-        message.writeBytes(IetfInetUtil.INSTANCE.ipv4AddressBytes(new Ipv4Address("192.168.0.0")));
+        message.writeBytes(IetfInetUtil.ipv4AddressBytes(new Ipv4Address("192.168.0.0")));
         //PORT MAX
         message.writeShort(4000);
         message.writeZero(2);
+
+        message.writeShort(setFieldCode);
+        message.writeShort(setFieldLength);
+        message.writeZero(1);
+        message.writeByte(1);
+        message.writeByte(nxmCtMarkFieldCode << 1);
+        message.writeByte(4);
+        // value of ct_mark
+        message.writeInt(36);
+        message.writeZero(4);
     }
 
-    private void createBuferWIthoutCtAction(ByteBuf message) {
+    private void createBufferWIthoutCtAction(final ByteBuf message) {
         message.writeShort(EncodeConstants.EXPERIMENTER_VALUE);
         message.writeShort(length);
         message.writeInt(NiciraConstants.NX_VENDOR_ID.intValue());
@@ -278,4 +315,4 @@ public class ConntrackCodecTest {
         //ADDS 5 empty bytes
         message.writeZero(5);
     }
-}
\ No newline at end of file
+}