ICMP fix and Packet class should store and provide access to the raw payload in case...
[controller.git] / opendaylight / sal / api / src / test / java / org / opendaylight / controller / sal / packet / ICMPTest.java
index 445f7211c0f8c3fc50a7f5bb4856ed0e05993565..e81fbf02cfafc4550ebfb5e5558d144e55d0696d 100644 (file)
@@ -12,18 +12,16 @@ package org.opendaylight.controller.sal.packet;
 import junit.framework.Assert;
 
 import org.junit.Test;
 import junit.framework.Assert;
 
 import org.junit.Test;
-import org.opendaylight.controller.sal.packet.ICMP;
 
 public class ICMPTest {
 
     @Test
     public void testSetTypeCode() {
         ICMP icmp = new ICMP();
 
 public class ICMPTest {
 
     @Test
     public void testSetTypeCode() {
         ICMP icmp = new ICMP();
-        short icmpTypeCode = 2;
-        icmp.setTypeCode(icmpTypeCode);
-        byte[] typeCode = icmp.hdrFieldsMap.get("TypeCode");
-        Assert.assertTrue(typeCode[0] == 0);
-        Assert.assertTrue(typeCode[1] == 2);
+        byte icmpType = 2;
+        icmp.setType(icmpType);
+        byte[] typeCode = icmp.hdrFieldsMap.get("Type");
+        Assert.assertTrue(typeCode[0] == 2);
 
     }
 
 
     }
 
@@ -32,7 +30,7 @@ public class ICMPTest {
         ICMP icmp = new ICMP();
         short icmpChecksum = 200;
         icmp.setChecksum(icmpChecksum);
         ICMP icmp = new ICMP();
         short icmpChecksum = 200;
         icmp.setChecksum(icmpChecksum);
-        byte[] checksum = icmp.hdrFieldsMap.get("HeaderChecksum");
+        byte[] checksum = icmp.hdrFieldsMap.get("Checksum");
         Assert.assertTrue(checksum[0] == 0);
         Assert.assertTrue(checksum[1] == -56);
 
         Assert.assertTrue(checksum[0] == 0);
         Assert.assertTrue(checksum[1] == -56);
 
@@ -59,4 +57,45 @@ public class ICMPTest {
         Assert.assertTrue(sequenceNumber[1] == -120);
 
     }
         Assert.assertTrue(sequenceNumber[1] == -120);
 
     }
+
+    @Test
+    public void testSerialization() throws PacketException {
+        byte icmpRawPayload[] = { (byte) 0x38, (byte) 0x26, (byte) 0x9e,
+                (byte) 0x51, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+                (byte) 0x00, (byte) 0x2e, (byte) 0x6a, (byte) 0x08,
+                (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+                (byte) 0x00, (byte) 0x10, (byte) 0x11, (byte) 0x12,
+                (byte) 0x13, (byte) 0x14, (byte) 0x15, (byte) 0x16,
+                (byte) 0x17, (byte) 0x18, (byte) 0x19, (byte) 0x1a,
+                (byte) 0x1b, (byte) 0x1c, (byte) 0x1d, (byte) 0x1e,
+                (byte) 0x1f, (byte) 0x20, (byte) 0x21, (byte) 0x22,
+                (byte) 0x23, (byte) 0x24, (byte) 0x25, (byte) 0x26,
+                (byte) 0x27, (byte) 0x28, (byte) 0x29, (byte) 0x2a,
+                (byte) 0x2b, (byte) 0x2c, (byte) 0x2d, (byte) 0x2e,
+                (byte) 0x2f, (byte) 0x30, (byte) 0x31, (byte) 0x32,
+                (byte) 0x33, (byte) 0x34, (byte) 0x35, (byte) 0x36, (byte) 0x37 };
+
+        short checksum = (short)0xe553;
+
+        // Create ICMP object
+        ICMP icmp = new ICMP();
+        icmp.setType((byte)8);
+        icmp.setCode((byte)0);
+        icmp.setIdentifier((short) 0x46f5);
+        icmp.setSequenceNumber((short) 2);
+        icmp.setRawPayload(icmpRawPayload);
+        //icmp.setChecksum(checksum);
+
+        // Serialize
+        byte[] stream = icmp.serialize();
+        Assert.assertTrue(stream.length == 64);
+
+        // Deserialize
+        ICMP icmpDes = new ICMP();
+        icmpDes.deserialize(stream, 0, stream.length);
+
+        Assert.assertFalse(icmpDes.isCorrupted());
+        Assert.assertTrue(icmpDes.getChecksum() == checksum);
+        Assert.assertTrue(icmp.equals(icmpDes));
+    }
 }
 }