diff --git a/pcep/pcepio/src/test/java/org/onosproject/pcepio/PcepCloseMsgTest.java b/pcep/pcepio/src/test/java/org/onosproject/pcepio/PcepCloseMsgTest.java
index 43a65d9..8faab55 100644
--- a/pcep/pcepio/src/test/java/org/onosproject/pcepio/PcepCloseMsgTest.java
+++ b/pcep/pcepio/src/test/java/org/onosproject/pcepio/PcepCloseMsgTest.java
@@ -25,8 +25,8 @@
 import org.onosproject.pcepio.protocol.PcepMessageReader;
 
 import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.Matchers.instanceOf;
 import static org.hamcrest.core.Is.is;
-import static org.hamcrest.core.IsSame.sameInstance;
 
 public class PcepCloseMsgTest {
 
@@ -46,7 +46,7 @@
         PcepMessage message;
 
         message = reader.readFrom(buffer);
-        assertThat(message, sameInstance((PcepCloseMsg) message));
+        assertThat(message, instanceOf(PcepCloseMsg.class));
 
         ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
         message.writeTo(buf);
diff --git a/pcep/pcepio/src/test/java/org/onosproject/pcepio/PcepErrorMsgTest.java b/pcep/pcepio/src/test/java/org/onosproject/pcepio/PcepErrorMsgTest.java
index e2ce8a5..2fc1fed 100644
--- a/pcep/pcepio/src/test/java/org/onosproject/pcepio/PcepErrorMsgTest.java
+++ b/pcep/pcepio/src/test/java/org/onosproject/pcepio/PcepErrorMsgTest.java
@@ -26,8 +26,8 @@
 import org.onosproject.pcepio.protocol.PcepMessageReader;
 
 import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.Matchers.instanceOf;
 import static org.hamcrest.core.Is.is;
-import static org.hamcrest.core.IsSame.sameInstance;
 
 /**
  * Test cases for PCEP ERROR Message.
@@ -64,7 +64,7 @@
         byte[] testErrorMsg = {0};
         ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
 
-        assertThat(message, sameInstance((PcepErrorMsg) message));
+        assertThat(message, instanceOf(PcepErrorMsg.class));
         message.writeTo(buf);
         int iReadLen = buf.writerIndex();
         testErrorMsg = new byte[iReadLen];
@@ -103,7 +103,7 @@
 
         byte[] testErrorMsg = {0};
         ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        assertThat(message, sameInstance((PcepErrorMsg) message));
+        assertThat(message, instanceOf(PcepErrorMsg.class));
         message.writeTo(buf);
         int iReadLen = buf.writerIndex();
         testErrorMsg = new byte[iReadLen];
@@ -141,7 +141,7 @@
 
         byte[] testErrorMsg = {0};
         ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        assertThat(message, sameInstance((PcepErrorMsg) message));
+        assertThat(message, instanceOf(PcepErrorMsg.class));
         message.writeTo(buf);
         int iReadLen = buf.writerIndex();
         testErrorMsg = new byte[iReadLen];
@@ -177,7 +177,7 @@
 
         byte[] testErrorMsg = {0};
         ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        assertThat(message, sameInstance((PcepErrorMsg) message));
+        assertThat(message, instanceOf(PcepErrorMsg.class));
         message.writeTo(buf);
         int iReadLen = buf.writerIndex();
         testErrorMsg = new byte[iReadLen];
@@ -212,7 +212,7 @@
 
         byte[] testErrorMsg = {0};
         ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        assertThat(message, sameInstance((PcepErrorMsg) message));
+        assertThat(message, instanceOf(PcepErrorMsg.class));
         message.writeTo(buf);
         int iReadLen = buf.writerIndex();
         testErrorMsg = new byte[iReadLen];
@@ -246,7 +246,7 @@
 
         byte[] testErrorMsg = {0};
         ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        assertThat(message, sameInstance((PcepErrorMsg) message));
+        assertThat(message, instanceOf(PcepErrorMsg.class));
         message.writeTo(buf);
         int iReadLen = buf.writerIndex();
         testErrorMsg = new byte[iReadLen];
@@ -279,7 +279,7 @@
 
         byte[] testErrorMsg = {0};
         ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        assertThat(message, sameInstance((PcepErrorMsg) message));
+        assertThat(message, instanceOf(PcepErrorMsg.class));
         message.writeTo(buf);
         int iReadLen = buf.writerIndex();
         testErrorMsg = new byte[iReadLen];
@@ -312,7 +312,7 @@
 
         byte[] testErrorMsg = {0};
         ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        assertThat(message, sameInstance((PcepErrorMsg) message));
+        assertThat(message, instanceOf(PcepErrorMsg.class));
         message.writeTo(buf);
         int iReadLen = buf.writerIndex();
         testErrorMsg = new byte[iReadLen];
@@ -344,7 +344,7 @@
 
         byte[] testErrorMsg = {0};
         ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        assertThat(message, sameInstance((PcepErrorMsg) message));
+        assertThat(message, instanceOf(PcepErrorMsg.class));
         message.writeTo(buf);
         int iReadLen = buf.writerIndex();
         testErrorMsg = new byte[iReadLen];
@@ -376,7 +376,7 @@
 
         byte[] testErrorMsg = {0};
         ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        assertThat(message, sameInstance((PcepErrorMsg) message));
+        assertThat(message, instanceOf(PcepErrorMsg.class));
         message.writeTo(buf);
         int iReadLen = buf.writerIndex();
         testErrorMsg = new byte[iReadLen];
@@ -409,7 +409,7 @@
 
         byte[] testErrorMsg = {0};
         ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        assertThat(message, sameInstance((PcepErrorMsg) message));
+        assertThat(message, instanceOf(PcepErrorMsg.class));
         message.writeTo(buf);
         int iReadLen = buf.writerIndex();
         testErrorMsg = new byte[iReadLen];
@@ -442,7 +442,7 @@
 
         byte[] testErrorMsg = {0};
         ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        assertThat(message, sameInstance((PcepErrorMsg) message));
+        assertThat(message, instanceOf(PcepErrorMsg.class));
         message.writeTo(buf);
         int iReadLen = buf.writerIndex();
         testErrorMsg = new byte[iReadLen];
@@ -475,7 +475,7 @@
 
         byte[] testErrorMsg = {0};
         ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        assertThat(message, sameInstance((PcepErrorMsg) message));
+        assertThat(message, instanceOf(PcepErrorMsg.class));
         message.writeTo(buf);
         int iReadLen = buf.writerIndex();
         testErrorMsg = new byte[iReadLen];
@@ -510,7 +510,7 @@
 
         byte[] testErrorMsg = {0};
         ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        assertThat(message, sameInstance((PcepErrorMsg) message));
+        assertThat(message, instanceOf(PcepErrorMsg.class));
         message.writeTo(buf);
         int iReadLen = buf.writerIndex();
         testErrorMsg = new byte[iReadLen];
@@ -544,7 +544,7 @@
 
         byte[] testErrorMsg = {0};
         ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        assertThat(message, sameInstance((PcepErrorMsg) message));
+        assertThat(message, instanceOf(PcepErrorMsg.class));
         message.writeTo(buf);
         int iReadLen = buf.writerIndex();
         testErrorMsg = new byte[iReadLen];
@@ -578,7 +578,7 @@
 
         byte[] testErrorMsg = {0};
         ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        assertThat(message, sameInstance((PcepErrorMsg) message));
+        assertThat(message, instanceOf(PcepErrorMsg.class));
         message.writeTo(buf);
         int iReadLen = buf.writerIndex();
         testErrorMsg = new byte[iReadLen];
@@ -614,7 +614,7 @@
 
         byte[] testErrorMsg = {0};
         ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        assertThat(message, sameInstance((PcepErrorMsg) message));
+        assertThat(message, instanceOf(PcepErrorMsg.class));
         message.writeTo(buf);
         int iReadLen = buf.writerIndex();
         testErrorMsg = new byte[iReadLen];
@@ -650,7 +650,7 @@
 
         byte[] testErrorMsg = {0};
         ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        assertThat(message, sameInstance((PcepErrorMsg) message));
+        assertThat(message, instanceOf(PcepErrorMsg.class));
         message.writeTo(buf);
         int iReadLen = buf.writerIndex();
         testErrorMsg = new byte[iReadLen];
@@ -688,7 +688,7 @@
 
         byte[] testErrorMsg = {0};
         ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        assertThat(message, sameInstance((PcepErrorMsg) message));
+        assertThat(message, instanceOf(PcepErrorMsg.class));
         message.writeTo(buf);
         int iReadLen = buf.writerIndex();
         testErrorMsg = new byte[iReadLen];
@@ -727,7 +727,7 @@
 
         byte[] testErrorMsg = {0};
         ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
-        assertThat(message, sameInstance((PcepErrorMsg) message));
+        assertThat(message, instanceOf(PcepErrorMsg.class));
 
         message.writeTo(buf);
         int iReadLen = buf.writerIndex();
diff --git a/pcep/pcepio/src/test/java/org/onosproject/pcepio/PcepInitiateMsgTest.java b/pcep/pcepio/src/test/java/org/onosproject/pcepio/PcepInitiateMsgTest.java
index 8247dfb..a27b781 100644
--- a/pcep/pcepio/src/test/java/org/onosproject/pcepio/PcepInitiateMsgTest.java
+++ b/pcep/pcepio/src/test/java/org/onosproject/pcepio/PcepInitiateMsgTest.java
@@ -25,8 +25,8 @@
 import org.onosproject.pcepio.protocol.PcepMessageReader;
 
 import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.Matchers.instanceOf;
 import static org.hamcrest.core.Is.is;
-import static org.hamcrest.core.IsSame.sameInstance;
 
 public class PcepInitiateMsgTest {
 
@@ -60,7 +60,7 @@
 
         message = reader.readFrom(buffer);
 
-        assertThat(message, sameInstance((PcepInitiateMsg) message));
+        assertThat(message, instanceOf(PcepInitiateMsg.class));
 
         ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
 
@@ -99,7 +99,7 @@
 
         message = reader.readFrom(buffer);
 
-        assertThat(message, sameInstance((PcepInitiateMsg) message));
+        assertThat(message, instanceOf(PcepInitiateMsg.class));
 
 
         ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
@@ -147,7 +147,7 @@
 
         message = reader.readFrom(buffer);
 
-        assertThat(message, sameInstance((PcepInitiateMsg) message));
+        assertThat(message, instanceOf(PcepInitiateMsg.class));
 
         ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
 
@@ -194,7 +194,7 @@
 
         message = reader.readFrom(buffer);
 
-        assertThat(message, sameInstance((PcepInitiateMsg) message));
+        assertThat(message, instanceOf(PcepInitiateMsg.class));
 
         ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
         message.writeTo(buf);
@@ -239,7 +239,7 @@
 
         message = reader.readFrom(buffer);
 
-        assertThat(message, sameInstance((PcepInitiateMsg) message));
+        assertThat(message, instanceOf(PcepInitiateMsg.class));
 
         ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
 
@@ -287,7 +287,7 @@
 
         message = reader.readFrom(buffer);
 
-        assertThat(message, sameInstance((PcepInitiateMsg) message));
+        assertThat(message, instanceOf(PcepInitiateMsg.class));
 
         ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
 
@@ -334,7 +334,7 @@
 
         message = reader.readFrom(buffer);
 
-        assertThat(message, sameInstance((PcepInitiateMsg) message));
+        assertThat(message, instanceOf(PcepInitiateMsg.class));
 
         ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
 
@@ -380,7 +380,7 @@
 
         message = reader.readFrom(buffer);
 
-        assertThat(message, sameInstance((PcepInitiateMsg) message));
+        assertThat(message, instanceOf(PcepInitiateMsg.class));
 
         ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
 
@@ -424,7 +424,7 @@
 
         message = reader.readFrom(buffer);
 
-        assertThat(message, sameInstance((PcepInitiateMsg) message));
+        assertThat(message, instanceOf(PcepInitiateMsg.class));
 
         ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
 
@@ -468,7 +468,7 @@
 
         message = reader.readFrom(buffer);
 
-        assertThat(message, sameInstance((PcepInitiateMsg) message));
+        assertThat(message, instanceOf(PcepInitiateMsg.class));
 
         ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
 
@@ -512,7 +512,7 @@
 
         message = reader.readFrom(buffer);
 
-        assertThat(message, sameInstance((PcepInitiateMsg) message));
+        assertThat(message, instanceOf(PcepInitiateMsg.class));
 
         ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
 
@@ -555,7 +555,7 @@
 
         message = reader.readFrom(buffer);
 
-        assertThat(message, sameInstance((PcepInitiateMsg) message));
+        assertThat(message, instanceOf(PcepInitiateMsg.class));
 
         ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
 
@@ -597,7 +597,7 @@
 
         message = reader.readFrom(buffer);
 
-        assertThat(message, sameInstance((PcepInitiateMsg) message));
+        assertThat(message, instanceOf(PcepInitiateMsg.class));
 
         ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
 
@@ -639,7 +639,7 @@
 
         message = reader.readFrom(buffer);
 
-        assertThat(message, sameInstance((PcepInitiateMsg) message));
+        assertThat(message, instanceOf(PcepInitiateMsg.class));
 
         ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
 
@@ -680,7 +680,7 @@
 
         message = reader.readFrom(buffer);
 
-        assertThat(message, sameInstance((PcepInitiateMsg) message));
+        assertThat(message, instanceOf(PcepInitiateMsg.class));
 
         ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
 
@@ -724,7 +724,7 @@
 
         message = reader.readFrom(buffer);
 
-        assertThat(message, sameInstance((PcepInitiateMsg) message));
+        assertThat(message, instanceOf(PcepInitiateMsg.class));
 
         ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
 
@@ -769,7 +769,7 @@
 
         message = reader.readFrom(buffer);
 
-        assertThat(message, sameInstance((PcepInitiateMsg) message));
+        assertThat(message, instanceOf(PcepInitiateMsg.class));
 
         ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
 
@@ -813,7 +813,7 @@
 
         message = reader.readFrom(buffer);
 
-        assertThat(message, sameInstance((PcepInitiateMsg) message));
+        assertThat(message, instanceOf(PcepInitiateMsg.class));
 
         ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
 
@@ -860,7 +860,7 @@
 
         message = reader.readFrom(buffer);
 
-        assertThat(message, sameInstance((PcepInitiateMsg) message));
+        assertThat(message, instanceOf(PcepInitiateMsg.class));
 
         ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
 
@@ -908,7 +908,7 @@
 
         message = reader.readFrom(buffer);
 
-        assertThat(message, sameInstance((PcepInitiateMsg) message));
+        assertThat(message, instanceOf(PcepInitiateMsg.class));
 
         ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
 
@@ -962,7 +962,7 @@
 
         message = reader.readFrom(buffer);
 
-        assertThat(message, sameInstance((PcepInitiateMsg) message));
+        assertThat(message, instanceOf(PcepInitiateMsg.class));
 
         ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
 
@@ -1017,7 +1017,7 @@
 
         message = reader.readFrom(buffer);
 
-        assertThat(message, sameInstance((PcepInitiateMsg) message));
+        assertThat(message, instanceOf(PcepInitiateMsg.class));
 
         ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
 
@@ -1074,7 +1074,7 @@
 
         message = reader.readFrom(buffer);
 
-        assertThat(message, sameInstance((PcepInitiateMsg) message));
+        assertThat(message, instanceOf(PcepInitiateMsg.class));
 
         ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
 
@@ -1131,7 +1131,7 @@
 
         message = reader.readFrom(buffer);
 
-        assertThat(message, sameInstance((PcepInitiateMsg) message));
+        assertThat(message, instanceOf(PcepInitiateMsg.class));
 
         ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
 
@@ -1192,7 +1192,7 @@
 
         message = reader.readFrom(buffer);
 
-        assertThat(message, sameInstance((PcepInitiateMsg) message));
+        assertThat(message, instanceOf(PcepInitiateMsg.class));
 
         ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
 
@@ -1254,7 +1254,7 @@
 
         message = reader.readFrom(buffer);
 
-        assertThat(message, sameInstance((PcepInitiateMsg) message));
+        assertThat(message, instanceOf(PcepInitiateMsg.class));
 
         ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
 
@@ -1318,7 +1318,7 @@
 
         message = reader.readFrom(buffer);
 
-        assertThat(message, sameInstance((PcepInitiateMsg) message));
+        assertThat(message, instanceOf(PcepInitiateMsg.class));
 
         ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
 
diff --git a/pcep/pcepio/src/test/java/org/onosproject/pcepio/PcepOpenMsgTest.java b/pcep/pcepio/src/test/java/org/onosproject/pcepio/PcepOpenMsgTest.java
index 435316e..1aff496 100644
--- a/pcep/pcepio/src/test/java/org/onosproject/pcepio/PcepOpenMsgTest.java
+++ b/pcep/pcepio/src/test/java/org/onosproject/pcepio/PcepOpenMsgTest.java
@@ -16,8 +16,8 @@
 package org.onosproject.pcepio;
 
 import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.Matchers.instanceOf;
 import static org.hamcrest.core.Is.is;
-import static org.hamcrest.core.IsSame.sameInstance;
 
 import org.jboss.netty.buffer.ChannelBuffer;
 import org.jboss.netty.buffer.ChannelBuffers;
@@ -54,7 +54,7 @@
 
         message = reader.readFrom(buffer);
 
-        assertThat(message, sameInstance((PcepOpenMsg) message));
+        assertThat(message, instanceOf(PcepOpenMsg.class));
         ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
         message.writeTo(buf);
         testOpenMsg = buf.array();
@@ -86,7 +86,7 @@
 
         message = reader.readFrom(buffer);
 
-        assertThat(message, sameInstance((PcepOpenMsg) message));
+        assertThat(message, instanceOf(PcepOpenMsg.class));
         ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
         message.writeTo(buf);
         testOpenMsg = buf.array();
@@ -119,7 +119,7 @@
 
         message = reader.readFrom(buffer);
 
-        assertThat(message, sameInstance((PcepOpenMsg) message));
+        assertThat(message, instanceOf(PcepOpenMsg.class));
         ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
         message.writeTo(buf);
         testOpenMsg = buf.array();
@@ -152,7 +152,7 @@
 
         message = reader.readFrom(buffer);
 
-        assertThat(message, sameInstance((PcepOpenMsg) message));
+        assertThat(message, instanceOf(PcepOpenMsg.class));
         ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
         message.writeTo(buf);
         testOpenMsg = buf.array();
@@ -183,7 +183,7 @@
 
         message = reader.readFrom(buffer);
 
-        assertThat(message, sameInstance((PcepOpenMsg) message));
+        assertThat(message, instanceOf(PcepOpenMsg.class));
         ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
         message.writeTo(buf);
         testOpenMsg = buf.array();
@@ -219,7 +219,7 @@
 
         message = reader.readFrom(buffer);
 
-        assertThat(message, sameInstance((PcepOpenMsg) message));
+        assertThat(message, instanceOf(PcepOpenMsg.class));
         ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
         message.writeTo(buf);
         testOpenMsg = buf.array();
@@ -255,7 +255,7 @@
 
         message = reader.readFrom(buffer);
 
-        assertThat(message, sameInstance((PcepOpenMsg) message));
+        assertThat(message, instanceOf(PcepOpenMsg.class));
         ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
         message.writeTo(buf);
         testOpenMsg = buf.array();
@@ -294,7 +294,7 @@
 
         message = reader.readFrom(buffer);
 
-        assertThat(message, sameInstance((PcepOpenMsg) message));
+        assertThat(message, instanceOf(PcepOpenMsg.class));
         ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
         message.writeTo(buf);
         testOpenMsg = buf.array();
@@ -330,7 +330,7 @@
 
         message = reader.readFrom(buffer);
 
-        assertThat(message, sameInstance((PcepOpenMsg) message));
+        assertThat(message, instanceOf(PcepOpenMsg.class));
         ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
         message.writeTo(buf);
         testOpenMsg = buf.array();
@@ -368,7 +368,7 @@
 
         message = reader.readFrom(buffer);
 
-        assertThat(message, sameInstance((PcepOpenMsg) message));
+        assertThat(message, instanceOf(PcepOpenMsg.class));
         ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
         message.writeTo(buf);
         testOpenMsg = buf.array();
@@ -406,7 +406,7 @@
 
         message = reader.readFrom(buffer);
 
-        assertThat(message, sameInstance((PcepOpenMsg) message));
+        assertThat(message, instanceOf(PcepOpenMsg.class));
         ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
         message.writeTo(buf);
         testOpenMsg = buf.array();
@@ -443,7 +443,7 @@
 
         message = reader.readFrom(buffer);
 
-        assertThat(message, sameInstance((PcepOpenMsg) message));
+        assertThat(message, instanceOf(PcepOpenMsg.class));
         ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
         message.writeTo(buf);
         testOpenMsg = buf.array();
@@ -479,7 +479,7 @@
 
         message = reader.readFrom(buffer);
 
-        assertThat(message, sameInstance((PcepOpenMsg) message));
+        assertThat(message, instanceOf(PcepOpenMsg.class));
         ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
         message.writeTo(buf);
         testOpenMsg = buf.array();
@@ -514,7 +514,7 @@
 
         message = reader.readFrom(buffer);
 
-        assertThat(message, sameInstance((PcepOpenMsg) message));
+        assertThat(message, instanceOf(PcepOpenMsg.class));
         ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
         message.writeTo(buf);
         testOpenMsg = buf.array();
@@ -547,7 +547,7 @@
 
         message = reader.readFrom(buffer);
 
-        assertThat(message, sameInstance((PcepOpenMsg) message));
+        assertThat(message, instanceOf(PcepOpenMsg.class));
 
         ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
         message.writeTo(buf);
diff --git a/pcep/pcepio/src/test/java/org/onosproject/pcepio/PcepUpdateMsgTest.java b/pcep/pcepio/src/test/java/org/onosproject/pcepio/PcepUpdateMsgTest.java
index 7bf6daf..e965bfe 100644
--- a/pcep/pcepio/src/test/java/org/onosproject/pcepio/PcepUpdateMsgTest.java
+++ b/pcep/pcepio/src/test/java/org/onosproject/pcepio/PcepUpdateMsgTest.java
@@ -15,8 +15,8 @@
  */
 package org.onosproject.pcepio;
 
+import static org.hamcrest.Matchers.instanceOf;
 import static org.hamcrest.core.Is.is;
-import static org.hamcrest.core.IsSame.sameInstance;
 
 import org.jboss.netty.buffer.ChannelBuffer;
 import org.jboss.netty.buffer.ChannelBuffers;
@@ -51,7 +51,7 @@
 
         message = reader.readFrom(buffer);
 
-        assertThat(message, sameInstance((PcepUpdateMsg) message));
+        assertThat(message, instanceOf(PcepUpdateMsg.class));
         ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
         message.writeTo(buf);
         testupdateMsg = buf.array();
@@ -95,7 +95,7 @@
         PcepMessage message = null;
 
         message = reader.readFrom(buffer);
-        assertThat(message, sameInstance((PcepUpdateMsg) message));
+        assertThat(message, instanceOf(PcepUpdateMsg.class));
         ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
         message.writeTo(buf);
         testupdateMsg = buf.array();
@@ -132,7 +132,7 @@
 
         message = reader.readFrom(buffer);
 
-        assertThat(message, sameInstance((PcepUpdateMsg) message));
+        assertThat(message, instanceOf(PcepUpdateMsg.class));
         ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
         message.writeTo(buf);
         testupdateMsg = buf.array();
@@ -170,7 +170,7 @@
 
         message = reader.readFrom(buffer);
 
-        assertThat(message, sameInstance((PcepUpdateMsg) message));
+        assertThat(message, instanceOf(PcepUpdateMsg.class));
         ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
         message.writeTo(buf);
         testupdateMsg = buf.array();
@@ -208,7 +208,7 @@
 
         message = reader.readFrom(buffer);
 
-        assertThat(message, sameInstance((PcepUpdateMsg) message));
+        assertThat(message, instanceOf(PcepUpdateMsg.class));
         ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
         message.writeTo(buf);
         testupdateMsg = buf.array();
@@ -247,7 +247,7 @@
 
         message = reader.readFrom(buffer);
 
-        assertThat(message, sameInstance((PcepUpdateMsg) message));
+        assertThat(message, instanceOf(PcepUpdateMsg.class));
         ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
         message.writeTo(buf);
         testupdateMsg = buf.array();
@@ -287,7 +287,7 @@
 
         message = reader.readFrom(buffer);
 
-        assertThat(message, sameInstance((PcepUpdateMsg) message));
+        assertThat(message, instanceOf(PcepUpdateMsg.class));
         ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
         message.writeTo(buf);
         testupdateMsg = buf.array();
@@ -326,7 +326,7 @@
 
         message = reader.readFrom(buffer);
 
-        assertThat(message, sameInstance((PcepUpdateMsg) message));
+        assertThat(message, instanceOf(PcepUpdateMsg.class));
         ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
         message.writeTo(buf);
         testupdateMsg = buf.array();
@@ -367,7 +367,7 @@
 
         message = reader.readFrom(buffer);
 
-        assertThat(message, sameInstance((PcepUpdateMsg) message));
+        assertThat(message, instanceOf(PcepUpdateMsg.class));
         ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
         message.writeTo(buf);
         testupdateMsg = buf.array();
@@ -410,7 +410,7 @@
 
         message = reader.readFrom(buffer);
 
-        assertThat(message, sameInstance((PcepUpdateMsg) message));
+        assertThat(message, instanceOf(PcepUpdateMsg.class));
         ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
         message.writeTo(buf);
         testupdateMsg = buf.array();
@@ -454,7 +454,7 @@
 
         message = reader.readFrom(buffer);
 
-        assertThat(message, sameInstance((PcepUpdateMsg) message));
+        assertThat(message, instanceOf(PcepUpdateMsg.class));
         ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
         message.writeTo(buf);
         testupdateMsg = buf.array();
@@ -497,7 +497,7 @@
 
         message = reader.readFrom(buffer);
 
-        assertThat(message, sameInstance((PcepUpdateMsg) message));
+        assertThat(message, instanceOf(PcepUpdateMsg.class));
         ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
         message.writeTo(buf);
         testupdateMsg = buf.array();
@@ -540,7 +540,7 @@
 
         message = reader.readFrom(buffer);
 
-        assertThat(message, sameInstance((PcepUpdateMsg) message));
+        assertThat(message, instanceOf(PcepUpdateMsg.class));
         ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
         message.writeTo(buf);
         testupdateMsg = buf.array();
@@ -582,7 +582,7 @@
 
         message = reader.readFrom(buffer);
 
-        assertThat(message, sameInstance((PcepUpdateMsg) message));
+        assertThat(message, instanceOf(PcepUpdateMsg.class));
         ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
         message.writeTo(buf);
         testupdateMsg = buf.array();
@@ -624,7 +624,7 @@
 
         message = reader.readFrom(buffer);
 
-        assertThat(message, sameInstance((PcepUpdateMsg) message));
+        assertThat(message, instanceOf(PcepUpdateMsg.class));
         ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
         message.writeTo(buf);
         testupdateMsg = buf.array();
@@ -665,7 +665,7 @@
 
         message = reader.readFrom(buffer);
 
-        assertThat(message, sameInstance((PcepUpdateMsg) message));
+        assertThat(message, instanceOf(PcepUpdateMsg.class));
         ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
         message.writeTo(buf);
         testupdateMsg = buf.array();
@@ -705,7 +705,7 @@
 
         message = reader.readFrom(buffer);
 
-        assertThat(message, sameInstance((PcepUpdateMsg) message));
+        assertThat(message, instanceOf(PcepUpdateMsg.class));
         ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
         message.writeTo(buf);
         testupdateMsg = buf.array();
@@ -744,7 +744,7 @@
 
         message = reader.readFrom(buffer);
 
-        assertThat(message, sameInstance((PcepUpdateMsg) message));
+        assertThat(message, instanceOf(PcepUpdateMsg.class));
         ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
         message.writeTo(buf);
         testupdateMsg = buf.array();
@@ -784,7 +784,7 @@
 
         message = reader.readFrom(buffer);
 
-        assertThat(message, sameInstance((PcepUpdateMsg) message));
+        assertThat(message, instanceOf(PcepUpdateMsg.class));
         ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
         message.writeTo(buf);
         testupdateMsg = buf.array();
@@ -829,7 +829,7 @@
 
         message = reader.readFrom(buffer);
 
-        assertThat(message, sameInstance((PcepUpdateMsg) message));
+        assertThat(message, instanceOf(PcepUpdateMsg.class));
         ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
         message.writeTo(buf);
         testupdateMsg = buf.array();
@@ -868,7 +868,7 @@
 
         message = reader.readFrom(buffer);
 
-        assertThat(message, sameInstance((PcepUpdateMsg) message));
+        assertThat(message, instanceOf(PcepUpdateMsg.class));
         ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
         message.writeTo(buf);
         testupdateMsg = buf.array();
@@ -909,7 +909,7 @@
 
         message = reader.readFrom(buffer);
 
-        assertThat(message, sameInstance((PcepUpdateMsg) message));
+        assertThat(message, instanceOf(PcepUpdateMsg.class));
         ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
         message.writeTo(buf);
         testupdateMsg = buf.array();
@@ -951,7 +951,7 @@
 
         message = reader.readFrom(buffer);
 
-        assertThat(message, sameInstance((PcepUpdateMsg) message));
+        assertThat(message, instanceOf(PcepUpdateMsg.class));
         ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
         message.writeTo(buf);
         testupdateMsg = buf.array();
@@ -994,7 +994,7 @@
 
         message = reader.readFrom(buffer);
 
-        assertThat(message, sameInstance((PcepUpdateMsg) message));
+        assertThat(message, instanceOf(PcepUpdateMsg.class));
         ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
         message.writeTo(buf);
         testupdateMsg = buf.array();
@@ -1037,7 +1037,7 @@
 
         message = reader.readFrom(buffer);
 
-        assertThat(message, sameInstance((PcepUpdateMsg) message));
+        assertThat(message, instanceOf(PcepUpdateMsg.class));
         ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
         message.writeTo(buf);
         testupdateMsg = buf.array();
@@ -1081,7 +1081,7 @@
         PcepMessage message = null;
 
         message = reader.readFrom(buffer);
-        assertThat(message, sameInstance((PcepUpdateMsg) message));
+        assertThat(message, instanceOf(PcepUpdateMsg.class));
         ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
         message.writeTo(buf);
         testupdateMsg = buf.array();
@@ -1126,7 +1126,7 @@
 
         message = reader.readFrom(buffer);
 
-        assertThat(message, sameInstance((PcepUpdateMsg) message));
+        assertThat(message, instanceOf(PcepUpdateMsg.class));
         ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
         message.writeTo(buf);
         testupdateMsg = buf.array();
@@ -1172,7 +1172,7 @@
 
         message = reader.readFrom(buffer);
 
-        assertThat(message, sameInstance((PcepUpdateMsg) message));
+        assertThat(message, instanceOf(PcepUpdateMsg.class));
         ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
         message.writeTo(buf);
         testupdateMsg = buf.array();
@@ -1214,7 +1214,7 @@
 
         message = reader.readFrom(buffer);
 
-        assertThat(message, sameInstance((PcepUpdateMsg) message));
+        assertThat(message, instanceOf(PcepUpdateMsg.class));
         ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
         message.writeTo(buf);
         testupdateMsg = buf.array();
@@ -1253,7 +1253,7 @@
 
         message = reader.readFrom(buffer);
 
-        assertThat(message, sameInstance((PcepUpdateMsg) message));
+        assertThat(message, instanceOf(PcepUpdateMsg.class));
         ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
         message.writeTo(buf);
         testupdateMsg = buf.array();
@@ -1293,7 +1293,7 @@
 
         message = reader.readFrom(buffer);
 
-        assertThat(message, sameInstance((PcepUpdateMsg) message));
+        assertThat(message, instanceOf(PcepUpdateMsg.class));
         ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
         message.writeTo(buf);
         testupdateMsg = buf.array();
@@ -1332,7 +1332,7 @@
 
         message = reader.readFrom(buffer);
 
-        assertThat(message, sameInstance((PcepUpdateMsg) message));
+        assertThat(message, instanceOf(PcepUpdateMsg.class));
         ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
         message.writeTo(buf);
         testupdateMsg = buf.array();
@@ -1372,7 +1372,7 @@
 
         message = reader.readFrom(buffer);
 
-        assertThat(message, sameInstance((PcepUpdateMsg) message));
+        assertThat(message, instanceOf(PcepUpdateMsg.class));
         ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
         message.writeTo(buf);
         testupdateMsg = buf.array();
@@ -1413,7 +1413,7 @@
 
         message = reader.readFrom(buffer);
 
-        assertThat(message, sameInstance((PcepUpdateMsg) message));
+        assertThat(message, instanceOf(PcepUpdateMsg.class));
         ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
         message.writeTo(buf);
         testupdateMsg = buf.array();
