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