/*
* Copyright (c) 2014, 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.openflowplugin.applications.statistics.manager.impl.helper;
import static org.junit.Assert.*;
import org.junit.Test;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4Address;
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;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.MacAddress;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.DottedQuad;
import org.opendaylight.yang.gen.v1.urn.opendaylight.l2.types.rev130827.EtherType;
import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.ethernet.match.fields.EthernetDestinationBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.ethernet.match.fields.EthernetSourceBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.ethernet.match.fields.EthernetTypeBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.EthernetMatchBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.layer._3.match.ArpMatchBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.layer._3.match.Ipv4MatchArbitraryBitMaskBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.layer._3.match.Ipv4MatchBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.layer._3.match.Ipv6MatchArbitraryBitMaskBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.layer._3.match.Ipv6MatchBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.opendaylight.ipv6.arbitrary.bitmask.fields.rev160224.Ipv6ArbitraryMask;
/**
* @author sai.marapareddy@gmail.com (arbitrary masks)
*/
/**
* test of {@link MatchComparatorHelper}
*/
public class MatchComparatorHelperTest {
/**
* mask for /32
*/
private static final int DEFAULT_IPV4_MASK = 0xffffffff;
/**
* mask for /30
*/
private static final int IPV4_30_MASK = 0xfffffffc;
private static final int IP_ADDRESS = 0xC0A80101;
/**
* The test of conversion valid IP addres without mask to binary form.
*/
@Test
public void validIpWithoutMaskTest() {
IntegerIpAddress intIp = MatchComparatorHelper.strIpToIntIp("192.168.1.1");
assertEquals(IP_ADDRESS, intIp.getIp());
assertEquals(DEFAULT_IPV4_MASK, intIp.getMask());
}
/**
* The test of conversion of valid IP address with valid mask to binary form.
*/
@Test
public void validIpWithValidMaskTest() {
IntegerIpAddress intIp = MatchComparatorHelper.strIpToIntIp("192.168.1.1/30");
assertEquals(IP_ADDRESS, intIp.getIp());
assertEquals(IPV4_30_MASK, intIp.getMask());
}
/**
* The test of conversion of valid IP address invalid mask to binary form.
*/
@Test
public void validIpWithInvalidMaskTest() {
try {
MatchComparatorHelper.strIpToIntIp("192.168.1.1/40");
} catch (IllegalStateException e) {
assertEquals("Valid values for mask are from range 0 - 32. Value 40 is invalid.", e.getMessage());
return;
}
fail("IllegalStateException was awaited (40 subnet is invalid)");
}
/**
* The test of conversion invalid IP address with valid mask to binary form.
*/
@Test
public void invalidIpWithValidMaskTest() {
try {
MatchComparatorHelper.strIpToIntIp("257.168.1.1/25");
} catch (IllegalArgumentException e) {
assertEquals("'257.168.1.1' is not an IP string literal.", e.getMessage());
}
}
@Test
public void ethernetMatchEqualsTest() {
final EthernetMatchBuilder statsEthernetBuilder = new EthernetMatchBuilder();
final EthernetMatchBuilder storedEthernetBuilder = new EthernetMatchBuilder();
assertEquals(true, MatchComparatorHelper.ethernetMatchEquals(null, null));
statsEthernetBuilder.setEthernetSource(new EthernetSourceBuilder().setAddress(
new MacAddress("11:22:33:44:55:66")).build());
storedEthernetBuilder.setEthernetSource(new EthernetSourceBuilder().setAddress(
new MacAddress("11:22:33:44:55:77")).build());
assertEquals(false,
MatchComparatorHelper.ethernetMatchEquals(statsEthernetBuilder.build(), storedEthernetBuilder.build()));
storedEthernetBuilder.setEthernetSource(new EthernetSourceBuilder().setAddress(
new MacAddress("11:22:33:44:55:66")).build());
statsEthernetBuilder.setEthernetDestination(new EthernetDestinationBuilder().setAddress(
new MacAddress("66:55:44:33:22:11")).build());
storedEthernetBuilder.setEthernetDestination(new EthernetDestinationBuilder().setAddress(
new MacAddress("77:55:44:33:22:11")).build());
assertEquals(false,
MatchComparatorHelper.ethernetMatchEquals(statsEthernetBuilder.build(), storedEthernetBuilder.build()));
storedEthernetBuilder.setEthernetDestination(new EthernetDestinationBuilder().setAddress(
new MacAddress("66:55:44:33:22:11")).build());
statsEthernetBuilder.setEthernetType(new EthernetTypeBuilder().setType(new EtherType((long) 1)).build());
storedEthernetBuilder.setEthernetType(new EthernetTypeBuilder().setType(new EtherType((long) 1)).build());
assertEquals(true,
MatchComparatorHelper.ethernetMatchEquals(statsEthernetBuilder.build(), storedEthernetBuilder.build()));
statsEthernetBuilder.setEthernetType(null).build();
assertEquals(false,
MatchComparatorHelper.ethernetMatchEquals(statsEthernetBuilder.build(), storedEthernetBuilder.build()));
storedEthernetBuilder.setEthernetType(null).build();
assertEquals(true,
MatchComparatorHelper.ethernetMatchEquals(statsEthernetBuilder.build(), storedEthernetBuilder.build()));
}
@Test
public void ethernetMatchFieldsEqualsTest() {
final EthernetSourceBuilder statsBuilder = new EthernetSourceBuilder();
final EthernetSourceBuilder storedBuilder = new EthernetSourceBuilder();
assertEquals(true, MatchComparatorHelper.ethernetMatchFieldsEquals(null, null));
statsBuilder.setAddress(new MacAddress("11:22:33:44:55:66"));
storedBuilder.setAddress(new MacAddress("11:22:33:44:55:77"));
assertEquals(false,
MatchComparatorHelper.ethernetMatchFieldsEquals(statsBuilder.build(), storedBuilder.build()));
storedBuilder.setAddress(new MacAddress("11:22:33:44:55:66"));
assertEquals(true, MatchComparatorHelper.ethernetMatchFieldsEquals(statsBuilder.build(), storedBuilder.build()));
}
@Test
public void macAddressEqualsTest() {
assertEquals(true, MatchComparatorHelper.macAddressEquals(null, null));
assertEquals(true, MatchComparatorHelper.macAddressEquals(new MacAddress("11:22:33:44:55:66"), new MacAddress(
"11:22:33:44:55:66")));
assertEquals(false, MatchComparatorHelper.macAddressEquals(new MacAddress("11:22:33:44:55:66"), new MacAddress(
"11:22:33:44:55:77")));
}
@Test
public void checkNullValuesTest() {
assertEquals(false, MatchComparatorHelper.checkNullValues(null, ""));
assertEquals(false, MatchComparatorHelper.checkNullValues("", null));
assertEquals(true, MatchComparatorHelper.checkNullValues(null, null));
assertTrue(MatchComparatorHelper.checkNullValues("", "") == null);
}
@Test
public void compareIpv4PrefixNullSafeTest() {
assertEquals(true, MatchComparatorHelper.compareIpv4PrefixNullSafe(null, null));
assertEquals(true, MatchComparatorHelper.compareIpv4PrefixNullSafe(new Ipv4Prefix("192.168.1.1/31"),
new Ipv4Prefix("192.168.1.1/31")));
assertEquals(false, MatchComparatorHelper.compareIpv4PrefixNullSafe(new Ipv4Prefix("192.168.1.1/31"),
new Ipv4Prefix("191.168.1.1/31")));
}
@Test
public void compareStringNullSafeTest() {
assertEquals(true, MatchComparatorHelper.compareStringNullSafe(null,null));
assertEquals(true, MatchComparatorHelper.compareStringNullSafe("Hello", "Hello"));
assertEquals(false, MatchComparatorHelper.compareStringNullSafe("Hello", "hello"));
}
private static final int ip_192_168_1_1 = 0xC0A80101;
private static final int ip_192_168_1_4 = 0xC0A80104;
@Test
public void ipBasedMatchTest() {
// are equals because only IP address is compared
assertEquals(true, MatchComparatorHelper.ipBasedMatch(new IntegerIpAddress(ip_192_168_1_1, 32),
new IntegerIpAddress(ip_192_168_1_1, 16)));
}
@Test
public void ipAndMaskBasedMatchTest() {
// true because both cases are network 192.168.1.0
assertEquals(true, MatchComparatorHelper.ipBasedMatch(new IntegerIpAddress(ip_192_168_1_1, 31),
new IntegerIpAddress(ip_192_168_1_1, 30)));
// false because first is network 192.168.1.0 and second is 192.168.1.4
assertEquals(false, MatchComparatorHelper.ipBasedMatch(new IntegerIpAddress(ip_192_168_1_1, 31),
new IntegerIpAddress(ip_192_168_1_4, 30)));
}
@Test
public void layer3MatchEqualsTest() {
final Ipv4MatchBuilder statsBuilder = new Ipv4MatchBuilder();
final Ipv4MatchBuilder storedBuilder = new Ipv4MatchBuilder();
assertEquals(true, MatchComparatorHelper.layer3MatchEquals(statsBuilder.build(), storedBuilder.build()));
statsBuilder.setIpv4Destination(new Ipv4Prefix("192.168.1.1/30"));
storedBuilder.setIpv4Destination(new Ipv4Prefix("191.168.1.1/30"));
assertEquals(false, MatchComparatorHelper.layer3MatchEquals(statsBuilder.build(), storedBuilder.build()));
assertEquals(true, MatchComparatorHelper.layer3MatchEquals(null, null));
assertEquals(true,
MatchComparatorHelper.layer3MatchEquals(new ArpMatchBuilder().build(), new ArpMatchBuilder().build()));
}
@Test
public void layer3MatchEqualsIpv6Test() {
final Ipv6MatchBuilder statsBuilder = new Ipv6MatchBuilder();
final Ipv6MatchBuilder storedBuilder = new Ipv6MatchBuilder();
assertEquals(true, MatchComparatorHelper.layer3MatchEquals(statsBuilder.build(), storedBuilder.build()));
statsBuilder.setIpv6Destination(new Ipv6Prefix("AABB:1234:2ACF:000D:0000:0000:0000:5D99/64"));
storedBuilder.setIpv6Destination(new Ipv6Prefix("AABB:1234:2ACF:000D:0000:0000:0000:4D99/64"));
assertEquals(true, MatchComparatorHelper.layer3MatchEquals(statsBuilder.build(), storedBuilder.build()));
statsBuilder.setIpv6Destination(new Ipv6Prefix("aabb:1234:2acf:000d:0000:0000:0000:5d99/64"));
storedBuilder.setIpv6Destination(new Ipv6Prefix("AABB:1234:2ACF:000D:0000:0000:0000:4D99/64"));
assertEquals(true, MatchComparatorHelper.layer3MatchEquals(statsBuilder.build(), storedBuilder.build()));
statsBuilder.setIpv6Destination(new Ipv6Prefix("AABB:1234:2ACF:000C:0000:0000:0000:5D99/64"));
storedBuilder.setIpv6Destination(new Ipv6Prefix("AABB:1234:2ACF:000D:0000:0000:0000:4D99/64"));
assertEquals(false, MatchComparatorHelper.layer3MatchEquals(statsBuilder.build(), storedBuilder.build()));
statsBuilder.setIpv6Destination(new Ipv6Prefix("AABB:1234:2ACF:000C:0000:0000:0000:5D99/63"));
storedBuilder.setIpv6Destination(new Ipv6Prefix("AABB:1234:2ACF:000D:0000:0000:0000:4D99/63"));
assertEquals(true, MatchComparatorHelper.layer3MatchEquals(statsBuilder.build(), storedBuilder.build()));
statsBuilder.setIpv6Destination(new Ipv6Prefix("AABB:1234:2ACF:000D:0000:0000:0000:5D99/63"));
storedBuilder.setIpv6Destination(new Ipv6Prefix("AABB:1234:2ACF:000E:0000:0000:0000:4D99/63"));
assertEquals(false, MatchComparatorHelper.layer3MatchEquals(statsBuilder.build(), storedBuilder.build()));
}
@Test
public void layer3MatchEqualsIpv4ArbitraryMaskTest(){
final Ipv4MatchBuilder statsBuilder = new Ipv4MatchBuilder();
final Ipv4MatchArbitraryBitMaskBuilder storedBuilder = new Ipv4MatchArbitraryBitMaskBuilder();
assertEquals(true,MatchComparatorHelper.layer3MatchEquals(statsBuilder.build(),storedBuilder.build()));
statsBuilder.setIpv4Destination(new Ipv4Prefix("192.168.1.1/24"));
storedBuilder.setIpv4DestinationAddressNoMask(new Ipv4Address("192.168.1.1"));
storedBuilder.setIpv4DestinationArbitraryBitmask(new DottedQuad("255.255.255.0"));
statsBuilder.setIpv4Source(new Ipv4Prefix("192.168.1.1/24"));
storedBuilder.setIpv4SourceAddressNoMask(new Ipv4Address("192.168.1.1"));
storedBuilder.setIpv4SourceArbitraryBitmask(new DottedQuad("255.255.255.0"));
assertEquals(true, MatchComparatorHelper.layer3MatchEquals(statsBuilder.build(), storedBuilder.build()));
assertEquals(true, MatchComparatorHelper.layer3MatchEquals(null, null));
}
@Test
public void layer3MatchEqualsIpv4ArbitraryMaskRandomTest() {
final Ipv4MatchArbitraryBitMaskBuilder statsBuilder = new Ipv4MatchArbitraryBitMaskBuilder();
final Ipv4MatchArbitraryBitMaskBuilder storedBuilder = new Ipv4MatchArbitraryBitMaskBuilder();
assertEquals(true,MatchComparatorHelper.layer3MatchEquals(statsBuilder.build(),storedBuilder.build()));
statsBuilder.setIpv4DestinationAddressNoMask(new Ipv4Address("192.168.0.1"));
statsBuilder.setIpv4DestinationArbitraryBitmask(new DottedQuad("255.255.0.255"));
storedBuilder.setIpv4DestinationAddressNoMask(new Ipv4Address("192.168.1.1"));
storedBuilder.setIpv4DestinationArbitraryBitmask(new DottedQuad("255.255.0.255"));
statsBuilder.setIpv4SourceAddressNoMask(new Ipv4Address("192.0.0.1"));
statsBuilder.setIpv4SourceArbitraryBitmask(new DottedQuad("255.0.0.255"));
storedBuilder.setIpv4SourceAddressNoMask(new Ipv4Address("192.7.1.1"));
storedBuilder.setIpv4SourceArbitraryBitmask(new DottedQuad("255.0.0.255"));
assertEquals(true, MatchComparatorHelper.layer3MatchEquals(statsBuilder.build(), storedBuilder.build()));
assertEquals(true, MatchComparatorHelper.layer3MatchEquals(null, null));
}
@Test
public void layer3MatchEqualsIpv4ArbitraryMaskEqualsNullTest() {
final Ipv4MatchBuilder statsBuilder = new Ipv4MatchBuilder();
final Ipv4MatchArbitraryBitMaskBuilder storedBuilder = new Ipv4MatchArbitraryBitMaskBuilder();
assertEquals(true,MatchComparatorHelper.layer3MatchEquals(statsBuilder.build(),storedBuilder.build()));
statsBuilder.setIpv4Source(new Ipv4Prefix("192.168.0.1/32"));
storedBuilder.setIpv4DestinationAddressNoMask(new Ipv4Address("192.168.0.1"));
statsBuilder.setIpv4Destination(new Ipv4Prefix("192.1.0.0/32"));
storedBuilder.setIpv4SourceAddressNoMask(new Ipv4Address("192.1.0.0"));
assertEquals(false, MatchComparatorHelper.layer3MatchEquals(statsBuilder.build(), storedBuilder.build()));
assertEquals(true, MatchComparatorHelper.layer3MatchEquals(null, null));
}
@Test
public void layer3MatchEqualsIpv4ArbitraryEmptyBitMaskTest(){
final Ipv4MatchBuilder statsBuilder = new Ipv4MatchBuilder();
final Ipv4MatchArbitraryBitMaskBuilder storedBuilder = new Ipv4MatchArbitraryBitMaskBuilder();
assertEquals(true,MatchComparatorHelper.layer3MatchEquals(statsBuilder.build(),storedBuilder.build()));
statsBuilder.setIpv4Destination(new Ipv4Prefix("192.168.1.1/32"));
storedBuilder.setIpv4DestinationAddressNoMask(new Ipv4Address("192.168.1.1"));
statsBuilder.setIpv4Source(new Ipv4Prefix("192.168.1.1/32"));
storedBuilder.setIpv4SourceAddressNoMask(new Ipv4Address("192.168.1.1"));
assertEquals(true, MatchComparatorHelper.layer3MatchEquals(statsBuilder.build(), storedBuilder.build()));
assertEquals(true, MatchComparatorHelper.layer3MatchEquals(null, null));
}
@Test
public void extractIpv4AddressTest() {
Ipv4Address ipAddress = new Ipv4Address("1.1.1.1");
DottedQuad netMask = new DottedQuad("255.255.255.0");
String extractedIpAddress;
extractedIpAddress = MatchComparatorHelper.normalizeIpv4Address(ipAddress,netMask);
assertEquals(extractedIpAddress,"1.1.1.0");
}
@Test
public void convertArbitraryMaskToByteArrayTest() {
int value = 0xffffffff;
byte[] bytes = new byte[]{
(byte)(value >>> 24), (byte)(value >> 16 & 0xff), (byte)(value >> 8 & 0xff), (byte)(value & 0xff) };
byte[] maskBytes;
maskBytes = MatchComparatorHelper.convertArbitraryMaskToByteArray(new DottedQuad("255.255.255.255"));
for (int i=0; i<bytes.length;i++) {
int mask = maskBytes[i];
assertEquals(bytes[i],mask);
}
}
@Test
public void isArbitraryBitMaskTest() {
boolean arbitraryBitMask;
arbitraryBitMask = MatchComparatorHelper.isArbitraryBitMask(new byte[] {1,1,1,1});
assertEquals(arbitraryBitMask,true);
arbitraryBitMask = MatchComparatorHelper.isArbitraryBitMask(new byte[] {-1,-1,-1,-1});
assertEquals(arbitraryBitMask,false);
arbitraryBitMask = MatchComparatorHelper.isArbitraryBitMask(new byte[] {-1,-1,0,-1});
assertEquals(arbitraryBitMask,true);
arbitraryBitMask = MatchComparatorHelper.isArbitraryBitMask(null);
assertEquals(arbitraryBitMask,false);
}
@Test
public void createPrefixTest() {
Ipv4Address ipv4Address = new Ipv4Address("1.1.1.1");
byte [] byteMask = new byte[] {-1,-1,-1,-1};
Ipv4Prefix ipv4Prefix = MatchComparatorHelper.createPrefix(ipv4Address,byteMask);
assertEquals(ipv4Prefix,new Ipv4Prefix("1.1.1.1/32"));
String nullMask = "";
Ipv4Prefix ipv4PrefixNullMask = MatchComparatorHelper.createPrefix(ipv4Address,nullMask);
assertEquals(ipv4PrefixNullMask,new Ipv4Prefix("1.1.1.1/32"));
Ipv4Prefix ipv4PrefixNoMask = MatchComparatorHelper.createPrefix(ipv4Address);
assertEquals(ipv4PrefixNoMask,new Ipv4Prefix("1.1.1.1/32"));
}
@Test
public void layer3MatchEqualsIpv6ArbitraryMaskTest(){
final Ipv6MatchBuilder statsBuilder = new Ipv6MatchBuilder();
final Ipv6MatchArbitraryBitMaskBuilder storedBuilder = new Ipv6MatchArbitraryBitMaskBuilder();
assertEquals(true,MatchComparatorHelper.layer3MatchEquals(statsBuilder.build(),storedBuilder.build()));
statsBuilder.setIpv6Destination(new Ipv6Prefix("1:2:3:4:5:6:7:8/16"));
storedBuilder.setIpv6DestinationAddressNoMask(new Ipv6Address("1:2:3:4:5:6:7:8"));
storedBuilder.setIpv6DestinationArbitraryBitmask(new Ipv6ArbitraryMask("FFFF:0000:0000:0000:0000:0000:0000:0000"));
statsBuilder.setIpv6Source(new Ipv6Prefix("1:2:3:4:5:6:7:8/32"));
storedBuilder.setIpv6SourceAddressNoMask(new Ipv6Address("1:2:3:4:5:6:7:8"));
storedBuilder.setIpv6SourceArbitraryBitmask(new Ipv6ArbitraryMask("FFFF:FFFF::"));
assertEquals(true, MatchComparatorHelper.layer3MatchEquals(statsBuilder.build(), storedBuilder.build()));
assertEquals(true, MatchComparatorHelper.layer3MatchEquals(null, null));
}
@Test
public void layer3MatchEqualsIpv6ArbitraryMaskRandomTest() {
final Ipv6MatchArbitraryBitMaskBuilder statsBuilder = new Ipv6MatchArbitraryBitMaskBuilder();
final Ipv6MatchArbitraryBitMaskBuilder storedBuilder = new Ipv6MatchArbitraryBitMaskBuilder();
assertEquals(true,MatchComparatorHelper.layer3MatchEquals(statsBuilder.build(),storedBuilder.build()));
statsBuilder.setIpv6DestinationAddressNoMask(new Ipv6Address("1::8"));
statsBuilder.setIpv6DestinationArbitraryBitmask(new Ipv6ArbitraryMask("FFFF::FFFF"));
storedBuilder.setIpv6DestinationAddressNoMask(new Ipv6Address("1:92:93:94:95:96:97:8"));
storedBuilder.setIpv6DestinationArbitraryBitmask(new Ipv6ArbitraryMask("FFFF::FFFF"));
statsBuilder.setIpv6SourceAddressNoMask(new Ipv6Address("1::8"));
statsBuilder.setIpv6SourceArbitraryBitmask(new Ipv6ArbitraryMask("FFFF::FFFF"));
storedBuilder.setIpv6SourceAddressNoMask(new Ipv6Address("1:92:93:94:95:96:97:8"));
storedBuilder.setIpv6SourceArbitraryBitmask(new Ipv6ArbitraryMask("FFFF::FFFF"));
assertEquals(true, MatchComparatorHelper.layer3MatchEquals(statsBuilder.build(), storedBuilder.build()));
assertEquals(true, MatchComparatorHelper.layer3MatchEquals(null, null));
}
@Test
public void layer3MatchEqualsIpv6ArbitraryMaskEqualsNullTest() {
final Ipv6MatchBuilder statsBuilder = new Ipv6MatchBuilder();
final Ipv6MatchArbitraryBitMaskBuilder storedBuilder = new Ipv6MatchArbitraryBitMaskBuilder();
assertEquals(true,MatchComparatorHelper.layer3MatchEquals(statsBuilder.build(),storedBuilder.build()));
statsBuilder.setIpv6Source(new Ipv6Prefix("1:2:3:4:5:6:7:8/128"));
storedBuilder.setIpv6DestinationAddressNoMask(new Ipv6Address("1:2:3:4:5:6:7:8"));
statsBuilder.setIpv6Destination(new Ipv6Prefix("1:2:3:4:5:6::/128"));
storedBuilder.setIpv6SourceAddressNoMask(new Ipv6Address("1:2:3:4:5:6::"));
assertEquals(false, MatchComparatorHelper.layer3MatchEquals(statsBuilder.build(), storedBuilder.build()));
assertEquals(true, MatchComparatorHelper.layer3MatchEquals(null, null));
}
@Test
public void layer3MatchEqualsIpv6ArbitraryEmptyBitMaskTest(){
final Ipv6MatchBuilder statsBuilder = new Ipv6MatchBuilder();
final Ipv6MatchArbitraryBitMaskBuilder storedBuilder = new Ipv6MatchArbitraryBitMaskBuilder();
assertEquals(true,MatchComparatorHelper.layer3MatchEquals(statsBuilder.build(),storedBuilder.build()));
statsBuilder.setIpv6Destination(new Ipv6Prefix("1:2:3:4:5:6:7:8/128"));
storedBuilder.setIpv6DestinationAddressNoMask(new Ipv6Address("1:2:3:4:5:6:7:8"));
statsBuilder.setIpv6Source(new Ipv6Prefix("1:2:3:4:5:6::/128"));
storedBuilder.setIpv6SourceAddressNoMask(new Ipv6Address("1:2:3:4:5:6::"));
assertEquals(true, MatchComparatorHelper.layer3MatchEquals(statsBuilder.build(), storedBuilder.build()));
assertEquals(true, MatchComparatorHelper.layer3MatchEquals(null, null));
}
}