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