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;
10 import static org.junit.Assert.assertEquals;
12 import org.junit.Test;
13 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpPrefix;
14 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4Prefix;
15 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.InstanceIdType;
16 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.Ipv4PrefixAfi;
17 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.SimpleAddress;
18 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.Address;
19 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.Ipv4PrefixBuilder;
20 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.SourceDestKey;
21 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address.address.SourceDestKeyBuilder;
22 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.inet.binary.types.rev160303.Ipv4AddressBinary;
23 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.binary.address.types.rev160504.Ipv4PrefixBinaryAfi;
24 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.binary.address.types.rev160504.augmented.lisp.address.address.Ipv4PrefixBinary;
25 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.binary.address.types.rev160504.augmented.lisp.address.address.Ipv4PrefixBinaryBuilder;
26 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.eid.container.Eid;
27 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.eid.container.EidBuilder;
28 import org.opendaylight.yangtools.yang.common.Uint32;
29 import org.opendaylight.yangtools.yang.common.Uint8;
31 public class SourceDestKeyHelperTest {
33 private static final String IPV4_STRING_SOURCE = "192.168.0.1";
34 private static final String IPV4_STRING_DEST = "192.168.0.2";
35 private static final short MASK_1 = 20;
36 private static final short MASK_2 = 24;
38 private static final byte[] IPV4_BYTE_SOURCE = new byte[]{-64, -88, 0, 1};
39 private static final byte[] IPV4_BYTE_DEST = new byte[]{-64, -88, 0, 2};
41 private static final Ipv4Prefix IPV4_PREFIX_SOURCE = new Ipv4Prefix(IPV4_STRING_SOURCE + "/" + MASK_1);
42 private static final Ipv4Prefix IPV4_PREFIX_DEST = new Ipv4Prefix(IPV4_STRING_DEST + "/" + MASK_2);
43 private static final Ipv4AddressBinary IPV4_SOURCE_ADDRESS_BINARY = new Ipv4AddressBinary(IPV4_BYTE_SOURCE);
44 private static final Ipv4AddressBinary IPV4_DEST_ADDRESS_BINARY = new Ipv4AddressBinary(IPV4_BYTE_DEST);
45 private static final Ipv4PrefixBinary IPV4_SOURCE_PREFIX_BINARY =
46 getIpv4PrefixBinary(IPV4_SOURCE_ADDRESS_BINARY, MASK_1);
47 private static final Ipv4PrefixBinary IPV4_DEST_PREFIX_BINARY =
48 getIpv4PrefixBinary(IPV4_DEST_ADDRESS_BINARY, MASK_2);
50 private static final SimpleAddress SOURCE = new SimpleAddress(new IpPrefix(IPV4_PREFIX_SOURCE));
51 private static final SimpleAddress DEST = new SimpleAddress(new IpPrefix(IPV4_PREFIX_DEST));
52 private static final InstanceIdType INSTANCE_ID = new InstanceIdType(Uint32.valueOf(100));
53 private static final Address SOURCE_DEST_KEY = getSourceDestKeyAddress(SOURCE, DEST);
54 private static final Address IPV4_PREFIX = new Ipv4PrefixBuilder().setIpv4Prefix(IPV4_PREFIX_SOURCE).build();
55 private static final Eid EID_IPV4_PREFIX_ADDRESS = new EidBuilder().setAddress(IPV4_PREFIX).build();
56 private static final Eid EID_SOURCE_DEST_KEY = getEidSourceDestKey();
59 * Tests {@link SourceDestKeyHelper#getSrc} method with SourceDestKey address type.
62 public void getSrcTest_sourceDestKey() {
63 final Eid expectedResult = new EidBuilder()
64 .setAddress(new Ipv4PrefixBuilder().setIpv4Prefix(IPV4_PREFIX_SOURCE).build())
65 .setVirtualNetworkId(INSTANCE_ID)
66 .setAddressType(Ipv4PrefixAfi.VALUE).build();
67 assertEquals(expectedResult, SourceDestKeyHelper.getSrc(EID_SOURCE_DEST_KEY));
71 * Tests {@link SourceDestKeyHelper#getSrc} method with Ipv4Prefix address type.
74 public void getSrcTest_ipv4Prefix() {
75 assertEquals(EID_IPV4_PREFIX_ADDRESS, SourceDestKeyHelper.getSrc(EID_IPV4_PREFIX_ADDRESS));
79 * Tests {@link SourceDestKeyHelper#getDst} method with SourceDestKey address type.
82 public void getDstTest_sourceDestKey() {
83 final Eid expectedResult = new EidBuilder()
84 .setAddress(new Ipv4PrefixBuilder().setIpv4Prefix(IPV4_PREFIX_DEST).build())
85 .setVirtualNetworkId(INSTANCE_ID)
86 .setAddressType(Ipv4PrefixAfi.VALUE).build();
87 assertEquals(expectedResult, SourceDestKeyHelper.getDst(EID_SOURCE_DEST_KEY));
91 * Tests {@link SourceDestKeyHelper#getDst} method with Ipv4Prefix address type.
94 public void getDstTest_ipv4Prefix() {
95 assertEquals(EID_IPV4_PREFIX_ADDRESS, SourceDestKeyHelper.getDst(EID_IPV4_PREFIX_ADDRESS));
99 * Tests {@link SourceDestKeyHelper#getSrcBinary} method with SourceDestKey address type.
102 public void getSrcBinaryTest_sourceDestKey() {
103 final Eid expectedResult = new EidBuilder()
104 .setAddress(IPV4_SOURCE_PREFIX_BINARY)
105 .setVirtualNetworkId(INSTANCE_ID)
106 .setAddressType(Ipv4PrefixBinaryAfi.VALUE).build();
107 assertEquals(expectedResult, SourceDestKeyHelper.getSrcBinary(EID_SOURCE_DEST_KEY));
111 * Tests {@link SourceDestKeyHelper#getSrcBinary} method with Ipv4Prefix address type.
114 public void getSrcBinaryTest_ipv4Prefix() {
115 assertEquals(EID_IPV4_PREFIX_ADDRESS, SourceDestKeyHelper.getSrcBinary(EID_IPV4_PREFIX_ADDRESS));
119 * Tests {@link SourceDestKeyHelper#getDstBinary} method with SourceDestKey address type.
122 public void getDstBinaryTest_sourceDestKey() {
123 final Eid expectedResult = new EidBuilder()
124 .setAddress(IPV4_DEST_PREFIX_BINARY)
125 .setVirtualNetworkId(INSTANCE_ID)
126 .setAddressType(Ipv4PrefixBinaryAfi.VALUE).build();
127 assertEquals(expectedResult, SourceDestKeyHelper.getDstBinary(EID_SOURCE_DEST_KEY));
131 * Tests {@link SourceDestKeyHelper#getDstBinary} method with Ipv4Prefix address type.
134 public void getDstBinaryTest_ipv4Prefix() {
135 assertEquals(EID_IPV4_PREFIX_ADDRESS, SourceDestKeyHelper.getDstBinary(EID_IPV4_PREFIX_ADDRESS));
139 * Tests {@link SourceDestKeyHelper#getSrcMask} method with SourceDestKey address type.
142 public void getSrcMaskTest_sourceDestKey() {
143 assertEquals((short) 20, SourceDestKeyHelper.getSrcMask(EID_SOURCE_DEST_KEY));
147 * Tests {@link SourceDestKeyHelper#getSrcMask} method with Ipv4Prefix address type.
150 public void getSrcMaskTest_ipv4Prefix() {
151 assertEquals((short) 0, SourceDestKeyHelper.getSrcMask(EID_IPV4_PREFIX_ADDRESS));
155 * Tests {@link SourceDestKeyHelper#getDstMask} method with SourceDestKey address type.
158 public void getDstMaskTest_sourceDestKey() {
159 assertEquals((short) 24, SourceDestKeyHelper.getDstMask(EID_SOURCE_DEST_KEY));
163 * Tests {@link SourceDestKeyHelper#getDstMask} method with Ipv4Prefix address type.
166 public void getDstMaskTest_ipv4Prefix() {
167 assertEquals((short) 0, SourceDestKeyHelper.getDstMask(EID_IPV4_PREFIX_ADDRESS));
170 private static SourceDestKey getSourceDestKeyAddress(SimpleAddress sourceAddress, SimpleAddress destAddress) {
171 return new SourceDestKeyBuilder()
172 .setSourceDestKey(new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types
173 .rev151105.lisp.address.address.source.dest.key.SourceDestKeyBuilder()
174 .setSource(sourceAddress)
175 .setDest(destAddress).build())
179 private static Eid getEidSourceDestKey() {
180 return new EidBuilder().setAddress(SOURCE_DEST_KEY).setVirtualNetworkId(INSTANCE_ID).build();
183 private static Ipv4PrefixBinary getIpv4PrefixBinary(Ipv4AddressBinary ipv4AddressBinary, short mask) {
184 return new Ipv4PrefixBinaryBuilder()
185 .setIpv4AddressBinary(ipv4AddressBinary)
186 .setIpv4MaskLength(Uint8.valueOf(mask))