Implement roaming tracking in NetworkStats summary queries.
Whether a network is deemed roaming or not was already being tracked as part of the NetworkIdentitySet, so the underlying data store already tracks roaming and native data separately. However, this data was being aggregated together in NetworkStatsCollection#getSummary, since the NetworkIdentitySet is converted to an iface name for the purposes of matching, and the iface name will be identical whether or not the iface is considered roaming. Now it is separated. Also fixes a long-standing bug in NetworkIdentitySet where an identity read from a saved file would always be considered roaming == false, even if it wasn't at the time it was written. Bug: 25813438 Change-Id: I11ab5b51182ed8da7af8fde468df065f9fdc3dad
This commit is contained in:
@@ -16,6 +16,9 @@
|
|||||||
|
|
||||||
package android.net;
|
package android.net;
|
||||||
|
|
||||||
|
import static android.net.NetworkStats.ROAMING_ALL;
|
||||||
|
import static android.net.NetworkStats.ROAMING_DEFAULT;
|
||||||
|
import static android.net.NetworkStats.ROAMING_ROAMING;
|
||||||
import static android.net.NetworkStats.SET_DEFAULT;
|
import static android.net.NetworkStats.SET_DEFAULT;
|
||||||
import static android.net.NetworkStats.SET_FOREGROUND;
|
import static android.net.NetworkStats.SET_FOREGROUND;
|
||||||
import static android.net.NetworkStats.SET_DBG_VPN_IN;
|
import static android.net.NetworkStats.SET_DBG_VPN_IN;
|
||||||
@@ -42,62 +45,103 @@ public class NetworkStatsTest extends TestCase {
|
|||||||
private static final long TEST_START = 1194220800000L;
|
private static final long TEST_START = 1194220800000L;
|
||||||
|
|
||||||
public void testFindIndex() throws Exception {
|
public void testFindIndex() throws Exception {
|
||||||
final NetworkStats stats = new NetworkStats(TEST_START, 3)
|
final NetworkStats stats = new NetworkStats(TEST_START, 4)
|
||||||
.addValues(TEST_IFACE, 100, SET_DEFAULT, TAG_NONE, 1024L, 8L, 0L, 0L, 10)
|
.addValues(TEST_IFACE, 100, SET_DEFAULT, TAG_NONE, ROAMING_DEFAULT, 1024L, 8L, 0L,
|
||||||
.addValues(TEST_IFACE, 101, SET_DEFAULT, TAG_NONE, 0L, 0L, 1024L, 8L, 11)
|
0L, 10)
|
||||||
.addValues(TEST_IFACE, 102, SET_DEFAULT, TAG_NONE, 1024L, 8L, 1024L, 8L, 12);
|
.addValues(TEST_IFACE, 101, SET_DEFAULT, TAG_NONE, ROAMING_DEFAULT, 0L, 0L, 1024L,
|
||||||
|
8L, 11)
|
||||||
|
.addValues(TEST_IFACE, 102, SET_DEFAULT, TAG_NONE, ROAMING_DEFAULT, 1024L, 8L,
|
||||||
|
1024L, 8L, 12)
|
||||||
|
.addValues(TEST_IFACE, 102, SET_DEFAULT, TAG_NONE, ROAMING_ROAMING, 1024L, 8L,
|
||||||
|
1024L, 8L, 12);
|
||||||
|
|
||||||
assertEquals(2, stats.findIndex(TEST_IFACE, 102, SET_DEFAULT, TAG_NONE));
|
assertEquals(3, stats.findIndex(TEST_IFACE, 102, SET_DEFAULT, TAG_NONE, ROAMING_ROAMING));
|
||||||
assertEquals(2, stats.findIndex(TEST_IFACE, 102, SET_DEFAULT, TAG_NONE));
|
assertEquals(2, stats.findIndex(TEST_IFACE, 102, SET_DEFAULT, TAG_NONE, ROAMING_DEFAULT));
|
||||||
assertEquals(0, stats.findIndex(TEST_IFACE, 100, SET_DEFAULT, TAG_NONE));
|
assertEquals(1, stats.findIndex(TEST_IFACE, 101, SET_DEFAULT, TAG_NONE, ROAMING_DEFAULT));
|
||||||
assertEquals(-1, stats.findIndex(TEST_IFACE, 6, SET_DEFAULT, TAG_NONE));
|
assertEquals(0, stats.findIndex(TEST_IFACE, 100, SET_DEFAULT, TAG_NONE, ROAMING_DEFAULT));
|
||||||
|
assertEquals(-1, stats.findIndex(TEST_IFACE, 6, SET_DEFAULT, TAG_NONE, ROAMING_DEFAULT));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testFindIndexHinted() {
|
public void testFindIndexHinted() {
|
||||||
final NetworkStats stats = new NetworkStats(TEST_START, 3)
|
final NetworkStats stats = new NetworkStats(TEST_START, 3)
|
||||||
.addValues(TEST_IFACE, 100, SET_DEFAULT, TAG_NONE, 1024L, 8L, 0L, 0L, 10)
|
.addValues(TEST_IFACE, 100, SET_DEFAULT, TAG_NONE, ROAMING_DEFAULT, 1024L, 8L, 0L,
|
||||||
.addValues(TEST_IFACE, 101, SET_DEFAULT, TAG_NONE, 0L, 0L, 1024L, 8L, 11)
|
0L, 10)
|
||||||
.addValues(TEST_IFACE, 102, SET_DEFAULT, TAG_NONE, 1024L, 8L, 1024L, 8L, 12)
|
.addValues(TEST_IFACE, 101, SET_DEFAULT, TAG_NONE, ROAMING_DEFAULT, 0L, 0L, 1024L,
|
||||||
.addValues(TEST_IFACE2, 100, SET_FOREGROUND, TAG_NONE, 1024L, 8L, 0L, 0L, 10)
|
8L, 11)
|
||||||
.addValues(TEST_IFACE2, 101, SET_DEFAULT, 0xF00D, 0L, 0L, 1024L, 8L, 11)
|
.addValues(TEST_IFACE, 102, SET_DEFAULT, TAG_NONE, ROAMING_DEFAULT, 1024L, 8L,
|
||||||
.addValues(TEST_IFACE2, 102, SET_DEFAULT, TAG_NONE, 1024L, 8L, 1024L, 8L, 12);
|
1024L, 8L, 12)
|
||||||
|
.addValues(TEST_IFACE2, 100, SET_FOREGROUND, TAG_NONE, ROAMING_DEFAULT, 1024L, 8L,
|
||||||
|
0L, 0L, 10)
|
||||||
|
.addValues(TEST_IFACE2, 101, SET_DEFAULT, 0xF00D, ROAMING_DEFAULT, 0L, 0L, 1024L,
|
||||||
|
8L, 11)
|
||||||
|
.addValues(TEST_IFACE2, 102, SET_DEFAULT, TAG_NONE, ROAMING_DEFAULT, 1024L, 8L,
|
||||||
|
1024L, 8L, 12)
|
||||||
|
.addValues(TEST_IFACE2, 102, SET_DEFAULT, TAG_NONE, ROAMING_ROAMING, 1024L, 8L,
|
||||||
|
1024L, 8L, 12);
|
||||||
|
|
||||||
// verify that we correctly find across regardless of hinting
|
// verify that we correctly find across regardless of hinting
|
||||||
for (int hint = 0; hint < stats.size(); hint++) {
|
for (int hint = 0; hint < stats.size(); hint++) {
|
||||||
assertEquals(0, stats.findIndexHinted(TEST_IFACE, 100, SET_DEFAULT, TAG_NONE, hint));
|
assertEquals(0, stats.findIndexHinted(TEST_IFACE, 100, SET_DEFAULT, TAG_NONE,
|
||||||
assertEquals(1, stats.findIndexHinted(TEST_IFACE, 101, SET_DEFAULT, TAG_NONE, hint));
|
ROAMING_DEFAULT, hint));
|
||||||
assertEquals(2, stats.findIndexHinted(TEST_IFACE, 102, SET_DEFAULT, TAG_NONE, hint));
|
assertEquals(1, stats.findIndexHinted(TEST_IFACE, 101, SET_DEFAULT, TAG_NONE,
|
||||||
assertEquals(3, stats.findIndexHinted(TEST_IFACE2, 100, SET_FOREGROUND, TAG_NONE, hint));
|
ROAMING_DEFAULT, hint));
|
||||||
assertEquals(4, stats.findIndexHinted(TEST_IFACE2, 101, SET_DEFAULT, 0xF00D, hint));
|
assertEquals(2, stats.findIndexHinted(TEST_IFACE, 102, SET_DEFAULT, TAG_NONE,
|
||||||
assertEquals(5, stats.findIndexHinted(TEST_IFACE2, 102, SET_DEFAULT, TAG_NONE, hint));
|
ROAMING_DEFAULT, hint));
|
||||||
assertEquals(-1, stats.findIndexHinted(TEST_IFACE, 6, SET_DEFAULT, TAG_NONE, hint));
|
assertEquals(3, stats.findIndexHinted(TEST_IFACE2, 100, SET_FOREGROUND, TAG_NONE,
|
||||||
|
ROAMING_DEFAULT, hint));
|
||||||
|
assertEquals(4, stats.findIndexHinted(TEST_IFACE2, 101, SET_DEFAULT, 0xF00D,
|
||||||
|
ROAMING_DEFAULT, hint));
|
||||||
|
assertEquals(5, stats.findIndexHinted(TEST_IFACE2, 102, SET_DEFAULT, TAG_NONE,
|
||||||
|
ROAMING_DEFAULT, hint));
|
||||||
|
assertEquals(6, stats.findIndexHinted(TEST_IFACE2, 102, SET_DEFAULT, TAG_NONE,
|
||||||
|
ROAMING_ROAMING, hint));
|
||||||
|
assertEquals(-1, stats.findIndexHinted(TEST_IFACE, 6, SET_DEFAULT, TAG_NONE,
|
||||||
|
ROAMING_DEFAULT, hint));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testAddEntryGrow() throws Exception {
|
public void testAddEntryGrow() throws Exception {
|
||||||
final NetworkStats stats = new NetworkStats(TEST_START, 2);
|
final NetworkStats stats = new NetworkStats(TEST_START, 3);
|
||||||
|
|
||||||
assertEquals(0, stats.size());
|
assertEquals(0, stats.size());
|
||||||
assertEquals(2, stats.internalSize());
|
assertEquals(3, stats.internalSize());
|
||||||
|
|
||||||
stats.addValues(TEST_IFACE, TEST_UID, SET_DEFAULT, TAG_NONE, 1L, 1L, 2L, 2L, 3);
|
stats.addValues(TEST_IFACE, TEST_UID, SET_DEFAULT, TAG_NONE, ROAMING_DEFAULT, 1L, 1L, 2L,
|
||||||
stats.addValues(TEST_IFACE, TEST_UID, SET_DEFAULT, TAG_NONE, 2L, 2L, 2L, 2L, 4);
|
2L, 3);
|
||||||
|
stats.addValues(TEST_IFACE, TEST_UID, SET_DEFAULT, TAG_NONE, ROAMING_DEFAULT, 2L, 2L, 2L,
|
||||||
|
2L, 4);
|
||||||
|
stats.addValues(TEST_IFACE, TEST_UID, SET_DEFAULT, TAG_NONE, ROAMING_ROAMING, 3L, 3L, 2L,
|
||||||
|
2L, 5);
|
||||||
|
|
||||||
assertEquals(2, stats.size());
|
assertEquals(3, stats.size());
|
||||||
assertEquals(2, stats.internalSize());
|
assertEquals(3, stats.internalSize());
|
||||||
|
|
||||||
stats.addValues(TEST_IFACE, TEST_UID, SET_DEFAULT, TAG_NONE, 3L, 30L, 4L, 40L, 7);
|
stats.addValues(TEST_IFACE, TEST_UID, SET_DEFAULT, TAG_NONE, ROAMING_DEFAULT, 4L, 40L, 4L,
|
||||||
stats.addValues(TEST_IFACE, TEST_UID, SET_DEFAULT, TAG_NONE, 4L, 40L, 4L, 40L, 8);
|
40L, 7);
|
||||||
stats.addValues(TEST_IFACE, TEST_UID, SET_DEFAULT, TAG_NONE, 5L, 50L, 5L, 50L, 10);
|
stats.addValues(TEST_IFACE, TEST_UID, SET_DEFAULT, TAG_NONE, ROAMING_DEFAULT, 5L, 50L, 4L,
|
||||||
|
40L, 8);
|
||||||
|
stats.addValues(TEST_IFACE, TEST_UID, SET_DEFAULT, TAG_NONE, ROAMING_DEFAULT, 6L, 60L, 5L,
|
||||||
|
50L, 10);
|
||||||
|
stats.addValues(TEST_IFACE, TEST_UID, SET_DEFAULT, TAG_NONE, ROAMING_ROAMING, 7L, 70L, 5L,
|
||||||
|
50L, 11);
|
||||||
|
|
||||||
assertEquals(5, stats.size());
|
assertEquals(7, stats.size());
|
||||||
assertTrue(stats.internalSize() >= 5);
|
assertTrue(stats.internalSize() >= 7);
|
||||||
|
|
||||||
assertValues(stats, 0, TEST_IFACE, TEST_UID, SET_DEFAULT, TAG_NONE, 1L, 1L, 2L, 2L, 3);
|
assertValues(stats, 0, TEST_IFACE, TEST_UID, SET_DEFAULT, TAG_NONE, ROAMING_DEFAULT, 1L, 1L,
|
||||||
assertValues(stats, 1, TEST_IFACE, TEST_UID, SET_DEFAULT, TAG_NONE, 2L, 2L, 2L, 2L, 4);
|
2L, 2L, 3);
|
||||||
assertValues(stats, 2, TEST_IFACE, TEST_UID, SET_DEFAULT, TAG_NONE, 3L, 30L, 4L, 40L, 7);
|
assertValues(stats, 1, TEST_IFACE, TEST_UID, SET_DEFAULT, TAG_NONE, ROAMING_DEFAULT, 2L, 2L,
|
||||||
assertValues(stats, 3, TEST_IFACE, TEST_UID, SET_DEFAULT, TAG_NONE, 4L, 40L, 4L, 40L, 8);
|
2L, 2L, 4);
|
||||||
assertValues(stats, 4, TEST_IFACE, TEST_UID, SET_DEFAULT, TAG_NONE, 5L, 50L, 5L, 50L, 10);
|
assertValues(stats, 2, TEST_IFACE, TEST_UID, SET_DEFAULT, TAG_NONE, ROAMING_ROAMING, 3L, 3L,
|
||||||
|
2L, 2L, 5);
|
||||||
|
assertValues(stats, 3, TEST_IFACE, TEST_UID, SET_DEFAULT, TAG_NONE, ROAMING_DEFAULT, 4L,
|
||||||
|
40L, 4L, 40L, 7);
|
||||||
|
assertValues(stats, 4, TEST_IFACE, TEST_UID, SET_DEFAULT, TAG_NONE, ROAMING_DEFAULT, 5L,
|
||||||
|
50L, 4L, 40L, 8);
|
||||||
|
assertValues(stats, 5, TEST_IFACE, TEST_UID, SET_DEFAULT, TAG_NONE, ROAMING_DEFAULT, 6L,
|
||||||
|
60L, 5L, 50L, 10);
|
||||||
|
assertValues(stats, 6, TEST_IFACE, TEST_UID, SET_DEFAULT, TAG_NONE, ROAMING_ROAMING, 7L,
|
||||||
|
70L, 5L, 50L, 11);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testCombineExisting() throws Exception {
|
public void testCombineExisting() throws Exception {
|
||||||
@@ -105,16 +149,23 @@ public class NetworkStatsTest extends TestCase {
|
|||||||
|
|
||||||
stats.addValues(TEST_IFACE, 1001, SET_DEFAULT, TAG_NONE, 512L, 4L, 256L, 2L, 10);
|
stats.addValues(TEST_IFACE, 1001, SET_DEFAULT, TAG_NONE, 512L, 4L, 256L, 2L, 10);
|
||||||
stats.addValues(TEST_IFACE, 1001, SET_DEFAULT, 0xff, 128L, 1L, 128L, 1L, 2);
|
stats.addValues(TEST_IFACE, 1001, SET_DEFAULT, 0xff, 128L, 1L, 128L, 1L, 2);
|
||||||
stats.combineValues(TEST_IFACE, 1001, SET_DEFAULT, TAG_NONE, -128L, -1L, -128L, -1L, -1);
|
stats.combineValues(TEST_IFACE, 1001, SET_DEFAULT, TAG_NONE, -128L, -1L,
|
||||||
|
-128L, -1L, -1);
|
||||||
|
|
||||||
assertValues(stats, 0, TEST_IFACE, 1001, SET_DEFAULT, TAG_NONE, 384L, 3L, 128L, 1L, 9);
|
assertValues(stats, 0, TEST_IFACE, 1001, SET_DEFAULT, TAG_NONE, ROAMING_DEFAULT, 384L, 3L,
|
||||||
assertValues(stats, 1, TEST_IFACE, 1001, SET_DEFAULT, 0xff, 128L, 1L, 128L, 1L, 2);
|
128L, 1L, 9);
|
||||||
|
assertValues(stats, 1, TEST_IFACE, 1001, SET_DEFAULT, 0xff, ROAMING_DEFAULT, 128L, 1L, 128L,
|
||||||
|
1L, 2);
|
||||||
|
|
||||||
// now try combining that should create row
|
// now try combining that should create row
|
||||||
stats.combineValues(TEST_IFACE, 5005, SET_DEFAULT, TAG_NONE, 128L, 1L, 128L, 1L, 3);
|
stats.combineValues(TEST_IFACE, 5005, SET_DEFAULT, TAG_NONE, 128L, 1L,
|
||||||
assertValues(stats, 2, TEST_IFACE, 5005, SET_DEFAULT, TAG_NONE, 128L, 1L, 128L, 1L, 3);
|
128L, 1L, 3);
|
||||||
stats.combineValues(TEST_IFACE, 5005, SET_DEFAULT, TAG_NONE, 128L, 1L, 128L, 1L, 3);
|
assertValues(stats, 2, TEST_IFACE, 5005, SET_DEFAULT, TAG_NONE, ROAMING_DEFAULT, 128L, 1L,
|
||||||
assertValues(stats, 2, TEST_IFACE, 5005, SET_DEFAULT, TAG_NONE, 256L, 2L, 256L, 2L, 6);
|
128L, 1L, 3);
|
||||||
|
stats.combineValues(TEST_IFACE, 5005, SET_DEFAULT, TAG_NONE, 128L, 1L,
|
||||||
|
128L, 1L, 3);
|
||||||
|
assertValues(stats, 2, TEST_IFACE, 5005, SET_DEFAULT, TAG_NONE, ROAMING_DEFAULT, 256L, 2L,
|
||||||
|
256L, 2L, 6);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testSubtractIdenticalData() throws Exception {
|
public void testSubtractIdenticalData() throws Exception {
|
||||||
@@ -129,8 +180,10 @@ public class NetworkStatsTest extends TestCase {
|
|||||||
final NetworkStats result = after.subtract(before);
|
final NetworkStats result = after.subtract(before);
|
||||||
|
|
||||||
// identical data should result in zero delta
|
// identical data should result in zero delta
|
||||||
assertValues(result, 0, TEST_IFACE, 100, SET_DEFAULT, TAG_NONE, 0L, 0L, 0L, 0L, 0);
|
assertValues(result, 0, TEST_IFACE, 100, SET_DEFAULT, TAG_NONE, ROAMING_DEFAULT, 0L, 0L, 0L,
|
||||||
assertValues(result, 1, TEST_IFACE, 101, SET_DEFAULT, TAG_NONE, 0L, 0L, 0L, 0L, 0);
|
0L, 0);
|
||||||
|
assertValues(result, 1, TEST_IFACE, 101, SET_DEFAULT, TAG_NONE, ROAMING_DEFAULT, 0L, 0L, 0L,
|
||||||
|
0L, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testSubtractIdenticalRows() throws Exception {
|
public void testSubtractIdenticalRows() throws Exception {
|
||||||
@@ -145,8 +198,10 @@ public class NetworkStatsTest extends TestCase {
|
|||||||
final NetworkStats result = after.subtract(before);
|
final NetworkStats result = after.subtract(before);
|
||||||
|
|
||||||
// expect delta between measurements
|
// expect delta between measurements
|
||||||
assertValues(result, 0, TEST_IFACE, 100, SET_DEFAULT, TAG_NONE, 1L, 1L, 2L, 1L, 4);
|
assertValues(result, 0, TEST_IFACE, 100, SET_DEFAULT, TAG_NONE, ROAMING_DEFAULT, 1L, 1L, 2L,
|
||||||
assertValues(result, 1, TEST_IFACE, 101, SET_DEFAULT, TAG_NONE, 3L, 1L, 4L, 1L, 8);
|
1L, 4);
|
||||||
|
assertValues(result, 1, TEST_IFACE, 101, SET_DEFAULT, TAG_NONE, ROAMING_DEFAULT, 3L, 1L, 4L,
|
||||||
|
1L, 8);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testSubtractNewRows() throws Exception {
|
public void testSubtractNewRows() throws Exception {
|
||||||
@@ -162,9 +217,12 @@ public class NetworkStatsTest extends TestCase {
|
|||||||
final NetworkStats result = after.subtract(before);
|
final NetworkStats result = after.subtract(before);
|
||||||
|
|
||||||
// its okay to have new rows
|
// its okay to have new rows
|
||||||
assertValues(result, 0, TEST_IFACE, 100, SET_DEFAULT, TAG_NONE, 0L, 0L, 0L, 0L, 0);
|
assertValues(result, 0, TEST_IFACE, 100, SET_DEFAULT, TAG_NONE, ROAMING_DEFAULT, 0L, 0L, 0L,
|
||||||
assertValues(result, 1, TEST_IFACE, 101, SET_DEFAULT, TAG_NONE, 0L, 0L, 0L, 0L, 0);
|
0L, 0);
|
||||||
assertValues(result, 2, TEST_IFACE, 102, SET_DEFAULT, TAG_NONE, 1024L, 8L, 1024L, 8L, 20);
|
assertValues(result, 1, TEST_IFACE, 101, SET_DEFAULT, TAG_NONE, ROAMING_DEFAULT, 0L, 0L, 0L,
|
||||||
|
0L, 0);
|
||||||
|
assertValues(result, 2, TEST_IFACE, 102, SET_DEFAULT, TAG_NONE, ROAMING_DEFAULT, 1024L, 8L,
|
||||||
|
1024L, 8L, 20);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testSubtractMissingRows() throws Exception {
|
public void testSubtractMissingRows() throws Exception {
|
||||||
@@ -179,7 +237,8 @@ public class NetworkStatsTest extends TestCase {
|
|||||||
|
|
||||||
// should silently drop omitted rows
|
// should silently drop omitted rows
|
||||||
assertEquals(1, result.size());
|
assertEquals(1, result.size());
|
||||||
assertValues(result, 0, TEST_IFACE2, UID_ALL, SET_DEFAULT, TAG_NONE, 1L, 2L, 3L, 4L, 0);
|
assertValues(result, 0, TEST_IFACE2, UID_ALL, SET_DEFAULT, TAG_NONE, ROAMING_DEFAULT, 1L,
|
||||||
|
2L, 3L, 4L, 0);
|
||||||
assertEquals(4L, result.getTotalBytes());
|
assertEquals(4L, result.getTotalBytes());
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -195,7 +254,7 @@ public class NetworkStatsTest extends TestCase {
|
|||||||
.addValues(TEST_IFACE, 101, SET_FOREGROUND, TAG_NONE, 32L, 0L, 0L, 0L, 0L);
|
.addValues(TEST_IFACE, 101, SET_FOREGROUND, TAG_NONE, 32L, 0L, 0L, 0L, 0L);
|
||||||
assertEquals(96L, uidSet.getTotalBytes());
|
assertEquals(96L, uidSet.getTotalBytes());
|
||||||
|
|
||||||
final NetworkStats uidTag = new NetworkStats(TEST_START, 3)
|
final NetworkStats uidTag = new NetworkStats(TEST_START, 6)
|
||||||
.addValues(TEST_IFACE, 100, SET_DEFAULT, TAG_NONE, 16L, 0L, 0L, 0L, 0L)
|
.addValues(TEST_IFACE, 100, SET_DEFAULT, TAG_NONE, 16L, 0L, 0L, 0L, 0L)
|
||||||
.addValues(TEST_IFACE2, 100, SET_DEFAULT, TAG_NONE, 16L, 0L, 0L, 0L, 0L)
|
.addValues(TEST_IFACE2, 100, SET_DEFAULT, TAG_NONE, 16L, 0L, 0L, 0L, 0L)
|
||||||
.addValues(TEST_IFACE2, 100, SET_DEFAULT, 0xF00D, 8L, 0L, 0L, 0L, 0L)
|
.addValues(TEST_IFACE2, 100, SET_DEFAULT, 0xF00D, 8L, 0L, 0L, 0L, 0L)
|
||||||
@@ -203,6 +262,15 @@ public class NetworkStatsTest extends TestCase {
|
|||||||
.addValues(TEST_IFACE, 101, SET_DEFAULT, TAG_NONE, 16L, 0L, 0L, 0L, 0L)
|
.addValues(TEST_IFACE, 101, SET_DEFAULT, TAG_NONE, 16L, 0L, 0L, 0L, 0L)
|
||||||
.addValues(TEST_IFACE, 101, SET_DEFAULT, 0xF00D, 8L, 0L, 0L, 0L, 0L);
|
.addValues(TEST_IFACE, 101, SET_DEFAULT, 0xF00D, 8L, 0L, 0L, 0L, 0L);
|
||||||
assertEquals(64L, uidTag.getTotalBytes());
|
assertEquals(64L, uidTag.getTotalBytes());
|
||||||
|
|
||||||
|
final NetworkStats uidRoaming = new NetworkStats(TEST_START, 3)
|
||||||
|
.addValues(TEST_IFACE, 100, SET_DEFAULT, TAG_NONE, ROAMING_DEFAULT, 32L, 0L, 0L, 0L,
|
||||||
|
0L)
|
||||||
|
.addValues(TEST_IFACE, 101, SET_DEFAULT, TAG_NONE, ROAMING_DEFAULT, 32L, 0L, 0L, 0L,
|
||||||
|
0L)
|
||||||
|
.addValues(TEST_IFACE, 101, SET_DEFAULT, TAG_NONE, ROAMING_ROAMING, 32L, 0L, 0L, 0L,
|
||||||
|
0L);
|
||||||
|
assertEquals(96L, uidRoaming.getTotalBytes());
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testGroupedByIfaceEmpty() throws Exception {
|
public void testGroupedByIfaceEmpty() throws Exception {
|
||||||
@@ -215,62 +283,98 @@ public class NetworkStatsTest extends TestCase {
|
|||||||
|
|
||||||
public void testGroupedByIfaceAll() throws Exception {
|
public void testGroupedByIfaceAll() throws Exception {
|
||||||
final NetworkStats uidStats = new NetworkStats(TEST_START, 3)
|
final NetworkStats uidStats = new NetworkStats(TEST_START, 3)
|
||||||
.addValues(IFACE_ALL, 100, SET_ALL, TAG_NONE, 128L, 8L, 0L, 2L, 20L)
|
.addValues(IFACE_ALL, 100, SET_ALL, TAG_NONE, ROAMING_DEFAULT, 128L, 8L, 0L, 2L,
|
||||||
.addValues(IFACE_ALL, 101, SET_FOREGROUND, TAG_NONE, 128L, 8L, 0L, 2L, 20L);
|
20L)
|
||||||
|
.addValues(IFACE_ALL, 101, SET_FOREGROUND, TAG_NONE, ROAMING_DEFAULT, 128L, 8L, 0L,
|
||||||
|
2L, 20L)
|
||||||
|
.addValues(IFACE_ALL, 101, SET_ALL, TAG_NONE, ROAMING_ROAMING, 128L, 8L, 0L, 2L,
|
||||||
|
20L);
|
||||||
final NetworkStats grouped = uidStats.groupedByIface();
|
final NetworkStats grouped = uidStats.groupedByIface();
|
||||||
|
|
||||||
assertEquals(2, uidStats.size());
|
assertEquals(3, uidStats.size());
|
||||||
assertEquals(1, grouped.size());
|
assertEquals(1, grouped.size());
|
||||||
|
|
||||||
assertValues(grouped, 0, IFACE_ALL, UID_ALL, SET_ALL, TAG_NONE, 256L, 16L, 0L, 4L, 0L);
|
assertValues(grouped, 0, IFACE_ALL, UID_ALL, SET_ALL, TAG_NONE, ROAMING_ALL, 384L, 24L, 0L,
|
||||||
|
6L, 0L);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testGroupedByIface() throws Exception {
|
public void testGroupedByIface() throws Exception {
|
||||||
final NetworkStats uidStats = new NetworkStats(TEST_START, 3)
|
final NetworkStats uidStats = new NetworkStats(TEST_START, 7)
|
||||||
.addValues(TEST_IFACE, 100, SET_DEFAULT, TAG_NONE, 128L, 8L, 0L, 2L, 20L)
|
.addValues(TEST_IFACE, 100, SET_DEFAULT, TAG_NONE, ROAMING_DEFAULT, 128L, 8L, 0L,
|
||||||
.addValues(TEST_IFACE2, 100, SET_DEFAULT, TAG_NONE, 512L, 32L, 0L, 0L, 0L)
|
2L, 20L)
|
||||||
.addValues(TEST_IFACE2, 100, SET_DEFAULT, 0xF00D, 64L, 4L, 0L, 0L, 0L)
|
.addValues(TEST_IFACE2, 100, SET_DEFAULT, TAG_NONE, ROAMING_DEFAULT, 512L, 32L, 0L,
|
||||||
.addValues(TEST_IFACE2, 100, SET_FOREGROUND, TAG_NONE, 512L, 32L, 0L, 0L, 0L)
|
0L, 0L)
|
||||||
.addValues(TEST_IFACE, 101, SET_DEFAULT, TAG_NONE, 128L, 8L, 0L, 0L, 0L)
|
.addValues(TEST_IFACE2, 100, SET_DEFAULT, 0xF00D, ROAMING_DEFAULT, 64L, 4L, 0L, 0L,
|
||||||
.addValues(TEST_IFACE, 101, SET_DEFAULT, 0xF00D, 128L, 8L, 0L, 0L, 0L);
|
0L)
|
||||||
|
.addValues(TEST_IFACE2, 100, SET_FOREGROUND, TAG_NONE, ROAMING_DEFAULT, 512L, 32L,
|
||||||
|
0L, 0L, 0L)
|
||||||
|
.addValues(TEST_IFACE, 101, SET_DEFAULT, TAG_NONE, ROAMING_DEFAULT, 128L, 8L, 0L,
|
||||||
|
0L, 0L)
|
||||||
|
.addValues(TEST_IFACE, 101, SET_DEFAULT, 0xF00D, ROAMING_DEFAULT, 128L, 8L, 0L, 0L,
|
||||||
|
0L)
|
||||||
|
.addValues(TEST_IFACE, 101, SET_DEFAULT, TAG_NONE, ROAMING_ROAMING, 128L, 8L, 0L,
|
||||||
|
0L, 0L);
|
||||||
|
|
||||||
final NetworkStats grouped = uidStats.groupedByIface();
|
final NetworkStats grouped = uidStats.groupedByIface();
|
||||||
|
|
||||||
assertEquals(6, uidStats.size());
|
assertEquals(7, uidStats.size());
|
||||||
|
|
||||||
assertEquals(2, grouped.size());
|
assertEquals(2, grouped.size());
|
||||||
assertValues(grouped, 0, TEST_IFACE, UID_ALL, SET_ALL, TAG_NONE, 256L, 16L, 0L, 2L, 0L);
|
assertValues(grouped, 0, TEST_IFACE, UID_ALL, SET_ALL, TAG_NONE, ROAMING_ALL, 384L, 24L, 0L,
|
||||||
assertValues(grouped, 1, TEST_IFACE2, UID_ALL, SET_ALL, TAG_NONE, 1024L, 64L, 0L, 0L, 0L);
|
2L, 0L);
|
||||||
|
assertValues(grouped, 1, TEST_IFACE2, UID_ALL, SET_ALL, TAG_NONE, ROAMING_ALL, 1024L, 64L,
|
||||||
|
0L, 0L, 0L);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testAddAllValues() {
|
public void testAddAllValues() {
|
||||||
final NetworkStats first = new NetworkStats(TEST_START, 5)
|
final NetworkStats first = new NetworkStats(TEST_START, 5)
|
||||||
.addValues(TEST_IFACE, 100, SET_DEFAULT, TAG_NONE, 32L, 0L, 0L, 0L, 0L)
|
.addValues(TEST_IFACE, 100, SET_DEFAULT, TAG_NONE, ROAMING_DEFAULT, 32L, 0L, 0L, 0L,
|
||||||
.addValues(TEST_IFACE, 100, SET_FOREGROUND, TAG_NONE, 32L, 0L, 0L, 0L, 0L);
|
0L)
|
||||||
|
.addValues(TEST_IFACE, 100, SET_FOREGROUND, TAG_NONE, ROAMING_DEFAULT, 32L, 0L, 0L,
|
||||||
|
0L, 0L)
|
||||||
|
.addValues(TEST_IFACE, 100, SET_FOREGROUND, TAG_NONE, ROAMING_ROAMING, 32L, 0L, 0L,
|
||||||
|
0L, 0L);
|
||||||
|
|
||||||
final NetworkStats second = new NetworkStats(TEST_START, 2)
|
final NetworkStats second = new NetworkStats(TEST_START, 2)
|
||||||
.addValues(TEST_IFACE, 100, SET_DEFAULT, TAG_NONE, 32L, 0L, 0L, 0L, 0L)
|
.addValues(TEST_IFACE, 100, SET_DEFAULT, TAG_NONE, ROAMING_DEFAULT, 32L, 0L, 0L, 0L,
|
||||||
.addValues(TEST_IFACE2, UID_ALL, SET_DEFAULT, TAG_NONE, 32L, 0L, 0L, 0L, 0L);
|
0L)
|
||||||
|
.addValues(TEST_IFACE2, UID_ALL, SET_DEFAULT, TAG_NONE, ROAMING_DEFAULT, 32L, 0L,
|
||||||
|
0L, 0L, 0L)
|
||||||
|
.addValues(TEST_IFACE, 100, SET_FOREGROUND, TAG_NONE, ROAMING_ROAMING, 32L, 0L, 0L,
|
||||||
|
0L, 0L);
|
||||||
|
|
||||||
first.combineAllValues(second);
|
first.combineAllValues(second);
|
||||||
|
|
||||||
assertEquals(3, first.size());
|
assertEquals(4, first.size());
|
||||||
assertValues(first, 0, TEST_IFACE, 100, SET_DEFAULT, TAG_NONE, 64L, 0L, 0L, 0L, 0L);
|
assertValues(first, 0, TEST_IFACE, 100, SET_DEFAULT, TAG_NONE, ROAMING_DEFAULT, 64L, 0L, 0L,
|
||||||
assertValues(first, 1, TEST_IFACE, 100, SET_FOREGROUND, TAG_NONE, 32L, 0L, 0L, 0L, 0L);
|
0L, 0L);
|
||||||
assertValues(first, 2, TEST_IFACE2, UID_ALL, SET_DEFAULT, TAG_NONE, 32L, 0L, 0L, 0L, 0L);
|
assertValues(first, 1, TEST_IFACE, 100, SET_FOREGROUND, TAG_NONE, ROAMING_DEFAULT, 32L, 0L,
|
||||||
|
0L, 0L, 0L);
|
||||||
|
assertValues(first, 2, TEST_IFACE, 100, SET_FOREGROUND, TAG_NONE, ROAMING_ROAMING, 64L, 0L,
|
||||||
|
0L, 0L, 0L);
|
||||||
|
assertValues(first, 3, TEST_IFACE2, UID_ALL, SET_DEFAULT, TAG_NONE, ROAMING_DEFAULT, 32L,
|
||||||
|
0L, 0L, 0L, 0L);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testGetTotal() {
|
public void testGetTotal() {
|
||||||
final NetworkStats stats = new NetworkStats(TEST_START, 3)
|
final NetworkStats stats = new NetworkStats(TEST_START, 7)
|
||||||
.addValues(TEST_IFACE, 100, SET_DEFAULT, TAG_NONE, 128L, 8L, 0L, 2L, 20L)
|
.addValues(TEST_IFACE, 100, SET_DEFAULT, TAG_NONE, ROAMING_DEFAULT, 128L, 8L, 0L,
|
||||||
.addValues(TEST_IFACE2, 100, SET_DEFAULT, TAG_NONE, 512L, 32L, 0L, 0L, 0L)
|
2L, 20L)
|
||||||
.addValues(TEST_IFACE2, 100, SET_DEFAULT, 0xF00D, 64L, 4L, 0L, 0L, 0L)
|
.addValues(TEST_IFACE2, 100, SET_DEFAULT, TAG_NONE, ROAMING_DEFAULT, 512L, 32L, 0L,
|
||||||
.addValues(TEST_IFACE2, 100, SET_FOREGROUND, TAG_NONE, 512L, 32L, 0L, 0L, 0L)
|
0L, 0L)
|
||||||
.addValues(TEST_IFACE, 101, SET_DEFAULT, TAG_NONE, 128L, 8L, 0L, 0L, 0L)
|
.addValues(TEST_IFACE2, 100, SET_DEFAULT, 0xF00D, ROAMING_DEFAULT, 64L, 4L, 0L, 0L,
|
||||||
.addValues(TEST_IFACE, 101, SET_DEFAULT, 0xF00D, 128L, 8L, 0L, 0L, 0L);
|
0L)
|
||||||
|
.addValues(TEST_IFACE2, 100, SET_FOREGROUND, TAG_NONE, ROAMING_DEFAULT, 512L, 32L,
|
||||||
|
0L, 0L, 0L)
|
||||||
|
.addValues(TEST_IFACE, 101, SET_DEFAULT, TAG_NONE, ROAMING_DEFAULT, 128L, 8L, 0L,
|
||||||
|
0L, 0L)
|
||||||
|
.addValues(TEST_IFACE, 101, SET_DEFAULT, 0xF00D, ROAMING_DEFAULT, 128L, 8L, 0L, 0L,
|
||||||
|
0L)
|
||||||
|
.addValues(TEST_IFACE, 100, SET_DEFAULT, TAG_NONE, ROAMING_ROAMING, 128L, 8L, 0L,
|
||||||
|
0L, 0L);
|
||||||
|
|
||||||
assertValues(stats.getTotal(null), 1280L, 80L, 0L, 2L, 20L);
|
assertValues(stats.getTotal(null), 1408L, 88L, 0L, 2L, 20L);
|
||||||
assertValues(stats.getTotal(null, 100), 1152L, 72L, 0L, 2L, 20L);
|
assertValues(stats.getTotal(null, 100), 1280L, 80L, 0L, 2L, 20L);
|
||||||
assertValues(stats.getTotal(null, 101), 128L, 8L, 0L, 0L, 0L);
|
assertValues(stats.getTotal(null, 101), 128L, 8L, 0L, 0L, 0L);
|
||||||
|
|
||||||
final HashSet<String> ifaces = Sets.newHashSet();
|
final HashSet<String> ifaces = Sets.newHashSet();
|
||||||
@@ -292,8 +396,10 @@ public class NetworkStatsTest extends TestCase {
|
|||||||
final NetworkStats after = before.withoutUids(new int[] { 100 });
|
final NetworkStats after = before.withoutUids(new int[] { 100 });
|
||||||
assertEquals(6, before.size());
|
assertEquals(6, before.size());
|
||||||
assertEquals(2, after.size());
|
assertEquals(2, after.size());
|
||||||
assertValues(after, 0, TEST_IFACE, 101, SET_DEFAULT, TAG_NONE, 128L, 8L, 0L, 0L, 0L);
|
assertValues(after, 0, TEST_IFACE, 101, SET_DEFAULT, TAG_NONE, ROAMING_DEFAULT, 128L, 8L,
|
||||||
assertValues(after, 1, TEST_IFACE, 101, SET_DEFAULT, 0xF00D, 128L, 8L, 0L, 0L, 0L);
|
0L, 0L, 0L);
|
||||||
|
assertValues(after, 1, TEST_IFACE, 101, SET_DEFAULT, 0xF00D, ROAMING_DEFAULT, 128L, 8L, 0L,
|
||||||
|
0L, 0L);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testClone() throws Exception {
|
public void testClone() throws Exception {
|
||||||
@@ -351,76 +457,83 @@ public class NetworkStatsTest extends TestCase {
|
|||||||
assertEquals(21, delta.size());
|
assertEquals(21, delta.size());
|
||||||
|
|
||||||
// tunIface and TEST_IFACE entries are not changed.
|
// tunIface and TEST_IFACE entries are not changed.
|
||||||
assertValues(delta, 0, tunIface, 10100, SET_DEFAULT, TAG_NONE,
|
assertValues(delta, 0, tunIface, 10100, SET_DEFAULT, TAG_NONE, ROAMING_DEFAULT,
|
||||||
39605L, 46L, 12259L, 55L, 0L);
|
39605L, 46L, 12259L, 55L, 0L);
|
||||||
assertValues(delta, 1, tunIface, 10100, SET_FOREGROUND, TAG_NONE, 0L, 0L, 0L, 0L, 0L);
|
assertValues(delta, 1, tunIface, 10100, SET_FOREGROUND, TAG_NONE, ROAMING_DEFAULT, 0L, 0L,
|
||||||
assertValues(delta, 2, tunIface, 10120, SET_DEFAULT, TAG_NONE,
|
0L, 0L, 0L);
|
||||||
|
assertValues(delta, 2, tunIface, 10120, SET_DEFAULT, TAG_NONE, ROAMING_DEFAULT,
|
||||||
72667L, 197L, 43909L, 241L, 0L);
|
72667L, 197L, 43909L, 241L, 0L);
|
||||||
assertValues(delta, 3, tunIface, 10120, SET_FOREGROUND, TAG_NONE,
|
assertValues(delta, 3, tunIface, 10120, SET_FOREGROUND, TAG_NONE, ROAMING_DEFAULT,
|
||||||
9297L, 17L, 4128L, 21L, 0L);
|
9297L, 17L, 4128L, 21L, 0L);
|
||||||
assertValues(delta, 4, tunIface, tunUid, SET_DEFAULT, TAG_NONE,
|
assertValues(delta, 4, tunIface, tunUid, SET_DEFAULT, TAG_NONE, ROAMING_DEFAULT,
|
||||||
4983L, 10L, 1801L, 12L, 0L);
|
4983L, 10L, 1801L, 12L, 0L);
|
||||||
assertValues(delta, 5, tunIface, tunUid, SET_FOREGROUND, TAG_NONE, 0L, 0L, 0L, 0L, 0L);
|
assertValues(delta, 5, tunIface, tunUid, SET_FOREGROUND, TAG_NONE, ROAMING_DEFAULT, 0L, 0L,
|
||||||
assertValues(delta, 6, tunIface, 10120, SET_DEFAULT, testTag1,
|
0L, 0L, 0L);
|
||||||
|
assertValues(delta, 6, tunIface, 10120, SET_DEFAULT, testTag1, ROAMING_DEFAULT,
|
||||||
21691L, 41L, 13820L, 51L, 0L);
|
21691L, 41L, 13820L, 51L, 0L);
|
||||||
assertValues(delta, 7, tunIface, 10120, SET_FOREGROUND, testTag1, 1281L, 2L, 665L, 2L, 0L);
|
assertValues(delta, 7, tunIface, 10120, SET_FOREGROUND, testTag1, ROAMING_DEFAULT, 1281L,
|
||||||
assertValues(delta, 8, TEST_IFACE, 10100, SET_DEFAULT, TAG_NONE, 1685L, 5L, 2070L, 6L, 0L);
|
2L, 665L, 2L, 0L);
|
||||||
|
assertValues(delta, 8, TEST_IFACE, 10100, SET_DEFAULT, TAG_NONE, ROAMING_DEFAULT, 1685L, 5L,
|
||||||
|
2070L, 6L, 0L);
|
||||||
|
|
||||||
// Existing underlying Iface entries are updated
|
// Existing underlying Iface entries are updated
|
||||||
assertValues(delta, 9, underlyingIface, 10100, SET_DEFAULT, TAG_NONE,
|
assertValues(delta, 9, underlyingIface, 10100, SET_DEFAULT, TAG_NONE, ROAMING_DEFAULT,
|
||||||
44783L, 54L, 13829L, 60L, 0L);
|
44783L, 54L, 13829L, 60L, 0L);
|
||||||
assertValues(delta, 10, underlyingIface, 10100, SET_FOREGROUND, TAG_NONE,
|
assertValues(delta, 10, underlyingIface, 10100, SET_FOREGROUND, TAG_NONE, ROAMING_DEFAULT,
|
||||||
0L, 0L, 0L, 0L, 0L);
|
0L, 0L, 0L, 0L, 0L);
|
||||||
|
|
||||||
// VPN underlying Iface entries are updated
|
// VPN underlying Iface entries are updated
|
||||||
assertValues(delta, 11, underlyingIface, tunUid, SET_DEFAULT, TAG_NONE,
|
assertValues(delta, 11, underlyingIface, tunUid, SET_DEFAULT, TAG_NONE, ROAMING_DEFAULT,
|
||||||
28304L, 27L, 1719L, 12L, 0L);
|
28304L, 27L, 1719L, 12L, 0L);
|
||||||
assertValues(delta, 12, underlyingIface, tunUid, SET_FOREGROUND, TAG_NONE,
|
assertValues(delta, 12, underlyingIface, tunUid, SET_FOREGROUND, TAG_NONE, ROAMING_DEFAULT,
|
||||||
0L, 0L, 0L, 0L, 0L);
|
0L, 0L, 0L, 0L, 0L);
|
||||||
|
|
||||||
// New entries are added for new application's underlying Iface traffic
|
// New entries are added for new application's underlying Iface traffic
|
||||||
assertContains(delta, underlyingIface, 10120, SET_DEFAULT, TAG_NONE,
|
assertContains(delta, underlyingIface, 10120, SET_DEFAULT, TAG_NONE, ROAMING_DEFAULT,
|
||||||
72667L, 197L, 41872l, 219L, 0L);
|
72667L, 197L, 41872L, 219L, 0L);
|
||||||
assertContains(delta, underlyingIface, 10120, SET_FOREGROUND, TAG_NONE,
|
assertContains(delta, underlyingIface, 10120, SET_FOREGROUND, TAG_NONE, ROAMING_DEFAULT,
|
||||||
9297L, 17L, 3936, 19L, 0L);
|
9297L, 17L, 3936, 19L, 0L);
|
||||||
assertContains(delta, underlyingIface, 10120, SET_DEFAULT, testTag1,
|
assertContains(delta, underlyingIface, 10120, SET_DEFAULT, testTag1, ROAMING_DEFAULT,
|
||||||
21691L, 41L, 13179L, 46L, 0L);
|
21691L, 41L, 13179L, 46L, 0L);
|
||||||
assertContains(delta, underlyingIface, 10120, SET_FOREGROUND, testTag1,
|
assertContains(delta, underlyingIface, 10120, SET_FOREGROUND, testTag1, ROAMING_DEFAULT,
|
||||||
1281L, 2L, 634L, 1L, 0L);
|
1281L, 2L, 634L, 1L, 0L);
|
||||||
|
|
||||||
// New entries are added for debug purpose
|
// New entries are added for debug purpose
|
||||||
assertContains(delta, underlyingIface, 10100, SET_DBG_VPN_IN, TAG_NONE,
|
assertContains(delta, underlyingIface, 10100, SET_DBG_VPN_IN, TAG_NONE, ROAMING_DEFAULT,
|
||||||
39605L, 46L, 11690, 49, 0);
|
39605L, 46L, 11690, 49, 0);
|
||||||
assertContains(delta, underlyingIface, 10120, SET_DBG_VPN_IN, TAG_NONE,
|
assertContains(delta, underlyingIface, 10120, SET_DBG_VPN_IN, TAG_NONE, ROAMING_DEFAULT,
|
||||||
81964, 214, 45808, 238, 0);
|
81964, 214, 45808, 238, 0);
|
||||||
assertContains(delta, underlyingIface, tunUid, SET_DBG_VPN_IN, TAG_NONE,
|
assertContains(delta, underlyingIface, tunUid, SET_DBG_VPN_IN, TAG_NONE, ROAMING_DEFAULT,
|
||||||
4983, 10, 1717, 10, 0);
|
4983, 10, 1717, 10, 0);
|
||||||
assertContains(delta, underlyingIface, tunUid, SET_DBG_VPN_OUT, TAG_NONE,
|
assertContains(delta, underlyingIface, tunUid, SET_DBG_VPN_OUT, TAG_NONE, ROAMING_ALL,
|
||||||
126552, 270, 59215, 297, 0);
|
126552, 270, 59215, 297, 0);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void assertContains(NetworkStats stats, String iface, int uid, int set,
|
private static void assertContains(NetworkStats stats, String iface, int uid, int set,
|
||||||
int tag, long rxBytes, long rxPackets, long txBytes, long txPackets, long operations) {
|
int tag, int roaming, long rxBytes, long rxPackets, long txBytes, long txPackets,
|
||||||
int index = stats.findIndex(iface, uid, set, tag);
|
long operations) {
|
||||||
|
int index = stats.findIndex(iface, uid, set, tag, roaming);
|
||||||
assertTrue(index != -1);
|
assertTrue(index != -1);
|
||||||
assertValues(stats, index, iface, uid, set, tag,
|
assertValues(stats, index, iface, uid, set, tag, roaming,
|
||||||
rxBytes, rxPackets, txBytes, txPackets, operations);
|
rxBytes, rxPackets, txBytes, txPackets, operations);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void assertValues(NetworkStats stats, int index, String iface, int uid, int set,
|
private static void assertValues(NetworkStats stats, int index, String iface, int uid, int set,
|
||||||
int tag, long rxBytes, long rxPackets, long txBytes, long txPackets, long operations) {
|
int tag, int roaming, long rxBytes, long rxPackets, long txBytes, long txPackets,
|
||||||
|
long operations) {
|
||||||
final NetworkStats.Entry entry = stats.getValues(index, null);
|
final NetworkStats.Entry entry = stats.getValues(index, null);
|
||||||
assertValues(entry, iface, uid, set, tag);
|
assertValues(entry, iface, uid, set, tag, roaming);
|
||||||
assertValues(entry, rxBytes, rxPackets, txBytes, txPackets, operations);
|
assertValues(entry, rxBytes, rxPackets, txBytes, txPackets, operations);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void assertValues(
|
private static void assertValues(
|
||||||
NetworkStats.Entry entry, String iface, int uid, int set, int tag) {
|
NetworkStats.Entry entry, String iface, int uid, int set, int tag, int roaming) {
|
||||||
assertEquals(iface, entry.iface);
|
assertEquals(iface, entry.iface);
|
||||||
assertEquals(uid, entry.uid);
|
assertEquals(uid, entry.uid);
|
||||||
assertEquals(set, entry.set);
|
assertEquals(set, entry.set);
|
||||||
assertEquals(tag, entry.tag);
|
assertEquals(tag, entry.tag);
|
||||||
|
assertEquals(roaming, entry.roaming);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void assertValues(NetworkStats.Entry entry, long rxBytes, long rxPackets,
|
private static void assertValues(NetworkStats.Entry entry, long rxBytes, long rxPackets,
|
||||||
|
|||||||
@@ -16,6 +16,7 @@
|
|||||||
|
|
||||||
package com.android.internal.net;
|
package com.android.internal.net;
|
||||||
|
|
||||||
|
import static android.net.NetworkStats.ROAMING_DEFAULT;
|
||||||
import static android.net.NetworkStats.SET_ALL;
|
import static android.net.NetworkStats.SET_ALL;
|
||||||
import static android.net.NetworkStats.SET_DEFAULT;
|
import static android.net.NetworkStats.SET_DEFAULT;
|
||||||
import static android.net.NetworkStats.SET_FOREGROUND;
|
import static android.net.NetworkStats.SET_FOREGROUND;
|
||||||
@@ -156,7 +157,7 @@ public class NetworkStatsFactoryTest extends AndroidTestCase {
|
|||||||
|
|
||||||
private static void assertStatsEntry(NetworkStats stats, String iface, int uid, int set,
|
private static void assertStatsEntry(NetworkStats stats, String iface, int uid, int set,
|
||||||
int tag, long rxBytes, long txBytes) {
|
int tag, long rxBytes, long txBytes) {
|
||||||
final int i = stats.findIndex(iface, uid, set, tag);
|
final int i = stats.findIndex(iface, uid, set, tag, ROAMING_DEFAULT);
|
||||||
final NetworkStats.Entry entry = stats.getValues(i, null);
|
final NetworkStats.Entry entry = stats.getValues(i, null);
|
||||||
assertEquals("unexpected rxBytes", rxBytes, entry.rxBytes);
|
assertEquals("unexpected rxBytes", rxBytes, entry.rxBytes);
|
||||||
assertEquals("unexpected txBytes", txBytes, entry.txBytes);
|
assertEquals("unexpected txBytes", txBytes, entry.txBytes);
|
||||||
@@ -164,7 +165,7 @@ public class NetworkStatsFactoryTest extends AndroidTestCase {
|
|||||||
|
|
||||||
private static void assertStatsEntry(NetworkStats stats, String iface, int uid, int set,
|
private static void assertStatsEntry(NetworkStats stats, String iface, int uid, int set,
|
||||||
int tag, long rxBytes, long rxPackets, long txBytes, long txPackets) {
|
int tag, long rxBytes, long rxPackets, long txBytes, long txPackets) {
|
||||||
final int i = stats.findIndex(iface, uid, set, tag);
|
final int i = stats.findIndex(iface, uid, set, tag, ROAMING_DEFAULT);
|
||||||
final NetworkStats.Entry entry = stats.getValues(i, null);
|
final NetworkStats.Entry entry = stats.getValues(i, null);
|
||||||
assertEquals("unexpected rxBytes", rxBytes, entry.rxBytes);
|
assertEquals("unexpected rxBytes", rxBytes, entry.rxBytes);
|
||||||
assertEquals("unexpected rxPackets", rxPackets, entry.rxPackets);
|
assertEquals("unexpected rxPackets", rxPackets, entry.rxPackets);
|
||||||
|
|||||||
@@ -22,6 +22,9 @@ import static android.net.ConnectivityManager.TYPE_MOBILE;
|
|||||||
import static android.net.ConnectivityManager.TYPE_WIFI;
|
import static android.net.ConnectivityManager.TYPE_WIFI;
|
||||||
import static android.net.ConnectivityManager.TYPE_WIMAX;
|
import static android.net.ConnectivityManager.TYPE_WIMAX;
|
||||||
import static android.net.NetworkStats.IFACE_ALL;
|
import static android.net.NetworkStats.IFACE_ALL;
|
||||||
|
import static android.net.NetworkStats.ROAMING_ALL;
|
||||||
|
import static android.net.NetworkStats.ROAMING_DEFAULT;
|
||||||
|
import static android.net.NetworkStats.ROAMING_ROAMING;
|
||||||
import static android.net.NetworkStats.SET_ALL;
|
import static android.net.NetworkStats.SET_ALL;
|
||||||
import static android.net.NetworkStats.SET_DEFAULT;
|
import static android.net.NetworkStats.SET_DEFAULT;
|
||||||
import static android.net.NetworkStats.SET_FOREGROUND;
|
import static android.net.NetworkStats.SET_FOREGROUND;
|
||||||
@@ -81,6 +84,8 @@ import org.easymock.Capture;
|
|||||||
import org.easymock.EasyMock;
|
import org.easymock.EasyMock;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Tests for {@link NetworkStatsService}.
|
* Tests for {@link NetworkStatsService}.
|
||||||
@@ -282,8 +287,9 @@ public class NetworkStatsServiceTest extends AndroidTestCase {
|
|||||||
// verify service recorded history
|
// verify service recorded history
|
||||||
assertNetworkTotal(sTemplateWifi, 1024L, 8L, 2048L, 16L, 0);
|
assertNetworkTotal(sTemplateWifi, 1024L, 8L, 2048L, 16L, 0);
|
||||||
assertUidTotal(sTemplateWifi, UID_RED, 1024L, 8L, 512L, 4L, 10);
|
assertUidTotal(sTemplateWifi, UID_RED, 1024L, 8L, 512L, 4L, 10);
|
||||||
assertUidTotal(sTemplateWifi, UID_RED, SET_DEFAULT, 512L, 4L, 256L, 2L, 4);
|
assertUidTotal(sTemplateWifi, UID_RED, SET_DEFAULT, ROAMING_DEFAULT, 512L, 4L, 256L, 2L, 4);
|
||||||
assertUidTotal(sTemplateWifi, UID_RED, SET_FOREGROUND, 512L, 4L, 256L, 2L, 6);
|
assertUidTotal(sTemplateWifi, UID_RED, SET_FOREGROUND, ROAMING_DEFAULT, 512L, 4L, 256L, 2L,
|
||||||
|
6);
|
||||||
assertUidTotal(sTemplateWifi, UID_BLUE, 128L, 1L, 128L, 1L, 0);
|
assertUidTotal(sTemplateWifi, UID_BLUE, 128L, 1L, 128L, 1L, 0);
|
||||||
verifyAndReset();
|
verifyAndReset();
|
||||||
|
|
||||||
@@ -317,8 +323,9 @@ public class NetworkStatsServiceTest extends AndroidTestCase {
|
|||||||
// after systemReady(), we should have historical stats loaded again
|
// after systemReady(), we should have historical stats loaded again
|
||||||
assertNetworkTotal(sTemplateWifi, 1024L, 8L, 2048L, 16L, 0);
|
assertNetworkTotal(sTemplateWifi, 1024L, 8L, 2048L, 16L, 0);
|
||||||
assertUidTotal(sTemplateWifi, UID_RED, 1024L, 8L, 512L, 4L, 10);
|
assertUidTotal(sTemplateWifi, UID_RED, 1024L, 8L, 512L, 4L, 10);
|
||||||
assertUidTotal(sTemplateWifi, UID_RED, SET_DEFAULT, 512L, 4L, 256L, 2L, 4);
|
assertUidTotal(sTemplateWifi, UID_RED, SET_DEFAULT, ROAMING_DEFAULT, 512L, 4L, 256L, 2L, 4);
|
||||||
assertUidTotal(sTemplateWifi, UID_RED, SET_FOREGROUND, 512L, 4L, 256L, 2L, 6);
|
assertUidTotal(sTemplateWifi, UID_RED, SET_FOREGROUND, ROAMING_DEFAULT, 512L, 4L, 256L, 2L,
|
||||||
|
6);
|
||||||
assertUidTotal(sTemplateWifi, UID_BLUE, 128L, 1L, 128L, 1L, 0);
|
assertUidTotal(sTemplateWifi, UID_BLUE, 128L, 1L, 128L, 1L, 0);
|
||||||
verifyAndReset();
|
verifyAndReset();
|
||||||
|
|
||||||
@@ -670,16 +677,20 @@ public class NetworkStatsServiceTest extends AndroidTestCase {
|
|||||||
NetworkStats stats = mSession.getSummaryForAllUid(
|
NetworkStats stats = mSession.getSummaryForAllUid(
|
||||||
sTemplateWifi, Long.MIN_VALUE, Long.MAX_VALUE, true);
|
sTemplateWifi, Long.MIN_VALUE, Long.MAX_VALUE, true);
|
||||||
assertEquals(3, stats.size());
|
assertEquals(3, stats.size());
|
||||||
assertValues(stats, IFACE_ALL, UID_RED, SET_DEFAULT, TAG_NONE, 50L, 5L, 50L, 5L, 1);
|
assertValues(stats, IFACE_ALL, UID_RED, SET_DEFAULT, TAG_NONE, ROAMING_DEFAULT, 50L, 5L,
|
||||||
assertValues(stats, IFACE_ALL, UID_RED, SET_DEFAULT, 0xF00D, 10L, 1L, 10L, 1L, 1);
|
50L, 5L, 1);
|
||||||
assertValues(stats, IFACE_ALL, UID_BLUE, SET_DEFAULT, TAG_NONE, 2048L, 16L, 1024L, 8L, 0);
|
assertValues(stats, IFACE_ALL, UID_RED, SET_DEFAULT, 0xF00D, ROAMING_DEFAULT, 10L, 1L, 10L,
|
||||||
|
1L, 1);
|
||||||
|
assertValues(stats, IFACE_ALL, UID_BLUE, SET_DEFAULT, TAG_NONE, ROAMING_DEFAULT, 2048L, 16L,
|
||||||
|
1024L, 8L, 0);
|
||||||
|
|
||||||
// now verify that recent history only contains one uid
|
// now verify that recent history only contains one uid
|
||||||
final long currentTime = currentTimeMillis();
|
final long currentTime = currentTimeMillis();
|
||||||
stats = mSession.getSummaryForAllUid(
|
stats = mSession.getSummaryForAllUid(
|
||||||
sTemplateWifi, currentTime - HOUR_IN_MILLIS, currentTime, true);
|
sTemplateWifi, currentTime - HOUR_IN_MILLIS, currentTime, true);
|
||||||
assertEquals(1, stats.size());
|
assertEquals(1, stats.size());
|
||||||
assertValues(stats, IFACE_ALL, UID_BLUE, SET_DEFAULT, TAG_NONE, 1024L, 8L, 512L, 4L, 0);
|
assertValues(stats, IFACE_ALL, UID_BLUE, SET_DEFAULT, TAG_NONE, ROAMING_DEFAULT, 1024L, 8L,
|
||||||
|
512L, 4L, 0);
|
||||||
|
|
||||||
verifyAndReset();
|
verifyAndReset();
|
||||||
}
|
}
|
||||||
@@ -742,10 +753,61 @@ public class NetworkStatsServiceTest extends AndroidTestCase {
|
|||||||
final NetworkStats stats = mSession.getSummaryForAllUid(
|
final NetworkStats stats = mSession.getSummaryForAllUid(
|
||||||
sTemplateWifi, Long.MIN_VALUE, Long.MAX_VALUE, true);
|
sTemplateWifi, Long.MIN_VALUE, Long.MAX_VALUE, true);
|
||||||
assertEquals(4, stats.size());
|
assertEquals(4, stats.size());
|
||||||
assertValues(stats, IFACE_ALL, UID_RED, SET_DEFAULT, TAG_NONE, 128L, 2L, 128L, 2L, 1);
|
assertValues(stats, IFACE_ALL, UID_RED, SET_DEFAULT, TAG_NONE, ROAMING_DEFAULT, 128L, 2L,
|
||||||
assertValues(stats, IFACE_ALL, UID_RED, SET_DEFAULT, 0xF00D, 64L, 1L, 64L, 1L, 1);
|
128L, 2L, 1);
|
||||||
assertValues(stats, IFACE_ALL, UID_RED, SET_FOREGROUND, TAG_NONE, 32L, 2L, 32L, 2L, 1);
|
assertValues(stats, IFACE_ALL, UID_RED, SET_DEFAULT, 0xF00D, ROAMING_DEFAULT, 64L, 1L, 64L,
|
||||||
assertValues(stats, IFACE_ALL, UID_RED, SET_FOREGROUND, 0xFAAD, 1L, 1L, 1L, 1L, 1);
|
1L, 1);
|
||||||
|
assertValues(stats, IFACE_ALL, UID_RED, SET_FOREGROUND, TAG_NONE, ROAMING_DEFAULT, 32L, 2L,
|
||||||
|
32L, 2L, 1);
|
||||||
|
assertValues(stats, IFACE_ALL, UID_RED, SET_FOREGROUND, 0xFAAD, ROAMING_DEFAULT, 1L, 1L, 1L,
|
||||||
|
1L, 1);
|
||||||
|
|
||||||
|
verifyAndReset();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testRoaming() throws Exception {
|
||||||
|
// pretend that network comes online
|
||||||
|
expectCurrentTime();
|
||||||
|
expectDefaultSettings();
|
||||||
|
expectNetworkState(buildMobile3gState(IMSI_1, true /* isRoaming */));
|
||||||
|
expectNetworkStatsSummary(buildEmptyStats());
|
||||||
|
expectNetworkStatsUidDetail(buildEmptyStats());
|
||||||
|
expectNetworkStatsPoll();
|
||||||
|
expectBandwidthControlCheck();
|
||||||
|
|
||||||
|
replay();
|
||||||
|
mService.forceUpdateIfaces();
|
||||||
|
verifyAndReset();
|
||||||
|
|
||||||
|
// Create some traffic
|
||||||
|
incrementCurrentTime(HOUR_IN_MILLIS);
|
||||||
|
expectCurrentTime();
|
||||||
|
expectDefaultSettings();
|
||||||
|
expectNetworkStatsSummary(buildEmptyStats());
|
||||||
|
// Note that all traffic from NetworkManagementService is tagged as ROAMING_DEFAULT, because
|
||||||
|
// roaming isn't tracked at that layer. We layer it on top by inspecting the iface
|
||||||
|
// properties.
|
||||||
|
expectNetworkStatsUidDetail(new NetworkStats(getElapsedRealtime(), 1)
|
||||||
|
.addValues(TEST_IFACE, UID_RED, SET_DEFAULT, TAG_NONE, ROAMING_DEFAULT, 128L, 2L,
|
||||||
|
128L, 2L, 0L)
|
||||||
|
.addValues(TEST_IFACE, UID_RED, SET_DEFAULT, 0xF00D, ROAMING_DEFAULT, 64L, 1L, 64L,
|
||||||
|
1L, 0L));
|
||||||
|
expectNetworkStatsPoll();
|
||||||
|
|
||||||
|
replay();
|
||||||
|
mServiceContext.sendBroadcast(new Intent(ACTION_NETWORK_STATS_POLL));
|
||||||
|
|
||||||
|
// verify service recorded history
|
||||||
|
assertUidTotal(sTemplateImsi1, UID_RED, 128L, 2L, 128L, 2L, 0);
|
||||||
|
|
||||||
|
// verify entire history present
|
||||||
|
final NetworkStats stats = mSession.getSummaryForAllUid(
|
||||||
|
sTemplateImsi1, Long.MIN_VALUE, Long.MAX_VALUE, true);
|
||||||
|
assertEquals(2, stats.size());
|
||||||
|
assertValues(stats, IFACE_ALL, UID_RED, SET_DEFAULT, TAG_NONE, ROAMING_ROAMING, 128L, 2L,
|
||||||
|
128L, 2L, 0);
|
||||||
|
assertValues(stats, IFACE_ALL, UID_RED, SET_DEFAULT, 0xF00D, ROAMING_ROAMING, 64L, 1L, 64L,
|
||||||
|
1L, 0);
|
||||||
|
|
||||||
verifyAndReset();
|
verifyAndReset();
|
||||||
}
|
}
|
||||||
@@ -805,17 +867,19 @@ public class NetworkStatsServiceTest extends AndroidTestCase {
|
|||||||
|
|
||||||
// verify summary API
|
// verify summary API
|
||||||
final NetworkStats stats = mSession.getSummaryForNetwork(template, start, end);
|
final NetworkStats stats = mSession.getSummaryForNetwork(template, start, end);
|
||||||
assertValues(stats, IFACE_ALL, UID_ALL, SET_DEFAULT, TAG_NONE, rxBytes, rxPackets, txBytes,
|
assertValues(stats, IFACE_ALL, UID_ALL, SET_DEFAULT, TAG_NONE, ROAMING_DEFAULT, rxBytes,
|
||||||
txPackets, operations);
|
rxPackets, txBytes, txPackets, operations);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void assertUidTotal(NetworkTemplate template, int uid, long rxBytes, long rxPackets,
|
private void assertUidTotal(NetworkTemplate template, int uid, long rxBytes, long rxPackets,
|
||||||
long txBytes, long txPackets, int operations) throws Exception {
|
long txBytes, long txPackets, int operations) throws Exception {
|
||||||
assertUidTotal(template, uid, SET_ALL, rxBytes, rxPackets, txBytes, txPackets, operations);
|
assertUidTotal(template, uid, SET_ALL, ROAMING_ALL, rxBytes, rxPackets, txBytes, txPackets,
|
||||||
|
operations);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void assertUidTotal(NetworkTemplate template, int uid, int set, long rxBytes,
|
private void assertUidTotal(NetworkTemplate template, int uid, int set, int roaming,
|
||||||
long rxPackets, long txBytes, long txPackets, int operations) throws Exception {
|
long rxBytes, long rxPackets, long txBytes, long txPackets, int operations)
|
||||||
|
throws Exception {
|
||||||
// verify history API
|
// verify history API
|
||||||
final NetworkStatsHistory history = mSession.getHistoryForUid(
|
final NetworkStatsHistory history = mSession.getHistoryForUid(
|
||||||
template, uid, set, TAG_NONE, FIELD_ALL);
|
template, uid, set, TAG_NONE, FIELD_ALL);
|
||||||
@@ -825,8 +889,8 @@ public class NetworkStatsServiceTest extends AndroidTestCase {
|
|||||||
// verify summary API
|
// verify summary API
|
||||||
final NetworkStats stats = mSession.getSummaryForAllUid(
|
final NetworkStats stats = mSession.getSummaryForAllUid(
|
||||||
template, Long.MIN_VALUE, Long.MAX_VALUE, false);
|
template, Long.MIN_VALUE, Long.MAX_VALUE, false);
|
||||||
assertValues(stats, IFACE_ALL, uid, set, TAG_NONE, rxBytes, rxPackets, txBytes, txPackets,
|
assertValues(stats, IFACE_ALL, uid, set, TAG_NONE, roaming, rxBytes, rxPackets, txBytes,
|
||||||
operations);
|
txPackets, operations);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void expectSystemReady() throws Exception {
|
private void expectSystemReady() throws Exception {
|
||||||
@@ -933,20 +997,33 @@ public class NetworkStatsServiceTest extends AndroidTestCase {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private static void assertValues(NetworkStats stats, String iface, int uid, int set,
|
private static void assertValues(NetworkStats stats, String iface, int uid, int set,
|
||||||
int tag, long rxBytes, long rxPackets, long txBytes, long txPackets, int operations) {
|
int tag, int roaming, long rxBytes, long rxPackets, long txBytes, long txPackets,
|
||||||
|
int operations) {
|
||||||
final NetworkStats.Entry entry = new NetworkStats.Entry();
|
final NetworkStats.Entry entry = new NetworkStats.Entry();
|
||||||
|
List<Integer> sets = new ArrayList<>();
|
||||||
if (set == SET_DEFAULT || set == SET_ALL) {
|
if (set == SET_DEFAULT || set == SET_ALL) {
|
||||||
final int i = stats.findIndex(iface, uid, SET_DEFAULT, tag);
|
sets.add(SET_DEFAULT);
|
||||||
if (i != -1) {
|
|
||||||
entry.add(stats.getValues(i, null));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if (set == SET_FOREGROUND || set == SET_ALL) {
|
if (set == SET_FOREGROUND || set == SET_ALL) {
|
||||||
final int i = stats.findIndex(iface, uid, SET_FOREGROUND, tag);
|
sets.add(SET_FOREGROUND);
|
||||||
|
}
|
||||||
|
|
||||||
|
List<Integer> roamings = new ArrayList<>();
|
||||||
|
if (roaming == ROAMING_DEFAULT || roaming == ROAMING_ALL) {
|
||||||
|
roamings.add(ROAMING_DEFAULT);
|
||||||
|
}
|
||||||
|
if (roaming == ROAMING_ROAMING || roaming == ROAMING_ALL) {
|
||||||
|
roamings.add(ROAMING_ROAMING);
|
||||||
|
}
|
||||||
|
|
||||||
|
for (int s : sets) {
|
||||||
|
for (int r : roamings) {
|
||||||
|
final int i = stats.findIndex(iface, uid, s, tag, r);
|
||||||
if (i != -1) {
|
if (i != -1) {
|
||||||
entry.add(stats.getValues(i, null));
|
entry.add(stats.getValues(i, null));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
assertEquals("unexpected rxBytes", rxBytes, entry.rxBytes);
|
assertEquals("unexpected rxBytes", rxBytes, entry.rxBytes);
|
||||||
assertEquals("unexpected rxPackets", rxPackets, entry.rxPackets);
|
assertEquals("unexpected rxPackets", rxPackets, entry.rxPackets);
|
||||||
@@ -974,9 +1051,14 @@ public class NetworkStatsServiceTest extends AndroidTestCase {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private static NetworkState buildMobile3gState(String subscriberId) {
|
private static NetworkState buildMobile3gState(String subscriberId) {
|
||||||
|
return buildMobile3gState(subscriberId, false /* isRoaming */);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static NetworkState buildMobile3gState(String subscriberId, boolean isRoaming) {
|
||||||
final NetworkInfo info = new NetworkInfo(
|
final NetworkInfo info = new NetworkInfo(
|
||||||
TYPE_MOBILE, TelephonyManager.NETWORK_TYPE_UMTS, null, null);
|
TYPE_MOBILE, TelephonyManager.NETWORK_TYPE_UMTS, null, null);
|
||||||
info.setDetailedState(DetailedState.CONNECTED, null, null);
|
info.setDetailedState(DetailedState.CONNECTED, null, null);
|
||||||
|
info.setRoaming(isRoaming);
|
||||||
final LinkProperties prop = new LinkProperties();
|
final LinkProperties prop = new LinkProperties();
|
||||||
prop.setInterfaceName(TEST_IFACE);
|
prop.setInterfaceName(TEST_IFACE);
|
||||||
return new NetworkState(info, prop, null, null, subscriberId, null);
|
return new NetworkState(info, prop, null, null, subscriberId, null);
|
||||||
|
|||||||
Reference in New Issue
Block a user