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.assertFalse;
13 import static org.junit.Assert.assertNotNull;
14 import static org.junit.Assert.assertNull;
15 import static org.junit.Assert.assertTrue;
17 import java.net.Inet4Address;
18 import java.net.Inet6Address;
19 import java.net.InetAddress;
20 import java.net.UnknownHostException;
21 import java.util.Arrays;
22 import java.util.List;
23 import org.junit.Ignore;
24 import org.junit.Test;
25 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.AsNumber;
26 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpAddress;
27 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpPrefix;
28 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv4Address;
29 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv4Prefix;
30 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv6Address;
31 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv6Prefix;
32 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.AsNumberAfi;
33 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.DistinguishedNameAfi;
34 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.DistinguishedNameType;
35 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.ExplicitLocatorPathLcaf;
36 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.InstanceIdType;
37 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.Ipv4Afi;
38 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.Ipv4PrefixAfi;
39 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.Ipv6Afi;
40 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.Ipv6PrefixAfi;
41 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.KeyValueAddressLcaf;
42 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.LispAddress;
43 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.LispAddressFamily;
44 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.MacAfi;
45 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.NoAddressAfi;
46 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.ServicePathIdType;
47 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.ServicePathLcaf;
48 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.SimpleAddress;
49 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.SourceDestKeyLcaf;
50 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.Address;
51 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.DistinguishedName;
52 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.ExplicitLocatorPath;
53 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.Ipv4;
54 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.Ipv4Builder;
55 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.Ipv6;
56 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.Ipv6Builder;
57 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.KeyValueAddress;
58 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.Mac;
59 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.MacBuilder;
60 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.NoAddress;
61 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.explicit.locator.path.explicit.locator.path.Hop;
62 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.service.path.ServicePath;
63 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.source.dest.key.SourceDestKey;
64 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.source.dest.key.SourceDestKeyBuilder;
65 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev100924.MacAddress;
66 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.eid.container.Eid;
67 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.eid.container.EidBuilder;
68 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.locatorrecords.LocatorRecord;
69 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.rloc.container.Rloc;
71 public class LispAddressUtilTest {
74 private static final char[] DUMMY_CHARACTER_ARRAY_TEST = new char[]{'a', 'b', 'c', 'd'};
75 private static final Long NUMBER_TEST = 5L;
77 private static final String MAC_ADDRESS_VALUE_TEST = "aa:bb:cc:dd:ee:ff";
78 private static final MacAddress MAC_ADDRESS_TEST = new MacAddress("aa:bb:cc:dd:ee:ff");
80 private static final byte[] IPV4_ADDRESS_BYTES_A_TEST = new byte[]{(byte) 192, (byte) 168, 1, 1};
81 private static final byte[] IPV4_ADDRESS_BYTES_B_TEST = new byte[]{(byte) 192, (byte) 168, 1, 2};
83 private static final short MASK_OK_TEST = 30;
84 private static final short MASK_OK_DEFAULT_IPV4_TEST = 32;
85 private static final short MASK_OK_DEFAULT_IPV6_TEST = 128;
87 private static final String IPV4_ADDRESS_VALUE_TEST = "192.168.1.1";
88 private static final String IPV4_ADDRESS_PREFIX_VALUE_TEST = IPV4_ADDRESS_VALUE_TEST + "/" + MASK_OK_TEST;
89 private static final Ipv4Address IPV4_ADDRESS_TEST = new Ipv4Address(IPV4_ADDRESS_VALUE_TEST);
90 private static final IpAddress IP_ADDRESS_OBJECT_WITH_IPV4_TEST = new IpAddress(IPV4_ADDRESS_TEST);
91 private static final Ipv4Prefix IPV4_ADDRESS_PREFIX_TEST = new Ipv4Prefix(IPV4_ADDRESS_PREFIX_VALUE_TEST);
92 private static final IpPrefix IP_ADDRESS_PREFIX_WITH_IPV4_TEST = new IpPrefix(IPV4_ADDRESS_PREFIX_TEST);
95 private static final byte[] IPV6_ADDRESS_BYTES_A_TEST = new byte[]{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
97 private static final byte[] IPV6_ADDRESS_BYTES_B_TEST = new byte[]{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
99 private static final String IPV6_ADDRESS_VALUE_TEST = "102:304:506:708:90a:b0c:d0e:f10";
100 private static final String IPV6_ADDRESS_PREFIX_VALUE_TEST = IPV6_ADDRESS_VALUE_TEST + "/" + MASK_OK_TEST;
101 private static final Ipv6Prefix IPV6_ADDRESS_PREFIX_TEST = new Ipv6Prefix(IPV6_ADDRESS_PREFIX_VALUE_TEST);
102 private static final Ipv6Address IPV6_ADDRESS_TEST = new Ipv6Address(IPV6_ADDRESS_VALUE_TEST);
103 private static final IpPrefix IP_ADDRESS_PREFIX_WITH_IPV6_TEST = new IpPrefix(IPV6_ADDRESS_PREFIX_TEST);
104 private static final IpAddress IP_ADDRESS_OBJECT_WITH_IPV6_TEST = new IpAddress(IPV6_ADDRESS_TEST);
106 private static final Short SERVICE_INDEX_TEST = 45;
107 private static final Long DUMMY_SERVICE_PATH_ID_TYPE = 46L;
108 private static final String DISTINGUISHED_NAME_TYPE_VALUE_TEST = "dummy distinguished name type";
109 private static final String DISTINGUISHED_NAME_TYPE_VALUE_WITH_MAC_TEST = MAC_ADDRESS_VALUE_TEST;
110 private static final DistinguishedNameType DISTINGUISHED_NAME_TYPE_TEST = new DistinguishedNameType
111 (DISTINGUISHED_NAME_TYPE_VALUE_TEST);
113 private static final Long AS_NUMBER_TEST = 100L;
114 private static final Long INSTANCE_ID_TYPE_VALUE_TEST = 121L;
115 private static final Short INSTANCE_ID_TYPE_VALUE_SHORT_TEST = 122;
116 private static final InstanceIdType INSTANCE_ID_TYPE_TEST = new InstanceIdType(INSTANCE_ID_TYPE_VALUE_TEST);
117 private static final String INCORRECT_IP_ADDRESS_TEST = "incorrect ip address";
119 private static final SimpleAddress SIMPLE_ADDRESS_A_TEST = new SimpleAddress(IP_ADDRESS_OBJECT_WITH_IPV4_TEST);
120 private static final SimpleAddress SIMPLE_ADDRESS_B_TEST = new SimpleAddress(MAC_ADDRESS_TEST);
121 private static final String SIMPLE_ADDRESS_DISTINGUISHED_VALUE_TEST = DISTINGUISHED_NAME_TYPE_VALUE_TEST;
122 private static final SimpleAddress SIMPLE_ADDRESS_DISTINGUISHED_TEST = new SimpleAddress(new DistinguishedNameType
123 (SIMPLE_ADDRESS_DISTINGUISHED_VALUE_TEST));
124 private static final SimpleAddress SIMPLE_ADDRESS_WITH_IP_PREFIX_IPV4_TEST = new SimpleAddress
125 (IP_ADDRESS_PREFIX_WITH_IPV4_TEST);
126 private static final SimpleAddress SIMPLE_ADDRESS_WITH_IP_PREFIX_IPV6_TEST = new SimpleAddress
127 (IP_ADDRESS_PREFIX_WITH_IPV6_TEST);
128 private static final Long SERVICE_PATH_ID_TEST = 2121L;
131 * Tests {@link LispAddressUtil#addressTypeFromSimpleAddress} and {@link
132 * LispAddressUtil#addressFromSimpleAddress} methods
136 public void addressFromSimpleAddressTest_asAnyIpAddress() {
137 final Class<? extends LispAddressFamily> addressClass = LispAddressUtil.addressTypeFromSimpleAddress
138 (SIMPLE_ADDRESS_A_TEST);
139 assertEquals(Ipv4Afi.class, addressClass);
141 final Address address = LispAddressUtil.addressFromSimpleAddress(SIMPLE_ADDRESS_A_TEST);
142 assertTrue(address instanceof Ipv4);
146 * Tests {@link LispAddressUtil#addressTypeFromSimpleAddress} and {@link
147 * LispAddressUtil#addressFromSimpleAddress} methods
151 public void addressFromSimpleAddressTest_asIpPrefix() {
152 final SimpleAddress simpleAddress = new SimpleAddress(new IpPrefix(new Ipv4Prefix(IPV4_ADDRESS_PREFIX_VALUE_TEST)));
153 final Class<? extends LispAddressFamily> addressClass = LispAddressUtil.addressTypeFromSimpleAddress
155 assertEquals(Ipv4PrefixAfi.class, addressClass);
157 final Address address = LispAddressUtil.addressFromSimpleAddress(simpleAddress);
158 assertTrue(address instanceof org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address
159 .types.rev151105.lisp.address.address.Ipv4Prefix);
163 * Tests {@link LispAddressUtil#addressTypeFromSimpleAddress} and {@link
164 * LispAddressUtil#addressFromSimpleAddress} methods
168 public void addressFromSimpleAddressTest_asMacAddress() {
169 final SimpleAddress simpleAddress = new SimpleAddress(new MacAddress(MAC_ADDRESS_VALUE_TEST));
170 final Class<? extends LispAddressFamily> addressClass = LispAddressUtil.addressTypeFromSimpleAddress
172 assertEquals(MacAfi.class, addressClass);
174 final Address address = LispAddressUtil.addressFromSimpleAddress(simpleAddress);
175 assertTrue(address instanceof Mac);
179 * Tests {@link LispAddressUtil#addressTypeFromSimpleAddress} and {@link
180 * LispAddressUtil#addressFromSimpleAddress} methods
181 * with general address
184 public void addressFromSimpleAddressTest_asAddress() {
185 final SimpleAddress simpleAddress = new SimpleAddress(DUMMY_CHARACTER_ARRAY_TEST);
186 final Class<? extends LispAddressFamily> addressClass = LispAddressUtil.addressTypeFromSimpleAddress
188 assertEquals(DistinguishedNameAfi.class, addressClass);
190 final Address address = LispAddressUtil.addressFromSimpleAddress(simpleAddress);
191 assertTrue(address instanceof DistinguishedName);
195 * Tests {@link LispAddressUtil#addressTypeFromSimpleAddress} and {@link
196 * LispAddressUtil#addressFromSimpleAddress} methods
197 * with address as number
200 public void addressFromSimpleAddressTest_asNumber() {
201 final SimpleAddress simpleAddress = new SimpleAddress(new AsNumber(NUMBER_TEST));
202 final Class<? extends LispAddressFamily> addressClass = LispAddressUtil.addressTypeFromSimpleAddress
204 assertEquals(AsNumberAfi.class, addressClass);
206 final Address address = LispAddressUtil.addressFromSimpleAddress(simpleAddress);
207 assertTrue(address instanceof org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address
208 .types.rev151105.lisp.address.address.AsNumber);
212 * Tests {@link LispAddressUtil#addressFromInet(InetAddress)} and {@link LispAddressUtil#addressTypeFromInet
214 * methods with ipv4 address
216 * @throws UnknownHostException
219 public void addressFromInet_ipv4() throws UnknownHostException {
220 final InetAddress ipv4InetAddress = Inet4Address.getByAddress(IPV4_ADDRESS_BYTES_A_TEST);
221 final Class<? extends LispAddressFamily> addressClass = LispAddressUtil.addressTypeFromInet(ipv4InetAddress);
222 assertEquals(Ipv4Afi.class, addressClass);
224 final Address address = LispAddressUtil.addressFromInet(ipv4InetAddress);
225 assertTrue(address instanceof Ipv4);
226 assertEquals(IPV4_ADDRESS_VALUE_TEST, ((Ipv4) address).getIpv4().getValue());
230 * Tests {@link LispAddressUtil#addressFromInet(InetAddress)} and {@link LispAddressUtil#addressTypeFromInet
232 * methods with ipv6 address
234 * @throws UnknownHostException
237 public void addressFromInet_ipv6() throws UnknownHostException {
238 final InetAddress ipv6InetAddress = Inet6Address.getByAddress(IPV6_ADDRESS_BYTES_A_TEST);
239 final Class<? extends LispAddressFamily> addressClass = LispAddressUtil.addressTypeFromInet(ipv6InetAddress);
240 assertEquals(Ipv6Afi.class, addressClass);
242 final Address address = LispAddressUtil.addressFromInet(ipv6InetAddress);
243 assertTrue(address instanceof Ipv6);
244 assertEquals(IPV6_ADDRESS_VALUE_TEST, ((Ipv6) address).getIpv6().getValue());
248 * Tests {@link LispAddressUtil#addressFromIpAddress(IpAddress)} and {@link
249 * LispAddressUtil#addressTypeFromIpAddress(IpAddress)}
250 * methods with ipv4 address
253 public void addressFromIpAddress_ipv4() {
254 final IpAddress ipv4Address = new IpAddress(IPV4_ADDRESS_TEST);
255 final Class<? extends LispAddressFamily> addressClass = LispAddressUtil.addressTypeFromIpAddress(ipv4Address);
256 assertEquals(Ipv4Afi.class, addressClass);
258 final Address address = LispAddressUtil.addressFromIpAddress(ipv4Address);
259 assertTrue(address instanceof Ipv4);
260 assertEquals(IPV4_ADDRESS_VALUE_TEST, ((Ipv4) address).getIpv4().getValue());
264 * Tests {@link LispAddressUtil#addressFromIpAddress(IpAddress)} and {@link
265 * LispAddressUtil#addressTypeFromIpAddress(IpAddress)}
266 * methods with ipv6 address
269 public void addressFromIpAddress_ipv6() {
270 final IpAddress ipv6Address = new IpAddress(new Ipv6Address(IPV6_ADDRESS_VALUE_TEST));
271 final Class<? extends LispAddressFamily> addressClass = LispAddressUtil.addressTypeFromIpAddress(ipv6Address);
272 assertEquals(Ipv6Afi.class, addressClass);
274 final Address address = LispAddressUtil.addressFromIpAddress(ipv6Address);
275 assertTrue(address instanceof Ipv6);
276 assertEquals(IPV6_ADDRESS_VALUE_TEST, ((Ipv6) address).getIpv6().getValue());
280 * Tests {@link LispAddressUtil#addressFromIpAddress(IpAddress)} and {@link
281 * LispAddressUtil#addressTypeFromIpAddress(IpAddress)}
282 * methods with null value instead off address.
285 public void addressFromIpAddress_null() {
286 final Class<? extends LispAddressFamily> addressClass = LispAddressUtil.addressTypeFromIpAddress(null);
287 assertNull(addressClass);
289 final Address address = LispAddressUtil.addressFromIpAddress(null);
294 * Tests {@link LispAddressUtil#addressFromIpPrefix(IpPrefix)} and {@link
295 * LispAddressUtil#addressTypeFromIpPrefix(IpPrefix)}
296 * methods with ipv4 address
299 public void addressFromIpPrefix_ipv4() {
300 IpPrefix ipv4Prefix = new IpPrefix(new Ipv4Prefix(IPV4_ADDRESS_PREFIX_VALUE_TEST));
301 final Class<? extends LispAddressFamily> addressClass = LispAddressUtil.addressTypeFromIpPrefix(ipv4Prefix);
302 assertEquals(Ipv4PrefixAfi.class, addressClass);
304 final Address address = LispAddressUtil.addressFromIpPrefix(ipv4Prefix);
305 assertTrue(address instanceof org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.
306 types.rev151105.lisp.address.address.Ipv4Prefix);
307 assertEquals(IPV4_ADDRESS_PREFIX_VALUE_TEST, ((org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.
308 address.types.rev151105.lisp.address.address.Ipv4Prefix) address).getIpv4Prefix().getValue());
312 * Tests {@link LispAddressUtil#addressFromIpPrefix(IpPrefix)} and {@link
313 * LispAddressUtil#addressTypeFromIpPrefix(IpPrefix)}
314 * methods with ipv6 address
317 public void addressFromIpPrefix_ipv6() {
318 IpPrefix ipv6Address = new IpPrefix(new Ipv6Prefix(IPV6_ADDRESS_PREFIX_VALUE_TEST));
319 final Class<? extends LispAddressFamily> addressClass = LispAddressUtil.addressTypeFromIpPrefix(ipv6Address);
320 assertEquals(Ipv6PrefixAfi.class, addressClass);
322 final Address address = LispAddressUtil.addressFromIpPrefix(ipv6Address);
323 assertTrue(address instanceof org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address
324 .types.rev151105.lisp.address.address.Ipv6Prefix);
325 assertEquals(IPV6_ADDRESS_PREFIX_VALUE_TEST,
326 ((org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp
327 .address.address.Ipv6Prefix) address).getIpv6Prefix().getValue());
331 * Tests {@link LispAddressUtil#addressFromIpPrefix(IpPrefix)} and {@link LispAddressUtil#addressTypeFromIpPrefix
333 * methods with null value instead off address.
336 public void addressFromIpPrefix_null() {
337 final Class<? extends LispAddressFamily> addressClass = LispAddressUtil.addressTypeFromIpPrefix(null);
338 assertNull(addressClass);
340 final Address address = LispAddressUtil.addressFromIpPrefix(null);
345 * Tests {@link LispAddressUtil#addressFromMacAddress(MacAddress)} methods with mac address.
348 public void addressFromMacAddress_mac() {
349 final Address address = LispAddressUtil.addressFromMacAddress(new MacAddress(MAC_ADDRESS_VALUE_TEST));
350 assertTrue(address instanceof Mac);
351 assertEquals(MAC_ADDRESS_VALUE_TEST, ((Mac) address).getMac().getValue());
355 * Tests {@link LispAddressUtil#addressFromMacAddress(MacAddress)} methods with null instead of address.
358 public void addressFromMacAddress_null() {
359 final Address address = LispAddressUtil.addressFromMacAddress(null);
365 * Test {@link LispAddressUtil#addressFromServicePath(ServicePath)} method with concrete servicePath
368 public void addressFromServicePathTest_withServicePath() {
369 org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address
370 .address.service.path.ServicePathBuilder servicePathBuilder = new org.opendaylight.yang.gen.v1.urn.ietf
371 .params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address
372 .address.service.path.ServicePathBuilder();
373 servicePathBuilder.setServiceIndex(SERVICE_INDEX_TEST);
374 servicePathBuilder.setServicePathId(new ServicePathIdType(DUMMY_SERVICE_PATH_ID_TYPE));
376 ServicePath expectedAddress = servicePathBuilder.build();
377 final Address testedAddress = LispAddressUtil.addressFromServicePath(expectedAddress);
378 assertTrue(testedAddress instanceof org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address
379 .types.rev151105.lisp.address.address.ServicePath);
380 assertEquals(expectedAddress, ((org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address
381 .types.rev151105.lisp.address.address.ServicePath) testedAddress).getServicePath());
385 * Test {@link LispAddressUtil#addressFromServicePath(ServicePath)} method with null value
388 public void addressFromServicePathTest_withNull() {
389 final Address testedAddress = LispAddressUtil.addressFromServicePath(null);
390 assertNull(testedAddress);
394 * Test {@link LispAddressUtil#addressFromDistinguishedName(DistinguishedNameType)} method with distinguished name }
397 public void addressFromDistinguishedNameTest_withDistinguishedName() {
398 final DistinguishedNameType distinguishedNameType = new DistinguishedNameType(DISTINGUISHED_NAME_TYPE_VALUE_TEST);
399 final Address testedAddress = LispAddressUtil.addressFromDistinguishedName(distinguishedNameType);
401 assertTrue(testedAddress instanceof DistinguishedName);
402 assertEquals(distinguishedNameType, ((DistinguishedName) testedAddress).getDistinguishedName());
406 * Test {@link LispAddressUtil#addressFromDistinguishedName(DistinguishedNameType)} method with null value }
409 public void addressFromDistinguishedNameTest_withNull() {
410 final Address testedAddress = LispAddressUtil.addressFromDistinguishedName(null);
411 assertNull(testedAddress);
415 * Test {@link LispAddressUtil#addressFromAsNumber(AsNumber)} method with as number value }
418 public void addressFromAsNumberTest_withAdNumber() {
419 final AsNumber expectedAddress = new AsNumber(AS_NUMBER_TEST);
420 final Address testedAddress = LispAddressUtil.addressFromAsNumber(expectedAddress);
421 assertTrue(testedAddress instanceof org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp
422 .address.types.rev151105.lisp.address.address.AsNumber);
423 assertEquals(expectedAddress, ((org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp
424 .address.types.rev151105.lisp.address.address.AsNumber) testedAddress).getAsNumber());
428 * Test {@link LispAddressUtil#addressFromAsNumber(AsNumber)} method with null instead of value }
431 public void addressFromAsNumberTest_withNull() {
432 final Address testedAddress = LispAddressUtil.addressFromAsNumber(null);
433 assertNull(testedAddress);
439 * - {@link LispAddressUtil#toRloc(InetAddress)}
440 * - {@link LispAddressUtil#toRloc(Ipv4Address)}
441 * - {@link LispAddressUtil#toRloc(Ipv6Address)}
442 * - {@link LispAddressUtil#toRloc(SimpleAddress)}
446 public void toRloc() throws UnknownHostException {
447 InetAddress ipv4AddressInet = Inet4Address.getByAddress(IPV4_ADDRESS_BYTES_A_TEST);
448 final Rloc rlocFromInetAddress = LispAddressUtil.toRloc(ipv4AddressInet);
449 assertEquals(Ipv4Afi.class, rlocFromInetAddress.getAddressType());
450 assertEquals(IPV4_ADDRESS_VALUE_TEST, ((Ipv4)rlocFromInetAddress.getAddress()).getIpv4().getValue());
452 final Rloc rlocFromIpv4Address = LispAddressUtil.toRloc(IPV4_ADDRESS_TEST);
453 assertEquals(Ipv4Afi.class, rlocFromIpv4Address.getAddressType());
454 assertEquals(IPV4_ADDRESS_VALUE_TEST, ((Ipv4) rlocFromIpv4Address.getAddress()).getIpv4().getValue());
457 final Rloc rlocFromIpv6Address = LispAddressUtil.toRloc(IPV6_ADDRESS_TEST);
458 assertEquals(Ipv6Afi.class, rlocFromIpv6Address.getAddressType());
459 assertEquals(IPV6_ADDRESS_VALUE_TEST, ((Ipv6) rlocFromIpv6Address.getAddress()).getIpv6().getValue());
461 final Rloc rlocFromSimpleAddress = LispAddressUtil.toRloc(SIMPLE_ADDRESS_A_TEST);
462 assertEquals(Ipv4Afi.class, rlocFromSimpleAddress.getAddressType());
463 assertEquals(IPV4_ADDRESS_VALUE_TEST, ((Ipv4) rlocFromSimpleAddress.getAddress()).getIpv4().getValue());
467 * Test {@link LispAddressUtil#asIpv4Rloc(String)} method with ipv4 or ipv6.
468 * Test {@link LispAddressUtil#asIpv6Rloc(String)} method with ipv4 or ipv6.
471 public void asIpvRloc() {
472 final Rloc rlocFromIpV4 = LispAddressUtil.asIpv4Rloc(IPV4_ADDRESS_VALUE_TEST);
473 assertEquals(Ipv4Afi.class, rlocFromIpV4.getAddressType());
474 assertEquals(IPV4_ADDRESS_VALUE_TEST, ((Ipv4) rlocFromIpV4.getAddress()).getIpv4().getValue());
476 final Rloc rlocFromIpV6 = LispAddressUtil.asIpv6Rloc(IPV6_ADDRESS_VALUE_TEST);
477 assertEquals(Ipv6Afi.class, rlocFromIpV6.getAddressType());
478 assertEquals(IPV6_ADDRESS_VALUE_TEST, ((Ipv6) rlocFromIpV6.getAddress()).getIpv6().getValue());
483 * - {@link LispAddressUtil#toEid(Ipv6Address, InstanceIdType)}
484 * - {@link LispAddressUtil#asIpv6PrefixEid(String)}
485 * - {@link LispAddressUtil#asIpv6PrefixEid(Eid, Inet6Address, short)}
486 * - {@link LispAddressUtil#asIpv6PrefixEid(Ipv6Address, InstanceIdType)}
490 public void toEid_ipv6Prefix() throws UnknownHostException {
491 Eid eidFromIpv6Prefix = LispAddressUtil.toEid(IPV6_ADDRESS_PREFIX_TEST, INSTANCE_ID_TYPE_TEST);
492 verifyToEidWithIpv6Prefix(eidFromIpv6Prefix, true, MASK_OK_TEST, Ipv6PrefixAfi.class);
494 eidFromIpv6Prefix = LispAddressUtil.asIpv6PrefixEid(IPV6_ADDRESS_PREFIX_VALUE_TEST);
495 verifyToEidWithIpv6Prefix(eidFromIpv6Prefix, false, MASK_OK_TEST, Ipv6PrefixAfi.class);
497 eidFromIpv6Prefix = LispAddressUtil.asIpv6PrefixEid(IPV6_ADDRESS_TEST, INSTANCE_ID_TYPE_TEST);
498 verifyToEidWithIpv6Prefix(eidFromIpv6Prefix, true, MASK_OK_DEFAULT_IPV6_TEST, Ipv6PrefixAfi.class);
504 * - {@link LispAddressUtil#toEid(MacAddress, InstanceIdType)}
505 * - {@link LispAddressUtil#asMacEid(String)}
506 * - {@link LispAddressUtil#asMacEid(String, long)}
510 public void toEid_mac() {
511 Eid eidFromMac = LispAddressUtil.toEid(MAC_ADDRESS_TEST, INSTANCE_ID_TYPE_TEST);
512 verifyToEidWithMacAddress(eidFromMac, true);
514 eidFromMac = LispAddressUtil.asMacEid(MAC_ADDRESS_VALUE_TEST);
515 verifyToEidWithMacAddress(eidFromMac, false);
517 eidFromMac = LispAddressUtil.asMacEid(MAC_ADDRESS_VALUE_TEST, INSTANCE_ID_TYPE_VALUE_TEST);
518 verifyToEidWithMacAddress(eidFromMac, true);
523 * - {@link LispAddressUtil#toEid(Ipv6Address, InstanceIdType)}
524 * - {@link LispAddressUtil#asIpv6Eid(String)}
525 * - {@link LispAddressUtil#asIpv6Eid(String, long)}
529 public void toEid_ipv6() {
530 Eid eidFromIpv6 = LispAddressUtil.toEid(IPV6_ADDRESS_TEST, INSTANCE_ID_TYPE_TEST);
531 verifyToEidWithIpv6(eidFromIpv6, true);
533 eidFromIpv6 = LispAddressUtil.asIpv6Eid(IPV6_ADDRESS_VALUE_TEST);
534 verifyToEidWithIpv6(eidFromIpv6, false);
536 eidFromIpv6 = LispAddressUtil.asIpv6Eid(IPV6_ADDRESS_VALUE_TEST, INSTANCE_ID_TYPE_VALUE_TEST);
537 verifyToEidWithIpv6(eidFromIpv6, true);
542 * - {@link LispAddressUtil#toEid(Ipv4Prefix, InstanceIdType)}
543 * - {@link LispAddressUtil#asIpv4PrefixEid(String)}
544 * - {@link LispAddressUtil#asIpv4PrefixEid(Eid, Inet4Address, short)}
545 * - {@link LispAddressUtil#asIpv4PrefixEid(Ipv4Address, InstanceIdType)} }
549 public void toEid_ipv4Prefix() throws UnknownHostException {
550 Eid eidFromIpv4Prefix = LispAddressUtil.toEid(IPV4_ADDRESS_PREFIX_TEST, INSTANCE_ID_TYPE_TEST);
551 verifyToEidWithIpv4Prefix(eidFromIpv4Prefix, true, MASK_OK_TEST, Ipv4PrefixAfi.class);
553 eidFromIpv4Prefix = LispAddressUtil.asIpv4PrefixEid(IPV4_ADDRESS_PREFIX_VALUE_TEST);
554 verifyToEidWithIpv4Prefix(eidFromIpv4Prefix, false, MASK_OK_TEST, Ipv4PrefixAfi.class);
556 eidFromIpv4Prefix = LispAddressUtil.asIpv4PrefixEid(IPV4_ADDRESS_TEST, INSTANCE_ID_TYPE_TEST);
559 public Eid provideDummyMacEid() {
560 final EidBuilder eidBuilder = new EidBuilder();
561 eidBuilder.setAddressType(MacAfi.class);
562 eidBuilder.setVirtualNetworkId(INSTANCE_ID_TYPE_TEST);
563 return eidBuilder.build();
568 * - {@link LispAddressUtil#toEid(Ipv4Address, InstanceIdType)}
569 * - {@link LispAddressUtil#asIpv4Eid(String)}
570 * - {@link LispAddressUtil#asIpv4Eid(String, long)}
574 public void toEid_ipv4() {
575 Eid eidFromIpv4 = LispAddressUtil.toEid(IPV4_ADDRESS_TEST, INSTANCE_ID_TYPE_TEST);
576 verifyToEidWithIpv4(eidFromIpv4, true);
578 eidFromIpv4 = LispAddressUtil.asIpv4Eid(IPV4_ADDRESS_VALUE_TEST);
579 verifyToEidWithIpv4(eidFromIpv4, false);
581 eidFromIpv4 = LispAddressUtil.asIpv4Eid(IPV4_ADDRESS_VALUE_TEST, INSTANCE_ID_TYPE_VALUE_TEST);
582 verifyToEidWithIpv4(eidFromIpv4, true);
587 * - {@link LispAddressUtil#toEid(IpPrefix, InstanceIdType)}
591 public void toEid_ipPrefix() {
592 final Eid eidFromIpPrefix = LispAddressUtil.toEid(IP_ADDRESS_PREFIX_WITH_IPV4_TEST, INSTANCE_ID_TYPE_TEST);
593 verifyToEidWithIpv4Prefix(eidFromIpPrefix, true, MASK_OK_TEST, Ipv4PrefixAfi.class);
598 * - {@link LispAddressUtil#toEid(DistinguishedNameType, InstanceIdType)}
599 * - {@link LispAddressUtil#asDistinguishedNameEid(String)}
600 * - {@link LispAddressUtil#asDistinguishedNameEid(String, long)}
601 * methods with various input.
604 public void toEid_distinguishedName() {
605 Eid eidFromDistinguishedName = LispAddressUtil.toEid(DISTINGUISHED_NAME_TYPE_TEST, INSTANCE_ID_TYPE_TEST);
606 verifyToEidWithDistinguishedName(eidFromDistinguishedName, true);
608 eidFromDistinguishedName = LispAddressUtil.asDistinguishedNameEid(DISTINGUISHED_NAME_TYPE_VALUE_TEST);
609 verifyToEidWithDistinguishedName(eidFromDistinguishedName, false);
611 eidFromDistinguishedName = LispAddressUtil.asDistinguishedNameEid
612 (DISTINGUISHED_NAME_TYPE_VALUE_WITH_MAC_TEST, INSTANCE_ID_TYPE_VALUE_TEST);
613 verifyToEidWithMacAddress(eidFromDistinguishedName, true);
616 private void verifyToEidWithIpv6Prefix(final Eid eidFromIpv6Prefix, final boolean isVniChecked, short
617 expectedMask, final Class<? extends org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp
618 .address.types.rev151105.LispAddressFamily> addressType) {
619 assertEquals(addressType, eidFromIpv6Prefix.getAddressType());
621 assertEquals(INSTANCE_ID_TYPE_TEST, eidFromIpv6Prefix.getVirtualNetworkId());
623 assertEquals(IPV6_ADDRESS_VALUE_TEST + "/" + expectedMask, ((org.opendaylight.yang.gen.v1.urn.ietf.params.xml
624 .ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.Ipv6Prefix) eidFromIpv6Prefix
625 .getAddress()).getIpv6Prefix().getValue());
628 private void verifyToEidWithIpv4(final Eid eidFromIpv4, final boolean isVniChecked) {
629 assertEquals(Ipv4Afi.class, eidFromIpv4.getAddressType());
631 assertEquals(INSTANCE_ID_TYPE_TEST, eidFromIpv4.getVirtualNetworkId());
633 assertEquals(IPV4_ADDRESS_VALUE_TEST, ((Ipv4) eidFromIpv4.getAddress()).getIpv4().getValue());
636 private void verifyToEidWithIpv6(final Eid eidFromIpv6, final boolean isVniChecked) {
637 assertEquals(Ipv6Afi.class, eidFromIpv6.getAddressType());
639 assertEquals(INSTANCE_ID_TYPE_TEST, eidFromIpv6.getVirtualNetworkId());
641 assertEquals(IPV6_ADDRESS_VALUE_TEST, ((Ipv6) eidFromIpv6.getAddress()).getIpv6().getValue());
644 private void verifyToEidWithIpv4Prefix(final Eid eidFromIpv4Prefix, final boolean isVniChecked, short
645 expectedMask, Class<? extends org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address
646 .types.rev151105.LispAddressFamily> addressType) {
647 assertEquals(addressType, eidFromIpv4Prefix.getAddressType());
649 assertEquals(INSTANCE_ID_TYPE_TEST, eidFromIpv4Prefix.getVirtualNetworkId());
651 assertEquals(IPV4_ADDRESS_VALUE_TEST + "/" + expectedMask, ((org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns
653 .lisp.address.types.rev151105.lisp.address.address.Ipv4Prefix) eidFromIpv4Prefix.getAddress())
654 .getIpv4Prefix().getValue());
657 private void verifyToEidWithDistinguishedName(final Eid eidFromDistinguishedName, final boolean isVniChecked) {
658 assertEquals(DistinguishedNameAfi.class, eidFromDistinguishedName.getAddressType());
660 assertEquals(INSTANCE_ID_TYPE_TEST, eidFromDistinguishedName.getVirtualNetworkId());
662 assertEquals(DISTINGUISHED_NAME_TYPE_TEST, ((DistinguishedName) eidFromDistinguishedName.getAddress())
663 .getDistinguishedName());
666 private void verifyToEidWithMacAddress(final Eid eidFromMac, final boolean isVniChecked) {
667 assertEquals(MacAfi.class, eidFromMac.getAddressType());
669 assertEquals(INSTANCE_ID_TYPE_TEST, eidFromMac.getVirtualNetworkId());
671 assertEquals(MAC_ADDRESS_VALUE_TEST, ((Mac) eidFromMac.getAddress()).getMac().getValue());
675 * Tests {@link LispAddressUtil#asIpPrefix(String, int)} with ipv4 address and correct mask
678 public void asIpPrefix_ipv4() {
679 final IpPrefix ipPrefix = LispAddressUtil.asIpPrefix(IPV4_ADDRESS_VALUE_TEST, MASK_OK_TEST);
680 assertNotNull(ipPrefix);
681 final Ipv4Prefix ipv4Prefix = ipPrefix.getIpv4Prefix();
682 assertNotNull(ipv4Prefix);
683 assertEquals(IPV4_ADDRESS_PREFIX_TEST, ipv4Prefix);
687 * Tests {@link LispAddressUtil#asIpPrefix(String, int)} with ipv6 address and correct mask
690 public void asIpPrefix_ipv6() {
691 final IpPrefix ipPrefix = LispAddressUtil.asIpPrefix(IPV6_ADDRESS_VALUE_TEST, MASK_OK_TEST);
692 assertNotNull(ipPrefix);
693 final Ipv6Prefix ipv6Prefix = ipPrefix.getIpv6Prefix();
694 assertNotNull(ipv6Prefix);
695 assertEquals(IPV6_ADDRESS_PREFIX_TEST, ipv6Prefix);
699 * Tests {@link LispAddressUtil#asIpPrefix(String, int)} with incorrect ip address and correct mask
702 public void asIpPrefix_other() {
703 final IpPrefix ipPrefix = LispAddressUtil.asIpPrefix(INCORRECT_IP_ADDRESS_TEST, MASK_OK_TEST);
704 assertNull(ipPrefix);
708 * Tests {@link LispAddressUtil#ipVersionFromString(String)} with ipv4
711 public void ipVersionFromString_ipv4() {
712 final int addressType = LispAddressUtil.ipVersionFromString(IPV4_ADDRESS_VALUE_TEST);
713 assertEquals(4, addressType);
717 * Tests {@link LispAddressUtil#ipVersionFromString(String)} with ipv6
720 public void ipVersionFromString_ipv6() {
721 final int addressType = LispAddressUtil.ipVersionFromString(IPV6_ADDRESS_VALUE_TEST);
722 assertEquals(6, addressType);
726 * Tests {@link LispAddressUtil#ipVersionFromString(String)} with incorrect ip address format
729 public void ipVersionFromString_other() {
730 final int addressType = LispAddressUtil.ipVersionFromString(INCORRECT_IP_ADDRESS_TEST);
731 assertEquals(0, addressType);
736 * Tests {@link LispAddressUtil#asKeyValueAddressEid(SimpleAddress, SimpleAddress)} method.
739 public void asKeyValueAddressEid() {
740 final Eid eid = LispAddressUtil.asKeyValueAddressEid(SIMPLE_ADDRESS_A_TEST, SIMPLE_ADDRESS_B_TEST);
741 verifyKeyValueAddress(eid, SIMPLE_ADDRESS_A_TEST);
745 * Tests {@link LispAddressUtil#asKeyValueAddressRloc(SimpleAddress, SimpleAddress)} method.
748 public void asKeyValueAddressRloc() {
749 final Rloc rloc = LispAddressUtil.asKeyValueAddressRloc(SIMPLE_ADDRESS_A_TEST, SIMPLE_ADDRESS_B_TEST);
750 verifyKeyValueAddress(rloc, SIMPLE_ADDRESS_A_TEST);
754 * Tests {@link LispAddressUtil#asKeyValueAddress(String, SimpleAddress)} method.
757 public void asKeyValueAddress() {
758 final Rloc rloc = LispAddressUtil.asKeyValueAddress(SIMPLE_ADDRESS_DISTINGUISHED_VALUE_TEST, SIMPLE_ADDRESS_B_TEST);
759 verifyKeyValueAddress(rloc, SIMPLE_ADDRESS_DISTINGUISHED_TEST);
762 private void verifyKeyValueAddress(final LispAddress lispAddress, final SimpleAddress keyValue) {
763 assertEquals(KeyValueAddressLcaf.class, lispAddress.getAddressType());
764 assertNull(lispAddress.getVirtualNetworkId());
765 final org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address
766 .address.key.value.address.KeyValueAddress keyValueAddress = ((KeyValueAddress) lispAddress.getAddress()).
767 getKeyValueAddress();
768 assertNotNull(keyValueAddress);
769 assertEquals(keyValue, keyValueAddress.getKey());
770 assertEquals(SIMPLE_ADDRESS_B_TEST, keyValueAddress.getValue());
774 * Tests {@link LispAddressUtil#asSrcDst(String, String, int, int)} method.
777 public void asSrcDst() {
778 final SourceDestKey sourceDestKey = LispAddressUtil.asSrcDst(IPV4_ADDRESS_VALUE_TEST,
779 IPV6_ADDRESS_VALUE_TEST, MASK_OK_TEST, MASK_OK_TEST);
780 assertNotNull(sourceDestKey);
781 assertEquals(SIMPLE_ADDRESS_WITH_IP_PREFIX_IPV4_TEST, sourceDestKey.getSource());
782 assertEquals(SIMPLE_ADDRESS_WITH_IP_PREFIX_IPV6_TEST, sourceDestKey.getDest());
786 * Tests {@link LispAddressUtil#asSrcDstEid(String, String, int, int, int)} method.
789 public void asSrcDstEid_addressesAsString() {
790 final Eid srcDstEid = LispAddressUtil.asSrcDstEid(IPV4_ADDRESS_VALUE_TEST,
791 IPV6_ADDRESS_VALUE_TEST, MASK_OK_TEST, MASK_OK_TEST, INSTANCE_ID_TYPE_VALUE_SHORT_TEST);
792 assertNotNull(srcDstEid);
793 assertEquals(SourceDestKeyLcaf.class, srcDstEid.getAddressType());
794 final SourceDestKey sourceDestKey = ((org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns
795 .yang.ietf.lisp.address.types.rev151105.lisp.address.address.SourceDestKey) srcDstEid.getAddress())
797 assertNotNull(sourceDestKey);
798 assertEquals(SIMPLE_ADDRESS_WITH_IP_PREFIX_IPV4_TEST, sourceDestKey.getSource());
799 assertEquals(SIMPLE_ADDRESS_WITH_IP_PREFIX_IPV6_TEST, sourceDestKey.getDest());
803 * Tests {@link LispAddressUtil#asSrcDstEid(SourceDestKey, InstanceIdType)} method.
806 public void asSrcDstEid_addressesAsSrcDstKey() {
807 final SourceDestKey expectedSourceDestKey = new SourceDestKeyBuilder().setSource
808 (SIMPLE_ADDRESS_WITH_IP_PREFIX_IPV4_TEST).setDest(SIMPLE_ADDRESS_WITH_IP_PREFIX_IPV6_TEST).build();
809 final Eid srcDstEid = LispAddressUtil.asSrcDstEid(expectedSourceDestKey, INSTANCE_ID_TYPE_TEST);
810 assertNotNull(srcDstEid);
811 assertEquals(SourceDestKeyLcaf.class, srcDstEid.getAddressType());
812 final SourceDestKey testedSourceDestKey = ((org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns
813 .yang.ietf.lisp.address.types.rev151105.lisp.address.address.SourceDestKey) srcDstEid.getAddress())
815 assertNotNull(testedSourceDestKey);
816 assertEquals(SIMPLE_ADDRESS_WITH_IP_PREFIX_IPV4_TEST, testedSourceDestKey.getSource());
817 assertEquals(SIMPLE_ADDRESS_WITH_IP_PREFIX_IPV6_TEST, testedSourceDestKey.getDest());
821 * Tests {@link LispAddressUtil#asSrcDstEid(SourceDestKey, InstanceIdType)} method.
824 public void asTeLcafRloc() {
825 final List<IpAddress> ipAddresses = Arrays.asList(IP_ADDRESS_OBJECT_WITH_IPV4_TEST, IP_ADDRESS_OBJECT_WITH_IPV6_TEST);
826 final Rloc rloc = LispAddressUtil.asTeLcafRloc(ipAddresses);
828 assertEquals(ExplicitLocatorPathLcaf.class, rloc.getAddressType());
829 final List<Hop> hops = ((ExplicitLocatorPath) rloc.getAddress()).getExplicitLocatorPath().getHop();
830 assertEquals(hops.size(), ipAddresses.size());
832 for(IpAddress ipAddress : ipAddresses) {
833 assertTrue("Ip address "+ipAddress+"should be part of hops list.",isIpAddressInHops(ipAddress, hops));
836 for(Hop hop : hops) {
837 final Hop.LrsBits lrsBits = hop.getLrsBits();
838 assertFalse(lrsBits.isLookup());
839 assertFalse(lrsBits.isRlocProbe());
840 assertFalse(lrsBits.isStrict());
842 final IpAddress ipAddressFromHop = hop.getAddress().getIpAddress();
843 assertNotNull(ipAddressFromHop);
847 private boolean isIpAddressInHops(final IpAddress ipAddress, final List<Hop> hops) {
848 for (Hop hop : hops) {
849 if (hop.getAddress().getIpAddress().equals(ipAddress)) {
857 * Tests {@link LispAddressUtil#asLocatorRecords(List)} method.
860 public void asLocatorRecords() {
861 final List<Rloc> expectedRlocs = Arrays.asList(LispAddressUtil.toRloc(IPV4_ADDRESS_TEST), LispAddressUtil.toRloc
862 (IPV6_ADDRESS_TEST));
863 final List<LocatorRecord> locatorRecords = LispAddressUtil.asLocatorRecords(expectedRlocs);
865 assertEquals(expectedRlocs.size(), locatorRecords.size());
867 for (Rloc rloc : expectedRlocs) {
868 assertTrue("Rloc " + rloc + " should be part of " +
869 "locator records list list", isRlocInLocatorRecords(locatorRecords, rloc));
872 for (LocatorRecord locatorRecord : locatorRecords) {
873 assertFalse(locatorRecord.isLocalLocator());
874 assertFalse(locatorRecord.isRlocProbed());
875 assertTrue(locatorRecord.isRouted());
876 assertTrue(1 == locatorRecord.getWeight());
877 assertTrue(1 == locatorRecord.getPriority());
878 assertTrue(1 == locatorRecord.getMulticastWeight());
879 assertTrue(1 == locatorRecord.getMulticastPriority());
880 assertEquals("SFC_LISP", locatorRecord.getLocatorId());
884 private boolean isRlocInLocatorRecords(final List<LocatorRecord> locatorRecords, final Rloc rloc) {
885 for (LocatorRecord locatorRecord : locatorRecords) {
886 if (locatorRecord.getRloc().equals(rloc)) {
894 * Tests {@link LispAddressUtil#getNoAddressEid()} method.
897 public void getNoAddressEid() {
898 final Eid noAddressEid = LispAddressUtil.getNoAddressEid();
899 assertEquals(NoAddressAfi.class, noAddressEid.getAddressType());
900 assertNull(noAddressEid.getVirtualNetworkId());
901 assertTrue(((NoAddress) noAddressEid.getAddress()).isNoAddress());
905 * Tests {@link LispAddressUtil#ipAddressToInet(Address)} method with ipv4 value.
908 public void ipAddressToInet_ipv4() {
909 final Ipv4 expectedIpv4 = new Ipv4Builder().setIpv4(IPV4_ADDRESS_TEST).build();
910 final InetAddress testedAddress = LispAddressUtil.ipAddressToInet(expectedIpv4);
911 assertEquals(IPV4_ADDRESS_TEST.getValue(), testedAddress.getHostAddress());
915 * Tests {@link LispAddressUtil#ipAddressToInet(Address)} method with ipv6 value.
918 public void ipAddressToInet_ipv6() {
919 final Ipv6 expectedIpv6 = new Ipv6Builder().setIpv6(IPV6_ADDRESS_TEST).build();
920 final InetAddress testedAddress = LispAddressUtil.ipAddressToInet(expectedIpv6);
921 assertEquals(IPV6_ADDRESS_TEST.getValue(), testedAddress.getHostAddress());
925 * Tests {@link LispAddressUtil#ipAddressToInet(Address)} method with mac value.
928 public void ipAddressToInet_other() {
929 final InetAddress testedAddress = LispAddressUtil.ipAddressToInet(new MacBuilder().build());
930 assertNull(testedAddress);
934 * Tests {@link LispAddressUtil#compareInetAddresses(InetAddress, InetAddress)} with all possible combination
935 * of input parameters to reach 100 % coverage.
938 public void compareInetAddresses() throws UnknownHostException {
939 final InetAddress inetIpv4A = Inet4Address.getByAddress(IPV4_ADDRESS_BYTES_A_TEST);
940 final InetAddress inetIpv6A = Inet6Address.getByAddress(IPV6_ADDRESS_BYTES_A_TEST);
941 final InetAddress inetIpv4B = Inet4Address.getByAddress(IPV4_ADDRESS_BYTES_B_TEST);
942 final InetAddress inetIpv6B = Inet6Address.getByAddress(IPV6_ADDRESS_BYTES_B_TEST);
944 int comparisonResult = LispAddressUtil.compareInetAddresses(inetIpv4A, inetIpv6A);
945 assertEquals(-1, comparisonResult);
947 comparisonResult = LispAddressUtil.compareInetAddresses(inetIpv6A, inetIpv4A);
948 assertEquals(1, comparisonResult);
950 comparisonResult = LispAddressUtil.compareInetAddresses(inetIpv4A, inetIpv4B);
951 assertEquals(-1, comparisonResult);
953 comparisonResult = LispAddressUtil.compareInetAddresses(inetIpv4B, inetIpv4A);
954 assertEquals(1, comparisonResult);
956 comparisonResult = LispAddressUtil.compareInetAddresses(inetIpv4B, inetIpv4B);
957 assertEquals(0, comparisonResult);
959 // remove this ignore once https://git.opendaylight.org/gerrit/#/c/35682/1 will be merged */
961 comparisonResult = LispAddressUtil.compareInetAddresses(inetIpv6A, inetIpv6B);
962 assertEquals(-1, comparisonResult);
964 comparisonResult = LispAddressUtil.compareInetAddresses(inetIpv6B, inetIpv6A);
965 assertEquals(1, comparisonResult);
967 comparisonResult = LispAddressUtil.compareInetAddresses(inetIpv6B, inetIpv6B);
968 assertEquals(0, comparisonResult);
974 * Tests {@link LispAddressUtil#asServicePathEid(long, long, short)} method.
977 public void asServicePathEid() {
978 final Eid eid = LispAddressUtil.asServicePathEid(INSTANCE_ID_TYPE_VALUE_TEST, SERVICE_PATH_ID_TEST,
982 assertEquals(ServicePathLcaf.class, eid.getAddressType());
983 assertEquals(INSTANCE_ID_TYPE_TEST, eid.getVirtualNetworkId());
984 ServicePath servicePath = ((org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.
985 address.types.rev151105.lisp.address.address.ServicePath) eid.getAddress()).getServicePath();
986 assertNotNull(servicePath);
987 assertEquals(SERVICE_INDEX_TEST, servicePath.getServiceIndex());
988 assertEquals(SERVICE_PATH_ID_TEST, servicePath.getServicePathId().getValue());
992 * Tests {@link LispAddressUtil#toIpPrefixEid(IpAddress, int)} method.
994 @Ignore /* remove when https://git.opendaylight.org/gerrit/#/c/35681/2 will be merged */
996 public void toIpPrefixEid() throws UnknownHostException {
997 final Eid eid = LispAddressUtil.toIpPrefixEid(IP_ADDRESS_OBJECT_WITH_IPV4_TEST, INSTANCE_ID_TYPE_VALUE_SHORT_TEST);
998 verifyEidContainsIpPrefix(eid, MASK_OK_DEFAULT_IPV4_TEST);
1002 * Tests {@link LispAddressUtil#toEidNoVni(IpPrefix)} method.
1005 public void toEidNoVni() {
1006 final Eid eid = LispAddressUtil.toEidNoVni(IP_ADDRESS_PREFIX_WITH_IPV4_TEST);
1007 verifyEidContainsIpPrefix(eid, MASK_OK_TEST);
1010 public void verifyEidContainsIpPrefix(final Eid eid, final short mask) {
1011 final Ipv4Prefix expectedPrefix = new Ipv4Prefix(IPV4_ADDRESS_VALUE_TEST + "/" + mask);
1013 assertTrue(eid.getAddress() instanceof org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp
1014 .address.types.rev151105.lisp.address.address.Ipv4Prefix);
1015 final org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address
1016 .address.Ipv4Prefix address = (org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp
1017 .address.types.rev151105.lisp.address.address.Ipv4Prefix) eid.getAddress();
1018 assertEquals(expectedPrefix, address.getIpv4Prefix());
1022 * Tests {@link LispAddressUtil#asEid(SimpleAddress, InstanceIdType)} method.
1025 public void asEid() {
1026 final Eid eid = LispAddressUtil.asEid(SIMPLE_ADDRESS_A_TEST, INSTANCE_ID_TYPE_TEST);
1028 assertEquals(Ipv4Afi.class, eid.getAddressType());
1029 final Ipv4 address = (Ipv4) eid.getAddress();
1030 assertEquals(SIMPLE_ADDRESS_A_TEST.getIpAddress().getIpv4Address(), address.getIpv4());
1031 assertEquals(INSTANCE_ID_TYPE_TEST, eid.getVirtualNetworkId());