Add method to NetworkStatsService for UID stats.
Useful for clients such as BatteryStats which currently rely on NetworkStatsFactory. Data at that stage is incomplete as it does not account for tethering, VT data and corresponding 464xlat corrections. Test: runtest frameworks-net, CTS tests pass. Change-Id: I763b77f601c827fd2963204694fb5b45425cc791
This commit is contained in:
@@ -19,6 +19,7 @@ package android.net;
|
||||
import static android.net.NetworkStats.DEFAULT_NETWORK_ALL;
|
||||
import static android.net.NetworkStats.DEFAULT_NETWORK_NO;
|
||||
import static android.net.NetworkStats.DEFAULT_NETWORK_YES;
|
||||
import static android.net.NetworkStats.INTERFACES_ALL;
|
||||
import static android.net.NetworkStats.METERED_ALL;
|
||||
import static android.net.NetworkStats.METERED_NO;
|
||||
import static android.net.NetworkStats.METERED_YES;
|
||||
@@ -31,6 +32,7 @@ import static android.net.NetworkStats.SET_DBG_VPN_IN;
|
||||
import static android.net.NetworkStats.SET_DBG_VPN_OUT;
|
||||
import static android.net.NetworkStats.SET_ALL;
|
||||
import static android.net.NetworkStats.IFACE_ALL;
|
||||
import static android.net.NetworkStats.TAG_ALL;
|
||||
import static android.net.NetworkStats.TAG_NONE;
|
||||
import static android.net.NetworkStats.UID_ALL;
|
||||
import static org.junit.Assert.assertEquals;
|
||||
@@ -641,6 +643,136 @@ public class NetworkStatsTest {
|
||||
ROAMING_ALL, DEFAULT_NETWORK_ALL, 50500L, 27L, 100200L, 55, 0);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testFilter_NoFilter() {
|
||||
NetworkStats.Entry entry1 = new NetworkStats.Entry(
|
||||
"test1", 10100, SET_DEFAULT, TAG_NONE, METERED_NO, ROAMING_NO,
|
||||
DEFAULT_NETWORK_NO, 50000L, 25L, 100000L, 50L, 0L);
|
||||
|
||||
NetworkStats.Entry entry2 = new NetworkStats.Entry(
|
||||
"test2", 10101, SET_DEFAULT, TAG_NONE, METERED_NO, ROAMING_NO,
|
||||
DEFAULT_NETWORK_NO, 50000L, 25L, 100000L, 50L, 0L);
|
||||
|
||||
NetworkStats.Entry entry3 = new NetworkStats.Entry(
|
||||
"test2", 10101, SET_DEFAULT, 123, METERED_NO, ROAMING_NO,
|
||||
DEFAULT_NETWORK_NO, 50000L, 25L, 100000L, 50L, 0L);
|
||||
|
||||
NetworkStats stats = new NetworkStats(TEST_START, 3)
|
||||
.addValues(entry1)
|
||||
.addValues(entry2)
|
||||
.addValues(entry3);
|
||||
|
||||
stats.filter(UID_ALL, INTERFACES_ALL, TAG_ALL);
|
||||
assertEquals(3, stats.size());
|
||||
assertEquals(entry1, stats.getValues(0, null));
|
||||
assertEquals(entry2, stats.getValues(1, null));
|
||||
assertEquals(entry3, stats.getValues(2, null));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testFilter_UidFilter() {
|
||||
final int testUid = 10101;
|
||||
NetworkStats.Entry entry1 = new NetworkStats.Entry(
|
||||
"test1", 10100, SET_DEFAULT, TAG_NONE, METERED_NO, ROAMING_NO,
|
||||
DEFAULT_NETWORK_NO, 50000L, 25L, 100000L, 50L, 0L);
|
||||
|
||||
NetworkStats.Entry entry2 = new NetworkStats.Entry(
|
||||
"test2", testUid, SET_DEFAULT, TAG_NONE, METERED_NO, ROAMING_NO,
|
||||
DEFAULT_NETWORK_NO, 50000L, 25L, 100000L, 50L, 0L);
|
||||
|
||||
NetworkStats.Entry entry3 = new NetworkStats.Entry(
|
||||
"test2", testUid, SET_DEFAULT, 123, METERED_NO, ROAMING_NO,
|
||||
DEFAULT_NETWORK_NO, 50000L, 25L, 100000L, 50L, 0L);
|
||||
|
||||
NetworkStats stats = new NetworkStats(TEST_START, 3)
|
||||
.addValues(entry1)
|
||||
.addValues(entry2)
|
||||
.addValues(entry3);
|
||||
|
||||
stats.filter(testUid, INTERFACES_ALL, TAG_ALL);
|
||||
assertEquals(2, stats.size());
|
||||
assertEquals(entry2, stats.getValues(0, null));
|
||||
assertEquals(entry3, stats.getValues(1, null));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testFilter_InterfaceFilter() {
|
||||
final String testIf1 = "testif1";
|
||||
final String testIf2 = "testif2";
|
||||
NetworkStats.Entry entry1 = new NetworkStats.Entry(
|
||||
testIf1, 10100, SET_DEFAULT, TAG_NONE, METERED_NO, ROAMING_NO,
|
||||
DEFAULT_NETWORK_NO, 50000L, 25L, 100000L, 50L, 0L);
|
||||
|
||||
NetworkStats.Entry entry2 = new NetworkStats.Entry(
|
||||
"otherif", 10101, SET_DEFAULT, TAG_NONE, METERED_NO, ROAMING_NO,
|
||||
DEFAULT_NETWORK_NO, 50000L, 25L, 100000L, 50L, 0L);
|
||||
|
||||
NetworkStats.Entry entry3 = new NetworkStats.Entry(
|
||||
testIf1, 10101, SET_DEFAULT, 123, METERED_NO, ROAMING_NO,
|
||||
DEFAULT_NETWORK_NO, 50000L, 25L, 100000L, 50L, 0L);
|
||||
|
||||
NetworkStats.Entry entry4 = new NetworkStats.Entry(
|
||||
testIf2, 10101, SET_DEFAULT, 123, METERED_NO, ROAMING_NO,
|
||||
DEFAULT_NETWORK_NO, 50000L, 25L, 100000L, 50L, 0L);
|
||||
|
||||
NetworkStats stats = new NetworkStats(TEST_START, 4)
|
||||
.addValues(entry1)
|
||||
.addValues(entry2)
|
||||
.addValues(entry3)
|
||||
.addValues(entry4);
|
||||
|
||||
stats.filter(UID_ALL, new String[] { testIf1, testIf2 }, TAG_ALL);
|
||||
assertEquals(3, stats.size());
|
||||
assertEquals(entry1, stats.getValues(0, null));
|
||||
assertEquals(entry3, stats.getValues(1, null));
|
||||
assertEquals(entry4, stats.getValues(2, null));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testFilter_EmptyInterfaceFilter() {
|
||||
NetworkStats.Entry entry1 = new NetworkStats.Entry(
|
||||
"if1", 10100, SET_DEFAULT, TAG_NONE, METERED_NO, ROAMING_NO,
|
||||
DEFAULT_NETWORK_NO, 50000L, 25L, 100000L, 50L, 0L);
|
||||
|
||||
NetworkStats.Entry entry2 = new NetworkStats.Entry(
|
||||
"if2", 10101, SET_DEFAULT, TAG_NONE, METERED_NO, ROAMING_NO,
|
||||
DEFAULT_NETWORK_NO, 50000L, 25L, 100000L, 50L, 0L);
|
||||
|
||||
NetworkStats stats = new NetworkStats(TEST_START, 3)
|
||||
.addValues(entry1)
|
||||
.addValues(entry2);
|
||||
|
||||
stats.filter(UID_ALL, new String[] { }, TAG_ALL);
|
||||
assertEquals(0, stats.size());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testFilter_TagFilter() {
|
||||
final int testTag = 123;
|
||||
final int otherTag = 456;
|
||||
NetworkStats.Entry entry1 = new NetworkStats.Entry(
|
||||
"test1", 10100, SET_DEFAULT, testTag, METERED_NO, ROAMING_NO,
|
||||
DEFAULT_NETWORK_NO, 50000L, 25L, 100000L, 50L, 0L);
|
||||
|
||||
NetworkStats.Entry entry2 = new NetworkStats.Entry(
|
||||
"test2", 10101, SET_DEFAULT, testTag, METERED_NO, ROAMING_NO,
|
||||
DEFAULT_NETWORK_NO, 50000L, 25L, 100000L, 50L, 0L);
|
||||
|
||||
NetworkStats.Entry entry3 = new NetworkStats.Entry(
|
||||
"test2", 10101, SET_DEFAULT, otherTag, METERED_NO, ROAMING_NO,
|
||||
DEFAULT_NETWORK_NO, 50000L, 25L, 100000L, 50L, 0L);
|
||||
|
||||
NetworkStats stats = new NetworkStats(TEST_START, 3)
|
||||
.addValues(entry1)
|
||||
.addValues(entry2)
|
||||
.addValues(entry3);
|
||||
|
||||
stats.filter(UID_ALL, INTERFACES_ALL, testTag);
|
||||
assertEquals(2, stats.size());
|
||||
assertEquals(entry1, stats.getValues(0, null));
|
||||
assertEquals(entry2, stats.getValues(1, null));
|
||||
}
|
||||
|
||||
private static void assertContains(NetworkStats stats, String iface, int uid, int set,
|
||||
int tag, int metered, int roaming, int defaultNetwork, long rxBytes, long rxPackets,
|
||||
long txBytes, long txPackets, long operations) {
|
||||
|
||||
Reference in New Issue
Block a user