diff --git a/tests/unit/java/android/net/NetworkStatsTest.java b/tests/unit/java/android/net/NetworkStatsTest.java index 37a0e576e1..ca88f6d627 100644 --- a/tests/unit/java/android/net/NetworkStatsTest.java +++ b/tests/unit/java/android/net/NetworkStatsTest.java @@ -42,6 +42,7 @@ import static org.junit.Assert.assertTrue; import android.os.Build; import android.os.Process; +import android.os.Trace; import android.util.ArrayMap; import androidx.test.filters.SmallTest; @@ -876,6 +877,34 @@ public class NetworkStatsTest { assertEquals(entry3, filtered.getValues(1, null)); } + @Test + public void testFilteredPerformance() { + final int size = 100000; + NetworkStats stats = new NetworkStats(TEST_START, size); + for (int i = 0; i < size; ++i) { + NetworkStats.Entry entry = new NetworkStats.Entry( + "test", 10100 + i % 100, SET_DEFAULT, i % 2, METERED_NO, ROAMING_NO, + DEFAULT_NETWORK_NO, 50000L, 25L, 100000L, 50L, 0L); + stats.insertEntry(entry); + } + + final int iterations = 1000; + final int filterTag = 0; + final int filterUid = 10100; + + Trace.beginSection("MajorityFilter"); + for (int i = 0; i < iterations; ++i) { + stats.filteredClone(UID_ALL, INTERFACES_ALL, filterTag); + } + Trace.endSection(); + + Trace.beginSection("MinorityFilter"); + for (int i = 0; i < iterations; ++i) { + stats.filteredClone(filterUid, INTERFACES_ALL, TAG_ALL); + } + Trace.endSection(); + } + @Test public void testFilter_InterfaceFilter() { final String testIf1 = "testif1";