2 * Copyright (c) 2014, 2017 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
8 package org.opendaylight.openflowplugin.impl.util;
10 import org.junit.Test;
11 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4Address;
12 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4Prefix;
13 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv6Address;
14 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv6Prefix;
15 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.DottedQuad;
16 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.MacAddress;
17 import org.opendaylight.yang.gen.v1.urn.opendaylight.l2.types.rev130827.EtherType;
18 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.ethernet.match.fields.EthernetDestinationBuilder;
19 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.ethernet.match.fields.EthernetSourceBuilder;
20 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.ethernet.match.fields.EthernetTypeBuilder;
21 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.EthernetMatchBuilder;
22 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.layer._3.match.ArpMatchBuilder;
23 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.layer._3.match.Ipv4MatchArbitraryBitMaskBuilder;
24 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.layer._3.match.Ipv4MatchBuilder;
25 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.layer._3.match.Ipv6MatchArbitraryBitMaskBuilder;
26 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.layer._3.match.Ipv6MatchBuilder;
27 import org.opendaylight.yang.gen.v1.urn.opendaylight.opendaylight.ipv6.arbitrary.bitmask.fields.rev160224.Ipv6ArbitraryMask;
29 import static org.junit.Assert.assertEquals;
30 import static org.junit.Assert.assertTrue;
31 import static org.junit.Assert.fail;
34 * @author sai.marapareddy@gmail.com (arbitrary masks)
38 * test of {@link MatchComparatorHelper}
40 public class MatchComparatorHelperTest {
45 private static final int DEFAULT_IPV4_MASK = 0xffffffff;
50 private static final int IPV4_30_MASK = 0xfffffffc;
51 private static final int IP_ADDRESS = 0xC0A80101;
54 * The test of conversion valid IP addres without mask to binary form.
57 public void validIpWithoutMaskTest() {
58 IntegerIpAddress intIp = MatchComparatorHelper.strIpToIntIp("192.168.1.1");
59 assertEquals(IP_ADDRESS, intIp.getIp());
60 assertEquals(DEFAULT_IPV4_MASK, intIp.getMask());
64 * The test of conversion of valid IP address with valid mask to binary form.
67 public void validIpWithValidMaskTest() {
68 IntegerIpAddress intIp = MatchComparatorHelper.strIpToIntIp("192.168.1.1/30");
69 assertEquals(IP_ADDRESS, intIp.getIp());
70 assertEquals(IPV4_30_MASK, intIp.getMask());
74 * The test of conversion of valid IP address invalid mask to binary form.
77 public void validIpWithInvalidMaskTest() {
79 MatchComparatorHelper.strIpToIntIp("192.168.1.1/40");
80 } catch (IllegalStateException e) {
81 assertEquals("Valid values for mask are from range 0 - 32. Value 40 is invalid.", e.getMessage());
84 fail("IllegalStateException was awaited (40 subnet is invalid)");
88 * The test of conversion invalid IP address with valid mask to binary form.
91 public void invalidIpWithValidMaskTest() {
93 MatchComparatorHelper.strIpToIntIp("257.168.1.1/25");
94 } catch (IllegalArgumentException e) {
95 assertEquals("'257.168.1.1' is not an IP string literal.", e.getMessage());
100 public void ethernetMatchEqualsTest() {
101 final EthernetMatchBuilder statsEthernetBuilder = new EthernetMatchBuilder();
102 final EthernetMatchBuilder storedEthernetBuilder = new EthernetMatchBuilder();
104 assertEquals(true, MatchComparatorHelper.ethernetMatchEquals(null, null));
106 statsEthernetBuilder.setEthernetSource(new EthernetSourceBuilder().setAddress(
107 new MacAddress("11:22:33:44:55:66")).build());
108 storedEthernetBuilder.setEthernetSource(new EthernetSourceBuilder().setAddress(
109 new MacAddress("11:22:33:44:55:77")).build());
111 MatchComparatorHelper.ethernetMatchEquals(statsEthernetBuilder.build(), storedEthernetBuilder.build()));
113 storedEthernetBuilder.setEthernetSource(new EthernetSourceBuilder().setAddress(
114 new MacAddress("11:22:33:44:55:66")).build());
115 statsEthernetBuilder.setEthernetDestination(new EthernetDestinationBuilder().setAddress(
116 new MacAddress("66:55:44:33:22:11")).build());
117 storedEthernetBuilder.setEthernetDestination(new EthernetDestinationBuilder().setAddress(
118 new MacAddress("77:55:44:33:22:11")).build());
120 MatchComparatorHelper.ethernetMatchEquals(statsEthernetBuilder.build(), storedEthernetBuilder.build()));
122 storedEthernetBuilder.setEthernetDestination(new EthernetDestinationBuilder().setAddress(
123 new MacAddress("66:55:44:33:22:11")).build());
124 statsEthernetBuilder.setEthernetType(new EthernetTypeBuilder().setType(new EtherType((long) 1)).build());
125 storedEthernetBuilder.setEthernetType(new EthernetTypeBuilder().setType(new EtherType((long) 1)).build());
127 MatchComparatorHelper.ethernetMatchEquals(statsEthernetBuilder.build(), storedEthernetBuilder.build()));
129 statsEthernetBuilder.setEthernetType(null).build();
131 MatchComparatorHelper.ethernetMatchEquals(statsEthernetBuilder.build(), storedEthernetBuilder.build()));
133 storedEthernetBuilder.setEthernetType(null).build();
135 MatchComparatorHelper.ethernetMatchEquals(statsEthernetBuilder.build(), storedEthernetBuilder.build()));
139 // Please see following bug for more details https://bugs.opendaylight.org/show_bug.cgi?id=7910
141 public void ethernetMatchWithFullMaskTest() {
142 final EthernetSourceBuilder statsBuilder = new EthernetSourceBuilder();
143 final EthernetSourceBuilder storedBuilder = new EthernetSourceBuilder();
145 assertEquals(true, MatchComparatorHelper.ethernetMatchFieldsEquals(null, null));
147 statsBuilder.setAddress(new MacAddress("11:22:33:44:55:66"));
149 storedBuilder.setAddress(new MacAddress("11:22:33:44:55:66"));
150 storedBuilder.setMask(new MacAddress("FF:FF:FF:FF:FF:FF"));
153 MatchComparatorHelper.ethernetMatchFieldsEquals(statsBuilder.build(), storedBuilder.build()));
157 public void ethernetMatchFieldsEqualsTest() {
158 final EthernetSourceBuilder statsBuilder = new EthernetSourceBuilder();
159 final EthernetSourceBuilder storedBuilder = new EthernetSourceBuilder();
161 assertEquals(true, MatchComparatorHelper.ethernetMatchFieldsEquals(null, null));
163 statsBuilder.setAddress(new MacAddress("11:22:33:44:55:66"));
164 storedBuilder.setAddress(new MacAddress("11:22:33:44:55:77"));
166 MatchComparatorHelper.ethernetMatchFieldsEquals(statsBuilder.build(), storedBuilder.build()));
168 storedBuilder.setAddress(new MacAddress("11:22:33:44:55:66"));
169 assertEquals(true, MatchComparatorHelper.ethernetMatchFieldsEquals(statsBuilder.build(), storedBuilder.build()));
173 public void macAddressEqualsTest() {
174 assertEquals(true, MatchComparatorHelper.macAddressEquals(null, null));
175 assertEquals(true, MatchComparatorHelper.macAddressEquals(new MacAddress("11:22:33:44:55:66"), new MacAddress(
176 "11:22:33:44:55:66")));
177 assertEquals(false, MatchComparatorHelper.macAddressEquals(new MacAddress("11:22:33:44:55:66"), new MacAddress(
178 "11:22:33:44:55:77")));
182 public void checkNullValuesTest() {
183 assertEquals(false, MatchComparatorHelper.checkNullValues(null, ""));
184 assertEquals(false, MatchComparatorHelper.checkNullValues("", null));
185 assertEquals(true, MatchComparatorHelper.checkNullValues(null, null));
186 assertTrue(MatchComparatorHelper.checkNullValues("", "") == null);
190 public void compareIpv4PrefixNullSafeTest() {
191 assertEquals(true, MatchComparatorHelper.compareIpv4PrefixNullSafe(null, null));
192 assertEquals(true, MatchComparatorHelper.compareIpv4PrefixNullSafe(new Ipv4Prefix("192.168.1.1/31"),
193 new Ipv4Prefix("192.168.1.1/31")));
195 assertEquals(false, MatchComparatorHelper.compareIpv4PrefixNullSafe(new Ipv4Prefix("192.168.1.1/31"),
196 new Ipv4Prefix("191.168.1.1/31")));
200 public void compareStringNullSafeTest() {
201 assertEquals(true, MatchComparatorHelper.compareStringNullSafe(null,null));
202 assertEquals(true, MatchComparatorHelper.compareStringNullSafe("Hello", "Hello"));
203 assertEquals(false, MatchComparatorHelper.compareStringNullSafe("Hello", "hello"));
206 private static final int ip_192_168_1_1 = 0xC0A80101;
207 private static final int ip_192_168_1_4 = 0xC0A80104;
210 public void ipBasedMatchTest() {
211 // are equals because only IP address is compared
212 assertEquals(true, MatchComparatorHelper.ipBasedMatch(new IntegerIpAddress(ip_192_168_1_1, 32),
213 new IntegerIpAddress(ip_192_168_1_1, 16)));
217 public void ipAndMaskBasedMatchTest() {
218 // true because both cases are network 192.168.1.0
219 assertEquals(true, MatchComparatorHelper.ipBasedMatch(new IntegerIpAddress(ip_192_168_1_1, 31),
220 new IntegerIpAddress(ip_192_168_1_1, 30)));
222 // false because first is network 192.168.1.0 and second is 192.168.1.4
223 assertEquals(false, MatchComparatorHelper.ipBasedMatch(new IntegerIpAddress(ip_192_168_1_1, 31),
224 new IntegerIpAddress(ip_192_168_1_4, 30)));
228 public void layer3MatchEqualsTest() {
229 final Ipv4MatchBuilder statsBuilder = new Ipv4MatchBuilder();
230 final Ipv4MatchBuilder storedBuilder = new Ipv4MatchBuilder();
231 assertEquals(true, MatchComparatorHelper.layer3MatchEquals(statsBuilder.build(), storedBuilder.build()));
232 statsBuilder.setIpv4Destination(new Ipv4Prefix("192.168.1.1/30"));
233 storedBuilder.setIpv4Destination(new Ipv4Prefix("191.168.1.1/30"));
234 assertEquals(false, MatchComparatorHelper.layer3MatchEquals(statsBuilder.build(), storedBuilder.build()));
235 assertEquals(true, MatchComparatorHelper.layer3MatchEquals(null, null));
237 MatchComparatorHelper.layer3MatchEquals(new ArpMatchBuilder().build(), new ArpMatchBuilder().build()));
241 public void layer3MatchEqualsIpv6Test() {
242 final Ipv6MatchBuilder statsBuilder = new Ipv6MatchBuilder();
243 final Ipv6MatchBuilder storedBuilder = new Ipv6MatchBuilder();
244 assertEquals(true, MatchComparatorHelper.layer3MatchEquals(statsBuilder.build(), storedBuilder.build()));
246 statsBuilder.setIpv6Destination(new Ipv6Prefix("AABB:1234:2ACF:000D:0000:0000:0000:5D99/64"));
247 storedBuilder.setIpv6Destination(new Ipv6Prefix("AABB:1234:2ACF:000D:0000:0000:0000:4D99/64"));
248 assertEquals(true, MatchComparatorHelper.layer3MatchEquals(statsBuilder.build(), storedBuilder.build()));
250 statsBuilder.setIpv6Destination(new Ipv6Prefix("aabb:1234:2acf:000d:0000:0000:0000:5d99/64"));
251 storedBuilder.setIpv6Destination(new Ipv6Prefix("AABB:1234:2ACF:000D:0000:0000:0000:4D99/64"));
252 assertEquals(true, MatchComparatorHelper.layer3MatchEquals(statsBuilder.build(), storedBuilder.build()));
254 statsBuilder.setIpv6Destination(new Ipv6Prefix("AABB:1234:2ACF:000C:0000:0000:0000:5D99/64"));
255 storedBuilder.setIpv6Destination(new Ipv6Prefix("AABB:1234:2ACF:000D:0000:0000:0000:4D99/64"));
256 assertEquals(false, MatchComparatorHelper.layer3MatchEquals(statsBuilder.build(), storedBuilder.build()));
258 statsBuilder.setIpv6Destination(new Ipv6Prefix("AABB:1234:2ACF:000C:0000:0000:0000:5D99/63"));
259 storedBuilder.setIpv6Destination(new Ipv6Prefix("AABB:1234:2ACF:000D:0000:0000:0000:4D99/63"));
260 assertEquals(true, MatchComparatorHelper.layer3MatchEquals(statsBuilder.build(), storedBuilder.build()));
262 statsBuilder.setIpv6Destination(new Ipv6Prefix("AABB:1234:2ACF:000D:0000:0000:0000:5D99/63"));
263 storedBuilder.setIpv6Destination(new Ipv6Prefix("AABB:1234:2ACF:000E:0000:0000:0000:4D99/63"));
264 assertEquals(false, MatchComparatorHelper.layer3MatchEquals(statsBuilder.build(), storedBuilder.build()));
268 public void layer3MatchEqualsIpv4ArbitraryMaskTest(){
269 final Ipv4MatchBuilder statsBuilder = new Ipv4MatchBuilder();
270 final Ipv4MatchArbitraryBitMaskBuilder storedBuilder = new Ipv4MatchArbitraryBitMaskBuilder();
271 assertEquals(true,MatchComparatorHelper.layer3MatchEquals(statsBuilder.build(),storedBuilder.build()));
272 statsBuilder.setIpv4Destination(new Ipv4Prefix("192.168.1.1/24"));
273 storedBuilder.setIpv4DestinationAddressNoMask(new Ipv4Address("192.168.1.1"));
274 storedBuilder.setIpv4DestinationArbitraryBitmask(new DottedQuad("255.255.255.0"));
275 statsBuilder.setIpv4Source(new Ipv4Prefix("192.168.1.1/24"));
276 storedBuilder.setIpv4SourceAddressNoMask(new Ipv4Address("192.168.1.1"));
277 storedBuilder.setIpv4SourceArbitraryBitmask(new DottedQuad("255.255.255.0"));
278 assertEquals(true, MatchComparatorHelper.layer3MatchEquals(statsBuilder.build(), storedBuilder.build()));
279 assertEquals(true, MatchComparatorHelper.layer3MatchEquals(null, null));
284 public void layer3MatchEqualsIpv4ArbitraryMaskRandomTest() {
285 final Ipv4MatchArbitraryBitMaskBuilder statsBuilder = new Ipv4MatchArbitraryBitMaskBuilder();
286 final Ipv4MatchArbitraryBitMaskBuilder storedBuilder = new Ipv4MatchArbitraryBitMaskBuilder();
287 assertEquals(true,MatchComparatorHelper.layer3MatchEquals(statsBuilder.build(),storedBuilder.build()));
288 statsBuilder.setIpv4DestinationAddressNoMask(new Ipv4Address("192.168.0.1"));
289 statsBuilder.setIpv4DestinationArbitraryBitmask(new DottedQuad("255.255.0.255"));
290 storedBuilder.setIpv4DestinationAddressNoMask(new Ipv4Address("192.168.1.1"));
291 storedBuilder.setIpv4DestinationArbitraryBitmask(new DottedQuad("255.255.0.255"));
292 statsBuilder.setIpv4SourceAddressNoMask(new Ipv4Address("192.0.0.1"));
293 statsBuilder.setIpv4SourceArbitraryBitmask(new DottedQuad("255.0.0.255"));
294 storedBuilder.setIpv4SourceAddressNoMask(new Ipv4Address("192.7.1.1"));
295 storedBuilder.setIpv4SourceArbitraryBitmask(new DottedQuad("255.0.0.255"));
296 assertEquals(true, MatchComparatorHelper.layer3MatchEquals(statsBuilder.build(), storedBuilder.build()));
297 assertEquals(true, MatchComparatorHelper.layer3MatchEquals(null, null));
301 public void layer3MatchEqualsIpv4ArbitraryMaskEqualsNullTest() {
302 final Ipv4MatchBuilder statsBuilder = new Ipv4MatchBuilder();
303 final Ipv4MatchArbitraryBitMaskBuilder storedBuilder = new Ipv4MatchArbitraryBitMaskBuilder();
304 assertEquals(true,MatchComparatorHelper.layer3MatchEquals(statsBuilder.build(),storedBuilder.build()));
305 statsBuilder.setIpv4Source(new Ipv4Prefix("192.168.0.1/32"));
306 storedBuilder.setIpv4DestinationAddressNoMask(new Ipv4Address("192.168.0.1"));
307 statsBuilder.setIpv4Destination(new Ipv4Prefix("192.1.0.0/32"));
308 storedBuilder.setIpv4SourceAddressNoMask(new Ipv4Address("192.1.0.0"));
309 assertEquals(false, MatchComparatorHelper.layer3MatchEquals(statsBuilder.build(), storedBuilder.build()));
310 assertEquals(true, MatchComparatorHelper.layer3MatchEquals(null, null));
314 public void layer3MatchEqualsIpv4ArbitraryEmptyBitMaskTest(){
315 final Ipv4MatchBuilder statsBuilder = new Ipv4MatchBuilder();
316 final Ipv4MatchArbitraryBitMaskBuilder storedBuilder = new Ipv4MatchArbitraryBitMaskBuilder();
317 assertEquals(true,MatchComparatorHelper.layer3MatchEquals(statsBuilder.build(),storedBuilder.build()));
318 statsBuilder.setIpv4Destination(new Ipv4Prefix("192.168.1.1/32"));
319 storedBuilder.setIpv4DestinationAddressNoMask(new Ipv4Address("192.168.1.1"));
320 statsBuilder.setIpv4Source(new Ipv4Prefix("192.168.1.1/32"));
321 storedBuilder.setIpv4SourceAddressNoMask(new Ipv4Address("192.168.1.1"));
322 assertEquals(true, MatchComparatorHelper.layer3MatchEquals(statsBuilder.build(), storedBuilder.build()));
323 assertEquals(true, MatchComparatorHelper.layer3MatchEquals(null, null));
327 public void extractIpv4AddressTest() {
328 Ipv4Address ipAddress = new Ipv4Address("1.1.1.1");
329 DottedQuad netMask = new DottedQuad("255.255.255.0");
330 String extractedIpAddress;
331 extractedIpAddress = MatchComparatorHelper.normalizeIpv4Address(ipAddress,netMask);
332 assertEquals(extractedIpAddress,"1.1.1.0");
336 public void convertArbitraryMaskToByteArrayTest() {
337 int value = 0xffffffff;
338 byte[] bytes = new byte[]{
339 (byte)(value >>> 24), (byte)(value >> 16 & 0xff), (byte)(value >> 8 & 0xff), (byte)(value & 0xff) };
341 maskBytes = MatchComparatorHelper.convertArbitraryMaskToByteArray(new DottedQuad("255.255.255.255"));
342 for (int i=0; i<bytes.length;i++) {
343 int mask = maskBytes[i];
344 assertEquals(bytes[i],mask);
349 public void isArbitraryBitMaskTest() {
350 boolean arbitraryBitMask;
351 arbitraryBitMask = MatchComparatorHelper.isArbitraryBitMask(new byte[] {1,1,1,1});
352 assertEquals(arbitraryBitMask,true);
353 arbitraryBitMask = MatchComparatorHelper.isArbitraryBitMask(new byte[] {-1,-1,-1,-1});
354 assertEquals(arbitraryBitMask,false);
355 arbitraryBitMask = MatchComparatorHelper.isArbitraryBitMask(new byte[] {-1,-1,0,-1});
356 assertEquals(arbitraryBitMask,true);
357 arbitraryBitMask = MatchComparatorHelper.isArbitraryBitMask(null);
358 assertEquals(arbitraryBitMask,false);
362 public void createPrefixTest() {
363 Ipv4Address ipv4Address = new Ipv4Address("1.1.1.1");
364 byte [] byteMask = new byte[] {-1,-1,-1,-1};
365 Ipv4Prefix ipv4Prefix = MatchComparatorHelper.createPrefix(ipv4Address,byteMask);
366 assertEquals(ipv4Prefix,new Ipv4Prefix("1.1.1.1/32"));
367 String nullMask = "";
368 Ipv4Prefix ipv4PrefixNullMask = MatchComparatorHelper.createPrefix(ipv4Address,nullMask);
369 assertEquals(ipv4PrefixNullMask,new Ipv4Prefix("1.1.1.1/32"));
370 Ipv4Prefix ipv4PrefixNoMask = MatchComparatorHelper.createPrefix(ipv4Address);
371 assertEquals(ipv4PrefixNoMask,new Ipv4Prefix("1.1.1.1/32"));
375 public void layer3MatchEqualsIpv6ArbitraryMaskTest(){
376 final Ipv6MatchBuilder statsBuilder = new Ipv6MatchBuilder();
377 final Ipv6MatchArbitraryBitMaskBuilder storedBuilder = new Ipv6MatchArbitraryBitMaskBuilder();
378 assertEquals(true,MatchComparatorHelper.layer3MatchEquals(statsBuilder.build(),storedBuilder.build()));
379 statsBuilder.setIpv6Destination(new Ipv6Prefix("1:2:3:4:5:6:7:8/16"));
380 storedBuilder.setIpv6DestinationAddressNoMask(new Ipv6Address("1:2:3:4:5:6:7:8"));
381 storedBuilder.setIpv6DestinationArbitraryBitmask(new Ipv6ArbitraryMask("FFFF:0000:0000:0000:0000:0000:0000:0000"));
382 statsBuilder.setIpv6Source(new Ipv6Prefix("1:2:3:4:5:6:7:8/32"));
383 storedBuilder.setIpv6SourceAddressNoMask(new Ipv6Address("1:2:3:4:5:6:7:8"));
384 storedBuilder.setIpv6SourceArbitraryBitmask(new Ipv6ArbitraryMask("FFFF:FFFF::"));
385 assertEquals(true, MatchComparatorHelper.layer3MatchEquals(statsBuilder.build(), storedBuilder.build()));
386 assertEquals(true, MatchComparatorHelper.layer3MatchEquals(null, null));
391 public void layer3MatchEqualsIpv6ArbitraryMaskRandomTest() {
392 final Ipv6MatchArbitraryBitMaskBuilder statsBuilder = new Ipv6MatchArbitraryBitMaskBuilder();
393 final Ipv6MatchArbitraryBitMaskBuilder storedBuilder = new Ipv6MatchArbitraryBitMaskBuilder();
394 assertEquals(true,MatchComparatorHelper.layer3MatchEquals(statsBuilder.build(),storedBuilder.build()));
395 statsBuilder.setIpv6DestinationAddressNoMask(new Ipv6Address("1::8"));
396 statsBuilder.setIpv6DestinationArbitraryBitmask(new Ipv6ArbitraryMask("FFFF::FFFF"));
397 storedBuilder.setIpv6DestinationAddressNoMask(new Ipv6Address("1:92:93:94:95:96:97:8"));
398 storedBuilder.setIpv6DestinationArbitraryBitmask(new Ipv6ArbitraryMask("FFFF::FFFF"));
399 statsBuilder.setIpv6SourceAddressNoMask(new Ipv6Address("1::8"));
400 statsBuilder.setIpv6SourceArbitraryBitmask(new Ipv6ArbitraryMask("FFFF::FFFF"));
401 storedBuilder.setIpv6SourceAddressNoMask(new Ipv6Address("1:92:93:94:95:96:97:8"));
402 storedBuilder.setIpv6SourceArbitraryBitmask(new Ipv6ArbitraryMask("FFFF::FFFF"));
403 assertEquals(true, MatchComparatorHelper.layer3MatchEquals(statsBuilder.build(), storedBuilder.build()));
404 assertEquals(true, MatchComparatorHelper.layer3MatchEquals(null, null));
408 public void layer3MatchEqualsIpv6ArbitraryMaskEqualsNullTest() {
409 final Ipv6MatchBuilder statsBuilder = new Ipv6MatchBuilder();
410 final Ipv6MatchArbitraryBitMaskBuilder storedBuilder = new Ipv6MatchArbitraryBitMaskBuilder();
411 assertEquals(true,MatchComparatorHelper.layer3MatchEquals(statsBuilder.build(),storedBuilder.build()));
412 statsBuilder.setIpv6Source(new Ipv6Prefix("1:2:3:4:5:6:7:8/128"));
413 storedBuilder.setIpv6DestinationAddressNoMask(new Ipv6Address("1:2:3:4:5:6:7:8"));
414 statsBuilder.setIpv6Destination(new Ipv6Prefix("1:2:3:4:5:6::/128"));
415 storedBuilder.setIpv6SourceAddressNoMask(new Ipv6Address("1:2:3:4:5:6::"));
416 assertEquals(false, MatchComparatorHelper.layer3MatchEquals(statsBuilder.build(), storedBuilder.build()));
417 assertEquals(true, MatchComparatorHelper.layer3MatchEquals(null, null));
421 public void layer3MatchEqualsIpv6ArbitraryEmptyBitMaskTest(){
422 final Ipv6MatchBuilder statsBuilder = new Ipv6MatchBuilder();
423 final Ipv6MatchArbitraryBitMaskBuilder storedBuilder = new Ipv6MatchArbitraryBitMaskBuilder();
424 assertEquals(true,MatchComparatorHelper.layer3MatchEquals(statsBuilder.build(),storedBuilder.build()));
425 statsBuilder.setIpv6Destination(new Ipv6Prefix("1:2:3:4:5:6:7:8/128"));
426 storedBuilder.setIpv6DestinationAddressNoMask(new Ipv6Address("1:2:3:4:5:6:7:8"));
427 statsBuilder.setIpv6Source(new Ipv6Prefix("1:2:3:4:5:6::/128"));
428 storedBuilder.setIpv6SourceAddressNoMask(new Ipv6Address("1:2:3:4:5:6::"));
429 assertEquals(true, MatchComparatorHelper.layer3MatchEquals(statsBuilder.build(), storedBuilder.build()));
430 assertEquals(true, MatchComparatorHelper.layer3MatchEquals(null, null));