diff --git a/protocols/lisp/msg/src/test/java/org/onosproject/lisp/msg/types/LispAppDataLcafAddressTest.java b/protocols/lisp/msg/src/test/java/org/onosproject/lisp/msg/types/LispAppDataLcafAddressTest.java
index b8b600c..ea528a0 100644
--- a/protocols/lisp/msg/src/test/java/org/onosproject/lisp/msg/types/LispAppDataLcafAddressTest.java
+++ b/protocols/lisp/msg/src/test/java/org/onosproject/lisp/msg/types/LispAppDataLcafAddressTest.java
@@ -35,13 +35,48 @@
     @Before
     public void setup() {
 
-        LispAfiAddress ipv4Address1 = new LispIpv4Address(IpAddress.valueOf("192.168.1.1"));
-        address1 = new LispAppDataLcafAddress((byte) 0x01, 1, (short) 10, (short) 20, ipv4Address1);
+        LispAppDataLcafAddress.AppDataAddressBuilder builder1 =
+                new LispAppDataLcafAddress.AppDataAddressBuilder();
 
-        sameAsAddress1 = new LispAppDataLcafAddress((byte) 0x01, 1, (short) 10, (short) 20, ipv4Address1);
+        LispAfiAddress ipv4Address1 = new LispIpv4Address(IpAddress.valueOf("192.168.1.1"));
+
+        address1 = builder1
+                    .withProtocol((byte) 0x01)
+                    .withIpTos((short) 10)
+                    .withLocalPortLow((short) 1)
+                    .withLocalPortHigh((short) 255)
+                    .withRemotePortLow((short) 2)
+                    .withRemotePortHigh((short) 254)
+                    .withAddress(ipv4Address1)
+                    .build();
+
+        LispAppDataLcafAddress.AppDataAddressBuilder builder2 =
+                new LispAppDataLcafAddress.AppDataAddressBuilder();
+
+        sameAsAddress1 = builder2
+                            .withProtocol((byte) 0x01)
+                            .withIpTos((short) 10)
+                            .withLocalPortLow((short) 1)
+                            .withLocalPortHigh((short) 255)
+                            .withRemotePortLow((short) 2)
+                            .withRemotePortHigh((short) 254)
+                            .withAddress(ipv4Address1)
+                            .build();
+
+        LispAppDataLcafAddress.AppDataAddressBuilder builder3 =
+                new LispAppDataLcafAddress.AppDataAddressBuilder();
 
         LispAfiAddress ipv4Address2 = new LispIpv4Address(IpAddress.valueOf("192.168.2.1"));
-        address2 = new LispAppDataLcafAddress((byte) 0x02, 2, (short) 20, (short) 40, ipv4Address2);
+
+        address2 = builder3
+                        .withProtocol((byte) 0x02)
+                        .withIpTos((short) 20)
+                        .withLocalPortLow((short) 1)
+                        .withLocalPortHigh((short) 255)
+                        .withRemotePortLow((short) 2)
+                        .withRemotePortHigh((short) 254)
+                        .withAddress(ipv4Address2)
+                        .build();
     }
 
     @Test
@@ -58,9 +93,11 @@
         LispAfiAddress ipv4Address = new LispIpv4Address(IpAddress.valueOf("192.168.1.1"));
 
         assertThat(appDataLcafAddress.getProtocol(), is((byte) 0x01));
-        assertThat(appDataLcafAddress.getIpTos(), is(1));
-        assertThat(appDataLcafAddress.getLocalPort(), is((short) 10));
-        assertThat(appDataLcafAddress.getRemotePort(), is((short) 20));
+        assertThat(appDataLcafAddress.getIpTos(), is(10));
+        assertThat(appDataLcafAddress.getLocalPortLow(), is((short) 1));
+        assertThat(appDataLcafAddress.getLocalPortHigh(), is((short) 255));
+        assertThat(appDataLcafAddress.getRemotePortLow(), is((short) 2));
+        assertThat(appDataLcafAddress.getRemotePortHigh(), is((short) 254));
         assertThat(appDataLcafAddress.getAddress(), is(ipv4Address));
     }
 }
diff --git a/protocols/lisp/msg/src/test/java/org/onosproject/lisp/msg/types/LispSegmentLcafAddressTest.java b/protocols/lisp/msg/src/test/java/org/onosproject/lisp/msg/types/LispSegmentLcafAddressTest.java
index 8931de8..b1f811c 100644
--- a/protocols/lisp/msg/src/test/java/org/onosproject/lisp/msg/types/LispSegmentLcafAddressTest.java
+++ b/protocols/lisp/msg/src/test/java/org/onosproject/lisp/msg/types/LispSegmentLcafAddressTest.java
@@ -35,13 +35,35 @@
     @Before
     public void setup() {
 
-        LispIpv4Address ipv4Address1 = new LispIpv4Address(IpAddress.valueOf("192.168.1.1"));
-        address1 = new LispSegmentLcafAddress((byte) 0x01, 1, ipv4Address1);
+        LispSegmentLcafAddress.SegmentAddressBuilder builder1 =
+                            new LispSegmentLcafAddress.SegmentAddressBuilder();
 
-        sameAsAddress1 = new LispSegmentLcafAddress((byte) 0x01, 1, ipv4Address1);
+        LispIpv4Address ipv4Address1 = new LispIpv4Address(IpAddress.valueOf("192.168.1.1"));
+
+        address1 = builder1
+                        .withIdMaskLength((byte) 0x01)
+                        .withInstanceId(1)
+                        .withAddress(ipv4Address1)
+                        .build();
+
+        LispSegmentLcafAddress.SegmentAddressBuilder builder2 =
+                            new LispSegmentLcafAddress.SegmentAddressBuilder();
+
+        sameAsAddress1 = builder2
+                            .withIdMaskLength((byte) 0x01)
+                            .withInstanceId(1)
+                            .withAddress(ipv4Address1)
+                            .build();
+
+        LispSegmentLcafAddress.SegmentAddressBuilder builder3 =
+                            new LispSegmentLcafAddress.SegmentAddressBuilder();
 
         LispIpv4Address ipv4Address2 = new LispIpv4Address(IpAddress.valueOf("192.168.2.1"));
-        address2 = new LispSegmentLcafAddress((byte) 0x02, 2, ipv4Address2);
+        address2 = builder3
+                        .withIdMaskLength((byte) 0x02)
+                        .withInstanceId(2)
+                        .withAddress(ipv4Address2)
+                        .build();
     }
 
     @Test
diff --git a/protocols/lisp/msg/src/test/java/org/onosproject/lisp/msg/types/LispSourceDestLcafAddressTest.java b/protocols/lisp/msg/src/test/java/org/onosproject/lisp/msg/types/LispSourceDestLcafAddressTest.java
index 8296b43..e212a1c 100644
--- a/protocols/lisp/msg/src/test/java/org/onosproject/lisp/msg/types/LispSourceDestLcafAddressTest.java
+++ b/protocols/lisp/msg/src/test/java/org/onosproject/lisp/msg/types/LispSourceDestLcafAddressTest.java
@@ -35,20 +35,44 @@
     @Before
     public void setup() {
 
+        LispSourceDestLcafAddress.SourceDestAddressBuilder builder1 =
+                new LispSourceDestLcafAddress.SourceDestAddressBuilder();
+
         LispIpv4Address srcAddress1 = new LispIpv4Address(IpAddress.valueOf("192.168.1.1"));
         LispIpv4Address dstAddress1 = new LispIpv4Address(IpAddress.valueOf("192.168.1.2"));
 
-        address1 = new LispSourceDestLcafAddress((short) 1, (byte) 0x01,
-                                        (byte) 0x01, srcAddress1, dstAddress1);
+        address1 = builder1
+                        .withReserved((short) 1)
+                        .withSrcMaskLength((byte) 0x01)
+                        .withDstMaskLength((byte) 0x01)
+                        .withSrcPrefix(srcAddress1)
+                        .withDstPrefix(dstAddress1)
+                        .build();
 
-        sameAsAddress1 = new LispSourceDestLcafAddress((short) 1, (byte) 0x01,
-                                        (byte) 0x01, srcAddress1, dstAddress1);
+        LispSourceDestLcafAddress.SourceDestAddressBuilder builder2 =
+                new LispSourceDestLcafAddress.SourceDestAddressBuilder();
+
+        sameAsAddress1 = builder2
+                            .withReserved((short) 1)
+                            .withSrcMaskLength((byte) 0x01)
+                            .withDstMaskLength((byte) 0x01)
+                            .withSrcPrefix(srcAddress1)
+                            .withDstPrefix(dstAddress1)
+                            .build();
+
+        LispSourceDestLcafAddress.SourceDestAddressBuilder builder3 =
+                new LispSourceDestLcafAddress.SourceDestAddressBuilder();
 
         LispIpv4Address srcAddress2 = new LispIpv4Address(IpAddress.valueOf("192.168.2.1"));
         LispIpv4Address dstAddress2 = new LispIpv4Address(IpAddress.valueOf("192.168.2.2"));
 
-        address2 = new LispSourceDestLcafAddress((short) 2, (byte) 0x02,
-                                        (byte) 0x02, srcAddress2, dstAddress2);
+        address2 = builder3
+                        .withReserved((short) 2)
+                        .withSrcMaskLength((byte) 0x02)
+                        .withDstMaskLength((byte) 0x02)
+                        .withSrcPrefix(srcAddress2)
+                        .withDstPrefix(dstAddress2)
+                        .build();
     }
 
     @Test
