fc4db91ef85ac28e6e4a0b1d8415e18eb1d394ff
[lispflowmapping.git] / mappingservice / lisp-proto / src / test / java / org / opendaylight / lispflowmapping / lisp / util / LispAddressUtilTest.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
11 import static org.junit.Assert.assertEquals;
12 import static org.junit.Assert.assertNull;
13 import static org.junit.Assert.assertTrue;
14
15 import java.net.Inet4Address;
16 import java.net.Inet6Address;
17 import java.net.InetAddress;
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.rev100924.AsNumber;
21 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpAddress;
22 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpPrefix;
23 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv4Address;
24 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv4Prefix;
25 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv6Address;
26 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv6Prefix;
27 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.AsNumberAfi;
28 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.DistinguishedNameAfi;
29 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.DistinguishedNameType;
30 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.InstanceIdType;
31 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.Ipv4Afi;
32 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.Ipv4PrefixAfi;
33 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.Ipv6Afi;
34 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.Ipv6PrefixAfi;
35 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.LispAddressFamily;
36 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.MacAfi;
37 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.ServicePathIdType;
38 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.SimpleAddress;
39 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.Address;
40 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.DistinguishedName;
41 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.Ipv4;
42 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.Ipv6;
43 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.Mac;
44 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.service.path.ServicePath;
45 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev100924.MacAddress;
46 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.eid.container.Eid;
47 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.rloc.container.Rloc;
48
49 public class LispAddressUtilTest {
50
51
52     private static final char[] DUMMY_CHARACTER_ARRAY_TEST = new char[]{'a', 'b', 'c', 'd'};
53     private static final Long NUMBER_TEST = 5L;
54
55     private static final String MAC_ADDRESS_VALUE_TEST = "aa:bb:cc:dd:ee:ff";
56     private static final MacAddress MAC_ADDRESS_TEST = new MacAddress("aa:bb:cc:dd:ee:ff");
57
58     private static final String IPV4_ADDRESS_PREFIX_VALUE_TEST = "192.168.1.2/30";
59     private static final Ipv4Prefix IPV4_ADDRESS_PREFIX_TEST = new Ipv4Prefix(IPV4_ADDRESS_PREFIX_VALUE_TEST);
60
61     private static final IpPrefix IP_ADDRESS_PREFIX = new IpPrefix(IPV4_ADDRESS_PREFIX_TEST);
62
63     private static final String IPV6_ADDRESS_PREFIX_VALUE_TEST = "102:304:506:708:90a:b0c:d0e:f11/30";
64     private static final Ipv6Prefix IPV6_ADDRESS_PREFIX_TEST = new Ipv6Prefix(IPV6_ADDRESS_PREFIX_VALUE_TEST);
65
66     private static final byte[] IPV4_ADDRESS_BYTES_TEST = new byte[]{(byte) 192, (byte) 168, 1, 1};
67     private static final String IPV4_ADDRESS_VALUE_TEST = "192.168.1.1";
68     private static final Ipv4Address IPV4_ADDRESS_TEST = new Ipv4Address(IPV4_ADDRESS_VALUE_TEST);
69     private static final IpAddress IP_ADDRESS_OBJECT_GENERAL_TEST = new IpAddress(IPV4_ADDRESS_TEST);
70     private static final SimpleAddress SIMPLE_ADDRESS_TEST = new SimpleAddress(IP_ADDRESS_OBJECT_GENERAL_TEST);
71
72     private static final byte[] IPV6_ADDRESS_BYTES_TEST = new byte[]{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
73             15, 16};
74     private static final String IPV6_ADDRESS_VALUE_TEST = "102:304:506:708:90a:b0c:d0e:f10";
75     private static final Ipv6Address IPV6_ADDRESS_TEST = new Ipv6Address(IPV6_ADDRESS_VALUE_TEST);
76
77     private static final Short DUMMY_SERVICE_INDEX = 45;
78     private static final Long DUMMY_SERVICE_PATH_ID_TYPE = 46L;
79     private static final String DISTINGUISHED_NAME_TYPE_VALUE_TEST = "dummy distinguished name type";
80     private static final String DISTINGUISHED_NAME_TYPE_VALUE_WITH_MAC_TEST = MAC_ADDRESS_VALUE_TEST;
81     private static final DistinguishedNameType DISTINGUISHED_NAME_TYPE_TEST = new DistinguishedNameType
82             (DISTINGUISHED_NAME_TYPE_VALUE_TEST);
83     private static final Long AS_NUMBER_TEST = 100L;
84
85     private static final Long INSTANCE_ID_TYPE_VALUE_TEST = 121L;
86     private static final Short INSTANCE_ID_TYPE_VALUE_SHORT_TEST = 122;
87     private static final InstanceIdType INSTANCE_ID_TYPE_TEST = new InstanceIdType(INSTANCE_ID_TYPE_VALUE_TEST);
88
89     /**
90      * Tests {@link LispAddressUtil#addressTypeFromSimpleAddress} and {@link
91      * LispAddressUtil#addressFromSimpleAddress} methods
92      * with ipAddress
93      */
94     @Test
95     public void addressFromSimpleAddressTest_asAnyIpAddress() {
96         final Class<? extends LispAddressFamily> addressClass = LispAddressUtil.addressTypeFromSimpleAddress
97                 (SIMPLE_ADDRESS_TEST);
98         assertEquals(Ipv4Afi.class, addressClass);
99
100         final Address address = LispAddressUtil.addressFromSimpleAddress(SIMPLE_ADDRESS_TEST);
101         assertTrue(address instanceof Ipv4);
102     }
103
104     /**
105      * Tests {@link LispAddressUtil#addressTypeFromSimpleAddress} and {@link
106      * LispAddressUtil#addressFromSimpleAddress} methods
107      * with ipPrefix
108      */
109     @Test
110     public void addressFromSimpleAddressTest_asIpPrefix() {
111         final SimpleAddress simpleAddress = new SimpleAddress(new IpPrefix(new Ipv4Prefix(IPV4_ADDRESS_PREFIX_VALUE_TEST)));
112         final Class<? extends LispAddressFamily> addressClass = LispAddressUtil.addressTypeFromSimpleAddress
113                 (simpleAddress);
114         assertEquals(Ipv4PrefixAfi.class, addressClass);
115
116         final Address address = LispAddressUtil.addressFromSimpleAddress(simpleAddress);
117         assertTrue(address instanceof org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address
118                 .types.rev151105.lisp.address.address.Ipv4Prefix);
119     }
120
121     /**
122      * Tests {@link LispAddressUtil#addressTypeFromSimpleAddress} and {@link
123      * LispAddressUtil#addressFromSimpleAddress} methods
124      * with mac address
125      */
126     @Test
127     public void addressFromSimpleAddressTest_asMacAddress() {
128         final SimpleAddress simpleAddress = new SimpleAddress(new MacAddress(MAC_ADDRESS_VALUE_TEST));
129         final Class<? extends LispAddressFamily> addressClass = LispAddressUtil.addressTypeFromSimpleAddress
130                 (simpleAddress);
131         assertEquals(MacAfi.class, addressClass);
132
133         final Address address = LispAddressUtil.addressFromSimpleAddress(simpleAddress);
134         assertTrue(address instanceof Mac);
135     }
136
137     /**
138      * Tests {@link LispAddressUtil#addressTypeFromSimpleAddress} and {@link
139      * LispAddressUtil#addressFromSimpleAddress} methods
140      * with general address
141      */
142     @Test
143     public void addressFromSimpleAddressTest_asAddress() {
144         final SimpleAddress simpleAddress = new SimpleAddress(DUMMY_CHARACTER_ARRAY_TEST);
145         final Class<? extends LispAddressFamily> addressClass = LispAddressUtil.addressTypeFromSimpleAddress
146                 (simpleAddress);
147         assertEquals(DistinguishedNameAfi.class, addressClass);
148
149         final Address address = LispAddressUtil.addressFromSimpleAddress(simpleAddress);
150         assertTrue(address instanceof DistinguishedName);
151     }
152
153     /**
154      * Tests {@link LispAddressUtil#addressTypeFromSimpleAddress} and {@link
155      * LispAddressUtil#addressFromSimpleAddress} methods
156      * with address as number
157      */
158     @Test
159     public void addressFromSimpleAddressTest_asNumber() {
160         final SimpleAddress simpleAddress = new SimpleAddress(new AsNumber(NUMBER_TEST));
161         final Class<? extends LispAddressFamily> addressClass = LispAddressUtil.addressTypeFromSimpleAddress
162                 (simpleAddress);
163         assertEquals(AsNumberAfi.class, addressClass);
164
165         final Address address = LispAddressUtil.addressFromSimpleAddress(simpleAddress);
166         assertTrue(address instanceof org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address
167                 .types.rev151105.lisp.address.address.AsNumber);
168     }
169
170     /**
171      * Tests {@link LispAddressUtil#addressFromInet(InetAddress)} and {@link LispAddressUtil#addressTypeFromInet
172      * (InetAddress)}
173      * methods with ipv4 address
174      *
175      * @throws UnknownHostException
176      */
177     @Test
178     public void addressFromInet_ipv4() throws UnknownHostException {
179         final InetAddress ipv4InetAddress = Inet4Address.getByAddress(IPV4_ADDRESS_BYTES_TEST);
180         final Class<? extends LispAddressFamily> addressClass = LispAddressUtil.addressTypeFromInet(ipv4InetAddress);
181         assertEquals(Ipv4Afi.class, addressClass);
182
183         final Address address = LispAddressUtil.addressFromInet(ipv4InetAddress);
184         assertTrue(address instanceof Ipv4);
185         assertEquals(IPV4_ADDRESS_VALUE_TEST, ((Ipv4) address).getIpv4().getValue());
186     }
187
188     /**
189      * Tests {@link LispAddressUtil#addressFromInet(InetAddress)} and {@link LispAddressUtil#addressTypeFromInet
190      * (InetAddress)}
191      * methods with ipv6 address
192      *
193      * @throws UnknownHostException
194      */
195     @Test
196     public void addressFromInet_ipv6() throws UnknownHostException {
197         final InetAddress ipv6InetAddress = Inet6Address.getByAddress(IPV6_ADDRESS_BYTES_TEST);
198         final Class<? extends LispAddressFamily> addressClass = LispAddressUtil.addressTypeFromInet(ipv6InetAddress);
199         assertEquals(Ipv6Afi.class, addressClass);
200
201         final Address address = LispAddressUtil.addressFromInet(ipv6InetAddress);
202         assertTrue(address instanceof Ipv6);
203         assertEquals(IPV6_ADDRESS_VALUE_TEST, ((Ipv6) address).getIpv6().getValue());
204     }
205
206     /**
207      * Tests {@link LispAddressUtil#addressFromIpAddress(IpAddress)} and {@link
208      * LispAddressUtil#addressTypeFromIpAddress(IpAddress)}
209      * methods with ipv4 address
210      */
211     @Test
212     public void addressFromIpAddress_ipv4() {
213         final IpAddress ipv4Address = new IpAddress(IPV4_ADDRESS_TEST);
214         final Class<? extends LispAddressFamily> addressClass = LispAddressUtil.addressTypeFromIpAddress(ipv4Address);
215         assertEquals(Ipv4Afi.class, addressClass);
216
217         final Address address = LispAddressUtil.addressFromIpAddress(ipv4Address);
218         assertTrue(address instanceof Ipv4);
219         assertEquals(IPV4_ADDRESS_VALUE_TEST, ((Ipv4) address).getIpv4().getValue());
220     }
221
222     /**
223      * Tests {@link LispAddressUtil#addressFromIpAddress(IpAddress)} and {@link
224      * LispAddressUtil#addressTypeFromIpAddress(IpAddress)}
225      * methods with ipv6 address
226      */
227     @Test
228     public void addressFromIpAddress_ipv6() {
229         final IpAddress ipv6Address = new IpAddress(new Ipv6Address(IPV6_ADDRESS_VALUE_TEST));
230         final Class<? extends LispAddressFamily> addressClass = LispAddressUtil.addressTypeFromIpAddress(ipv6Address);
231         assertEquals(Ipv6Afi.class, addressClass);
232
233         final Address address = LispAddressUtil.addressFromIpAddress(ipv6Address);
234         assertTrue(address instanceof Ipv6);
235         assertEquals(IPV6_ADDRESS_VALUE_TEST, ((Ipv6) address).getIpv6().getValue());
236     }
237
238     /**
239      * Tests {@link LispAddressUtil#addressFromIpAddress(IpAddress)} and {@link
240      * LispAddressUtil#addressTypeFromIpAddress(IpAddress)}
241      * methods with null value instead off address.
242      */
243     @Test
244     public void addressFromIpAddress_null() {
245         final Class<? extends LispAddressFamily> addressClass = LispAddressUtil.addressTypeFromIpAddress(null);
246         assertNull(addressClass);
247
248         final Address address = LispAddressUtil.addressFromIpAddress(null);
249         assertNull(address);
250     }
251
252     /**
253      * Tests {@link LispAddressUtil#addressFromIpPrefix(IpPrefix)} and {@link
254      * LispAddressUtil#addressTypeFromIpPrefix(IpPrefix)}
255      * methods with ipv4 address
256      */
257     @Test
258     public void addressFromIpPrefix_ipv4() {
259         IpPrefix ipv4Prefix = new IpPrefix(new Ipv4Prefix(IPV4_ADDRESS_PREFIX_VALUE_TEST));
260         final Class<? extends LispAddressFamily> addressClass = LispAddressUtil.addressTypeFromIpPrefix(ipv4Prefix);
261         assertEquals(Ipv4PrefixAfi.class, addressClass);
262
263         final Address address = LispAddressUtil.addressFromIpPrefix(ipv4Prefix);
264         assertTrue(address instanceof org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.
265                 types.rev151105.lisp.address.address.Ipv4Prefix);
266         assertEquals(IPV4_ADDRESS_PREFIX_VALUE_TEST, ((org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.
267                 address.types.rev151105.lisp.address.address.Ipv4Prefix) address).getIpv4Prefix().getValue());
268     }
269
270     /**
271      * Tests {@link LispAddressUtil#addressFromIpPrefix(IpPrefix)} and {@link
272      * LispAddressUtil#addressTypeFromIpPrefix(IpPrefix)}
273      * methods with ipv6 address
274      */
275     @Test
276     public void addressFromIpPrefix_ipv6() {
277         IpPrefix ipv6Address = new IpPrefix(new Ipv6Prefix(IPV6_ADDRESS_PREFIX_VALUE_TEST));
278         final Class<? extends LispAddressFamily> addressClass = LispAddressUtil.addressTypeFromIpPrefix(ipv6Address);
279         assertEquals(Ipv6PrefixAfi.class, addressClass);
280
281         final Address address = LispAddressUtil.addressFromIpPrefix(ipv6Address);
282         assertTrue(address instanceof org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address
283                 .types.rev151105.lisp.address.address.Ipv6Prefix);
284         assertEquals(IPV6_ADDRESS_PREFIX_VALUE_TEST,
285                 ((org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp
286                         .address.address.Ipv6Prefix) address).getIpv6Prefix().getValue());
287     }
288
289     /**
290      * Tests {@link LispAddressUtil#addressFromIpPrefix(IpPrefix)} and {@link LispAddressUtil#addressTypeFromIpPrefix
291      * (IpPrefix)}
292      * methods with null value instead off address.
293      */
294     @Test
295     public void addressFromIpPrefix_null() {
296         final Class<? extends LispAddressFamily> addressClass = LispAddressUtil.addressTypeFromIpPrefix(null);
297         assertNull(addressClass);
298
299         final Address address = LispAddressUtil.addressFromIpPrefix(null);
300         assertNull(address);
301     }
302
303     /**
304      * Tests {@link LispAddressUtil#addressFromMacAddress(MacAddress)} methods with mac address.
305      */
306     @Test
307     public void addressFromMacAddress_mac() {
308         final Address address = LispAddressUtil.addressFromMacAddress(new MacAddress(MAC_ADDRESS_VALUE_TEST));
309         assertTrue(address instanceof Mac);
310         assertEquals(MAC_ADDRESS_VALUE_TEST, ((Mac) address).getMac().getValue());
311     }
312
313     /**
314      * Tests {@link LispAddressUtil#addressFromMacAddress(MacAddress)} methods with null instead of address.
315      */
316     @Test
317     public void addressFromMacAddress_null() {
318         final Address address = LispAddressUtil.addressFromMacAddress(null);
319         assertNull(address);
320     }
321
322
323     /**
324      * Test {@link LispAddressUtil#addressFromServicePath(ServicePath)} method with concrete servicePath
325      */
326     @Test
327     public void addressFromServicePathTest_withServicePath() {
328         org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address
329                 .address.service.path.ServicePathBuilder servicePathBuilder = new org.opendaylight.yang.gen.v1.urn.ietf
330                 .params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address
331                 .address.service.path.ServicePathBuilder();
332         servicePathBuilder.setServiceIndex(DUMMY_SERVICE_INDEX);
333         servicePathBuilder.setServicePathId(new ServicePathIdType(DUMMY_SERVICE_PATH_ID_TYPE));
334
335         ServicePath expectedAddress = servicePathBuilder.build();
336         final Address testedAddress = LispAddressUtil.addressFromServicePath(expectedAddress);
337         assertTrue(testedAddress instanceof org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address
338                 .types.rev151105.lisp.address.address.ServicePath);
339         assertEquals(expectedAddress, ((org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address
340                 .types.rev151105.lisp.address.address.ServicePath) testedAddress).getServicePath());
341     }
342
343     /**
344      * Test {@link LispAddressUtil#addressFromServicePath(ServicePath)} method with null value
345      */
346     @Test
347     public void addressFromServicePathTest_withNull() {
348         final Address testedAddress = LispAddressUtil.addressFromServicePath(null);
349         assertNull(testedAddress);
350     }
351
352     /**
353      * Test {@link LispAddressUtil#addressFromDistinguishedName(DistinguishedNameType)} method with distinguished name }
354      */
355     @Test
356     public void addressFromDistinguishedNameTest_withDistinguishedName() {
357         final DistinguishedNameType distinguishedNameType = new DistinguishedNameType(DISTINGUISHED_NAME_TYPE_VALUE_TEST);
358         final Address testedAddress = LispAddressUtil.addressFromDistinguishedName(distinguishedNameType);
359
360         assertTrue(testedAddress instanceof DistinguishedName);
361         assertEquals(distinguishedNameType, ((DistinguishedName) testedAddress).getDistinguishedName());
362     }
363
364     /**
365      * Test {@link LispAddressUtil#addressFromDistinguishedName(DistinguishedNameType)} method with null value }
366      */
367     @Test
368     public void addressFromDistinguishedNameTest_withNull() {
369         final Address testedAddress = LispAddressUtil.addressFromDistinguishedName(null);
370         assertNull(testedAddress);
371     }
372
373     /**
374      * Test {@link LispAddressUtil#addressFromAsNumber(AsNumber)} method with as number value }
375      */
376     @Test
377     public void addressFromAsNumberTest_withAdNumber() {
378         final AsNumber expectedAddress = new AsNumber(AS_NUMBER_TEST);
379         final Address testedAddress = LispAddressUtil.addressFromAsNumber(expectedAddress);
380         assertTrue(testedAddress instanceof org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp
381                 .address.types.rev151105.lisp.address.address.AsNumber);
382         assertEquals(expectedAddress, ((org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp
383                 .address.types.rev151105.lisp.address.address.AsNumber) testedAddress).getAsNumber());
384     }
385
386     /**
387      * Test {@link LispAddressUtil#addressFromAsNumber(AsNumber)} method with null instead of value }
388      */
389     @Test
390     public void addressFromAsNumberTest_withNull() {
391         final Address testedAddress = LispAddressUtil.addressFromAsNumber(null);
392         assertNull(testedAddress);
393     }
394
395
396     /**
397      * Tests:
398      * - {@link LispAddressUtil#toRloc(InetAddress)}
399      * - {@link LispAddressUtil#toRloc(Ipv4Address)}
400      * - {@link LispAddressUtil#toRloc(Ipv6Address)}
401      * - {@link LispAddressUtil#toRloc(SimpleAddress)}
402      * methods.
403      */
404     @Test
405     public void toRloc() throws UnknownHostException {
406         InetAddress ipv4AddressInet = Inet4Address.getByAddress(IPV4_ADDRESS_BYTES_TEST);
407         final Rloc rlocFromInetAddress = LispAddressUtil.toRloc(ipv4AddressInet);
408         assertEquals(Ipv4Afi.class, rlocFromInetAddress.getAddressType());
409         assertEquals(IPV4_ADDRESS_VALUE_TEST, ((Ipv4)rlocFromInetAddress.getAddress()).getIpv4().getValue());
410
411         final Rloc rlocFromIpv4Address = LispAddressUtil.toRloc(IPV4_ADDRESS_TEST);
412         assertEquals(Ipv4Afi.class, rlocFromIpv4Address.getAddressType());
413         assertEquals(IPV4_ADDRESS_VALUE_TEST, ((Ipv4)rlocFromIpv4Address.getAddress()).getIpv4().getValue());
414
415
416         final Rloc rlocFromIpv6Address = LispAddressUtil.toRloc(IPV6_ADDRESS_TEST);
417         assertEquals(Ipv6Afi.class, rlocFromIpv6Address.getAddressType());
418         assertEquals(IPV6_ADDRESS_VALUE_TEST, ((Ipv6)rlocFromIpv6Address.getAddress()).getIpv6().getValue());
419
420         final Rloc rlocFromSimpleAddress = LispAddressUtil.toRloc(SIMPLE_ADDRESS_TEST);
421         assertEquals(Ipv4Afi.class, rlocFromSimpleAddress.getAddressType());
422         assertEquals(IPV4_ADDRESS_VALUE_TEST, ((Ipv4) rlocFromSimpleAddress.getAddress()).getIpv4().getValue());
423     }
424
425     /**
426      * Test {@link LispAddressUtil#asIpv4Rloc(String)} method with ipv4 or ipv6.
427      * Test {@link LispAddressUtil#asIpv6Rloc(String)} method with ipv4 or ipv6.
428      */
429     @Test
430     public void asIpvRloc() {
431         final Rloc rlocFromIpV4 = LispAddressUtil.asIpv4Rloc(IPV4_ADDRESS_VALUE_TEST);
432         assertEquals(Ipv4Afi.class, rlocFromIpV4.getAddressType());
433         assertEquals(IPV4_ADDRESS_VALUE_TEST, ((Ipv4) rlocFromIpV4.getAddress()).getIpv4().getValue());
434
435         final Rloc rlocFromIpV6 = LispAddressUtil.asIpv6Rloc(IPV6_ADDRESS_VALUE_TEST);
436         assertEquals(Ipv6Afi.class, rlocFromIpV6.getAddressType());
437         assertEquals(IPV6_ADDRESS_VALUE_TEST, ((Ipv6) rlocFromIpV6.getAddress()).getIpv6().getValue());
438     }
439
440     /**
441      * Test
442      * - {@link LispAddressUtil#toEid(Ipv6Address, InstanceIdType)}
443      * - {@link LispAddressUtil#asIpv6PrefixEid(String)}
444      * methods.
445      */
446     @Test
447     public void toEid_ipv6Prefix() {
448         Eid eidFromIpv6Prefix = LispAddressUtil.toEid(IPV6_ADDRESS_PREFIX_TEST, INSTANCE_ID_TYPE_TEST);
449         verifyToEidWithIpv6Prefix(eidFromIpv6Prefix, true);
450
451         eidFromIpv6Prefix = LispAddressUtil.asIpv6PrefixEid(IPV6_ADDRESS_PREFIX_VALUE_TEST);
452         verifyToEidWithIpv6Prefix(eidFromIpv6Prefix, false);
453         //TODO missing one method with as ....
454     }
455
456     /**
457      * Test
458      * - {@link LispAddressUtil#toEid(MacAddress, InstanceIdType)}
459      * - {@link LispAddressUtil#asMacEid(String)}
460      * - {@link LispAddressUtil#asMacEid(String, long)}
461      * methods.
462      */
463     @Test
464     public void toEid_mac() {
465         Eid eidFromMac = LispAddressUtil.toEid(MAC_ADDRESS_TEST, INSTANCE_ID_TYPE_TEST);
466         verifyToEidWithMacAddress(eidFromMac, true);
467
468         eidFromMac = LispAddressUtil.asMacEid(MAC_ADDRESS_VALUE_TEST);
469         verifyToEidWithMacAddress(eidFromMac, false);
470
471         eidFromMac = LispAddressUtil.asMacEid(MAC_ADDRESS_VALUE_TEST, INSTANCE_ID_TYPE_VALUE_TEST);
472         verifyToEidWithMacAddress(eidFromMac, true);
473     }
474
475     /**
476      * Test
477      * - {@link LispAddressUtil#toEid(Ipv6Address, InstanceIdType)}
478      * - {@link LispAddressUtil#asIpv6Eid(String)}
479      * - {@link LispAddressUtil#asIpv6Eid(String, long)}
480      * methods.
481      */
482     @Test
483     public void toEid_ipv6() {
484         Eid eidFromIpv6 = LispAddressUtil.toEid(IPV6_ADDRESS_TEST, INSTANCE_ID_TYPE_TEST);
485         verifyToEidWithIpv6(eidFromIpv6, true);
486
487         eidFromIpv6 = LispAddressUtil.asIpv6Eid(IPV6_ADDRESS_VALUE_TEST);
488         verifyToEidWithIpv6(eidFromIpv6, false);
489
490         eidFromIpv6 = LispAddressUtil.asIpv6Eid(IPV6_ADDRESS_VALUE_TEST, INSTANCE_ID_TYPE_VALUE_TEST);
491         verifyToEidWithIpv6(eidFromIpv6, true);
492     }
493
494     /**
495      * Test
496      * - {@link LispAddressUtil#toEid(Ipv4Prefix, InstanceIdType)}
497      * - {@link LispAddressUtil#asIpv4PrefixEid(String)}
498      * methods.
499      */
500     @Test
501     public void toEid_ipv4Prefix() {
502         Eid eidFromIpv4Prefix = LispAddressUtil.toEid(IPV4_ADDRESS_PREFIX_TEST, INSTANCE_ID_TYPE_TEST);
503         verifyToEidWithIpv4Prefix(eidFromIpv4Prefix, true);
504
505         eidFromIpv4Prefix  = LispAddressUtil.asIpv4PrefixEid(IPV4_ADDRESS_PREFIX_VALUE_TEST);
506         verifyToEidWithIpv4Prefix(eidFromIpv4Prefix, false);
507         //TODO missing one method with as...
508
509     }
510
511     /**
512      * Test
513      * - {@link LispAddressUtil#toEid(Ipv4Address, InstanceIdType)}
514      * - {@link LispAddressUtil#asIpv4Eid(String)}
515      * - {@link LispAddressUtil#asIpv4Eid(String, long)}
516      * methods.
517      */
518     @Test
519     public void toEid_ipv4() {
520         Eid eidFromIpv4 = LispAddressUtil.toEid(IPV4_ADDRESS_TEST, INSTANCE_ID_TYPE_TEST);
521         verifyToEidWithIpv4(eidFromIpv4, true);
522
523         eidFromIpv4 = LispAddressUtil.asIpv4Eid(IPV4_ADDRESS_VALUE_TEST);
524         verifyToEidWithIpv4(eidFromIpv4, false);
525
526         eidFromIpv4 = LispAddressUtil.asIpv4Eid(IPV4_ADDRESS_VALUE_TEST, INSTANCE_ID_TYPE_VALUE_TEST);
527         verifyToEidWithIpv4(eidFromIpv4, true);
528     }
529
530     /**
531      * Test
532      * - {@link LispAddressUtil#toEid(IpPrefix, InstanceIdType)}
533      * method.
534      */
535     @Test
536     public void toEid_ipPrefix() {
537         final Eid eidFromIpPrefix = LispAddressUtil.toEid(IP_ADDRESS_PREFIX, INSTANCE_ID_TYPE_TEST);
538         verifyToEidWithIpv4Prefix(eidFromIpPrefix, true);
539     }
540
541     /**
542      * Test
543      * - {@link LispAddressUtil#toEid(DistinguishedNameType, InstanceIdType)}
544      * - {@link LispAddressUtil#asDistinguishedNameEid(String)}
545      * - {@link LispAddressUtil#asDistinguishedNameEid(String, long)}
546      * methods with various input.
547      */
548     @Test
549     public void toEid_distinguishedName() {
550         Eid eidFromDistinguishedName = LispAddressUtil.toEid(DISTINGUISHED_NAME_TYPE_TEST, INSTANCE_ID_TYPE_TEST);
551         verifyToEidWithDistinguishedName(eidFromDistinguishedName, true);
552
553         eidFromDistinguishedName = LispAddressUtil.asDistinguishedNameEid(DISTINGUISHED_NAME_TYPE_VALUE_TEST);
554         verifyToEidWithDistinguishedName(eidFromDistinguishedName, false);
555
556         eidFromDistinguishedName = LispAddressUtil.asDistinguishedNameEid
557                 (DISTINGUISHED_NAME_TYPE_VALUE_WITH_MAC_TEST, INSTANCE_ID_TYPE_VALUE_TEST);
558         verifyToEidWithMacAddress(eidFromDistinguishedName, true);
559     }
560
561     private void verifyToEidWithIpv6Prefix(final Eid eidFromIpv6Prefix, final boolean isVniChecked) {
562         assertEquals(Ipv6PrefixAfi.class, eidFromIpv6Prefix.getAddressType());
563         if (isVniChecked) {
564             assertEquals(INSTANCE_ID_TYPE_TEST, eidFromIpv6Prefix.getVirtualNetworkId());
565         }
566         assertEquals(IPV6_ADDRESS_PREFIX_VALUE_TEST, ((org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf
567                 .lisp.address.types.rev151105.lisp.address.address.Ipv6Prefix) eidFromIpv6Prefix.getAddress())
568                 .getIpv6Prefix().getValue());
569     }
570
571     private void verifyToEidWithIpv4(final Eid eidFromIpv4, final boolean isVniChecked) {
572         assertEquals(Ipv4Afi.class, eidFromIpv4.getAddressType());
573         if (isVniChecked) {
574             assertEquals(INSTANCE_ID_TYPE_TEST, eidFromIpv4.getVirtualNetworkId());
575         }
576         assertEquals(IPV4_ADDRESS_VALUE_TEST, ((Ipv4)eidFromIpv4.getAddress()).getIpv4().getValue());
577     }
578
579     private void verifyToEidWithIpv6(final Eid eidFromIpv6, final boolean isVniChecked) {
580         assertEquals(Ipv6Afi.class, eidFromIpv6.getAddressType());
581         if (isVniChecked) {
582             assertEquals(INSTANCE_ID_TYPE_TEST, eidFromIpv6.getVirtualNetworkId());
583         }
584         assertEquals(IPV6_ADDRESS_VALUE_TEST, ((Ipv6)eidFromIpv6.getAddress()).getIpv6().getValue());
585     }
586
587     private void verifyToEidWithIpv4Prefix(final Eid eidFromIpv4Prefix, final boolean isVniChecked) {
588         assertEquals(Ipv4PrefixAfi.class, eidFromIpv4Prefix.getAddressType());
589         if (isVniChecked) {
590             assertEquals(INSTANCE_ID_TYPE_TEST, eidFromIpv4Prefix.getVirtualNetworkId());
591         }
592         assertEquals(IPV4_ADDRESS_PREFIX_VALUE_TEST, ((org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf
593                 .lisp.address.types.rev151105.lisp.address.address.Ipv4Prefix)eidFromIpv4Prefix.getAddress())
594                 .getIpv4Prefix().getValue());
595     }
596
597     private void verifyToEidWithDistinguishedName(final Eid eidFromDistinguishedName, final boolean isVniChecked) {
598         assertEquals(DistinguishedNameAfi.class, eidFromDistinguishedName.getAddressType());
599         if (isVniChecked) {
600             assertEquals(INSTANCE_ID_TYPE_TEST, eidFromDistinguishedName.getVirtualNetworkId());
601         }
602         assertEquals(DISTINGUISHED_NAME_TYPE_TEST, ((DistinguishedName)eidFromDistinguishedName.getAddress())
603                 .getDistinguishedName());
604     }
605
606     private void verifyToEidWithMacAddress(final Eid eidFromMac, final boolean isVniChecked) {
607         assertEquals(MacAfi.class, eidFromMac.getAddressType());
608         if (isVniChecked) {
609             assertEquals(INSTANCE_ID_TYPE_TEST, eidFromMac.getVirtualNetworkId());
610         }
611         assertEquals(MAC_ADDRESS_VALUE_TEST, ((Mac)eidFromMac.getAddress()).getMac().getValue());
612     }
613 }
614