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.rev100924.IpPrefix;
14 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.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
20 .address.Ipv4PrefixBuilder;
21 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address
22 .address.SourceDestKey;
23 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.lisp.address
24 .address.SourceDestKeyBuilder;
25 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.inet.binary.types.rev160303.Ipv4AddressBinary;
26 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.binary.address.types.rev160504.Ipv4PrefixBinaryAfi;
27 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.binary.address.types.rev160504.augmented.lisp.address
28 .address.Ipv4PrefixBinary;
29 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.binary.address.types.rev160504.augmented.lisp.address
30 .address.Ipv4PrefixBinaryBuilder;
31 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.eid.container.Eid;
32 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.lisp.proto.rev151105.eid.container.EidBuilder;
34 public class SourceDestKeyHelperTest {
36 private static final String IPV4_STRING_SOURCE = "192.168.0.1";
37 private static final String IPV4_STRING_DEST = "192.168.0.2";
38 private static final short MASK_1 = 20;
39 private static final short MASK_2 = 24;
41 private static final byte[] IPV4_BYTE_SOURCE = new byte[]{-64, -88, 0, 1};
42 private static final byte[] IPV4_BYTE_DEST = new byte[]{-64, -88, 0, 2};
44 private static final Ipv4Prefix IPV4_PREFIX_SOURCE = new Ipv4Prefix(IPV4_STRING_SOURCE + "/" + MASK_1);
45 private static final Ipv4Prefix IPV4_PREFIX_DEST = new Ipv4Prefix(IPV4_STRING_DEST + "/" + MASK_2);
46 private static final Ipv4AddressBinary IPV4_SOURCE_ADDRESS_BINARY = new Ipv4AddressBinary(IPV4_BYTE_SOURCE);
47 private static final Ipv4AddressBinary IPV4_DEST_ADDRESS_BINARY = new Ipv4AddressBinary(IPV4_BYTE_DEST);
48 private static final Ipv4PrefixBinary IPV4_SOURCE_PREFIX_BINARY =
49 getIpv4PrefixBinary(IPV4_SOURCE_ADDRESS_BINARY, MASK_1);
50 private static final Ipv4PrefixBinary IPV4_DEST_PREFIX_BINARY =
51 getIpv4PrefixBinary(IPV4_DEST_ADDRESS_BINARY, MASK_2);
53 private static final SimpleAddress SOURCE = new SimpleAddress(new IpPrefix(IPV4_PREFIX_SOURCE));
54 private static final SimpleAddress DEST = new SimpleAddress(new IpPrefix(IPV4_PREFIX_DEST));
55 private static final InstanceIdType INSTANCE_ID = new InstanceIdType(100L);
56 private static final Address SOURCE_DEST_KEY = getSourceDestKeyAddress(SOURCE, DEST);
57 private static final Address IPV4_PREFIX = new Ipv4PrefixBuilder().setIpv4Prefix(IPV4_PREFIX_SOURCE).build();
58 private static final Eid EID_IPV4_PREFIX_ADDRESS = new EidBuilder().setAddress(IPV4_PREFIX).build();
59 private static final Eid EID_SOURCE_DEST_KEY = getEidSourceDestKey();
62 * Tests {@link SourceDestKeyHelper#getSrc} method with SourceDestKey address type.
65 public void getSrcTest_sourceDestKey() {
66 final Eid expectedResult = new EidBuilder()
67 .setAddress(new Ipv4PrefixBuilder().setIpv4Prefix(IPV4_PREFIX_SOURCE).build())
68 .setVirtualNetworkId(INSTANCE_ID)
69 .setAddressType(Ipv4PrefixAfi.class).build();
70 assertEquals(expectedResult, SourceDestKeyHelper.getSrc(EID_SOURCE_DEST_KEY));
74 * Tests {@link SourceDestKeyHelper#getSrc} method with Ipv4Prefix address type.
77 public void getSrcTest_ipv4Prefix() {
78 assertEquals(EID_IPV4_PREFIX_ADDRESS, SourceDestKeyHelper.getSrc(EID_IPV4_PREFIX_ADDRESS));
82 * Tests {@link SourceDestKeyHelper#getDst} method with SourceDestKey address type.
85 public void getDstTest_sourceDestKey() {
86 final Eid expectedResult = new EidBuilder()
87 .setAddress(new Ipv4PrefixBuilder().setIpv4Prefix(IPV4_PREFIX_DEST).build())
88 .setVirtualNetworkId(INSTANCE_ID)
89 .setAddressType(Ipv4PrefixAfi.class).build();
90 assertEquals(expectedResult, SourceDestKeyHelper.getDst(EID_SOURCE_DEST_KEY));
94 * Tests {@link SourceDestKeyHelper#getDst} method with Ipv4Prefix address type.
97 public void getDstTest_ipv4Prefix() {
98 assertEquals(EID_IPV4_PREFIX_ADDRESS, SourceDestKeyHelper.getDst(EID_IPV4_PREFIX_ADDRESS));
102 * Tests {@link SourceDestKeyHelper#getSrcBinary} method with SourceDestKey address type.
105 public void getSrcBinaryTest_sourceDestKey() {
106 final Eid expectedResult = new EidBuilder()
107 .setAddress(IPV4_SOURCE_PREFIX_BINARY)
108 .setVirtualNetworkId(INSTANCE_ID)
109 .setAddressType(Ipv4PrefixBinaryAfi.class).build();
110 assertEquals(expectedResult, SourceDestKeyHelper.getSrcBinary(EID_SOURCE_DEST_KEY));
114 * Tests {@link SourceDestKeyHelper#getSrcBinary} method with Ipv4Prefix address type.
117 public void getSrcBinaryTest_ipv4Prefix() {
118 assertEquals(EID_IPV4_PREFIX_ADDRESS, SourceDestKeyHelper.getSrcBinary(EID_IPV4_PREFIX_ADDRESS));
122 * Tests {@link SourceDestKeyHelper#getDstBinary} method with SourceDestKey address type.
125 public void getDstBinaryTest_sourceDestKey() {
126 final Eid expectedResult = new EidBuilder()
127 .setAddress(IPV4_DEST_PREFIX_BINARY)
128 .setVirtualNetworkId(INSTANCE_ID)
129 .setAddressType(Ipv4PrefixBinaryAfi.class).build();
130 assertEquals(expectedResult, SourceDestKeyHelper.getDstBinary(EID_SOURCE_DEST_KEY));
134 * Tests {@link SourceDestKeyHelper#getDstBinary} method with Ipv4Prefix address type.
137 public void getDstBinaryTest_ipv4Prefix() {
138 assertEquals(EID_IPV4_PREFIX_ADDRESS, SourceDestKeyHelper.getDstBinary(EID_IPV4_PREFIX_ADDRESS));
142 * Tests {@link SourceDestKeyHelper#getSrcMask} method with SourceDestKey address type.
145 public void getSrcMaskTest_sourceDestKey() {
146 assertEquals((short) 20, SourceDestKeyHelper.getSrcMask(EID_SOURCE_DEST_KEY));
150 * Tests {@link SourceDestKeyHelper#getSrcMask} method with Ipv4Prefix address type.
153 public void getSrcMaskTest_ipv4Prefix() {
154 assertEquals((short) 0, SourceDestKeyHelper.getSrcMask(EID_IPV4_PREFIX_ADDRESS));
158 * Tests {@link SourceDestKeyHelper#getDstMask} method with SourceDestKey address type.
161 public void getDstMaskTest_sourceDestKey() {
162 assertEquals((short) 24, SourceDestKeyHelper.getDstMask(EID_SOURCE_DEST_KEY));
166 * Tests {@link SourceDestKeyHelper#getDstMask} method with Ipv4Prefix address type.
169 public void getDstMaskTest_ipv4Prefix() {
170 assertEquals((short) 0, SourceDestKeyHelper.getDstMask(EID_IPV4_PREFIX_ADDRESS));
173 private static SourceDestKey getSourceDestKeyAddress(SimpleAddress sourceAddress, SimpleAddress destAddress) {
174 return new SourceDestKeyBuilder()
175 .setSourceDestKey(new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types
176 .rev151105.lisp.address.address.source.dest.key.SourceDestKeyBuilder()
177 .setSource(sourceAddress)
178 .setDest(destAddress).build())
182 private static Eid getEidSourceDestKey() {
183 return new EidBuilder().setAddress(SOURCE_DEST_KEY).setVirtualNetworkId(INSTANCE_ID).build();
186 private static Ipv4PrefixBinary getIpv4PrefixBinary(Ipv4AddressBinary ipv4AddressBinary, short mask) {
187 return new Ipv4PrefixBinaryBuilder().setIpv4AddressBinary(ipv4AddressBinary).setIpv4MaskLength(mask).build();