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
9 package org.opendaylight.groupbasedpolicy.util;
11 import org.junit.Assert;
12 import org.junit.Rule;
13 import org.junit.Test;
14 import org.junit.rules.ExpectedException;
15 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpPrefix;
16 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv4Prefix;
17 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv6Address;
18 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv6Prefix;
20 public class NetUtilsTest {
22 private final String IPV4_ADDRESS_1 = "192.168.50.20";
23 private final String IPV4_ADDRESS_2 = "10.0.0.1";
24 private final String IPV6_HOST_ADDRESS = "DEAD:BEEF::1";
25 private final String IPV6_NETWORK_ADDRESS_1 = "DEAD:BEEF::";
26 private final String IPV6_NETWORK_ADDRESS_2 = "DEAF:BABE::";
27 private final String MASK_16 = "/16";
28 private final String MASK_24 = "/24";
29 private final String MASK_32 = "/32";
30 private final String MASK_64 = "/64";
33 public ExpectedException thrown = ExpectedException.none();
36 public void testGetMaskFromPrefix_FromNull () {
37 thrown.expect(NumberFormatException.class);
38 NetUtils.getMaskFromPrefix(null);
42 public void testGetMaskFromPrefix_StringWithouPrefix () {
43 thrown.expect(NumberFormatException.class);
44 NetUtils.getMaskFromPrefix(IPV4_ADDRESS_1);
48 public void testGetMaskFromPrefix_Correct () {
49 int result = NetUtils.getMaskFromPrefix(IPV4_ADDRESS_1 + MASK_24);
50 Assert.assertEquals(24, result);
54 public void testGetIpAddrFromPrefix_FromNull () {
55 String result = NetUtils.getIpAddrFromPrefix(null);
56 Assert.assertTrue(result.isEmpty());
60 public void testGetIpAddrFromPrefix_StringWithouPrefixLength () {
61 String result = NetUtils.getIpAddrFromPrefix(IPV4_ADDRESS_1);
62 Assert.assertEquals(IPV4_ADDRESS_1, result);
66 public void testGetIpAddrFromPrefix_Ipv4Prefix () {
67 String result = NetUtils.getIpAddrFromPrefix(IPV4_ADDRESS_1 + MASK_24);
68 Assert.assertEquals(IPV4_ADDRESS_1, result);
72 public void testGetIpAddrFromPrefix_Ipv6Prefix () {
73 String result = NetUtils.getIpAddrFromPrefix(IPV6_HOST_ADDRESS + MASK_64);
74 Assert.assertEquals(IPV6_HOST_ADDRESS, result);
78 public void testApplyMaskOnIpv6Prefix_NullPrefix () {
79 Ipv6Address result = NetUtils.applyMaskOnIpv6Prefix(null, 0);
80 Assert.assertNull(result);
84 public void testApplyMaskOnIpv6Prefix_PrefixLengthOutOfRange () {
85 Ipv6Prefix prefix = new Ipv6Prefix(IPV6_HOST_ADDRESS + MASK_64);
86 thrown.expect(IllegalArgumentException.class);
87 NetUtils.applyMaskOnIpv6Prefix(prefix, 130);
91 public void testApplyMaskOnIpv6Prefix_Correct () {
92 Ipv6Prefix prefix = new Ipv6Prefix(IPV6_HOST_ADDRESS + MASK_64);
93 Ipv6Address result = NetUtils.applyMaskOnIpv6Prefix(prefix, 64);
94 Assert.assertTrue(IPV6_NETWORK_ADDRESS_1.equalsIgnoreCase(result.getValue()));
98 public void testApplyMaskOnIpv6Address_NullAddress () {
99 Ipv6Address result = NetUtils.applyMaskOnIpv6Address(null, 0);
100 Assert.assertNull(result);
104 public void testApplyMaskOnIpv6Address_PrefixLengthOutOfRange () {
105 Ipv6Address prefix = new Ipv6Address(IPV6_HOST_ADDRESS);
106 thrown.expect(IllegalArgumentException.class);
107 NetUtils.applyMaskOnIpv6Address(prefix, 130);
111 public void testApplyMaskOnIpv6Address_Correct () {
112 Ipv6Address prefix = new Ipv6Address(IPV6_HOST_ADDRESS);
113 Ipv6Address result = NetUtils.applyMaskOnIpv6Address(prefix, 64);
114 Assert.assertTrue(IPV6_NETWORK_ADDRESS_1.equalsIgnoreCase(result.getValue()));
118 public void testSamePrefix_NullInput () {
119 Ipv4Prefix prefix = new Ipv4Prefix(IPV4_ADDRESS_1 + MASK_24);
120 boolean result = NetUtils.samePrefix(new IpPrefix(prefix), null);
121 Assert.assertFalse(result);
122 result = NetUtils.samePrefix(null, new IpPrefix(prefix));
123 Assert.assertFalse(result);
127 public void testSamePrefix_Ipv6AndIpv4 () {
128 Ipv4Prefix prefix4 = new Ipv4Prefix(IPV4_ADDRESS_1 + MASK_24);
129 Ipv6Prefix prefix6 = new Ipv6Prefix(IPV6_HOST_ADDRESS + MASK_64);
130 boolean result = NetUtils.samePrefix(new IpPrefix(prefix4), new IpPrefix(prefix6));
131 Assert.assertFalse(result);
132 result = NetUtils.samePrefix(new IpPrefix(prefix6), new IpPrefix(prefix4));
133 Assert.assertFalse(result);
137 public void testSamePrefix_Ipv4DifferentNetwork () {
138 Ipv4Prefix prefix1 = new Ipv4Prefix(IPV4_ADDRESS_1 + MASK_24);
139 Ipv4Prefix prefix2 = new Ipv4Prefix(IPV4_ADDRESS_2 + MASK_24);
140 boolean result = NetUtils.samePrefix(new IpPrefix(prefix1), new IpPrefix(prefix2));
141 Assert.assertFalse(result);
145 public void testSamePrefix_Ipv6DifferentNetwork () {
146 Ipv6Prefix prefix1 = new Ipv6Prefix(IPV6_HOST_ADDRESS + MASK_64);
147 Ipv6Prefix prefix2 = new Ipv6Prefix(IPV6_NETWORK_ADDRESS_2 + MASK_64);
148 boolean result = NetUtils.samePrefix(new IpPrefix(prefix1), new IpPrefix(prefix2));
149 Assert.assertFalse(result);
153 public void testSamePrefix_Ipv4DifferentPrefix () {
154 Ipv4Prefix prefix1 = new Ipv4Prefix(IPV4_ADDRESS_1 + MASK_24);
155 Ipv4Prefix prefix2 = new Ipv4Prefix(IPV4_ADDRESS_1 + MASK_16);
156 boolean result = NetUtils.samePrefix(new IpPrefix(prefix1), new IpPrefix(prefix2));
157 Assert.assertFalse(result);
161 public void testSamePrefix_Ipv6DifferentPrefix () {
162 Ipv6Prefix prefix1 = new Ipv6Prefix(IPV6_HOST_ADDRESS + MASK_64);
163 Ipv6Prefix prefix2 = new Ipv6Prefix(IPV6_NETWORK_ADDRESS_2 + MASK_32);
164 boolean result = NetUtils.samePrefix(new IpPrefix(prefix1), new IpPrefix(prefix2));
165 Assert.assertFalse(result);
169 public void testSamePrefix_Ipv4SamePrefix () {
170 Ipv6Prefix prefix = new Ipv6Prefix(IPV6_HOST_ADDRESS + MASK_24);
171 boolean result = NetUtils.samePrefix(new IpPrefix(prefix), new IpPrefix(prefix));
172 Assert.assertTrue(result);
176 public void testSamePrefix_Ipv6SamePrefix () {
177 Ipv6Prefix prefix = new Ipv6Prefix(IPV6_HOST_ADDRESS + MASK_64);
178 boolean result = NetUtils.samePrefix(new IpPrefix(prefix), new IpPrefix(prefix));
179 Assert.assertTrue(result);