Internal API + unit tests for packet count stats. Also stream-lined some of the...
[affinity.git] / analytics / implementation / src / test / java / org / opendaylight / affinity / analytics / internal / AnalyticsManagerTest.java
index d0d9a0c087852f2059844de72be0d1131ca5dcb3..3d09ebf43e8b3521075ed0fc74625513047e3095 100644 (file)
@@ -292,6 +292,7 @@ public class AnalyticsManagerTest extends TestCase {
             f.setMatch(match);\r
             FlowOnNode fon = new FlowOnNode(f);\r
             fon.setByteCount(200);\r
+            fon.setPacketCount(6);\r
             fon.setDurationSeconds(1);\r
             fon.setDurationNanoseconds(100000000);\r
             flowStatsListn1.add(fon);\r
@@ -306,6 +307,7 @@ public class AnalyticsManagerTest extends TestCase {
             f.setMatch(match);\r
             fon = new FlowOnNode(f);\r
             fon.setByteCount(64);\r
+            fon.setPacketCount(5);\r
             fon.setDurationSeconds(1);\r
             fon.setDurationNanoseconds(0);\r
             flowStatsListn1.add(fon);\r
@@ -320,6 +322,7 @@ public class AnalyticsManagerTest extends TestCase {
             f.setMatch(match);\r
             fon = new FlowOnNode(f);\r
             fon.setByteCount(76);\r
+            fon.setPacketCount(4);\r
             fon.setDurationSeconds(2);\r
             fon.setDurationNanoseconds(0);\r
             flowStatsListn1.add(fon);\r
@@ -334,6 +337,7 @@ public class AnalyticsManagerTest extends TestCase {
             f.setMatch(match);\r
             fon = new FlowOnNode(f);\r
             fon.setByteCount(300);\r
+            fon.setPacketCount(3);\r
             fon.setDurationSeconds(1);\r
             fon.setDurationNanoseconds(200000000);\r
             flowStatsListn2.add(fon);\r
@@ -348,6 +352,7 @@ public class AnalyticsManagerTest extends TestCase {
             f.setMatch(match);\r
             fon = new FlowOnNode(f);\r
             fon.setByteCount(27);\r
+            fon.setPacketCount(4);\r
             fon.setDurationSeconds(1);\r
             fon.setDurationNanoseconds(0);\r
             flowStatsListn1.add(fon);\r
@@ -362,6 +367,7 @@ public class AnalyticsManagerTest extends TestCase {
             f.setMatch(match);\r
             fon = new FlowOnNode(f);\r
             fon.setByteCount(234);\r
+            fon.setPacketCount(2);\r
             fon.setDurationSeconds(2);\r
             fon.setDurationNanoseconds(0);\r
             flowStatsListn2.add(fon);\r
@@ -376,6 +382,7 @@ public class AnalyticsManagerTest extends TestCase {
             f.setMatch(match);\r
             fon = new FlowOnNode(f);\r
             fon.setByteCount(54);\r
+            fon.setPacketCount(1);\r
             fon.setDurationSeconds(3);\r
             fon.setDurationNanoseconds(100000000);\r
             flowStatsListn2.add(fon);\r
@@ -385,100 +392,124 @@ public class AnalyticsManagerTest extends TestCase {
 \r
             // Host pairs - basic stats\r
             Assert.assertTrue(am.getByteCount(hnc1, hnc3) == 200 + 64);\r
+            Assert.assertTrue(am.getPacketCount(hnc1, hnc3) == 6 + 5);\r
             Assert.assertTrue(am.getDuration(hnc1, hnc3) == 1.1);\r
             Assert.assertTrue(am.getBitRate(hnc1, hnc3) == ((200 + 64) * 8.0) / 1.1);\r
             Assert.assertTrue(am.getByteCount(hnc1, hnc4) == 76);\r
+            Assert.assertTrue(am.getPacketCount(hnc1, hnc4) == 4);\r
             Assert.assertTrue(am.getDuration(hnc1, hnc4) == 2.0);\r
             Assert.assertTrue(am.getBitRate(hnc1, hnc4) == (76 * 8.0) / 2.0);\r
             Assert.assertTrue(am.getByteCount(hnc2, hnc4) == 300);\r
+            Assert.assertTrue(am.getPacketCount(hnc2, hnc4) == 3);\r
             Assert.assertTrue(am.getDuration(hnc2, hnc4) == 1.2);\r
             Assert.assertTrue(am.getBitRate(hnc2, hnc4) == (300 * 8.0) / 1.2);\r
             Assert.assertTrue(am.getByteCount(hnc1, hnc5) == 27);\r
+            Assert.assertTrue(am.getPacketCount(hnc1, hnc5) == 4);\r
             Assert.assertTrue(am.getDuration(hnc1, hnc5) == 1.0);\r
             Assert.assertTrue(am.getBitRate(hnc1, hnc5) == (27 * 8.0) / 1.0);\r
             Assert.assertTrue(am.getByteCount(hnc2, hnc5) == 234 + 54);\r
+            Assert.assertTrue(am.getPacketCount(hnc2, hnc5) == 2 + 1);\r
             Assert.assertTrue(am.getDuration(hnc2, hnc5) == 3.1);\r
             Assert.assertTrue(am.getBitRate(hnc2, hnc5) == ((234 + 54) * 8.0) / 3.1);\r
 \r
             // Host pairs - per-protocol stats\r
             Assert.assertTrue(am.getByteCount(hnc1, hnc3, IPProtocols.ICMP.byteValue()) == 64);\r
+            Assert.assertTrue(am.getPacketCount(hnc1, hnc3, IPProtocols.ICMP.byteValue()) == 5);\r
             Assert.assertTrue(am.getDuration(hnc1, hnc3, IPProtocols.ICMP.byteValue()) == 1.0);\r
             Assert.assertTrue(am.getBitRate(hnc1, hnc3, IPProtocols.ICMP.byteValue()) == (64 * 8.0) / 1.0);\r
             Assert.assertTrue(am.getByteCount(hnc1, hnc3, IPProtocols.UDP.byteValue()) == 200);\r
+            Assert.assertTrue(am.getPacketCount(hnc1, hnc3, IPProtocols.UDP.byteValue()) == 6);\r
             Assert.assertTrue(am.getDuration(hnc1, hnc3, IPProtocols.UDP.byteValue()) == 1.1);\r
             Assert.assertTrue(am.getBitRate(hnc1, hnc3, IPProtocols.UDP.byteValue()) == (200 * 8.0) / 1.1);\r
             Assert.assertTrue(am.getByteCount(hnc1, hnc3, IPProtocols.TCP.byteValue()) == 0);\r
+            Assert.assertTrue(am.getPacketCount(hnc1, hnc3, IPProtocols.TCP.byteValue()) == 0);\r
             Assert.assertTrue(am.getDuration(hnc1, hnc3, IPProtocols.TCP.byteValue()) == 0.0);\r
             Assert.assertTrue(am.getBitRate(hnc1, hnc3, IPProtocols.TCP.byteValue()) == 0.0);\r
             Assert.assertTrue(am.getByteCount(hnc1, hnc4, IPProtocols.TCP.byteValue()) == 76);\r
+            Assert.assertTrue(am.getPacketCount(hnc1, hnc4, IPProtocols.TCP.byteValue()) == 4);\r
             Assert.assertTrue(am.getDuration(hnc1, hnc4, IPProtocols.TCP.byteValue()) == 2.0);\r
             Assert.assertTrue(am.getBitRate(hnc1, hnc4, IPProtocols.TCP.byteValue()) == (76 * 8.0) / 2.0);\r
             Assert.assertTrue(am.getByteCount(hnc2, hnc4, IPProtocols.TCP.byteValue()) == 300);\r
+            Assert.assertTrue(am.getPacketCount(hnc2, hnc4, IPProtocols.TCP.byteValue()) == 3);\r
             Assert.assertTrue(am.getDuration(hnc2, hnc4, IPProtocols.TCP.byteValue()) == 1.2);\r
             Assert.assertTrue(am.getBitRate(hnc2, hnc4, IPProtocols.TCP.byteValue()) == (300 * 8.0) / 1.2);\r
             Assert.assertTrue(am.getByteCount(hnc1, hnc5, IPProtocols.UDP.byteValue()) == 27);\r
+            Assert.assertTrue(am.getPacketCount(hnc1, hnc5, IPProtocols.UDP.byteValue()) == 4);\r
             Assert.assertTrue(am.getDuration(hnc1, hnc5, IPProtocols.UDP.byteValue()) == 1.0);\r
             Assert.assertTrue(am.getBitRate(hnc1, hnc5, IPProtocols.UDP.byteValue()) == (27 * 8.0) / 1.0);\r
             Assert.assertTrue(am.getByteCount(hnc2, hnc5, IPProtocols.ICMP.byteValue()) == 54);\r
+            Assert.assertTrue(am.getPacketCount(hnc2, hnc5, IPProtocols.ICMP.byteValue()) == 1);\r
             Assert.assertTrue(am.getDuration(hnc2, hnc5, IPProtocols.ICMP.byteValue()) == 3.1);\r
             Assert.assertTrue(am.getBitRate(hnc2, hnc5, IPProtocols.ICMP.byteValue()) == (54 * 8.0) / 3.1);\r
             Assert.assertTrue(am.getByteCount(hnc2, hnc5, IPProtocols.TCP.byteValue()) == 234);\r
+            Assert.assertTrue(am.getPacketCount(hnc2, hnc5, IPProtocols.TCP.byteValue()) == 2);\r
             Assert.assertTrue(am.getDuration(hnc2, hnc5, IPProtocols.TCP.byteValue()) == 2.0);\r
             Assert.assertTrue(am.getBitRate(hnc2, hnc5, IPProtocols.TCP.byteValue()) == (234 * 8.0) / 2.0);\r
 \r
             // Host pairs - all stats\r
-            Map<Byte, Long> byteCounts = am.getAllByteCounts(hnc1, hnc3);\r
-            Map<Byte, Double> bitRates = am.getAllBitRates(hnc1, hnc3);\r
-            Assert.assertTrue(byteCounts.get(IPProtocols.ICMP.byteValue()) == am.getByteCount(hnc1, hnc3, IPProtocols.ICMP.byteValue()));\r
-            Assert.assertTrue(byteCounts.get(IPProtocols.UDP.byteValue()) == am.getByteCount(hnc1, hnc3, IPProtocols.UDP.byteValue()));\r
-            Assert.assertTrue(byteCounts.get(IPProtocols.TCP.byteValue()) == null);\r
-            Assert.assertTrue(bitRates.get(IPProtocols.ICMP.byteValue()) == am.getBitRate(hnc1, hnc3, IPProtocols.ICMP.byteValue()));\r
-            Assert.assertTrue(bitRates.get(IPProtocols.UDP.byteValue()) == am.getBitRate(hnc1, hnc3, IPProtocols.UDP.byteValue()));\r
-            Assert.assertTrue(bitRates.get(IPProtocols.TCP.byteValue()) == null);\r
-            byteCounts = am.getAllByteCounts(hnc1, hnc4);\r
-            bitRates = am.getAllBitRates(hnc1, hnc4);\r
-            Assert.assertTrue(byteCounts.get(IPProtocols.TCP.byteValue()) == am.getByteCount(hnc1, hnc4, IPProtocols.TCP.byteValue()));\r
-            Assert.assertTrue(bitRates.get(IPProtocols.TCP.byteValue()) == am.getBitRate(hnc1, hnc4, IPProtocols.TCP.byteValue()));\r
-            byteCounts = am.getAllByteCounts(hnc2, hnc4);\r
-            bitRates = am.getAllBitRates(hnc2, hnc4);\r
-            Assert.assertTrue(byteCounts.get(IPProtocols.TCP.byteValue()) == am.getByteCount(hnc2, hnc4, IPProtocols.TCP.byteValue()));\r
-            Assert.assertTrue(bitRates.get(IPProtocols.TCP.byteValue()) == am.getBitRate(hnc2, hnc4, IPProtocols.TCP.byteValue()));\r
-            byteCounts = am.getAllByteCounts(hnc1, hnc5);\r
-            bitRates = am.getAllBitRates(hnc1, hnc5);\r
-            Assert.assertTrue(byteCounts.get(IPProtocols.UDP.byteValue()) == am.getByteCount(hnc1, hnc5, IPProtocols.UDP.byteValue()));\r
-            Assert.assertTrue(bitRates.get(IPProtocols.UDP.byteValue()) == am.getBitRate(hnc1, hnc5, IPProtocols.UDP.byteValue()));\r
-            byteCounts = am.getAllByteCounts(hnc2, hnc5);\r
-            bitRates = am.getAllBitRates(hnc2, hnc5);\r
-            Assert.assertTrue(byteCounts.get(IPProtocols.ICMP.byteValue()) == am.getByteCount(hnc2, hnc5, IPProtocols.ICMP.byteValue()));\r
-            Assert.assertTrue(byteCounts.get(IPProtocols.TCP.byteValue()) == am.getByteCount(hnc2, hnc5, IPProtocols.TCP.byteValue()));\r
-            Assert.assertTrue(bitRates.get(IPProtocols.ICMP.byteValue()) == am.getBitRate(hnc2, hnc5, IPProtocols.ICMP.byteValue()));\r
-            Assert.assertTrue(bitRates.get(IPProtocols.TCP.byteValue()) == am.getBitRate(hnc2, hnc5, IPProtocols.TCP.byteValue()));\r
+            Set<Byte> allProtocols = new HashSet<Byte>(Arrays.asList(IPProtocols.ICMP.byteValue(), IPProtocols.UDP.byteValue(), IPProtocols.TCP.byteValue()));\r
+            for (Host h1 : allHosts) {\r
+                for (Host h2 : allHosts) {\r
+                    Map<Byte, Long> byteCounts = am.getAllByteCounts(h1, h2);\r
+                    Map<Byte, Long> packetCounts = am.getAllPacketCounts(h1, h2);\r
+                    Map<Byte, Double> durations = am.getAllDurations(h1, h2);\r
+                    Map<Byte, Double> bitRates = am.getAllBitRates(h1, h2);\r
+                    for (Byte protocol : allProtocols) {\r
+                        if (byteCounts.get(protocol) == null) {\r
+                            Assert.assertTrue(am.getByteCount(h1, h2, protocol) == 0);\r
+                            Assert.assertTrue(am.getPacketCount(h1, h2, protocol) == 0);\r
+                            Assert.assertTrue(am.getDuration(h1, h2, protocol) == 0.0);\r
+                            Assert.assertTrue(am.getBitRate(h1, h2, protocol) == 0.0);\r
+                        }\r
+                        else {\r
+                            Assert.assertTrue(byteCounts.get(protocol) == am.getByteCount(h1, h2, protocol));\r
+                            Assert.assertTrue(packetCounts.get(protocol) == am.getPacketCount(h1, h2, protocol));\r
+                            Assert.assertTrue(durations.get(protocol) == am.getDuration(h1, h2, protocol));\r
+                            Assert.assertTrue(bitRates.get(protocol) == am.getBitRate(h1, h2, protocol));\r
+                        }\r
+                    }\r
+                }\r
+            }\r
 \r
             // Host groups - basic stats\r
             Set<Host> srcHosts = new HashSet<Host>(Arrays.asList(hnc1, hnc2));\r
             Set<Host> dstHosts = new HashSet<Host>(Arrays.asList(hnc3, hnc4));\r
             Assert.assertTrue(am.getByteCount(srcHosts, dstHosts, null) == 64 + 200 + 76 + 300);\r
+            Assert.assertTrue(am.getPacketCount(srcHosts, dstHosts, null) == 6 + 5 + 4 + 3);\r
             Assert.assertTrue(am.getDuration(srcHosts, dstHosts, null) == 2.0);\r
             Assert.assertTrue(am.getBitRate(srcHosts, dstHosts, null) == ((64 + 200 + 76 + 300) * 8.0) / 2.0);\r
 \r
             // Host groups - per-protocol stats\r
             Assert.assertTrue(am.getByteCount(srcHosts, dstHosts, IPProtocols.ICMP.byteValue()) == 64);\r
+            Assert.assertTrue(am.getPacketCount(srcHosts, dstHosts, IPProtocols.ICMP.byteValue()) == 5);\r
             Assert.assertTrue(am.getDuration(srcHosts, dstHosts, IPProtocols.ICMP.byteValue()) == 1.0);\r
             Assert.assertTrue(am.getBitRate(srcHosts, dstHosts, IPProtocols.ICMP.byteValue()) == (64 * 8.0) / 1.0);\r
             Assert.assertTrue(am.getByteCount(srcHosts, dstHosts, IPProtocols.TCP.byteValue()) == 76 + 300);\r
+            Assert.assertTrue(am.getPacketCount(srcHosts, dstHosts, IPProtocols.TCP.byteValue()) == 4 + 3);\r
             Assert.assertTrue(am.getDuration(srcHosts, dstHosts, IPProtocols.TCP.byteValue()) == 2.0);\r
             Assert.assertTrue(am.getBitRate(srcHosts, dstHosts, IPProtocols.TCP.byteValue()) == ((76 + 300) * 8.0) / 2.0);\r
             Assert.assertTrue(am.getByteCount(srcHosts, dstHosts, IPProtocols.UDP.byteValue()) == 200);\r
+            Assert.assertTrue(am.getPacketCount(srcHosts, dstHosts, IPProtocols.UDP.byteValue()) == 6);\r
             Assert.assertTrue(am.getDuration(srcHosts, dstHosts, IPProtocols.UDP.byteValue()) == 1.1);\r
             Assert.assertTrue(am.getBitRate(srcHosts, dstHosts, IPProtocols.UDP.byteValue()) == (200 * 8.0) / 1.1);\r
 \r
             // Host groups - all stats\r
-            byteCounts = am.getAllByteCounts(srcHosts, dstHosts);\r
-            bitRates = am.getAllBitRates(srcHosts, dstHosts);\r
+            Map<Byte, Long> byteCounts = am.getAllByteCounts(srcHosts, dstHosts);\r
+            Map<Byte, Long> packetCounts = am.getAllPacketCounts(srcHosts, dstHosts);\r
+            Map<Byte, Double> durations = am.getAllDurations(srcHosts, dstHosts);\r
+            Map<Byte, Double> bitRates = am.getAllBitRates(srcHosts, dstHosts);\r
             Assert.assertTrue(byteCounts.get(IPProtocols.ICMP.byteValue()) == am.getByteCount(srcHosts, dstHosts, IPProtocols.ICMP.byteValue()));\r
             Assert.assertTrue(byteCounts.get(IPProtocols.UDP.byteValue()) == am.getByteCount(srcHosts, dstHosts, IPProtocols.UDP.byteValue()));\r
             Assert.assertTrue(byteCounts.get(IPProtocols.TCP.byteValue()) == am.getByteCount(srcHosts, dstHosts, IPProtocols.TCP.byteValue()));\r
             Assert.assertTrue(byteCounts.get(IPProtocols.ANY.byteValue()) == null);\r
+            Assert.assertTrue(packetCounts.get(IPProtocols.ICMP.byteValue()) == am.getPacketCount(srcHosts, dstHosts, IPProtocols.ICMP.byteValue()));\r
+            Assert.assertTrue(packetCounts.get(IPProtocols.UDP.byteValue()) == am.getPacketCount(srcHosts, dstHosts, IPProtocols.UDP.byteValue()));\r
+            Assert.assertTrue(packetCounts.get(IPProtocols.TCP.byteValue()) == am.getPacketCount(srcHosts, dstHosts, IPProtocols.TCP.byteValue()));\r
+            Assert.assertTrue(packetCounts.get(IPProtocols.ANY.byteValue()) == null);\r
+            Assert.assertTrue(durations.get(IPProtocols.ICMP.byteValue()) == am.getDuration(srcHosts, dstHosts, IPProtocols.ICMP.byteValue()));\r
+            Assert.assertTrue(durations.get(IPProtocols.UDP.byteValue()) == am.getDuration(srcHosts, dstHosts, IPProtocols.UDP.byteValue()));\r
+            Assert.assertTrue(durations.get(IPProtocols.TCP.byteValue()) == am.getDuration(srcHosts, dstHosts, IPProtocols.TCP.byteValue()));\r
+            Assert.assertTrue(durations.get(IPProtocols.ANY.byteValue()) == null);\r
             Assert.assertTrue(bitRates.get(IPProtocols.ICMP.byteValue()) == am.getBitRate(srcHosts, dstHosts, IPProtocols.ICMP.byteValue()));\r
             Assert.assertTrue(bitRates.get(IPProtocols.UDP.byteValue()) == am.getBitRate(srcHosts, dstHosts, IPProtocols.UDP.byteValue()));\r
             Assert.assertTrue(bitRates.get(IPProtocols.TCP.byteValue()) == am.getBitRate(srcHosts, dstHosts, IPProtocols.TCP.byteValue()));\r
@@ -487,13 +518,16 @@ public class AnalyticsManagerTest extends TestCase {
             // Correct flow over-writing\r
             fon = new FlowOnNode(f); // 10.0.0.2 -> 10.0.0.5, ICMP\r
             fon.setByteCount(300);\r
+            fon.setPacketCount(7);\r
             fon.setDurationSeconds(4);\r
             fon.setDurationNanoseconds(100000000);\r
             flowStatsListn2.add(fon);\r
             am.nodeFlowStatisticsUpdated(n2, flowStatsListn2, allHosts);\r
             Assert.assertTrue(am.getByteCount(hnc2, hnc5) == 300 + 234);\r
+            Assert.assertTrue(am.getPacketCount(hnc2, hnc5) == 2 + 7);\r
             Assert.assertTrue(am.getBitRate(hnc2, hnc5) == ((300 + 234) * 8.0) / 4.1);\r
             Assert.assertTrue(am.getByteCount(hnc2, hnc5, IPProtocols.ICMP.byteValue()) == 300);\r
+            Assert.assertTrue(am.getPacketCount(hnc2, hnc5, IPProtocols.ICMP.byteValue()) == 7);\r
         } catch (ConstructionException e) {\r
             Assert.assertTrue(false);\r
         } catch (UnknownHostException e) {\r