From 3974695d25dc3ee60cb0c11583cb7585c35758a6 Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Thu, 25 Feb 2016 12:48:00 +0100 Subject: [PATCH] BUG-2825: expand IPv6 test suite This adds some framework for ease of writing test cases and adds some more. Change-Id: I85ddc21e90b35629332a51fba8e9751d6f6457c9 Signed-off-by: Robert Varga --- .../mdsal/model/ietf/util/Ipv6UtilsTest.java | 81 +++++++++++++++++-- 1 file changed, 74 insertions(+), 7 deletions(-) diff --git a/model/ietf/ietf-type-util/src/test/java/org/opendaylight/mdsal/model/ietf/util/Ipv6UtilsTest.java b/model/ietf/ietf-type-util/src/test/java/org/opendaylight/mdsal/model/ietf/util/Ipv6UtilsTest.java index 74b03fc275..12843a17a5 100644 --- a/model/ietf/ietf-type-util/src/test/java/org/opendaylight/mdsal/model/ietf/util/Ipv6UtilsTest.java +++ b/model/ietf/ietf-type-util/src/test/java/org/opendaylight/mdsal/model/ietf/util/Ipv6UtilsTest.java @@ -7,17 +7,84 @@ */ package org.opendaylight.mdsal.model.ietf.util; -import com.google.common.net.InetAddresses; -import org.junit.Assert; +import static com.google.common.net.InetAddresses.forString; +import static org.junit.Assert.assertArrayEquals; +import static org.opendaylight.mdsal.model.ietf.util.Ipv6Utils.bytesForString; import org.junit.Test; -/** - * @author Anton Ivanov aivanov@brocade.com - */ public class Ipv6UtilsTest { @Test + public void testDiscards() { + assertEqualResult("2001:0000:3238:DFE1:63:0000:0000:FEFB"); + assertEqualResult("2001:0000:3238:DFE1:63::FEFB"); + assertEqualResult("2001:0:3238:DFE1:63::FEFB"); + assertEqualResult("::1"); + assertEqualResult("::"); + } + + /** + * @author Anton Ivanov aivanov@brocade.com + */ + @Test public void testFullQuads() { - byte [] ipv6binary = Ipv6Utils.bytesForString("0000:0000:0000:0000:0000:0000:0000:0001"); - Assert.assertArrayEquals(InetAddresses.forString("::1").getAddress(), ipv6binary); + assertEqualResult("0000:0000:0000:0000:0000:0000:0000:0001"); + } + + @Test + public void testZoneIndex() { + assertArrayEquals(forString("::1").getAddress(), bytesForString("::1%2")); + } + + @Test + public void testRfc6052() { + assertEqualResult("2001:db8:c000:221::"); + assertEqualResult("2001:db8:1c0:2:21::"); + assertEqualResult("2001:db8:122:c000:2:2100::"); + assertEqualResult("2001:db8:122:3c0:0:221::"); + assertEqualResult("2001:db8:122:344:c0:2:2100::"); + assertEqualResult("2001:db8:122:344::192.0.2.33"); + + assertEqualResult("64:ff9b::192.0.2.33"); + } + + @Test + public void testRfc5952leadingZeroes() { + assertEqualResult("2001:db8:aaaa:bbbb:cccc:dddd:eeee:0001"); + assertEqualResult("2001:db8:aaaa:bbbb:cccc:dddd:eeee:001"); + assertEqualResult("2001:db8:aaaa:bbbb:cccc:dddd:eeee:01"); + assertEqualResult("2001:db8:aaaa:bbbb:cccc:dddd:eeee:1"); + } + + @Test + public void testRfc5952zeroCompression() { + assertEqualResult("2001:db8:aaaa:bbbb:cccc:dddd::1"); + assertEqualResult("2001:db8:aaaa:bbbb:cccc:dddd:0:1"); + assertEqualResult("2001:db8:0:0:0::1"); + assertEqualResult("2001:db8:0:0::1"); + assertEqualResult("2001:db8:0::1"); + assertEqualResult("2001:db8::1"); + assertEqualResult("2001:db8::aaaa:0:0:1"); + assertEqualResult("2001:db8:0:0:aaaa::1"); + } + + @Test + public void testRfc5952upperLowerCase() { + assertEqualResult("2001:db8:aaaa:bbbb:cccc:dddd:eeee:aaaa"); + assertEqualResult("2001:db8:aaaa:bbbb:cccc:dddd:eeee:AAAA"); + assertEqualResult("2001:db8:aaaa:bbbb:cccc:dddd:eeee:AaAa"); + } + + @Test + public void testRfc5952specials() { + // Can't use Guava for these, as it will return an IPv4 address + assertArrayEquals(new byte[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, (byte) 0xff, (byte) 0xff, (byte)192, 0, 2, 1 }, + bytesForString("::ffff:192.0.2.1")); + assertArrayEquals(new byte[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, (byte) 0xff, (byte) 0xff, (byte)192, 0, 2, 1 }, + bytesForString("0:0:0:0:0:ffff:192.0.2.1")); + } + + // Utility for quick comparison with Guava + private static void assertEqualResult(final String str) { + assertArrayEquals(forString(str).getAddress(), bytesForString(str)); } } -- 2.36.6