X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fstatistics-manager%2Fsrc%2Ftest%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fmd%2Fstatistics%2Fmanager%2FStatisticsUpdateCommiterTest.java;h=a687b1f28049bf7cc8b6220fb97c5d4540dac9d3;hb=413e4ecb09769460eaf740f067e06f198957ce13;hp=5da6ef34902ec5ed4f40d7c3a1de157d3a4378af;hpb=c31af714994cbaed40299758460916b2c7101158;p=controller.git diff --git a/opendaylight/md-sal/statistics-manager/src/test/java/org/opendaylight/controller/md/statistics/manager/StatisticsUpdateCommiterTest.java b/opendaylight/md-sal/statistics-manager/src/test/java/org/opendaylight/controller/md/statistics/manager/StatisticsUpdateCommiterTest.java index 5da6ef3490..a687b1f280 100644 --- a/opendaylight/md-sal/statistics-manager/src/test/java/org/opendaylight/controller/md/statistics/manager/StatisticsUpdateCommiterTest.java +++ b/opendaylight/md-sal/statistics-manager/src/test/java/org/opendaylight/controller/md/statistics/manager/StatisticsUpdateCommiterTest.java @@ -11,21 +11,27 @@ package org.opendaylight.controller.md.statistics.manager; import org.junit.Assert; import org.junit.Test; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv4Prefix; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev100924.MacAddress; +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.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.EthernetMatch; +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.Ipv4Match; import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.layer._3.match.Ipv4MatchBuilder; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** - * + * */ public class StatisticsUpdateCommiterTest { - + private static final Logger LOG = LoggerFactory .getLogger(StatisticsUpdateCommiterTest.class); /** - * Test method for {@link org.opendaylight.controller.md.statistics.manager.StatisticsUpdateCommiter#layer3MatchEquals(org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.Layer3Match, org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.Layer3Match)}. + * Test method for {@link org.opendaylight.controller.md.statistics.manager.StatisticsListener#layer3MatchEquals(org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.Layer3Match, org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.Layer3Match)}. */ @Test public void testLayer3MatchEquals() { @@ -34,45 +40,45 @@ public class StatisticsUpdateCommiterTest { {{"10.1.2.0/24", "10.1.2.0/24"}, {"10.1.2.0/24", "10.1.1.0/24"}}, {{"10.1.1.0/24", "10.1.2.0/24"}, {"10.1.2.0/24", "10.1.2.0/24"}}, {{"10.1.1.0/24", "10.1.1.0/24"}, {"10.1.2.0/24", "10.1.2.0/24"}}, - + {{"10.1.1.0/24", null}, {"10.1.1.0/24", "10.1.2.0/24"}}, {{"10.1.1.0/24", null}, {"10.1.2.0/24", "10.1.2.0/24"}}, {{"10.1.1.0/24", null}, {"10.1.2.0/24", null}}, {{"10.1.1.0/24", null}, {"10.1.1.0/24", null}}, - + {{null, "10.1.1.0/24"}, {"10.1.2.0/24", "10.1.1.0/24"}}, {{null, "10.1.1.0/24"}, {"10.1.2.0/24", "10.1.2.0/24"}}, {{null, "10.1.1.0/24"}, {null, "10.1.2.0/24"}}, {{null, "10.1.1.0/24"}, {null, "10.1.1.0/24"}}, - + {{null, null}, {null, "10.1.1.0/24"}}, {{null, null}, {null, null}}, }; - + boolean[] matches = new boolean[] { - true, + true, false, false, false, - + false, false, false, true, - + false, false, false, true, - + false, true }; - + for (int i = 0; i < matches.length; i++) { checkComparisonOfL3Match( - matchSeeds[i][0][0], matchSeeds[i][0][1], - matchSeeds[i][1][0], matchSeeds[i][1][1], + matchSeeds[i][0][0], matchSeeds[i][0][1], + matchSeeds[i][1][0], matchSeeds[i][1][1], matches[i]); } } @@ -83,23 +89,23 @@ public class StatisticsUpdateCommiterTest { * @param m2Source match2 - src * @param msDestination match2 - dest * @param matches expected match output - * + * */ - private static void checkComparisonOfL3Match(String m1Source, String m1Destination, + private static void checkComparisonOfL3Match(String m1Source, String m1Destination, String m2Source, String msDestination, boolean matches) { Ipv4Match m1Layer3 = prepareIPv4Match(m1Source, m1Destination); Ipv4Match m2Layer3 = prepareIPv4Match(m2Source, msDestination); boolean comparisonResult; try { - comparisonResult = StatisticsUpdateCommiter.layer3MatchEquals(m1Layer3, m2Layer3); - Assert.assertEquals("failed to compare: "+m1Layer3+" vs. "+m2Layer3, + comparisonResult = FlowComparator.layer3MatchEquals(m1Layer3, m2Layer3); + Assert.assertEquals("failed to compare: "+m1Layer3+" vs. "+m2Layer3, matches, comparisonResult); } catch (Exception e) { LOG.error("failed to compare: {} vs. {}", m1Layer3, m2Layer3, e); Assert.fail(e.getMessage()); } } - + private static Ipv4Match prepareIPv4Match(String source, String destination) { Ipv4MatchBuilder ipv4MatchBuilder = new Ipv4MatchBuilder(); if (source != null) { @@ -108,8 +114,99 @@ public class StatisticsUpdateCommiterTest { if (destination != null) { ipv4MatchBuilder.setIpv4Destination(new Ipv4Prefix(destination)); } - + return ipv4MatchBuilder.build(); } + /** + * Test method for {@link org.opendaylight.controller.md.statistics.manager.FlowComparator#ethernetMatchEquals(EthernetMatch, EthernetMatch) + */ + @Test + public void testEthernetMatchEquals() { + String[][][] ethernetMatchSeeds = new String[][][] { + {{"aa:bb:cc:dd:ee:ff", "ff:ff:ff:ff:ff:ff","0800"}, {"aa:bb:cc:dd:ee:ff", "ff:ff:ff:ff:ff:ff","0800"}}, + {{"aa:bb:cc:dd:ee:ff", "ff:ff:ff:ff:ff:ff","0800"}, {"aa:bb:bc:cd:ee:ff", "ff:ff:ff:ff:ff:ff","0800"}}, + {{"aa:bb:cc:dd:ee:ff", "ff:ff:ff:ff:ff:ff","0800"}, {"AA:BB:CC:DD:EE:FF", "ff:ff:ff:ff:ff:ff","0800"}}, + {{"AA:BB:CC:dd:ee:ff", "ff:ff:ff:ff:ff:ff","0800"}, {"aa:bb:cc:dd:ee:ff", "ff:ff:ff:ff:ff:ff","0800"}}, + {{"AA:BB:CC:dd:ee:ff", "ff:ff:ff:ff:ff:ff","0800"}, {"aa:bb:cc:dd:ee:ff", "FF:FF:FF:FF:FF:FF","0800"}}, + {{"AA:BB:CC:dd:ee:ff", "ff:ff:ff:ee:ee:ee","0800"}, {"aa:bb:cc:dd:ee:ff", "FF:FF:FF:FF:FF:FF","0800"}}, + + {{"AA:BB:CC:dd:ee:ff", null,"0800"}, {"aa:bb:cc:dd:ee:ff", null,"0800"}}, + {{"AA:BB:CC:dd:ee:ff", null,"0800"}, {"aa:bb:cc:dd:ee:ff", null,"0806"}}, + {{"AA:BB:CC:dd:ee:ff", null,"0800"}, {"aa:bb:cc:dd:ee:ff", "FF:FF:FF:FF:FF:FF","0800"}}, + {{"AA:BB:CC:dd:ee:ff", null,"0800"}, {null, "FF:FF:FF:FF:FF:FF","0800"}}, + + {{"AA:BB:CC:dd:ee:ff", "ff:ff:ff:ff:ff:ff",null}, {null, "FF:FF:FF:FF:FF:FF","0800"}}, + {{"AA:BB:CC:dd:ee:ff", "ff:ff:ff:ff:ff:ff",null}, {"aa:bb:cc:dd:ee:ff", "FF:FF:FF:FF:FF:FF",null}}, + {{"AA:BB:CC:dd:ee:ff", "ff:ff:ff:ff:ff:ff",null}, {null, "FF:FF:FF:FF:FF:FF",null}}, + + {{null, null,null}, {null, null,"0800"}}, + {{null, null,null}, {null, null,null}}, + }; + boolean[] matches = new boolean[] { + true, + false, + true, + true, + true, + false, + + true, + false, + false, + false, + + false, + true, + false, + + false, + true + }; + + for (int i = 0; i < matches.length; i++) { + checkComparisonOfEthernetMatch( + ethernetMatchSeeds[i][0][0], ethernetMatchSeeds[i][0][1],ethernetMatchSeeds[i][0][2], + ethernetMatchSeeds[i][1][0], ethernetMatchSeeds[i][1][1],ethernetMatchSeeds[i][1][2], + matches[i]); + } + } + + /* + * @param ethernetMatch1 + * @param ethernetMatch2 + */ + private static void checkComparisonOfEthernetMatch(String macAddress1, String macAddressMask1,String etherType1, + String macAddress2, String macAddressMask2,String etherType2, boolean expectedResult) { + EthernetMatch ethernetMatch1 = prepareEthernetMatch(macAddress1, macAddressMask1,etherType1); + EthernetMatch ethernetMatch2 = prepareEthernetMatch(macAddress2, macAddressMask2,etherType2); + boolean comparisonResult; + try { + comparisonResult = FlowComparator.ethernetMatchEquals(ethernetMatch1, ethernetMatch2); + Assert.assertEquals("failed to compare: "+ethernetMatch1+" vs. "+ethernetMatch2, + expectedResult, comparisonResult); + } catch (Exception e) { + LOG.error("failed to compare: {} vs. {}", ethernetMatch1, ethernetMatch2, e); + Assert.fail(e.getMessage()); + } + } + + private static EthernetMatch prepareEthernetMatch(String macAddress, String macAddressMask, String etherType) { + EthernetMatchBuilder ethernetMatchBuilder = new EthernetMatchBuilder(); + EthernetSourceBuilder ethernetSourceBuilder = new EthernetSourceBuilder(); + if (macAddress != null) { + ethernetSourceBuilder.setAddress(new MacAddress(macAddress)); + } + if (macAddressMask != null) { + ethernetSourceBuilder.setMask(new MacAddress(macAddressMask)); + } + if(etherType != null){ + EthernetTypeBuilder ethernetType = new EthernetTypeBuilder(); + ethernetType.setType(new EtherType(Long.parseLong(etherType,16))); + ethernetMatchBuilder.setEthernetType(ethernetType.build()); + } + ethernetMatchBuilder.setEthernetSource(ethernetSourceBuilder.build()); + + return ethernetMatchBuilder.build(); + } }