/* * Copyright (c) 2016 Cisco Systems, Inc. and others. All rights reserved. * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ package org.opendaylight.groupbasedpolicy.util; import org.junit.Assert; import org.junit.Rule; import org.junit.Test; import org.junit.rules.ExpectedException; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpPrefix; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4Prefix; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv6Address; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv6Prefix; public class NetUtilsTest { private final String IPV4_ADDRESS_1 = "192.168.50.20"; private final String IPV4_ADDRESS_2 = "10.0.0.1"; private final String IPV6_HOST_ADDRESS = "DEAD:BEEF::1"; private final String IPV6_NETWORK_ADDRESS_1 = "DEAD:BEEF::"; private final String IPV6_NETWORK_ADDRESS_2 = "DEAF:BABE::"; private final String MASK_16 = "/16"; private final String MASK_24 = "/24"; private final String MASK_32 = "/32"; private final String MASK_64 = "/64"; @Rule public ExpectedException thrown = ExpectedException.none(); @Test public void testGetMaskFromPrefix_FromNull () { thrown.expect(NumberFormatException.class); NetUtils.getMaskFromPrefix(null); } @Test public void testGetMaskFromPrefix_StringWithouPrefix () { thrown.expect(NumberFormatException.class); NetUtils.getMaskFromPrefix(IPV4_ADDRESS_1); } @Test public void testGetMaskFromPrefix_Correct () { int result = NetUtils.getMaskFromPrefix(IPV4_ADDRESS_1 + MASK_24); Assert.assertEquals(24, result); } @Test public void testGetIpAddrFromPrefix_FromNull () { String result = NetUtils.getIpAddrFromPrefix(null); Assert.assertTrue(result.isEmpty()); } @Test public void testGetIpAddrFromPrefix_StringWithouPrefixLength () { String result = NetUtils.getIpAddrFromPrefix(IPV4_ADDRESS_1); Assert.assertEquals(IPV4_ADDRESS_1, result); } @Test public void testGetIpAddrFromPrefix_Ipv4Prefix () { String result = NetUtils.getIpAddrFromPrefix(IPV4_ADDRESS_1 + MASK_24); Assert.assertEquals(IPV4_ADDRESS_1, result); } @Test public void testGetIpAddrFromPrefix_Ipv6Prefix () { String result = NetUtils.getIpAddrFromPrefix(IPV6_HOST_ADDRESS + MASK_64); Assert.assertEquals(IPV6_HOST_ADDRESS, result); } @Test public void testApplyMaskOnIpv6Prefix_NullPrefix () { Ipv6Address result = NetUtils.applyMaskOnIpv6Prefix(null, 0); Assert.assertNull(result); } @Test public void testApplyMaskOnIpv6Prefix_PrefixLengthOutOfRange () { Ipv6Prefix prefix = new Ipv6Prefix(IPV6_HOST_ADDRESS + MASK_64); thrown.expect(IllegalArgumentException.class); NetUtils.applyMaskOnIpv6Prefix(prefix, 130); } @Test public void testApplyMaskOnIpv6Prefix_Correct () { Ipv6Prefix prefix = new Ipv6Prefix(IPV6_HOST_ADDRESS + MASK_64); Ipv6Address result = NetUtils.applyMaskOnIpv6Prefix(prefix, 64); Assert.assertTrue(IPV6_NETWORK_ADDRESS_1.equalsIgnoreCase(result.getValue())); } @Test public void testApplyMaskOnIpv6Address_NullAddress () { Ipv6Address result = NetUtils.applyMaskOnIpv6Address(null, 0); Assert.assertNull(result); } @Test public void testApplyMaskOnIpv6Address_PrefixLengthOutOfRange () { Ipv6Address prefix = new Ipv6Address(IPV6_HOST_ADDRESS); thrown.expect(IllegalArgumentException.class); NetUtils.applyMaskOnIpv6Address(prefix, 130); } @Test public void testApplyMaskOnIpv6Address_Correct () { Ipv6Address prefix = new Ipv6Address(IPV6_HOST_ADDRESS); Ipv6Address result = NetUtils.applyMaskOnIpv6Address(prefix, 64); Assert.assertTrue(IPV6_NETWORK_ADDRESS_1.equalsIgnoreCase(result.getValue())); } @Test public void testSamePrefix_NullInput () { Ipv4Prefix prefix = new Ipv4Prefix(IPV4_ADDRESS_1 + MASK_24); boolean result = NetUtils.samePrefix(new IpPrefix(prefix), null); Assert.assertFalse(result); result = NetUtils.samePrefix(null, new IpPrefix(prefix)); Assert.assertFalse(result); } @Test public void testSamePrefix_Ipv6AndIpv4 () { Ipv4Prefix prefix4 = new Ipv4Prefix(IPV4_ADDRESS_1 + MASK_24); Ipv6Prefix prefix6 = new Ipv6Prefix(IPV6_HOST_ADDRESS + MASK_64); boolean result = NetUtils.samePrefix(new IpPrefix(prefix4), new IpPrefix(prefix6)); Assert.assertFalse(result); result = NetUtils.samePrefix(new IpPrefix(prefix6), new IpPrefix(prefix4)); Assert.assertFalse(result); } @Test public void testSamePrefix_Ipv4DifferentNetwork () { Ipv4Prefix prefix1 = new Ipv4Prefix(IPV4_ADDRESS_1 + MASK_24); Ipv4Prefix prefix2 = new Ipv4Prefix(IPV4_ADDRESS_2 + MASK_24); boolean result = NetUtils.samePrefix(new IpPrefix(prefix1), new IpPrefix(prefix2)); Assert.assertFalse(result); } @Test public void testSamePrefix_Ipv6DifferentNetwork () { Ipv6Prefix prefix1 = new Ipv6Prefix(IPV6_HOST_ADDRESS + MASK_64); Ipv6Prefix prefix2 = new Ipv6Prefix(IPV6_NETWORK_ADDRESS_2 + MASK_64); boolean result = NetUtils.samePrefix(new IpPrefix(prefix1), new IpPrefix(prefix2)); Assert.assertFalse(result); } @Test public void testSamePrefix_Ipv4DifferentPrefix () { Ipv4Prefix prefix1 = new Ipv4Prefix(IPV4_ADDRESS_1 + MASK_24); Ipv4Prefix prefix2 = new Ipv4Prefix(IPV4_ADDRESS_1 + MASK_16); boolean result = NetUtils.samePrefix(new IpPrefix(prefix1), new IpPrefix(prefix2)); Assert.assertFalse(result); } @Test public void testSamePrefix_Ipv6DifferentPrefix () { Ipv6Prefix prefix1 = new Ipv6Prefix(IPV6_HOST_ADDRESS + MASK_64); Ipv6Prefix prefix2 = new Ipv6Prefix(IPV6_NETWORK_ADDRESS_2 + MASK_32); boolean result = NetUtils.samePrefix(new IpPrefix(prefix1), new IpPrefix(prefix2)); Assert.assertFalse(result); } @Test public void testSamePrefix_Ipv4SamePrefix () { Ipv6Prefix prefix = new Ipv6Prefix(IPV6_HOST_ADDRESS + MASK_24); boolean result = NetUtils.samePrefix(new IpPrefix(prefix), new IpPrefix(prefix)); Assert.assertTrue(result); } @Test public void testSamePrefix_Ipv6SamePrefix () { Ipv6Prefix prefix = new Ipv6Prefix(IPV6_HOST_ADDRESS + MASK_64); boolean result = NetUtils.samePrefix(new IpPrefix(prefix), new IpPrefix(prefix)); Assert.assertTrue(result); } }