Improve the resiliency of the packet deserialization code.

Packet deserializers now check for malformed input while reading the byte
stream. Deserializers are re-implemented as functions that take a byte array
and return a packet object. The old IPacket.deserialize(...) methods have been
deprecated with the goal of eventually moving to immutable packet objects.
Unit tests have been implemented for all Deserializer functions.

ONOS-1589

Change-Id: I9073d5e6e7991e15d43830cfd810989256b71c56
diff --git a/utils/misc/src/test/java/org/onlab/packet/TCPTest.java b/utils/misc/src/test/java/org/onlab/packet/TCPTest.java
index 8bc3212..18f532e 100644
--- a/utils/misc/src/test/java/org/onlab/packet/TCPTest.java
+++ b/utils/misc/src/test/java/org/onlab/packet/TCPTest.java
@@ -67,8 +67,12 @@
             (byte) 0x00, (byte) 0x01  // urgent
     };
 
+    private static Deserializer<TCP> deserializer;
+
     @BeforeClass
     public static void setUpBeforeClass() throws Exception {
+        deserializer = TCP.deserializer();
+
         ipv4.setSourceAddress(IPv4.toIPv4Address(IPV4_SOURCE_ADDRESS));
         ipv4.setDestinationAddress(IPv4.toIPv4Address(IPV4_DESTINATION_ADDRESS));
         ipv4.setProtocol(IPv4.PROTOCOL_TCP);
@@ -100,13 +104,22 @@
         assertArrayEquals(bytePacketTCP6, tcp.serialize());
     }
 
+    @Test
+    public void testDeserializeBadInput() throws Exception {
+        PacketTestUtils.testDeserializeBadInput(deserializer);
+    }
+
+    @Test
+    public void testDeserializeTruncated() throws Exception {
+        PacketTestUtils.testDeserializeTruncated(deserializer, bytePacketTCP4);
+    }
+
     /**
      * Tests deserialize and getters.
      */
     @Test
-    public void testDeserialize() {
-        TCP tcp = new TCP();
-        tcp.deserialize(bytePacketTCP4, 0, bytePacketTCP4.length);
+    public void testDeserialize() throws Exception {
+        TCP tcp = deserializer.deserialize(bytePacketTCP4, 0, bytePacketTCP4.length);
 
         assertThat(tcp.getSourcePort(), is((short) 0x50));
         assertThat(tcp.getDestinationPort(), is((short) 0x60));