From fe9b0a791e646f2b99499e5619c73294cb05b863 Mon Sep 17 00:00:00 2001 From: Benedict Wong Date: Mon, 16 Apr 2018 17:05:31 -0700 Subject: [PATCH] Add CTS support for eBPF Addition of eBPF requires tweaks regarding packet counting of UDP-encapsulated-ESP packet bytes. This patch conditions the expected number of bytes received based on eBPF being enabled Bug: 74113670 Test: Ran CTS tests, passing on 3.18, 4.4, 4.9 kernels Change-Id: If02a4bb6ebfdf949fdb58b5816aa9d252d9eef52 --- .../src/android/net/cts/IpSecManagerTest.java | 27 ++++++++++++------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/tests/cts/net/src/android/net/cts/IpSecManagerTest.java b/tests/cts/net/src/android/net/cts/IpSecManagerTest.java index 95d91a25b8..a18b2f08e0 100644 --- a/tests/cts/net/src/android/net/cts/IpSecManagerTest.java +++ b/tests/cts/net/src/android/net/cts/IpSecManagerTest.java @@ -353,7 +353,8 @@ public class IpSecManagerTest extends IpSecBaseTest { private static void assertUidStatsDelta( int expectedTxByteDelta, int expectedTxPacketDelta, - int expectedRxByteDelta, + int minRxByteDelta, + int maxRxByteDelta, int expectedRxPacketDelta) { long newUidTxBytes = TrafficStats.getUidTxBytes(Os.getuid()); long newUidRxBytes = TrafficStats.getUidRxBytes(Os.getuid()); @@ -361,7 +362,9 @@ public class IpSecManagerTest extends IpSecBaseTest { long newUidRxPackets = TrafficStats.getUidRxPackets(Os.getuid()); assertEquals(expectedTxByteDelta, newUidTxBytes - uidTxBytes); - assertEquals(expectedRxByteDelta, newUidRxBytes - uidRxBytes); + assertTrue( + newUidRxBytes - uidRxBytes >= minRxByteDelta + && newUidRxBytes - uidRxBytes <= maxRxByteDelta); assertEquals(expectedTxPacketDelta, newUidTxPackets - uidTxPackets); assertEquals(expectedRxPacketDelta, newUidRxPackets - uidRxPackets); } @@ -561,13 +564,13 @@ public class IpSecManagerTest extends IpSecBaseTest { StatsChecker.waitForNumPackets(expectedPackets); - if (udpEncapLen != 0) { - StatsChecker.assertUidStatsDelta( - expectedOuterBytes, expectedPackets, expectedOuterBytes, expectedPackets); - } else { - StatsChecker.assertUidStatsDelta( - expectedOuterBytes, expectedPackets, expectedInnerBytes, expectedPackets); - } + // eBPF only counts inner packets, whereas xt_qtaguid counts outer packets. Allow both + StatsChecker.assertUidStatsDelta( + expectedOuterBytes, + expectedPackets, + expectedInnerBytes, + expectedOuterBytes, + expectedPackets); // Unreliable at low numbers due to potential interference from other processes. if (sendCount >= 1000) { @@ -607,7 +610,11 @@ public class IpSecManagerTest extends IpSecBaseTest { StatsChecker.waitForNumPackets(expectedNumPkts); StatsChecker.assertUidStatsDelta( - expectedPacketSize, expectedNumPkts, expectedPacketSize, expectedNumPkts); + expectedPacketSize, + expectedNumPkts, + expectedPacketSize, + expectedPacketSize, + expectedNumPkts); StatsChecker.assertIfaceStatsDelta( expectedPacketSize, expectedNumPkts, expectedPacketSize, expectedNumPkts); }