Adding authentication data to map register cache.
[lispflowmapping.git] / mappingservice / lisp-proto / src / test / java / org / opendaylight / lispflowmapping / lisp / util / SourceDestKeyHelperTest.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
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;
33
34 public class SourceDestKeyHelperTest {
35
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;
40
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};
43
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);
52
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();
60
61     /**
62      * Tests {@link SourceDestKeyHelper#getSrc} method with SourceDestKey address type.
63      */
64     @Test
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));
71     }
72
73     /**
74      * Tests {@link SourceDestKeyHelper#getSrc} method with Ipv4Prefix address type.
75      */
76     @Test
77     public void getSrcTest_ipv4Prefix() {
78         assertEquals(EID_IPV4_PREFIX_ADDRESS, SourceDestKeyHelper.getSrc(EID_IPV4_PREFIX_ADDRESS));
79     }
80
81     /**
82      * Tests {@link SourceDestKeyHelper#getDst} method with SourceDestKey address type.
83      */
84     @Test
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));
91     }
92
93     /**
94      * Tests {@link SourceDestKeyHelper#getDst} method with Ipv4Prefix address type.
95      */
96     @Test
97     public void getDstTest_ipv4Prefix() {
98         assertEquals(EID_IPV4_PREFIX_ADDRESS, SourceDestKeyHelper.getDst(EID_IPV4_PREFIX_ADDRESS));
99     }
100
101     /**
102      * Tests {@link SourceDestKeyHelper#getSrcBinary} method with SourceDestKey address type.
103      */
104     @Test
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));
111     }
112
113     /**
114      * Tests {@link SourceDestKeyHelper#getSrcBinary} method with Ipv4Prefix address type.
115      */
116     @Test
117     public void getSrcBinaryTest_ipv4Prefix() {
118         assertEquals(EID_IPV4_PREFIX_ADDRESS, SourceDestKeyHelper.getSrcBinary(EID_IPV4_PREFIX_ADDRESS));
119     }
120
121     /**
122      * Tests {@link SourceDestKeyHelper#getDstBinary} method with SourceDestKey address type.
123      */
124     @Test
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));
131     }
132
133     /**
134      * Tests {@link SourceDestKeyHelper#getDstBinary} method with Ipv4Prefix address type.
135      */
136     @Test
137     public void getDstBinaryTest_ipv4Prefix() {
138         assertEquals(EID_IPV4_PREFIX_ADDRESS, SourceDestKeyHelper.getDstBinary(EID_IPV4_PREFIX_ADDRESS));
139     }
140
141     /**
142      * Tests {@link SourceDestKeyHelper#getSrcMask} method with SourceDestKey address type.
143      */
144     @Test
145     public void getSrcMaskTest_sourceDestKey() {
146         assertEquals((short) 20, SourceDestKeyHelper.getSrcMask(EID_SOURCE_DEST_KEY));
147     }
148
149     /**
150      * Tests {@link SourceDestKeyHelper#getSrcMask} method with Ipv4Prefix address type.
151      */
152     @Test
153     public void getSrcMaskTest_ipv4Prefix() {
154         assertEquals((short) 0, SourceDestKeyHelper.getSrcMask(EID_IPV4_PREFIX_ADDRESS));
155     }
156
157     /**
158      * Tests {@link SourceDestKeyHelper#getDstMask} method with SourceDestKey address type.
159      */
160     @Test
161     public void getDstMaskTest_sourceDestKey() {
162         assertEquals((short) 24, SourceDestKeyHelper.getDstMask(EID_SOURCE_DEST_KEY));
163     }
164
165     /**
166      * Tests {@link SourceDestKeyHelper#getDstMask} method with Ipv4Prefix address type.
167      */
168     @Test
169     public void getDstMaskTest_ipv4Prefix() {
170         assertEquals((short) 0, SourceDestKeyHelper.getDstMask(EID_IPV4_PREFIX_ADDRESS));
171     }
172
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())
179                 .build();
180     }
181
182     private static Eid getEidSourceDestKey() {
183         return new EidBuilder().setAddress(SOURCE_DEST_KEY).setVirtualNetworkId(INSTANCE_ID).build();
184     }
185
186     private static Ipv4PrefixBinary getIpv4PrefixBinary(Ipv4AddressBinary ipv4AddressBinary, short mask) {
187         return new Ipv4PrefixBinaryBuilder().setIpv4AddressBinary(ipv4AddressBinary).setIpv4MaskLength(mask).build();
188     }
189 }