Checkstyle: fix issues and enforce on lisp-proto
[lispflowmapping.git] / mappingservice / lisp-proto / src / test / java / org / opendaylight / lispflowmapping / lisp / util / LispAddressStringifierTest.java
1 /*
2  * Copyright (c) 2016 Cisco Systems, Inc. and others.  All rights reserved.
3  *
4  * This program and the accompanying materials are made available under the
5  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6  * and is available at http://www.eclipse.org/legal/epl-v10.html
7  */
8 package org.opendaylight.lispflowmapping.lisp.util;
9
10 import static org.junit.Assert.assertEquals;
11 import static org.junit.Assert.assertNull;
12
13 import com.google.common.io.BaseEncoding;
14 import java.util.ArrayList;
15 import java.util.List;
16 import org.junit.Test;
17 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.AsNumber;
18 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress;
19 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpPrefix;
20 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4Address;
21 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4Prefix;
22 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv6Address;
23 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv6Prefix;
24 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.PortNumber;
25 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.DistinguishedNameType;
26 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.InstanceIdType;
27 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.LispAddress;
28 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.ServicePathIdType;
29 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.SimpleAddress;
30 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.AfiList;
31 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.AfiListBuilder;
32 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.ApplicationData;
33 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.ApplicationDataBuilder;
34 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.AsNumberBuilder;
35 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.DistinguishedName;
36 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.DistinguishedNameBuilder;
37 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.ExplicitLocatorPath;
38 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.ExplicitLocatorPathBuilder;
39 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.InstanceId;
40 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.InstanceIdBuilder;
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.Ipv4Builder;
43 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.Ipv4PrefixBuilder;
44 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.Ipv6;
45 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.Ipv6Builder;
46 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.Ipv6PrefixBuilder;
47 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.KeyValueAddress;
48 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.KeyValueAddressBuilder;
49 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.Mac;
50 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.MacBuilder;
51 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.NoAddress;
52 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.NoAddressBuilder;
53 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.ServicePath;
54 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.ServicePathBuilder;
55 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.SourceDestKey;
56 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.SourceDestKeyBuilder;
57 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;
58 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.HopBuilder;
59 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.HopKey;
60 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.MacAddress;
61 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.inet.binary.types.rev160303.Ipv4AddressBinary;
62 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.inet.binary.types.rev160303.Ipv6AddressBinary;
63 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.binary.address.types.rev160504.augmented.lisp.address.address.Ipv4Binary;
64 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.binary.address.types.rev160504.augmented.lisp.address.address.Ipv4BinaryBuilder;
65 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.binary.address.types.rev160504.augmented.lisp.address.address.Ipv4PrefixBinary;
66 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.binary.address.types.rev160504.augmented.lisp.address.address.Ipv4PrefixBinaryBuilder;
67 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.binary.address.types.rev160504.augmented.lisp.address.address.Ipv6Binary;
68 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.binary.address.types.rev160504.augmented.lisp.address.address.Ipv6BinaryBuilder;
69 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.binary.address.types.rev160504.augmented.lisp.address.address.Ipv6PrefixBinary;
70 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.binary.address.types.rev160504.augmented.lisp.address.address.Ipv6PrefixBinaryBuilder;
71 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.XtrId;
72 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.eid.container.EidBuilder;
73
74 public class LispAddressStringifierTest {
75
76     private static final long VNI = 100L;
77     private static final long IID = 200L;
78
79     // Ipv4
80     private static final String IPV4_STRING = "192.168.0.1";
81     private static final Ipv4Address IPV4_ADDRESS = new Ipv4Address(IPV4_STRING);
82     private static final Ipv4 IPV4 = new Ipv4Builder().setIpv4(IPV4_ADDRESS).build();
83     private static final LispAddress LISP_IPV4 = new EidBuilder()
84             .setAddress(IPV4)
85             .setVirtualNetworkId(new InstanceIdType(VNI)).build();
86
87     // Ipv4Binary
88     private static final byte[] IPV4_BYTES = new byte[]{(byte) 192, (byte) 168, 0, 1};
89     private static final Ipv4AddressBinary IPV4_ADDRESS_BINARY = new Ipv4AddressBinary(IPV4_BYTES);
90     private static final Ipv4Binary IPV4_BINARY = new Ipv4BinaryBuilder().setIpv4Binary(IPV4_ADDRESS_BINARY).build();
91     private static final LispAddress LISP_IPV4_BINARY = new EidBuilder()
92             .setAddress(IPV4_BINARY)
93             .setVirtualNetworkId(new InstanceIdType(VNI)).build();
94
95     // Ipv6
96     private static final String IPV6_STRING = "1111:2222:3333:4444:5555:6666:7777:8888";
97     private static final Ipv6Address IPV6_ADDRESS = new Ipv6Address(IPV6_STRING);
98     private static final Ipv6 IPV6 = new Ipv6Builder().setIpv6(new Ipv6Address(IPV6_STRING)).build();
99     private static final LispAddress LISP_IPV6 = new EidBuilder().setAddress(IPV6).build();
100
101     // Ipv6Binary
102     private static final byte[] IPV6_BYTES = new byte[]
103         {17, 17, 34, 34, 51, 51, 68, 68, 85, 85, 102, 102, 119, 119, -120, -120};
104     private static final Ipv6AddressBinary IPV6_ADDRESS_BINARY = new Ipv6AddressBinary(IPV6_BYTES);
105     private static final Ipv6Binary IPV6_BINARY = new Ipv6BinaryBuilder().setIpv6Binary(IPV6_ADDRESS_BINARY).build();
106     private static final LispAddress LISP_IPV6_BINARY = new EidBuilder().setAddress(IPV6_BINARY).build();
107
108     // Ipv4Prefix
109     private static final String PREFIX = "/24";
110     private static final String PREFIX_URL = "%2f24";
111     private static final org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105
112             .lisp.address.address.Ipv4Prefix IPV4_PREFIX = new Ipv4PrefixBuilder()
113             .setIpv4Prefix(new Ipv4Prefix(IPV4_STRING + PREFIX)).build();
114     private static final LispAddress LISP_IPV4_PREFIX = new EidBuilder().setAddress(IPV4_PREFIX).build();
115
116     // Ipv6Prefix
117     private static final org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105
118             .lisp.address.address.Ipv6Prefix IPV6_PREFIX = new Ipv6PrefixBuilder()
119             .setIpv6Prefix(new Ipv6Prefix(IPV6_STRING + PREFIX)).build();
120     private static final LispAddress LISP_IPV6_PREFIX = new EidBuilder().setAddress(IPV6_PREFIX).build();
121
122     // Ipv4PrefixBinary
123     private static final Ipv4PrefixBinary IPV4_PREFIX_BINARY = new Ipv4PrefixBinaryBuilder()
124             .setIpv4AddressBinary(IPV4_ADDRESS_BINARY)
125             .setIpv4MaskLength((short) 24).build();
126     private static final LispAddress LISP_IPV4_PREFIX_BINARY = new EidBuilder().setAddress(IPV4_PREFIX_BINARY).build();
127
128     // Ipv6PrefixBinary
129     private static final Ipv6PrefixBinary IPV6_PREFIX_BINARY = new Ipv6PrefixBinaryBuilder()
130             .setIpv6AddressBinary(IPV6_ADDRESS_BINARY)
131             .setIpv6MaskLength((short) 24).build();
132     private static final LispAddress LISP_IPV6_PREFIX_BINARY = new EidBuilder().setAddress(IPV6_PREFIX_BINARY).build();
133
134     // Mac
135     private static final MacAddress MAC_ADDRESS = new MacAddress("01:23:45:67:89:ab");
136     private static final Mac MAC = new MacBuilder().setMac(MAC_ADDRESS).build();
137     private static final LispAddress LISP_MAC = new EidBuilder().setAddress(MAC).build();
138
139     // DistinguishedNameType
140     private static final DistinguishedNameType DISTINGUISHED_NAME_TYPE =
141             new DistinguishedNameType("distinguished_name");
142     private static final DistinguishedName DISTINGUISHED_NAME = new DistinguishedNameBuilder()
143             .setDistinguishedName(DISTINGUISHED_NAME_TYPE).build();
144     private static final LispAddress LISP_DISTINGUISHED_NAME = new EidBuilder().setAddress(DISTINGUISHED_NAME).build();
145
146     // AsNumber
147     private static final AsNumber AS_NUMBER = new AsNumber(300L);
148     private static final org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp
149             .address.address.AsNumber AS_NUMBER_LISP_TYPE = new AsNumberBuilder().setAsNumber(AS_NUMBER).build();
150     private static final LispAddress LISP_AS_NUMBER = new EidBuilder().setAddress(AS_NUMBER_LISP_TYPE).build();
151
152     // NoAddress
153     private static final NoAddress NO_ADDRESS = new NoAddressBuilder().setNoAddress(true).build();
154     private static final LispAddress LISP_NO_ADDRESS = new EidBuilder().setAddress(NO_ADDRESS).build();
155
156     // AfiList
157     private static final SimpleAddress SIMPLE_ADDRESS_1 = new SimpleAddress(new IpAddress(IPV4_ADDRESS));
158     private static final SimpleAddress SIMPLE_ADDRESS_2 = new SimpleAddress(new IpAddress(IPV6_ADDRESS));
159     private static final List<SimpleAddress> ADDRESS_LIST = new ArrayList<>();
160     private static final AfiList AFI_LIST = new AfiListBuilder().setAfiList(new org.opendaylight.yang.gen.v1.urn.ietf
161             .params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.afi.list.AfiListBuilder()
162             .setAddressList(ADDRESS_LIST).build()).build();
163
164     // ApplicationData
165     private static final LispAddress LISP_AFI_LIST = new EidBuilder().setAddress(AFI_LIST).build();
166     private static final ApplicationData APPLICATION_DATA = new ApplicationDataBuilder().setApplicationData(new org
167             .opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address
168             .application.data.ApplicationDataBuilder()
169             .setAddress(SIMPLE_ADDRESS_1)
170             .setIpTos(0)
171             .setLocalPortHigh(new PortNumber(1234))
172             .setLocalPortLow(new PortNumber(1111))
173             .setProtocol((short)1)
174             .setRemotePortHigh(new PortNumber(9999))
175             .setRemotePortLow(new PortNumber(1000)).build()).build();
176     private static final LispAddress LISP_APPLICATION_DATA = new EidBuilder().setAddress(APPLICATION_DATA).build();
177
178     // ExplicitLocatorPath
179     private static final Hop HOP_1 = new HopBuilder()
180             .setHopId("hop_1")
181             .setAddress(SIMPLE_ADDRESS_1)
182             .setKey(new HopKey("hop_1"))
183             .setLrsBits(new Hop.LrsBits(true, true, true)).build();
184     private static final Hop HOP_2 = new HopBuilder()
185             .setHopId("hop_2")
186             .setAddress(SIMPLE_ADDRESS_2)
187             .setKey(new HopKey("hop_2"))
188             .setLrsBits(new Hop.LrsBits(true, true, true)).build();
189     private static final List<Hop> HOP_LIST = new ArrayList<>();
190     private static final ExplicitLocatorPath EXPLICIT_LOCATOR_PATH = new ExplicitLocatorPathBuilder()
191             .setExplicitLocatorPath(new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types
192                     .rev151105.lisp.address.address.explicit.locator.path.ExplicitLocatorPathBuilder().setHop(HOP_LIST)
193                     .build()).build();
194     private static final LispAddress LISP_EXPLICIT_LOCATOR_PATH = new EidBuilder().setAddress(EXPLICIT_LOCATOR_PATH)
195             .build();
196
197     // SourceDestKey
198     private static final SourceDestKey SOURCE_DEST_KEY = new SourceDestKeyBuilder().setSourceDestKey(new org
199             .opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address
200             .source.dest.key.SourceDestKeyBuilder().setSource(SIMPLE_ADDRESS_1)
201             .setDest(SIMPLE_ADDRESS_2).build()).build();
202     private static final LispAddress LISP_SOURCE_DEST_KEY = new EidBuilder().setAddress(SOURCE_DEST_KEY).build();
203
204     // KeyValueAddress
205     private static final KeyValueAddress KEY_VALUE_ADDRESS = new KeyValueAddressBuilder()
206             .setKeyValueAddress(new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types
207                     .rev151105.lisp.address.address.key.value.address.KeyValueAddressBuilder().setKey(SIMPLE_ADDRESS_1)
208                     .setValue(SIMPLE_ADDRESS_2).build()).build();
209     private static final LispAddress LISP_KEY_VALUE_ADDRESS = new EidBuilder().setAddress(KEY_VALUE_ADDRESS).build();
210
211     // ServicePath
212     private static final ServicePathIdType SERVICE_PATH_ID_TYPE = new ServicePathIdType(123L);
213     private static final ServicePath SERVICE_PATH = new ServicePathBuilder().setServicePath(new org.opendaylight.yang
214             .gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.service.path
215             .ServicePathBuilder().setServiceIndex((short) 1)
216             .setServicePathId(SERVICE_PATH_ID_TYPE).build()).build();
217     private static final LispAddress LISP_SERVICE_PATH = new EidBuilder().setAddress(SERVICE_PATH).build();
218
219     // InstanceId with Ipv4
220     private static final InstanceIdType INSTANCE_ID_TYPE = new InstanceIdType(IID);
221     private static final InstanceId INSTANCE_ID_IPV4 = new InstanceIdBuilder().setInstanceId(new org.opendaylight.yang
222             .gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.instance.id
223             .InstanceIdBuilder().setAddress(new SimpleAddress(new IpAddress(IPV4_ADDRESS)))
224             .setIid(INSTANCE_ID_TYPE).build()).build();
225     private static final LispAddress LISP_IID_IPV4 = new EidBuilder().setAddress(INSTANCE_ID_IPV4).build();
226
227     // InstanceId with Ipv6
228     private static final InstanceId INSTANCE_ID_IPV6 = new InstanceIdBuilder().setInstanceId(new org.opendaylight.yang
229             .gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.instance.id
230             .InstanceIdBuilder().setAddress(new SimpleAddress(new IpAddress(IPV6_ADDRESS)))
231             .setIid(INSTANCE_ID_TYPE).build()).build();
232     private static final LispAddress LISP_IID_IPV6 = new EidBuilder().setAddress(INSTANCE_ID_IPV6).build();
233
234     // InstanceId with Ipv4Prefix
235     private static final InstanceId INSTANCE_ID_IPV4_PREFIX = new InstanceIdBuilder().setInstanceId(new org.opendaylight
236             .yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.instance.id
237             .InstanceIdBuilder().setAddress(new SimpleAddress(new IpPrefix(new Ipv4Prefix(IPV4_STRING + PREFIX))))
238             .setIid(INSTANCE_ID_TYPE).build()).build();
239     private static final LispAddress LISP_IID_IPV4_PREFIX = new EidBuilder().setAddress(INSTANCE_ID_IPV4_PREFIX)
240             .build();
241
242     // InstanceId with Ipv6Prefix
243     private static final InstanceId INSTANCE_ID_IPV6_PREFIX = new InstanceIdBuilder().setInstanceId(new org.opendaylight
244             .yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.instance.id
245             .InstanceIdBuilder().setAddress(new SimpleAddress(new IpPrefix(new Ipv6Prefix(IPV6_STRING + PREFIX))))
246             .setIid(INSTANCE_ID_TYPE).build()).build();
247     private static final LispAddress LISP_IID_IPV6_PREFIX = new EidBuilder().setAddress(INSTANCE_ID_IPV6_PREFIX)
248             .build();
249
250     // InstanceId with Mac
251     private static final InstanceId INSTANCE_ID_MAC = new InstanceIdBuilder().setInstanceId(new org.opendaylight
252             .yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.instance.id
253             .InstanceIdBuilder().setAddress(new SimpleAddress(MAC_ADDRESS))
254             .setIid(INSTANCE_ID_TYPE).build()).build();
255     private static final LispAddress LISP_IID_MAC = new EidBuilder().setAddress(INSTANCE_ID_MAC).build();
256
257     // InstanceId with DistinguishedNameType
258     private static final InstanceId INSTANCE_ID_DISTINGUISHED_NAME_TYPE = new InstanceIdBuilder().setInstanceId(new org
259             .opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address
260             .instance.id.InstanceIdBuilder().setAddress(new SimpleAddress(DISTINGUISHED_NAME_TYPE))
261             .setIid(INSTANCE_ID_TYPE).build()).build();
262     private static final LispAddress LISP_IID_DISTINGUISHED_NAME_TYPE = new EidBuilder()
263             .setAddress(INSTANCE_ID_DISTINGUISHED_NAME_TYPE).build();
264
265     // InstanceId with AsNumber
266     private static final InstanceId INSTANCE_ID_AS_NUMBER = new InstanceIdBuilder().setInstanceId(new org.opendaylight
267             .yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.instance.id
268             .InstanceIdBuilder().setAddress(new SimpleAddress(AS_NUMBER))
269             .setIid(INSTANCE_ID_TYPE).build()).build();
270     private static final LispAddress LISP_IID_AS_NUMBER = new EidBuilder().setAddress(INSTANCE_ID_AS_NUMBER).build();
271
272     private static final XtrId XTR_ID = new XtrId(new byte[]{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15});
273
274     /**
275      * Tests {@link LispAddressStringifier#getString} with Ipv4 address type.
276      */
277     @Test
278     public void getStringTest_withIpv4() {
279         assertEquals("[" + VNI + "] " + IPV4_STRING, LispAddressStringifier.getString(LISP_IPV4));
280     }
281
282     /**
283      * Tests {@link LispAddressStringifier#getString} with Ipv4Binary address type.
284      */
285     @Test
286     public void getStringTest_withIpv4Binary() {
287         assertEquals("[" + VNI + "] " + IPV4_STRING, LispAddressStringifier.getString(LISP_IPV4_BINARY));
288     }
289
290     /**
291      * Tests {@link LispAddressStringifier#getString} with Ipv4Prefix address type.
292      */
293     @Test
294     public void getStringTest_withIpv4Prefix() {
295         assertEquals(IPV4_STRING + PREFIX, LispAddressStringifier.getString(LISP_IPV4_PREFIX));
296     }
297
298     /**
299      * Tests {@link LispAddressStringifier#getString} with Ipv4PrefixBinary address type.
300      */
301     @Test
302     public void getStringTest_withIpv4PrefixBinary() {
303         assertEquals(IPV4_STRING + PREFIX, LispAddressStringifier.getString(LISP_IPV4_PREFIX_BINARY));
304     }
305
306     /**
307      * Tests {@link LispAddressStringifier#getString} with Ipv6 address type.
308      */
309     @Test
310     public void getStringTest_withIpv6() {
311         assertEquals(IPV6_STRING, LispAddressStringifier.getString(LISP_IPV6));
312     }
313
314     /**
315      * Tests {@link LispAddressStringifier#getString} with Ipv6Binary address type.
316      */
317     @Test
318     public void getStringTest_withIpv6Binary() {
319         assertEquals(IPV6_STRING, LispAddressStringifier.getString(LISP_IPV6_BINARY));
320     }
321
322     /**
323      * Tests {@link LispAddressStringifier#getString} with Ipv6Prefix address type.
324      */
325     @Test
326     public void getStringTest_withIpv6Prefix() {
327         assertEquals(IPV6_STRING + PREFIX, LispAddressStringifier.getString(LISP_IPV6_PREFIX));
328     }
329
330     /**
331      * Tests {@link LispAddressStringifier#getString} with Ipv6PrefixBinary address type.
332      */
333     @Test
334     public void getStringTest_withIpv6PrefixBinary() {
335         assertEquals(IPV6_STRING + PREFIX, LispAddressStringifier.getString(LISP_IPV6_PREFIX_BINARY));
336     }
337
338     /**
339      * Tests {@link LispAddressStringifier#getString} with Mac address type.
340      */
341     @Test
342     public void getStringTest_withMac() {
343         assertEquals(MAC.getMac().getValue(), LispAddressStringifier.getString(LISP_MAC));
344     }
345
346     /**
347      * Tests {@link LispAddressStringifier#getString} with InstanceId address type.
348      */
349     @Test
350     public void getStringTest_withInstanceId() {
351         // with Ipv4
352         assertEquals("[" + IID + "] " + IPV4_STRING, LispAddressStringifier.getString(LISP_IID_IPV4));
353
354         // with Ipv6
355         assertEquals("[" + IID + "] " + IPV6_STRING, LispAddressStringifier.getString(LISP_IID_IPV6));
356
357         // with Ipv4Prefix
358         assertEquals("[" + IID + "] " + IPV4_STRING + PREFIX, LispAddressStringifier.getString(LISP_IID_IPV4_PREFIX));
359
360         // with Ipv6Prefix
361         assertEquals("[" + IID + "] " + IPV6_STRING + PREFIX, LispAddressStringifier.getString(LISP_IID_IPV6_PREFIX));
362
363         // with Mac
364         assertEquals("[" + IID + "] " + MAC.getMac().getValue(), LispAddressStringifier.getString(LISP_IID_MAC));
365
366         // with DistinguishedNameType
367         assertEquals("[" + IID + "] " + DISTINGUISHED_NAME_TYPE.getValue(), LispAddressStringifier
368                 .getString(LISP_IID_DISTINGUISHED_NAME_TYPE));
369
370         // with AsNumber
371         assertEquals("[" + IID + "] AS" + AS_NUMBER.getValue(), LispAddressStringifier.getString(LISP_IID_AS_NUMBER));
372     }
373
374     /**
375      * Tests {@link LispAddressStringifier#getString} with NoAddress address type.
376      */
377     @Test
378     public void getStringTest_withNoAddress() {
379         assertEquals("No Address Present", LispAddressStringifier.getString(LISP_NO_ADDRESS));
380     }
381
382     /**
383      * Tests {@link LispAddressStringifier#getString} with DistinguishedName address type.
384      */
385     @Test
386     public void getStringTest_withDistinguishedName() {
387         assertEquals(DISTINGUISHED_NAME_TYPE.getValue(), LispAddressStringifier.getString(LISP_DISTINGUISHED_NAME));
388     }
389
390     /**
391      * Tests {@link LispAddressStringifier#getString} with AsNumber address type.
392      */
393     @Test
394     public void getStringTest_withAsNumber() {
395         assertEquals("AS" + AS_NUMBER.getValue(), LispAddressStringifier.getString(LISP_AS_NUMBER));
396     }
397
398     /**
399      * Tests {@link LispAddressStringifier#getString} with AfiList address type.
400      */
401     @Test
402     public void getStringTest_withAfiList() {
403         ADDRESS_LIST.add(SIMPLE_ADDRESS_1);
404         ADDRESS_LIST.add(SIMPLE_ADDRESS_2);
405
406         assertEquals("{" + IPV4_STRING + "," + IPV6_STRING + "}", LispAddressStringifier.getString(LISP_AFI_LIST));
407     }
408
409     private String getStringFromAppData(final ApplicationData appData) {
410         StringBuilder sb = new StringBuilder();
411         final org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address
412                 .address.application.data.ApplicationData applicationData = appData.getApplicationData();
413
414         sb.append(applicationData.getAddress().getIpAddress().getIpv4Address().getValue())
415         .append("!").append(applicationData.getIpTos())
416         .append("!").append(applicationData.getProtocol())
417         .append("!").append(applicationData.getLocalPortLow())
418         .append("-").append(applicationData.getLocalPortHigh())
419         .append("!").append(applicationData.getRemotePortLow())
420         .append("-").append(applicationData.getRemotePortHigh());
421
422         return sb.toString();
423     }
424
425     /**
426      * Tests {@link LispAddressStringifier#getString} with ApplicationData address type.
427      */
428     @Test
429     public void getStringTest_withApplicationData() {
430         assertEquals(getStringFromAppData((ApplicationData) LISP_APPLICATION_DATA.getAddress()), LispAddressStringifier
431                 .getString(LISP_APPLICATION_DATA));
432     }
433
434     private static String getStringFromExplicLocPath() {
435         StringBuilder sb = new StringBuilder();
436         sb.append("{")
437             .append(IPV4_STRING)
438             .append("|")
439             .append("l")
440             .append("p")
441             .append("s")
442
443             .append("->")
444
445             .append(IPV6_STRING)
446             .append("|")
447             .append("l")
448             .append("p")
449             .append("s")
450             .append("}");
451
452         return sb.toString();
453     }
454
455     /**
456      * Tests {@link LispAddressStringifier#getString} with ExplicitLocatorPath address type.
457      */
458     @Test
459     public void getStringTest_withExplicitLocatorPath() {
460         HOP_LIST.add(HOP_1);
461         HOP_LIST.add(HOP_2);
462
463         assertEquals(getStringFromExplicLocPath(), LispAddressStringifier.getString(LISP_EXPLICIT_LOCATOR_PATH));
464     }
465
466     private static String getStringFromSrcDstKey() {
467         StringBuilder sb = new StringBuilder();
468         sb.append(IPV4_STRING)
469             .append("|")
470             .append(IPV6_STRING);
471
472         return sb.toString();
473     }
474
475     /**
476      * Tests {@link LispAddressStringifier#getString} with SourceDestKey address type.
477      */
478     @Test
479     public void getStringTest_withSourceDestKey() {
480         assertEquals(getStringFromSrcDstKey(), LispAddressStringifier.getString(LISP_SOURCE_DEST_KEY));
481     }
482
483     /**
484      * Tests {@link LispAddressStringifier#getString} with KeyValueAddress address type.
485      */
486     @Test
487     public void getStringTest_withKeyValueAddress() {
488         assertEquals(IPV4_STRING + "=>" + IPV6_STRING, LispAddressStringifier.getString(LISP_KEY_VALUE_ADDRESS));
489     }
490
491     /**
492      * Tests {@link LispAddressStringifier#getString} with ServicePath address type.
493      */
494     @Test
495     public void getStringTest_withServicePath() {
496         assertEquals(SERVICE_PATH_ID_TYPE.getValue() + "(" + SERVICE_PATH.getServicePath().getServiceIndex() + ")",
497                 LispAddressStringifier.getString(LISP_SERVICE_PATH));
498     }
499
500     /**
501      * Tests {@link LispAddressStringifier#getString} with no address type.
502      */
503     @Test
504     public void getStringTest_withoutAddress() {
505         assertNull(LispAddressStringifier.getString(new EidBuilder().build()));
506     }
507
508     /**
509      * Tests {@link LispAddressStringifier#getURIString} with Ipv4Prefix address type.
510      */
511     @Test
512     public void getURIStringTest_withIpv4Prefix() {
513         assertEquals("ipv4:" + IPV4_STRING + PREFIX, LispAddressStringifier.getURIString(LISP_IPV4_PREFIX));
514     }
515
516     /**
517      * Tests {@link LispAddressStringifier#getURLString} with Ipv4Prefix address type.
518      */
519     @Test
520     public void getURLStringTest_withIpv4Prefix() {
521         assertEquals("ipv4:" + IPV4_STRING + PREFIX_URL, LispAddressStringifier.getURLString(LISP_IPV4_PREFIX));
522     }
523
524     /**
525      * Tests {@link LispAddressStringifier#getURLString} with IID_Ipv4 address type.
526      */
527     @Test
528     public void getURLStringTest_withInstanceId() {
529         assertEquals("ipv4:" + IPV4_STRING, LispAddressStringifier.getURLString(LISP_IID_IPV4));
530     }
531
532     /**
533      * Tests {@link LispAddressStringifier#getString} with XtrId.
534      */
535     @Test
536     public void getStringTest_withXtrId() {
537         assertEquals(BaseEncoding.base16().encode(XTR_ID.getValue()), LispAddressStringifier.getString(XTR_ID));
538     }
539
540     /**
541      * Tests {@link LispAddressStringifier#getURIString} with XtrId.
542      */
543     @Test
544     public void getStringURITest_withXtrId() {
545         assertEquals(BaseEncoding.base16().encode(XTR_ID.getValue()), LispAddressStringifier.getURIString(XTR_ID));
546     }
547
548     /**
549      * Tests {@link LispAddressStringifier#getURLString} with XtrId.
550      */
551     @Test
552     public void getStringURLTest_withXtrId() {
553         assertEquals(BaseEncoding.base16().encode(XTR_ID.getValue()), LispAddressStringifier.getURLString(XTR_ID));
554     }
555
556 }