Checkstyle: fix issues and enforce on lisp-proto
[lispflowmapping.git] / mappingservice / lisp-proto / src / test / java / org / opendaylight / lispflowmapping / lisp / util / MaskUtilTest.java
1 /*
2  * Copyright (c) 2016 Cisco Systems, Inc. and others.  All rights reserved.
3  *
4  * This program and the accompanying materials are made available under the
5  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6  * and is available at http://www.eclipse.org/legal/epl-v10.html
7  */
8 package org.opendaylight.lispflowmapping.lisp.util;
9
10 import static org.junit.Assert.assertArrayEquals;
11 import static org.junit.Assert.assertEquals;
12 import static org.junit.Assert.assertFalse;
13 import static org.junit.Assert.assertTrue;
14
15 import java.net.Inet4Address;
16 import java.net.Inet6Address;
17 import java.net.UnknownHostException;
18 import org.junit.Test;
19 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress;
20 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpPrefix;
21 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4Address;
22 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4Prefix;
23 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv6Address;
24 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv6Prefix;
25 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.InstanceIdType;
26 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.ServicePathIdType;
27 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.SimpleAddress;
28 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.Address;
29 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.InstanceId;
30 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.InstanceIdBuilder;
31 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.Ipv4Builder;
32 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.Ipv4PrefixBuilder;
33 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.Ipv6Builder;
34 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.Ipv6PrefixBuilder;
35 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.MacBuilder;
36 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.ServicePath;
37 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.ServicePathBuilder;
38 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.SourceDestKey;
39 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.SourceDestKeyBuilder;
40 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.MacAddress;
41 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.inet.binary.types.rev160303.Ipv4AddressBinary;
42 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.inet.binary.types.rev160303.Ipv6AddressBinary;
43 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.binary.address.types.rev160504.augmented.lisp.address.address.Ipv4BinaryBuilder;
44 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.binary.address.types.rev160504.augmented.lisp.address.address.Ipv4PrefixBinary;
45 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.binary.address.types.rev160504.augmented.lisp.address.address.Ipv4PrefixBinaryBuilder;
46 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.binary.address.types.rev160504.augmented.lisp.address.address.Ipv6BinaryBuilder;
47 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.binary.address.types.rev160504.augmented.lisp.address.address.Ipv6PrefixBinary;
48 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.binary.address.types.rev160504.augmented.lisp.address.address.Ipv6PrefixBinaryBuilder;
49 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.eid.container.Eid;
50 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.eid.container.EidBuilder;
51 import org.slf4j.Logger;
52 import org.slf4j.LoggerFactory;
53
54 public class MaskUtilTest {
55
56     protected static final Logger LOG = LoggerFactory.getLogger(MaskUtilTest.class);
57     private static final String IPV4_STRING = "255.255.255.255";
58     private static final String IPV6_STRING = "1111:2222:3333:4444:5555:6666:7777:8888";
59     private static byte[] ipv4ByteAddress;
60     private static byte[] ipv4ExpectedByteAddress;
61     private static byte[] ipv6ByteAddress;
62     private static byte[] ipv6ExpectedByteAddress;
63
64     static {
65         try {
66             ipv4ByteAddress = Inet4Address.getByName(IPV4_STRING).getAddress();
67             ipv4ExpectedByteAddress = Inet4Address.getByName("255.255.240.0").getAddress();
68             ipv6ByteAddress = Inet6Address.getByName(IPV6_STRING).getAddress();
69             ipv6ExpectedByteAddress = Inet6Address.getByName("1111:2222:3333:4444:4000::").getAddress();
70         } catch (UnknownHostException e) {
71             LOG.error("Unknow host", e);
72         }
73     }
74
75     private static final String IPV4_STRING_1 = "1.2.3.0";
76     private static final String IPV4_STRING_2 = "1.3.4.0";
77     private static final String MASK_1 =        "/32";
78     private static final String MASK_2 =        "/20";
79     private static final String MASK_3 =        "/66";
80     private static final String MASK_4 =        "/128";
81     private static final String MAC_STRING =    "aa:bb:cc:dd:ee:ff";
82
83     private static final Ipv4Address IPV4_ADDRESS = new Ipv4Address(IPV4_STRING_1);
84     private static final Ipv6Address IPV6_ADDRESS = new Ipv6Address(IPV6_STRING);
85     private static final Ipv4Prefix IPV4_PREFIX = new Ipv4Prefix(IPV4_STRING_1 + MASK_1);
86     private static final Ipv6Prefix IPV6_PREFIX = new Ipv6Prefix(IPV6_STRING + MASK_4);
87     private static final Ipv4AddressBinary IPV4_ADDRESS_BINARY = new Ipv4AddressBinary(ipv4ByteAddress);
88     private static final Ipv6AddressBinary IPV6_ADDRESS_BINARY = new Ipv6AddressBinary(ipv6ByteAddress);
89     private static final Ipv4PrefixBinary IPV4_PREFIX_BINARY = new Ipv4PrefixBinaryBuilder()
90             .setIpv4AddressBinary(IPV4_ADDRESS_BINARY).setIpv4MaskLength((short) 32).build();
91     private static final Ipv6PrefixBinary IPV6_PREFIX_BINARY = new Ipv6PrefixBinaryBuilder()
92             .setIpv6AddressBinary(IPV6_ADDRESS_BINARY).setIpv6MaskLength((short) 128).build();
93
94     private static final Address ADDRESS_IPV4 = new Ipv4Builder().setIpv4(IPV4_ADDRESS).build();
95     private static final Address ADDRESS_IPV6 = new Ipv6Builder().setIpv6(new Ipv6Address(IPV6_STRING)).build();
96     private static final Address ADDRESS_IPV4_BINARY = new Ipv4BinaryBuilder()
97             .setIpv4Binary(IPV4_ADDRESS_BINARY).build();
98     private static final Address ADDRESS_IPV6_BINARY = new Ipv6BinaryBuilder()
99             .setIpv6Binary(IPV6_ADDRESS_BINARY).build();
100     private static final Address ADDRESS_IPV4_PREFIX = new Ipv4PrefixBuilder()
101             .setIpv4Prefix(IPV4_PREFIX).build();
102     private static final Address ADDRESS_IPV6_PREFIX = new Ipv6PrefixBuilder()
103             .setIpv6Prefix(IPV6_PREFIX).build();
104     private static final Address ADDRESS_SOURCE_DEST_KEY = getDefaultSourceDestKeyAddressBuilder().build();
105     private static final Address ADDRESS_INSTANCE_ID_IP_PREFIX = getDefaultIpPrefixInstanceId();
106     private static final Address ADDRESS_INSTANCE_ID_IP = getDefaultIpInstanceId();
107     private static final Address ADDRESS_MAC = new MacBuilder().setMac(new MacAddress(MAC_STRING)).build();
108     private static final Address ADDRESS_SERVICE_PATH = getDefaultServicePath();
109
110     private static final SimpleAddress SIMPLE_ADDRESS_IPV4 = new SimpleAddress(new IpAddress(IPV4_ADDRESS));
111     private static final SimpleAddress SIMPLE_ADDRESS_IPV4_PREFIX = new SimpleAddress(new IpPrefix(IPV4_PREFIX));
112     private static final SimpleAddress SIMPLE_ADDRESS_IPV6_PREFIX = new SimpleAddress(new IpPrefix(IPV6_PREFIX));
113
114     private static final Eid EID_IPV4 = LispAddressUtil.toEid(IPV4_ADDRESS, null);
115     private static final Eid EID_IPV6 = LispAddressUtil.toEid(IPV6_ADDRESS, null);
116     private static final Eid EID_IPV4_PREFIX = LispAddressUtil.asIpv4PrefixEid(IPV4_STRING + MASK_2);
117     private static final Eid EID_IPV6_PREFIX = LispAddressUtil.asIpv6PrefixEid(IPV6_STRING + MASK_3);
118     private static final Eid EID_IPV4_PREFIX_BINARY = LispAddressUtil.asIpv4PrefixBinaryEid(IPV4_STRING + MASK_2);
119     private static final Eid EID_IPV6_PREFIX_BINARY = LispAddressUtil.asIpv6PrefixBinaryEid(IPV6_STRING + MASK_3);
120     private static final Eid EID_INSTANCE_ID = new EidBuilder().setAddress(ADDRESS_INSTANCE_ID_IP).build();
121     private static final Eid EID_SOURCE_DEST_KEY = new EidBuilder().setAddress(ADDRESS_SOURCE_DEST_KEY).build();
122     private static final Eid EID_SERVICE_PATH = new EidBuilder().setAddress(ADDRESS_SERVICE_PATH).build();
123     private static final Eid EID_MAC = new EidBuilder().setAddress(ADDRESS_MAC).build();
124
125     /**
126      * Tests {@link MaskUtil#isMaskable} method.
127      */
128     @Test
129     public void isMaskableTest() {
130         assertTrue(MaskUtil.isMaskable(ADDRESS_IPV4_PREFIX));
131         assertTrue(MaskUtil.isMaskable(ADDRESS_IPV6_PREFIX));
132         assertTrue(MaskUtil.isMaskable(ADDRESS_SOURCE_DEST_KEY));
133         assertTrue(MaskUtil.isMaskable(ADDRESS_INSTANCE_ID_IP_PREFIX));
134         assertFalse(MaskUtil.isMaskable(ADDRESS_INSTANCE_ID_IP));
135         assertFalse(MaskUtil.isMaskable(ADDRESS_MAC));
136     }
137
138     /**
139      * Tests {@link MaskUtil#normalize(Eid eid, short mask)} method with Ipv4PrefixBinary.
140      */
141     @Test
142     public void normalizeTest_withIpv4PrefixBinary_withMask() throws UnknownHostException {
143         // input ip: 255.255.255.255, mask: 20
144         final Eid result = MaskUtil.normalize(EID_IPV4_PREFIX_BINARY, (short) 20);
145         final Ipv4PrefixBinary resultPrefix = (Ipv4PrefixBinary) result.getAddress();
146
147         // expected result
148         assertArrayEquals(ipv4ExpectedByteAddress, resultPrefix.getIpv4AddressBinary().getValue());
149         assertEquals((short) 20, (short) resultPrefix.getIpv4MaskLength());
150     }
151
152     /**
153      * Tests {@link MaskUtil#normalize(Eid eid, short mask)} method with Ipv6PrefixBinary.
154      */
155     @Test
156     public void normalizeTest_withIpv6PrefixBinary_withMask() throws UnknownHostException {
157         // input ip: 1111:2222:3333:4444:5555:6666:7777:8888, mask: 66
158         final Eid result = MaskUtil.normalize(EID_IPV6_PREFIX_BINARY, (short) 66);
159         final Ipv6PrefixBinary resultPrefix = (Ipv6PrefixBinary) result.getAddress();
160
161         // expected result
162         assertArrayEquals(ipv6ExpectedByteAddress, resultPrefix.getIpv6AddressBinary().getValue());
163         assertEquals((short) 66, (short) resultPrefix.getIpv6MaskLength());
164     }
165
166     /**
167      * Tests {@link MaskUtil#normalize(Eid eid, short mask)} method with Ipv4Prefix.
168      */
169     @Test
170     public void normalizeTest_withIpv4Prefix_withMask() {
171         // input ip: 255.255.255.255, mask: 20
172         final Eid result = MaskUtil.normalize(EID_IPV4_PREFIX, (short) 20);
173         final org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address
174                 .address.Ipv4Prefix resultPrefix = (org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp
175                 .address.types.rev151105.lisp.address.address.Ipv4Prefix) result.getAddress();
176
177         // expected result
178         final String expectedResult = "255.255.240.0" + MASK_2;
179         assertEquals(expectedResult, resultPrefix.getIpv4Prefix().getValue());
180     }
181
182     /**
183      * Tests {@link MaskUtil#normalize(Eid eid, short mask)} method with Ipv6Prefix.
184      */
185     @Test
186     public void normalizeTest_withIpv6Prefix_withMask() {
187         // input ip: 1111:2222:3333:4444:5555:6666:7777:8888, mask: 66
188         final Eid result = MaskUtil.normalize(EID_IPV6_PREFIX, (short) 66);
189         final org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address
190                 .address.Ipv6Prefix resultPrefix = (org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp
191                 .address.types.rev151105.lisp.address.address.Ipv6Prefix) result.getAddress();
192
193         // expected result
194         final String expectedResult = "1111:2222:3333:4444:4000::" + MASK_3;
195         assertEquals(expectedResult, resultPrefix.getIpv6Prefix().getValue());
196     }
197
198     /**
199      * Tests {@link MaskUtil#normalize(Eid eid, short mask)} method with InstanceId.
200      */
201     @Test
202     public void normalizeTest_withInstanceId_withMask() {
203         //TODO finish this test when implementation is done
204         assertEquals(EID_INSTANCE_ID, MaskUtil.normalize(EID_INSTANCE_ID, (short) 0));
205     }
206
207     /**
208      * Tests {@link MaskUtil#normalize(Eid eid, short mask)} method with Mac.
209      */
210     @Test
211     public void normalizeTest_withMac_withMask() {
212         assertEquals(EID_MAC, MaskUtil.normalize(EID_MAC, (short) 0));
213     }
214
215     /**
216      * Tests {@link MaskUtil#normalize(Eid eid)} method with Ipv4PrefixBinary.
217      */
218     @Test
219     public void normalizeTest_withIpv4PrefixBinary() throws UnknownHostException {
220         // input ip: 255.255.255.255, mask: 20
221         final Eid result = MaskUtil.normalize(EID_IPV4_PREFIX_BINARY);
222         final Ipv4PrefixBinary resultPrefix = (Ipv4PrefixBinary) result.getAddress();
223
224         // expected result
225         final byte[] expectedResult = Inet4Address.getByName("255.255.240.0").getAddress();
226         assertArrayEquals(expectedResult, resultPrefix.getIpv4AddressBinary().getValue());
227         assertEquals((short) 20, (short) resultPrefix.getIpv4MaskLength());
228     }
229
230     /**
231      * Tests {@link MaskUtil#normalize(Eid eid)} method with Ipv6PrefixBinary.
232      */
233     @Test
234     public void normalizeTest_withIpv6PrefixBinary() throws UnknownHostException {
235         // input ip: 1111:2222:3333:4444:5555:6666:7777:8888, mask: 66
236         final Eid result = MaskUtil.normalize(EID_IPV6_PREFIX_BINARY);
237         final Ipv6PrefixBinary resultPrefix = (Ipv6PrefixBinary) result.getAddress();
238
239         // expected result
240         final byte[] expectedResult = Inet6Address.getByName("1111:2222:3333:4444:4000::").getAddress();
241         assertArrayEquals(expectedResult, resultPrefix.getIpv6AddressBinary().getValue());
242         assertEquals((short) 66, (short) resultPrefix.getIpv6MaskLength());
243     }
244
245     /**
246      * Tests {@link MaskUtil#normalize} method with Ipv4Prefix.
247      */
248     @Test
249     public void normalizeTest_withIpv4Prefix() {
250         // input ip: 255.255.255.255, mask: 20
251         final Eid result = MaskUtil.normalize(EID_IPV4_PREFIX);
252         final org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address
253                 .address.Ipv4Prefix resultPrefix = (org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp
254                 .address.types.rev151105.lisp.address.address.Ipv4Prefix) result.getAddress();
255
256         // expected result
257         final String expectedResult = "255.255.240.0" + MASK_2;
258         assertEquals(expectedResult, resultPrefix.getIpv4Prefix().getValue());
259     }
260
261     /**
262      * Tests {@link MaskUtil#normalize} method with Ipv6Prefix.
263      */
264     @Test
265     public void normalizeTest_withIpv6Prefix() {
266         // input ip: 1111:2222:3333:4444:5555:6666:7777:8888, mask: 66
267         final Eid result = MaskUtil.normalize(EID_IPV6_PREFIX);
268         final org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address
269                 .address.Ipv6Prefix resultPrefix = (org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp
270                 .address.types.rev151105.lisp.address.address.Ipv6Prefix) result.getAddress();
271
272         // expected result
273         final String expectedResult = "1111:2222:3333:4444:4000::" + MASK_3;
274         assertEquals(expectedResult, resultPrefix.getIpv6Prefix().getValue());
275     }
276
277     /**
278      * Tests {@link MaskUtil#normalize} method with Ipv4.
279      */
280     @Test
281     public void normalizeTest_withIpv4() {
282         // input ip: 1.2.3.0
283         final Eid result = MaskUtil.normalize(EID_IPV4);
284         final org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address
285                 .address.Ipv4Prefix resultPrefix = (org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp
286                 .address.types.rev151105.lisp.address.address.Ipv4Prefix) result.getAddress();
287
288         // expected result
289         final String expectedResult = "1.2.3.0" + MASK_1;
290         assertEquals(expectedResult, resultPrefix.getIpv4Prefix().getValue());
291     }
292
293     /**
294      * Tests {@link MaskUtil#normalize} method with Ipv6.
295      */
296     @Test
297     public void normalizeTest_withIpv6() {
298         // input ip: 1111:2222:3333:4444:5555:6666:7777:8888
299         final Eid result = MaskUtil.normalize(EID_IPV6);
300         final org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address
301                 .address.Ipv6Prefix resultPrefix = (org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp
302                 .address.types.rev151105.lisp.address.address.Ipv6Prefix) result.getAddress();
303
304         // expected result
305         final String expectedResult = "1111:2222:3333:4444:5555:6666:7777:8888" + MASK_4;
306         assertEquals(expectedResult, resultPrefix.getIpv6Prefix().getValue());
307     }
308
309     /**
310      * Tests {@link MaskUtil#normalize} method with InstanceId.
311      */
312     @Test
313     public void normalizeTest_withInstanceId() {
314         //TODO finish this test when implementation is done
315         assertEquals(EID_INSTANCE_ID, MaskUtil.normalize(EID_INSTANCE_ID));
316     }
317
318     /**
319      * Tests {@link MaskUtil#normalize} method with SourceDestKey.
320      */
321     @Test
322     public void normalizeTest_withSourceDestKey() {
323         //expected result
324         final String expectedSourceAddress = "1.2.0.0" + MASK_2;
325         final String expectedDestAddress = "1.3.4.0";
326
327         final Eid resultEid = MaskUtil.normalize(EID_SOURCE_DEST_KEY);
328         final SourceDestKey resultAddr = (SourceDestKey) resultEid.getAddress();
329         final String resultSource = resultAddr.getSourceDestKey().getSource().getIpPrefix().getIpv4Prefix().getValue();
330         final String resultDest = resultAddr.getSourceDestKey().getDest().getIpAddress().getIpv4Address().getValue();
331
332         assertEquals(expectedSourceAddress, resultSource);
333         assertEquals(expectedDestAddress, resultDest);
334     }
335
336     /**
337      * Tests {@link MaskUtil#normalize} method with ServicePath.
338      */
339     @Test
340     public void normalizeTest_withServicePath() {
341         // expected result
342         final Eid expectedResult = LispAddressUtil.asServicePathEid(-1, 1L, (short)0);
343
344         // result
345         final Eid result = MaskUtil.normalize(EID_SERVICE_PATH);
346         assertEquals(expectedResult, result);
347     }
348
349     /**
350      * Tests {@link MaskUtil#normalize} method with non-maskable address type.
351      */
352     @Test
353     public void normalizeTest_withNonMaskableAddress() {
354         assertEquals(EID_MAC, MaskUtil.normalize(EID_MAC));
355     }
356
357     /**
358      * Tests {@link MaskUtil#getMaxMask} method.
359      */
360     @Test
361     public void getMaxMaskTest() {
362         assertEquals(32, MaskUtil.getMaxMask(ADDRESS_IPV4));
363         assertEquals(32, MaskUtil.getMaxMask(ADDRESS_IPV4_PREFIX));
364         assertEquals(128, MaskUtil.getMaxMask(ADDRESS_IPV6));
365         assertEquals(128, MaskUtil.getMaxMask(ADDRESS_IPV6_PREFIX));
366         assertEquals(-1, MaskUtil.getMaxMask(ADDRESS_MAC));
367     }
368
369     /**
370      * Tests {@link MaskUtil#getMaskForAddress} method.
371      */
372     @Test
373     public void getMaskForAddressTest() {
374         // SimpleAddress
375         assertEquals(-1, MaskUtil.getMaskForAddress(SIMPLE_ADDRESS_IPV4));
376         assertEquals((short) 32, MaskUtil.getMaskForAddress(SIMPLE_ADDRESS_IPV4_PREFIX));
377         assertEquals((short) 128, MaskUtil.getMaskForAddress(SIMPLE_ADDRESS_IPV6_PREFIX));
378
379         // Address
380         assertEquals((short) 32, MaskUtil.getMaskForAddress(ADDRESS_IPV4));
381         assertEquals((short) 128, MaskUtil.getMaskForAddress(ADDRESS_IPV6));
382         assertEquals((short) 32, MaskUtil.getMaskForAddress(ADDRESS_IPV4_BINARY));
383         assertEquals((short) 128, MaskUtil.getMaskForAddress(ADDRESS_IPV6_BINARY));
384         assertEquals((short) 32, MaskUtil.getMaskForAddress(ADDRESS_IPV4_PREFIX));
385         assertEquals((short) 128, MaskUtil.getMaskForAddress(ADDRESS_IPV6_PREFIX));
386         assertEquals((short) 32, MaskUtil.getMaskForAddress(ADDRESS_INSTANCE_ID_IP_PREFIX));
387         assertEquals((short) 32, MaskUtil.getMaskForAddress(IPV4_PREFIX_BINARY));
388         assertEquals((short) 128, MaskUtil.getMaskForAddress(IPV6_PREFIX_BINARY));
389         assertEquals((short) -1, MaskUtil.getMaskForAddress(ADDRESS_MAC));
390     }
391
392     /**
393      * Tests {@link MaskUtil#getAddressStringForIpPrefix} method.
394      */
395     @Test
396     public void getAddressStringForIpPrefixTest() {
397         assertEquals(IPV4_STRING_1, MaskUtil.getAddressStringForIpPrefix(new IpPrefix(IPV4_PREFIX)));
398     }
399
400     /**
401      * Tests {@link MaskUtil#getAddressStringForIpv4Prefix} method.
402      */
403     @Test
404     public void getAddressStringForIpv4PrefixTest() {
405         assertEquals(IPV4_STRING_1, MaskUtil
406                 .getAddressStringForIpv4Prefix(new Ipv4PrefixBuilder().setIpv4Prefix(IPV4_PREFIX).build()));
407     }
408
409     /**
410      * Tests {@link MaskUtil#getAddressStringForIpv6Prefix} method.
411      */
412     @Test
413     public void getAddressStringForIpv6PrefixTest() {
414         assertEquals(IPV6_STRING, MaskUtil
415                 .getAddressStringForIpv6Prefix(new Ipv6PrefixBuilder().setIpv6Prefix(IPV6_PREFIX).build()));
416     }
417
418     private static SourceDestKeyBuilder getDefaultSourceDestKeyAddressBuilder() {
419         return new SourceDestKeyBuilder()
420                 .setSourceDestKey(new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp
421                         .address.types.rev151105.lisp.address.address.source.dest.key.SourceDestKeyBuilder()
422                         .setSource(new SimpleAddress(new IpPrefix(new Ipv4Prefix(IPV4_STRING_1 + MASK_2))))
423                         .setDest(new SimpleAddress(new IpAddress(new Ipv4Address(IPV4_STRING_2)))).build());
424     }
425
426     private static InstanceId getDefaultIpPrefixInstanceId() {
427         return new InstanceIdBuilder()
428                 .setInstanceId(new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types
429                         .rev151105.lisp.address.address.instance.id.InstanceIdBuilder()
430                         .setIid(new InstanceIdType(1L))
431                         .setAddress(new SimpleAddress(new IpPrefix(IPV4_PREFIX)))
432                         .setMaskLength((short) 32).build())
433                 .build();
434     }
435
436     private static InstanceId getDefaultIpInstanceId() {
437         return new InstanceIdBuilder()
438                 .setInstanceId(new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types
439                         .rev151105.lisp.address.address.instance.id.InstanceIdBuilder()
440                         .setIid(new InstanceIdType(1L))
441                         .setAddress(new SimpleAddress(new IpAddress(new Ipv4Address(IPV4_STRING_1)))).build())
442                 .build();
443     }
444
445     private static ServicePath getDefaultServicePath() {
446         org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address
447                 .service.path.ServicePathBuilder servicePathBuilder = new org.opendaylight.yang.gen.v1.urn.ietf.params
448                 .xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.service.path.ServicePathBuilder();
449
450         return new ServicePathBuilder().setServicePath(servicePathBuilder
451                         .setServiceIndex((short) 1)
452                         .setServicePathId(new ServicePathIdType(1L)).build())
453                 .build();
454     }
455 }