2 * Copyright (c) 2016 Cisco Systems, Inc. and others. All rights reserved.
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
8 package org.opendaylight.lispflowmapping.lisp.util;
11 import static org.junit.Assert.assertEquals;
12 import static org.junit.Assert.assertNotNull;
13 import static org.junit.Assert.assertNull;
14 import static org.junit.Assert.assertTrue;
16 import java.net.Inet4Address;
17 import java.net.Inet6Address;
18 import java.net.InetAddress;
19 import java.net.UnknownHostException;
20 import org.junit.Test;
21 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.AsNumber;
22 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpAddress;
23 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpPrefix;
24 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv4Address;
25 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv4Prefix;
26 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv6Address;
27 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv6Prefix;
28 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.AsNumberAfi;
29 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.DistinguishedNameAfi;
30 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.DistinguishedNameType;
31 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.InstanceIdType;
32 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.Ipv4Afi;
33 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.Ipv4PrefixAfi;
34 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.Ipv6Afi;
35 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.Ipv6PrefixAfi;
36 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.KeyValueAddressLcaf;
37 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.LispAddress;
38 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.LispAddressFamily;
39 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.MacAfi;
40 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.ServicePathIdType;
41 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.SimpleAddress;
42 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.Address;
43 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.DistinguishedName;
44 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.Ipv4;
45 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.Ipv6;
46 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.KeyValueAddress;
47 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.Mac;
48 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.service.path.ServicePath;
49 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev100924.MacAddress;
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.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.rloc.container.Rloc;
54 public class LispAddressUtilTest {
57 private static final char[] DUMMY_CHARACTER_ARRAY_TEST = new char[]{'a', 'b', 'c', 'd'};
58 private static final Long NUMBER_TEST = 5L;
60 private static final String MAC_ADDRESS_VALUE_TEST = "aa:bb:cc:dd:ee:ff";
61 private static final MacAddress MAC_ADDRESS_TEST = new MacAddress("aa:bb:cc:dd:ee:ff");
63 private static final byte[] IPV4_ADDRESS_BYTES_TEST = new byte[]{(byte) 192, (byte) 168, 1, 1};
65 private static final short MASK_OK_TEST = 30;
66 private static final short MASK_OK_DEFAULT_IPV4_TEST = 32;
67 private static final short MASK_OK_DEFAULT_IPV6_TEST = 128;
69 private static final String IPV4_ADDRESS_VALUE_TEST = "192.168.1.1";
70 private static final String IPV4_ADDRESS_PREFIX_VALUE_TEST = IPV4_ADDRESS_VALUE_TEST + "/" + MASK_OK_TEST;
71 private static final Ipv4Address IPV4_ADDRESS_TEST = new Ipv4Address(IPV4_ADDRESS_VALUE_TEST);
72 private static final IpAddress IP_ADDRESS_OBJECT_GENERAL_TEST = new IpAddress(IPV4_ADDRESS_TEST);
73 private static final Ipv4Prefix IPV4_ADDRESS_PREFIX_TEST = new Ipv4Prefix(IPV4_ADDRESS_PREFIX_VALUE_TEST);
74 private static final IpPrefix IP_ADDRESS_PREFIX = new IpPrefix(IPV4_ADDRESS_PREFIX_TEST);
76 private static final byte[] IPV6_ADDRESS_BYTES_TEST = new byte[]{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
78 private static final String IPV6_ADDRESS_VALUE_TEST = "102:304:506:708:90a:b0c:d0e:f10";
79 private static final String IPV6_ADDRESS_PREFIX_VALUE_TEST = IPV6_ADDRESS_VALUE_TEST + "/" + MASK_OK_TEST;
80 private static final Ipv6Prefix IPV6_ADDRESS_PREFIX_TEST = new Ipv6Prefix(IPV6_ADDRESS_PREFIX_VALUE_TEST);
81 private static final Ipv6Address IPV6_ADDRESS_TEST = new Ipv6Address(IPV6_ADDRESS_VALUE_TEST);
83 private static final Short DUMMY_SERVICE_INDEX = 45;
84 private static final Long DUMMY_SERVICE_PATH_ID_TYPE = 46L;
85 private static final String DISTINGUISHED_NAME_TYPE_VALUE_TEST = "dummy distinguished name type";
86 private static final String DISTINGUISHED_NAME_TYPE_VALUE_WITH_MAC_TEST = MAC_ADDRESS_VALUE_TEST;
87 private static final DistinguishedNameType DISTINGUISHED_NAME_TYPE_TEST = new DistinguishedNameType
88 (DISTINGUISHED_NAME_TYPE_VALUE_TEST);
90 private static final Long AS_NUMBER_TEST = 100L;
91 private static final Long INSTANCE_ID_TYPE_VALUE_TEST = 121L;
92 private static final Short INSTANCE_ID_TYPE_VALUE_SHORT_TEST = 122;
93 private static final InstanceIdType INSTANCE_ID_TYPE_TEST = new InstanceIdType(INSTANCE_ID_TYPE_VALUE_TEST);
94 private static final String INCORRECT_IP_ADDRESS_TEST = "incorrect ip address";
96 private static final SimpleAddress SIMPLE_ADDRESS_A_TEST = new SimpleAddress(IP_ADDRESS_OBJECT_GENERAL_TEST);
97 private static final SimpleAddress SIMPLE_ADDRESS_B_TEST = new SimpleAddress(MAC_ADDRESS_TEST);
100 * Tests {@link LispAddressUtil#addressTypeFromSimpleAddress} and {@link
101 * LispAddressUtil#addressFromSimpleAddress} methods
105 public void addressFromSimpleAddressTest_asAnyIpAddress() {
106 final Class<? extends LispAddressFamily> addressClass = LispAddressUtil.addressTypeFromSimpleAddress
107 (SIMPLE_ADDRESS_A_TEST);
108 assertEquals(Ipv4Afi.class, addressClass);
110 final Address address = LispAddressUtil.addressFromSimpleAddress(SIMPLE_ADDRESS_A_TEST);
111 assertTrue(address instanceof Ipv4);
115 * Tests {@link LispAddressUtil#addressTypeFromSimpleAddress} and {@link
116 * LispAddressUtil#addressFromSimpleAddress} methods
120 public void addressFromSimpleAddressTest_asIpPrefix() {
121 final SimpleAddress simpleAddress = new SimpleAddress(new IpPrefix(new Ipv4Prefix(IPV4_ADDRESS_PREFIX_VALUE_TEST)));
122 final Class<? extends LispAddressFamily> addressClass = LispAddressUtil.addressTypeFromSimpleAddress
124 assertEquals(Ipv4PrefixAfi.class, addressClass);
126 final Address address = LispAddressUtil.addressFromSimpleAddress(simpleAddress);
127 assertTrue(address instanceof org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address
128 .types.rev151105.lisp.address.address.Ipv4Prefix);
132 * Tests {@link LispAddressUtil#addressTypeFromSimpleAddress} and {@link
133 * LispAddressUtil#addressFromSimpleAddress} methods
137 public void addressFromSimpleAddressTest_asMacAddress() {
138 final SimpleAddress simpleAddress = new SimpleAddress(new MacAddress(MAC_ADDRESS_VALUE_TEST));
139 final Class<? extends LispAddressFamily> addressClass = LispAddressUtil.addressTypeFromSimpleAddress
141 assertEquals(MacAfi.class, addressClass);
143 final Address address = LispAddressUtil.addressFromSimpleAddress(simpleAddress);
144 assertTrue(address instanceof Mac);
148 * Tests {@link LispAddressUtil#addressTypeFromSimpleAddress} and {@link
149 * LispAddressUtil#addressFromSimpleAddress} methods
150 * with general address
153 public void addressFromSimpleAddressTest_asAddress() {
154 final SimpleAddress simpleAddress = new SimpleAddress(DUMMY_CHARACTER_ARRAY_TEST);
155 final Class<? extends LispAddressFamily> addressClass = LispAddressUtil.addressTypeFromSimpleAddress
157 assertEquals(DistinguishedNameAfi.class, addressClass);
159 final Address address = LispAddressUtil.addressFromSimpleAddress(simpleAddress);
160 assertTrue(address instanceof DistinguishedName);
164 * Tests {@link LispAddressUtil#addressTypeFromSimpleAddress} and {@link
165 * LispAddressUtil#addressFromSimpleAddress} methods
166 * with address as number
169 public void addressFromSimpleAddressTest_asNumber() {
170 final SimpleAddress simpleAddress = new SimpleAddress(new AsNumber(NUMBER_TEST));
171 final Class<? extends LispAddressFamily> addressClass = LispAddressUtil.addressTypeFromSimpleAddress
173 assertEquals(AsNumberAfi.class, addressClass);
175 final Address address = LispAddressUtil.addressFromSimpleAddress(simpleAddress);
176 assertTrue(address instanceof org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address
177 .types.rev151105.lisp.address.address.AsNumber);
181 * Tests {@link LispAddressUtil#addressFromInet(InetAddress)} and {@link LispAddressUtil#addressTypeFromInet
183 * methods with ipv4 address
185 * @throws UnknownHostException
188 public void addressFromInet_ipv4() throws UnknownHostException {
189 final InetAddress ipv4InetAddress = Inet4Address.getByAddress(IPV4_ADDRESS_BYTES_TEST);
190 final Class<? extends LispAddressFamily> addressClass = LispAddressUtil.addressTypeFromInet(ipv4InetAddress);
191 assertEquals(Ipv4Afi.class, addressClass);
193 final Address address = LispAddressUtil.addressFromInet(ipv4InetAddress);
194 assertTrue(address instanceof Ipv4);
195 assertEquals(IPV4_ADDRESS_VALUE_TEST, ((Ipv4) address).getIpv4().getValue());
199 * Tests {@link LispAddressUtil#addressFromInet(InetAddress)} and {@link LispAddressUtil#addressTypeFromInet
201 * methods with ipv6 address
203 * @throws UnknownHostException
206 public void addressFromInet_ipv6() throws UnknownHostException {
207 final InetAddress ipv6InetAddress = Inet6Address.getByAddress(IPV6_ADDRESS_BYTES_TEST);
208 final Class<? extends LispAddressFamily> addressClass = LispAddressUtil.addressTypeFromInet(ipv6InetAddress);
209 assertEquals(Ipv6Afi.class, addressClass);
211 final Address address = LispAddressUtil.addressFromInet(ipv6InetAddress);
212 assertTrue(address instanceof Ipv6);
213 assertEquals(IPV6_ADDRESS_VALUE_TEST, ((Ipv6) address).getIpv6().getValue());
217 * Tests {@link LispAddressUtil#addressFromIpAddress(IpAddress)} and {@link
218 * LispAddressUtil#addressTypeFromIpAddress(IpAddress)}
219 * methods with ipv4 address
222 public void addressFromIpAddress_ipv4() {
223 final IpAddress ipv4Address = new IpAddress(IPV4_ADDRESS_TEST);
224 final Class<? extends LispAddressFamily> addressClass = LispAddressUtil.addressTypeFromIpAddress(ipv4Address);
225 assertEquals(Ipv4Afi.class, addressClass);
227 final Address address = LispAddressUtil.addressFromIpAddress(ipv4Address);
228 assertTrue(address instanceof Ipv4);
229 assertEquals(IPV4_ADDRESS_VALUE_TEST, ((Ipv4) address).getIpv4().getValue());
233 * Tests {@link LispAddressUtil#addressFromIpAddress(IpAddress)} and {@link
234 * LispAddressUtil#addressTypeFromIpAddress(IpAddress)}
235 * methods with ipv6 address
238 public void addressFromIpAddress_ipv6() {
239 final IpAddress ipv6Address = new IpAddress(new Ipv6Address(IPV6_ADDRESS_VALUE_TEST));
240 final Class<? extends LispAddressFamily> addressClass = LispAddressUtil.addressTypeFromIpAddress(ipv6Address);
241 assertEquals(Ipv6Afi.class, addressClass);
243 final Address address = LispAddressUtil.addressFromIpAddress(ipv6Address);
244 assertTrue(address instanceof Ipv6);
245 assertEquals(IPV6_ADDRESS_VALUE_TEST, ((Ipv6) address).getIpv6().getValue());
249 * Tests {@link LispAddressUtil#addressFromIpAddress(IpAddress)} and {@link
250 * LispAddressUtil#addressTypeFromIpAddress(IpAddress)}
251 * methods with null value instead off address.
254 public void addressFromIpAddress_null() {
255 final Class<? extends LispAddressFamily> addressClass = LispAddressUtil.addressTypeFromIpAddress(null);
256 assertNull(addressClass);
258 final Address address = LispAddressUtil.addressFromIpAddress(null);
263 * Tests {@link LispAddressUtil#addressFromIpPrefix(IpPrefix)} and {@link
264 * LispAddressUtil#addressTypeFromIpPrefix(IpPrefix)}
265 * methods with ipv4 address
268 public void addressFromIpPrefix_ipv4() {
269 IpPrefix ipv4Prefix = new IpPrefix(new Ipv4Prefix(IPV4_ADDRESS_PREFIX_VALUE_TEST));
270 final Class<? extends LispAddressFamily> addressClass = LispAddressUtil.addressTypeFromIpPrefix(ipv4Prefix);
271 assertEquals(Ipv4PrefixAfi.class, addressClass);
273 final Address address = LispAddressUtil.addressFromIpPrefix(ipv4Prefix);
274 assertTrue(address instanceof org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.
275 types.rev151105.lisp.address.address.Ipv4Prefix);
276 assertEquals(IPV4_ADDRESS_PREFIX_VALUE_TEST, ((org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.
277 address.types.rev151105.lisp.address.address.Ipv4Prefix) address).getIpv4Prefix().getValue());
281 * Tests {@link LispAddressUtil#addressFromIpPrefix(IpPrefix)} and {@link
282 * LispAddressUtil#addressTypeFromIpPrefix(IpPrefix)}
283 * methods with ipv6 address
286 public void addressFromIpPrefix_ipv6() {
287 IpPrefix ipv6Address = new IpPrefix(new Ipv6Prefix(IPV6_ADDRESS_PREFIX_VALUE_TEST));
288 final Class<? extends LispAddressFamily> addressClass = LispAddressUtil.addressTypeFromIpPrefix(ipv6Address);
289 assertEquals(Ipv6PrefixAfi.class, addressClass);
291 final Address address = LispAddressUtil.addressFromIpPrefix(ipv6Address);
292 assertTrue(address instanceof org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address
293 .types.rev151105.lisp.address.address.Ipv6Prefix);
294 assertEquals(IPV6_ADDRESS_PREFIX_VALUE_TEST,
295 ((org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp
296 .address.address.Ipv6Prefix) address).getIpv6Prefix().getValue());
300 * Tests {@link LispAddressUtil#addressFromIpPrefix(IpPrefix)} and {@link LispAddressUtil#addressTypeFromIpPrefix
302 * methods with null value instead off address.
305 public void addressFromIpPrefix_null() {
306 final Class<? extends LispAddressFamily> addressClass = LispAddressUtil.addressTypeFromIpPrefix(null);
307 assertNull(addressClass);
309 final Address address = LispAddressUtil.addressFromIpPrefix(null);
314 * Tests {@link LispAddressUtil#addressFromMacAddress(MacAddress)} methods with mac address.
317 public void addressFromMacAddress_mac() {
318 final Address address = LispAddressUtil.addressFromMacAddress(new MacAddress(MAC_ADDRESS_VALUE_TEST));
319 assertTrue(address instanceof Mac);
320 assertEquals(MAC_ADDRESS_VALUE_TEST, ((Mac) address).getMac().getValue());
324 * Tests {@link LispAddressUtil#addressFromMacAddress(MacAddress)} methods with null instead of address.
327 public void addressFromMacAddress_null() {
328 final Address address = LispAddressUtil.addressFromMacAddress(null);
334 * Test {@link LispAddressUtil#addressFromServicePath(ServicePath)} method with concrete servicePath
337 public void addressFromServicePathTest_withServicePath() {
338 org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address
339 .address.service.path.ServicePathBuilder servicePathBuilder = new org.opendaylight.yang.gen.v1.urn.ietf
340 .params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address
341 .address.service.path.ServicePathBuilder();
342 servicePathBuilder.setServiceIndex(DUMMY_SERVICE_INDEX);
343 servicePathBuilder.setServicePathId(new ServicePathIdType(DUMMY_SERVICE_PATH_ID_TYPE));
345 ServicePath expectedAddress = servicePathBuilder.build();
346 final Address testedAddress = LispAddressUtil.addressFromServicePath(expectedAddress);
347 assertTrue(testedAddress instanceof org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address
348 .types.rev151105.lisp.address.address.ServicePath);
349 assertEquals(expectedAddress, ((org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address
350 .types.rev151105.lisp.address.address.ServicePath) testedAddress).getServicePath());
354 * Test {@link LispAddressUtil#addressFromServicePath(ServicePath)} method with null value
357 public void addressFromServicePathTest_withNull() {
358 final Address testedAddress = LispAddressUtil.addressFromServicePath(null);
359 assertNull(testedAddress);
363 * Test {@link LispAddressUtil#addressFromDistinguishedName(DistinguishedNameType)} method with distinguished name }
366 public void addressFromDistinguishedNameTest_withDistinguishedName() {
367 final DistinguishedNameType distinguishedNameType = new DistinguishedNameType(DISTINGUISHED_NAME_TYPE_VALUE_TEST);
368 final Address testedAddress = LispAddressUtil.addressFromDistinguishedName(distinguishedNameType);
370 assertTrue(testedAddress instanceof DistinguishedName);
371 assertEquals(distinguishedNameType, ((DistinguishedName) testedAddress).getDistinguishedName());
375 * Test {@link LispAddressUtil#addressFromDistinguishedName(DistinguishedNameType)} method with null value }
378 public void addressFromDistinguishedNameTest_withNull() {
379 final Address testedAddress = LispAddressUtil.addressFromDistinguishedName(null);
380 assertNull(testedAddress);
384 * Test {@link LispAddressUtil#addressFromAsNumber(AsNumber)} method with as number value }
387 public void addressFromAsNumberTest_withAdNumber() {
388 final AsNumber expectedAddress = new AsNumber(AS_NUMBER_TEST);
389 final Address testedAddress = LispAddressUtil.addressFromAsNumber(expectedAddress);
390 assertTrue(testedAddress instanceof org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp
391 .address.types.rev151105.lisp.address.address.AsNumber);
392 assertEquals(expectedAddress, ((org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp
393 .address.types.rev151105.lisp.address.address.AsNumber) testedAddress).getAsNumber());
397 * Test {@link LispAddressUtil#addressFromAsNumber(AsNumber)} method with null instead of value }
400 public void addressFromAsNumberTest_withNull() {
401 final Address testedAddress = LispAddressUtil.addressFromAsNumber(null);
402 assertNull(testedAddress);
408 * - {@link LispAddressUtil#toRloc(InetAddress)}
409 * - {@link LispAddressUtil#toRloc(Ipv4Address)}
410 * - {@link LispAddressUtil#toRloc(Ipv6Address)}
411 * - {@link LispAddressUtil#toRloc(SimpleAddress)}
415 public void toRloc() throws UnknownHostException {
416 InetAddress ipv4AddressInet = Inet4Address.getByAddress(IPV4_ADDRESS_BYTES_TEST);
417 final Rloc rlocFromInetAddress = LispAddressUtil.toRloc(ipv4AddressInet);
418 assertEquals(Ipv4Afi.class, rlocFromInetAddress.getAddressType());
419 assertEquals(IPV4_ADDRESS_VALUE_TEST, ((Ipv4)rlocFromInetAddress.getAddress()).getIpv4().getValue());
421 final Rloc rlocFromIpv4Address = LispAddressUtil.toRloc(IPV4_ADDRESS_TEST);
422 assertEquals(Ipv4Afi.class, rlocFromIpv4Address.getAddressType());
423 assertEquals(IPV4_ADDRESS_VALUE_TEST, ((Ipv4) rlocFromIpv4Address.getAddress()).getIpv4().getValue());
426 final Rloc rlocFromIpv6Address = LispAddressUtil.toRloc(IPV6_ADDRESS_TEST);
427 assertEquals(Ipv6Afi.class, rlocFromIpv6Address.getAddressType());
428 assertEquals(IPV6_ADDRESS_VALUE_TEST, ((Ipv6) rlocFromIpv6Address.getAddress()).getIpv6().getValue());
430 final Rloc rlocFromSimpleAddress = LispAddressUtil.toRloc(SIMPLE_ADDRESS_A_TEST);
431 assertEquals(Ipv4Afi.class, rlocFromSimpleAddress.getAddressType());
432 assertEquals(IPV4_ADDRESS_VALUE_TEST, ((Ipv4) rlocFromSimpleAddress.getAddress()).getIpv4().getValue());
436 * Test {@link LispAddressUtil#asIpv4Rloc(String)} method with ipv4 or ipv6.
437 * Test {@link LispAddressUtil#asIpv6Rloc(String)} method with ipv4 or ipv6.
440 public void asIpvRloc() {
441 final Rloc rlocFromIpV4 = LispAddressUtil.asIpv4Rloc(IPV4_ADDRESS_VALUE_TEST);
442 assertEquals(Ipv4Afi.class, rlocFromIpV4.getAddressType());
443 assertEquals(IPV4_ADDRESS_VALUE_TEST, ((Ipv4) rlocFromIpV4.getAddress()).getIpv4().getValue());
445 final Rloc rlocFromIpV6 = LispAddressUtil.asIpv6Rloc(IPV6_ADDRESS_VALUE_TEST);
446 assertEquals(Ipv6Afi.class, rlocFromIpV6.getAddressType());
447 assertEquals(IPV6_ADDRESS_VALUE_TEST, ((Ipv6) rlocFromIpV6.getAddress()).getIpv6().getValue());
452 * - {@link LispAddressUtil#toEid(Ipv6Address, InstanceIdType)}
453 * - {@link LispAddressUtil#asIpv6PrefixEid(String)}
454 * - {@link LispAddressUtil#asIpv6PrefixEid(Eid, Inet6Address, short)}
455 * - {@link LispAddressUtil#asIpv6PrefixEid(Ipv6Address, InstanceIdType)}
459 public void toEid_ipv6Prefix() throws UnknownHostException {
460 Eid eidFromIpv6Prefix = LispAddressUtil.toEid(IPV6_ADDRESS_PREFIX_TEST, INSTANCE_ID_TYPE_TEST);
461 verifyToEidWithIpv6Prefix(eidFromIpv6Prefix, true, MASK_OK_TEST, Ipv6PrefixAfi.class);
463 eidFromIpv6Prefix = LispAddressUtil.asIpv6PrefixEid(IPV6_ADDRESS_PREFIX_VALUE_TEST);
464 verifyToEidWithIpv6Prefix(eidFromIpv6Prefix, false, MASK_OK_TEST, Ipv6PrefixAfi.class);
466 eidFromIpv6Prefix = LispAddressUtil.asIpv6PrefixEid(IPV6_ADDRESS_TEST, INSTANCE_ID_TYPE_TEST);
467 verifyToEidWithIpv6Prefix(eidFromIpv6Prefix, true, MASK_OK_DEFAULT_IPV6_TEST, Ipv6PrefixAfi.class);
472 * - {@link LispAddressUtil#toEid(MacAddress, InstanceIdType)}
473 * - {@link LispAddressUtil#asMacEid(String)}
474 * - {@link LispAddressUtil#asMacEid(String, long)}
478 public void toEid_mac() {
479 Eid eidFromMac = LispAddressUtil.toEid(MAC_ADDRESS_TEST, INSTANCE_ID_TYPE_TEST);
480 verifyToEidWithMacAddress(eidFromMac, true);
482 eidFromMac = LispAddressUtil.asMacEid(MAC_ADDRESS_VALUE_TEST);
483 verifyToEidWithMacAddress(eidFromMac, false);
485 eidFromMac = LispAddressUtil.asMacEid(MAC_ADDRESS_VALUE_TEST, INSTANCE_ID_TYPE_VALUE_TEST);
486 verifyToEidWithMacAddress(eidFromMac, true);
491 * - {@link LispAddressUtil#toEid(Ipv6Address, InstanceIdType)}
492 * - {@link LispAddressUtil#asIpv6Eid(String)}
493 * - {@link LispAddressUtil#asIpv6Eid(String, long)}
497 public void toEid_ipv6() {
498 Eid eidFromIpv6 = LispAddressUtil.toEid(IPV6_ADDRESS_TEST, INSTANCE_ID_TYPE_TEST);
499 verifyToEidWithIpv6(eidFromIpv6, true);
501 eidFromIpv6 = LispAddressUtil.asIpv6Eid(IPV6_ADDRESS_VALUE_TEST);
502 verifyToEidWithIpv6(eidFromIpv6, false);
504 eidFromIpv6 = LispAddressUtil.asIpv6Eid(IPV6_ADDRESS_VALUE_TEST, INSTANCE_ID_TYPE_VALUE_TEST);
505 verifyToEidWithIpv6(eidFromIpv6, true);
510 * - {@link LispAddressUtil#toEid(Ipv4Prefix, InstanceIdType)}
511 * - {@link LispAddressUtil#asIpv4PrefixEid(String)}
512 * - {@link LispAddressUtil#asIpv4PrefixEid(Eid, Inet4Address, short)}
513 * - {@link LispAddressUtil#asIpv4PrefixEid(Ipv4Address, InstanceIdType)} }
517 public void toEid_ipv4Prefix() throws UnknownHostException {
518 Eid eidFromIpv4Prefix = LispAddressUtil.toEid(IPV4_ADDRESS_PREFIX_TEST, INSTANCE_ID_TYPE_TEST);
519 verifyToEidWithIpv4Prefix(eidFromIpv4Prefix, true, MASK_OK_TEST, Ipv4PrefixAfi.class);
521 eidFromIpv4Prefix = LispAddressUtil.asIpv4PrefixEid(IPV4_ADDRESS_PREFIX_VALUE_TEST);
522 verifyToEidWithIpv4Prefix(eidFromIpv4Prefix, false, MASK_OK_TEST, Ipv4PrefixAfi.class);
524 eidFromIpv4Prefix = LispAddressUtil.asIpv4PrefixEid(IPV4_ADDRESS_TEST, INSTANCE_ID_TYPE_TEST);
525 verifyToEidWithIpv4Prefix(eidFromIpv4Prefix, false, (short)32, Ipv4PrefixAfi.class);
528 public Eid provideDummyMacEid() {
529 final EidBuilder eidBuilder = new EidBuilder();
530 eidBuilder.setAddressType(MacAfi.class);
531 eidBuilder.setVirtualNetworkId(INSTANCE_ID_TYPE_TEST);
532 return eidBuilder.build();
537 * - {@link LispAddressUtil#toEid(Ipv4Address, InstanceIdType)}
538 * - {@link LispAddressUtil#asIpv4Eid(String)}
539 * - {@link LispAddressUtil#asIpv4Eid(String, long)}
543 public void toEid_ipv4() {
544 Eid eidFromIpv4 = LispAddressUtil.toEid(IPV4_ADDRESS_TEST, INSTANCE_ID_TYPE_TEST);
545 verifyToEidWithIpv4(eidFromIpv4, true);
547 eidFromIpv4 = LispAddressUtil.asIpv4Eid(IPV4_ADDRESS_VALUE_TEST);
548 verifyToEidWithIpv4(eidFromIpv4, false);
550 eidFromIpv4 = LispAddressUtil.asIpv4Eid(IPV4_ADDRESS_VALUE_TEST, INSTANCE_ID_TYPE_VALUE_TEST);
551 verifyToEidWithIpv4(eidFromIpv4, true);
556 * - {@link LispAddressUtil#toEid(IpPrefix, InstanceIdType)}
560 public void toEid_ipPrefix() {
561 final Eid eidFromIpPrefix = LispAddressUtil.toEid(IP_ADDRESS_PREFIX, INSTANCE_ID_TYPE_TEST);
562 verifyToEidWithIpv4Prefix(eidFromIpPrefix, true, MASK_OK_TEST, Ipv4PrefixAfi.class);
567 * - {@link LispAddressUtil#toEid(DistinguishedNameType, InstanceIdType)}
568 * - {@link LispAddressUtil#asDistinguishedNameEid(String)}
569 * - {@link LispAddressUtil#asDistinguishedNameEid(String, long)}
570 * methods with various input.
573 public void toEid_distinguishedName() {
574 Eid eidFromDistinguishedName = LispAddressUtil.toEid(DISTINGUISHED_NAME_TYPE_TEST, INSTANCE_ID_TYPE_TEST);
575 verifyToEidWithDistinguishedName(eidFromDistinguishedName, true);
577 eidFromDistinguishedName = LispAddressUtil.asDistinguishedNameEid(DISTINGUISHED_NAME_TYPE_VALUE_TEST);
578 verifyToEidWithDistinguishedName(eidFromDistinguishedName, false);
580 eidFromDistinguishedName = LispAddressUtil.asDistinguishedNameEid
581 (DISTINGUISHED_NAME_TYPE_VALUE_WITH_MAC_TEST, INSTANCE_ID_TYPE_VALUE_TEST);
582 verifyToEidWithMacAddress(eidFromDistinguishedName, true);
585 private void verifyToEidWithIpv6Prefix(final Eid eidFromIpv6Prefix, final boolean isVniChecked, short
586 expectedMask, final Class<? extends org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp
587 .address.types.rev151105.LispAddressFamily> addressType) {
588 assertEquals(addressType, eidFromIpv6Prefix.getAddressType());
590 assertEquals(INSTANCE_ID_TYPE_TEST, eidFromIpv6Prefix.getVirtualNetworkId());
592 assertEquals(IPV6_ADDRESS_VALUE_TEST + "/" + expectedMask, ((org.opendaylight.yang.gen.v1.urn.ietf.params.xml
593 .ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.Ipv6Prefix) eidFromIpv6Prefix
594 .getAddress()).getIpv6Prefix().getValue());
597 private void verifyToEidWithIpv4(final Eid eidFromIpv4, final boolean isVniChecked) {
598 assertEquals(Ipv4Afi.class, eidFromIpv4.getAddressType());
600 assertEquals(INSTANCE_ID_TYPE_TEST, eidFromIpv4.getVirtualNetworkId());
602 assertEquals(IPV4_ADDRESS_VALUE_TEST, ((Ipv4) eidFromIpv4.getAddress()).getIpv4().getValue());
605 private void verifyToEidWithIpv6(final Eid eidFromIpv6, final boolean isVniChecked) {
606 assertEquals(Ipv6Afi.class, eidFromIpv6.getAddressType());
608 assertEquals(INSTANCE_ID_TYPE_TEST, eidFromIpv6.getVirtualNetworkId());
610 assertEquals(IPV6_ADDRESS_VALUE_TEST, ((Ipv6)eidFromIpv6.getAddress()).getIpv6().getValue());
613 private void verifyToEidWithIpv4Prefix(final Eid eidFromIpv4Prefix, final boolean isVniChecked, short
614 expectedMask, Class<? extends org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address
615 .types.rev151105.LispAddressFamily> addressType) {
616 assertEquals(addressType, eidFromIpv4Prefix.getAddressType());
618 assertEquals(INSTANCE_ID_TYPE_TEST, eidFromIpv4Prefix.getVirtualNetworkId());
620 assertEquals(IPV4_ADDRESS_VALUE_TEST +"/"+expectedMask, ((org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns
622 .lisp.address.types.rev151105.lisp.address.address.Ipv4Prefix)eidFromIpv4Prefix.getAddress())
623 .getIpv4Prefix().getValue());
626 private void verifyToEidWithDistinguishedName(final Eid eidFromDistinguishedName, final boolean isVniChecked) {
627 assertEquals(DistinguishedNameAfi.class, eidFromDistinguishedName.getAddressType());
629 assertEquals(INSTANCE_ID_TYPE_TEST, eidFromDistinguishedName.getVirtualNetworkId());
631 assertEquals(DISTINGUISHED_NAME_TYPE_TEST, ((DistinguishedName)eidFromDistinguishedName.getAddress())
632 .getDistinguishedName());
635 private void verifyToEidWithMacAddress(final Eid eidFromMac, final boolean isVniChecked) {
636 assertEquals(MacAfi.class, eidFromMac.getAddressType());
638 assertEquals(INSTANCE_ID_TYPE_TEST, eidFromMac.getVirtualNetworkId());
640 assertEquals(MAC_ADDRESS_VALUE_TEST, ((Mac)eidFromMac.getAddress()).getMac().getValue());
644 * Tests {@link LispAddressUtil#asIpPrefix(String, int)} with ipv4 address and correct mask
647 public void asIpPrefix_ipv4() {
648 final IpPrefix ipPrefix = LispAddressUtil.asIpPrefix(IPV4_ADDRESS_VALUE_TEST, MASK_OK_TEST);
649 assertNotNull(ipPrefix);
650 final Ipv4Prefix ipv4Prefix = ipPrefix.getIpv4Prefix();
651 assertNotNull(ipv4Prefix);
652 assertEquals(IPV4_ADDRESS_PREFIX_TEST, ipv4Prefix);
656 * Tests {@link LispAddressUtil#asIpPrefix(String, int)} with ipv6 address and correct mask
659 public void asIpPrefix_ipv6() {
660 final IpPrefix ipPrefix = LispAddressUtil.asIpPrefix(IPV6_ADDRESS_VALUE_TEST, MASK_OK_TEST);
661 assertNotNull(ipPrefix);
662 final Ipv6Prefix ipv6Prefix = ipPrefix.getIpv6Prefix();
663 assertNotNull(ipv6Prefix);
664 assertEquals(IPV6_ADDRESS_PREFIX_TEST, ipv6Prefix);
668 * Tests {@link LispAddressUtil#asIpPrefix(String, int)} with incorrect ip address and correct mask
671 public void asIpPrefix_other() {
672 final IpPrefix ipPrefix = LispAddressUtil.asIpPrefix(INCORRECT_IP_ADDRESS_TEST, MASK_OK_TEST);
673 assertNull(ipPrefix);
677 * Tests {@link LispAddressUtil#ipVersionFromString(String)} with ipv4
680 public void ipVersionFromString_ipv4() {
681 final int addressType = LispAddressUtil.ipVersionFromString(IPV4_ADDRESS_VALUE_TEST);
682 assertEquals(4, addressType);
686 * Tests {@link LispAddressUtil#ipVersionFromString(String)} with ipv6
689 public void ipVersionFromString_ipv6() {
690 final int addressType = LispAddressUtil.ipVersionFromString(IPV6_ADDRESS_VALUE_TEST);
691 assertEquals(6, addressType);
695 * Tests {@link LispAddressUtil#ipVersionFromString(String)} with incorrect ip address format
698 public void ipVersionFromString_other() {
699 final int addressType = LispAddressUtil.ipVersionFromString(INCORRECT_IP_ADDRESS_TEST);
700 assertEquals(0, addressType);
705 * Tests {@link LispAddressUtil#asKeyValueAddressEid(SimpleAddress, SimpleAddress)} method.
708 public void asKeyValueAddressEid() {
709 final Eid eid = LispAddressUtil.asKeyValueAddressEid(SIMPLE_ADDRESS_A_TEST, SIMPLE_ADDRESS_B_TEST);
710 verifyKeyValueAddress(eid);
714 * Tests {@link LispAddressUtil#asKeyValueAddressRloc(SimpleAddress, SimpleAddress)} method.
717 public void asKeyValueAddressRloc() {
718 final Rloc rloc = LispAddressUtil.asKeyValueAddressRloc(SIMPLE_ADDRESS_A_TEST, SIMPLE_ADDRESS_B_TEST);
719 verifyKeyValueAddress(rloc);
722 private void verifyKeyValueAddress(final LispAddress lispAddress) {
723 assertEquals(KeyValueAddressLcaf.class, lispAddress.getAddressType());
724 assertNull(lispAddress.getVirtualNetworkId());
725 final org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address
726 .address.key.value.address.KeyValueAddress keyValueAddress = ((KeyValueAddress) lispAddress.getAddress()).
727 getKeyValueAddress();
728 assertNotNull(keyValueAddress);
729 assertEquals(SIMPLE_ADDRESS_A_TEST, keyValueAddress.getKey());
730 assertEquals(SIMPLE_ADDRESS_B_TEST, keyValueAddress.getValue());