Loading tests/net/java/com/android/server/net/NetworkStatsServiceTest.java +51 −6 Original line number Diff line number Diff line Loading @@ -23,6 +23,7 @@ import static android.net.ConnectivityManager.TYPE_VPN; import static android.net.ConnectivityManager.TYPE_WIFI; import static android.net.ConnectivityManager.TYPE_WIMAX; 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.IFACE_ALL; import static android.net.NetworkStats.INTERFACES_ALL; Loading Loading @@ -917,7 +918,8 @@ public class NetworkStatsServiceTest extends NetworkStatsBaseTest { public void testMetered() throws Exception { // pretend that network comes online expectDefaultSettings(); NetworkState[] states = new NetworkState[] {buildWifiState(true /* isMetered */)}; NetworkState[] states = new NetworkState[] {buildWifiState(true /* isMetered */, TEST_IFACE)}; expectNetworkStatsSummary(buildEmptyStats()); expectNetworkStatsUidDetail(buildEmptyStats()); Loading Loading @@ -1146,7 +1148,8 @@ public class NetworkStatsServiceTest extends NetworkStatsBaseTest { public void testStatsProviderUpdateStats() throws Exception { // Pretend that network comes online. expectDefaultSettings(); final NetworkState[] states = new NetworkState[]{buildWifiState(true /* isMetered */)}; final NetworkState[] states = new NetworkState[]{buildWifiState(true /* isMetered */, TEST_IFACE)}; expectNetworkStatsSummary(buildEmptyStats()); expectNetworkStatsUidDetail(buildEmptyStats()); Loading Loading @@ -1206,7 +1209,8 @@ public class NetworkStatsServiceTest extends NetworkStatsBaseTest { public void testStatsProviderSetAlert() throws Exception { // Pretend that network comes online. expectDefaultSettings(); NetworkState[] states = new NetworkState[]{buildWifiState(true /* isMetered */)}; NetworkState[] states = new NetworkState[]{buildWifiState(true /* isMetered */, TEST_IFACE)}; mService.forceUpdateIfaces(NETWORKS_WIFI, states, getActiveIface(states), new VpnInfo[0]); // Register custom provider and retrieve callback. Loading Loading @@ -1319,6 +1323,47 @@ public class NetworkStatsServiceTest extends NetworkStatsBaseTest { assertUidTotal(templateAll, UID_RED, 22L + 35L, 26L + 29L, 19L + 7L, 5L + 11L, 1); } @Test public void testOperationCount_nonDefault_traffic() throws Exception { // Pretend mobile network comes online, but wifi is the default network. expectDefaultSettings(); NetworkState[] states = new NetworkState[]{ buildWifiState(true /*isMetered*/, TEST_IFACE2), buildMobile3gState(IMSI_1)}; expectNetworkStatsUidDetail(buildEmptyStats()); mService.forceUpdateIfaces(NETWORKS_WIFI, states, getActiveIface(states), new VpnInfo[0]); // Create some traffic on mobile network. incrementCurrentTime(HOUR_IN_MILLIS); expectNetworkStatsUidDetail(new NetworkStats(getElapsedRealtime(), 4) .insertEntry(TEST_IFACE, UID_RED, SET_DEFAULT, TAG_NONE, METERED_NO, ROAMING_NO, DEFAULT_NETWORK_NO, 2L, 1L, 3L, 4L, 0L) .insertEntry(TEST_IFACE, UID_RED, SET_DEFAULT, TAG_NONE, METERED_NO, ROAMING_NO, DEFAULT_NETWORK_YES, 1L, 3L, 2L, 1L, 0L) .insertEntry(TEST_IFACE, UID_RED, SET_DEFAULT, 0xF00D, 5L, 4L, 1L, 4L, 0L)); // Increment operation count, which must have a specific tag. mService.incrementOperationCount(UID_RED, 0xF00D, 2); forcePollAndWaitForIdle(); // Verify mobile summary is not changed by the operation count. final NetworkTemplate templateMobile = buildTemplateMobileWithRatType(null, NETWORK_TYPE_ALL); final NetworkStats statsMobile = mSession.getSummaryForAllUid( templateMobile, Long.MIN_VALUE, Long.MAX_VALUE, true); assertValues(statsMobile, IFACE_ALL, UID_RED, SET_ALL, TAG_NONE, METERED_ALL, ROAMING_ALL, DEFAULT_NETWORK_ALL, 3L, 4L, 5L, 5L, 0); assertValues(statsMobile, IFACE_ALL, UID_RED, SET_ALL, 0xF00D, METERED_ALL, ROAMING_ALL, DEFAULT_NETWORK_ALL, 5L, 4L, 1L, 4L, 0); // Verify the operation count is blamed onto the default network. // TODO: Blame onto the default network is not very reasonable. Consider blame onto the // network that generates the traffic. final NetworkTemplate templateWifi = buildTemplateWifiWildcard(); final NetworkStats statsWifi = mSession.getSummaryForAllUid( templateWifi, Long.MIN_VALUE, Long.MAX_VALUE, true); assertValues(statsWifi, IFACE_ALL, UID_RED, SET_ALL, 0xF00D, METERED_ALL, ROAMING_ALL, DEFAULT_NETWORK_ALL, 0L, 0L, 0L, 0L, 2); } private static File getBaseDir(File statsDir) { File baseDir = new File(statsDir, "netstats"); baseDir.mkdirs(); Loading Loading @@ -1446,14 +1491,14 @@ public class NetworkStatsServiceTest extends NetworkStatsBaseTest { } private static NetworkState buildWifiState() { return buildWifiState(false); return buildWifiState(false, TEST_IFACE); } private static NetworkState buildWifiState(boolean isMetered) { private static NetworkState buildWifiState(boolean isMetered, @NonNull String iface) { final NetworkInfo info = new NetworkInfo(TYPE_WIFI, 0, null, null); info.setDetailedState(DetailedState.CONNECTED, null, null); final LinkProperties prop = new LinkProperties(); prop.setInterfaceName(TEST_IFACE); prop.setInterfaceName(iface); final NetworkCapabilities capabilities = new NetworkCapabilities(); capabilities.setCapability(NetworkCapabilities.NET_CAPABILITY_NOT_METERED, !isMetered); capabilities.setCapability(NetworkCapabilities.NET_CAPABILITY_NOT_ROAMING, true); Loading Loading
tests/net/java/com/android/server/net/NetworkStatsServiceTest.java +51 −6 Original line number Diff line number Diff line Loading @@ -23,6 +23,7 @@ import static android.net.ConnectivityManager.TYPE_VPN; import static android.net.ConnectivityManager.TYPE_WIFI; import static android.net.ConnectivityManager.TYPE_WIMAX; 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.IFACE_ALL; import static android.net.NetworkStats.INTERFACES_ALL; Loading Loading @@ -917,7 +918,8 @@ public class NetworkStatsServiceTest extends NetworkStatsBaseTest { public void testMetered() throws Exception { // pretend that network comes online expectDefaultSettings(); NetworkState[] states = new NetworkState[] {buildWifiState(true /* isMetered */)}; NetworkState[] states = new NetworkState[] {buildWifiState(true /* isMetered */, TEST_IFACE)}; expectNetworkStatsSummary(buildEmptyStats()); expectNetworkStatsUidDetail(buildEmptyStats()); Loading Loading @@ -1146,7 +1148,8 @@ public class NetworkStatsServiceTest extends NetworkStatsBaseTest { public void testStatsProviderUpdateStats() throws Exception { // Pretend that network comes online. expectDefaultSettings(); final NetworkState[] states = new NetworkState[]{buildWifiState(true /* isMetered */)}; final NetworkState[] states = new NetworkState[]{buildWifiState(true /* isMetered */, TEST_IFACE)}; expectNetworkStatsSummary(buildEmptyStats()); expectNetworkStatsUidDetail(buildEmptyStats()); Loading Loading @@ -1206,7 +1209,8 @@ public class NetworkStatsServiceTest extends NetworkStatsBaseTest { public void testStatsProviderSetAlert() throws Exception { // Pretend that network comes online. expectDefaultSettings(); NetworkState[] states = new NetworkState[]{buildWifiState(true /* isMetered */)}; NetworkState[] states = new NetworkState[]{buildWifiState(true /* isMetered */, TEST_IFACE)}; mService.forceUpdateIfaces(NETWORKS_WIFI, states, getActiveIface(states), new VpnInfo[0]); // Register custom provider and retrieve callback. Loading Loading @@ -1319,6 +1323,47 @@ public class NetworkStatsServiceTest extends NetworkStatsBaseTest { assertUidTotal(templateAll, UID_RED, 22L + 35L, 26L + 29L, 19L + 7L, 5L + 11L, 1); } @Test public void testOperationCount_nonDefault_traffic() throws Exception { // Pretend mobile network comes online, but wifi is the default network. expectDefaultSettings(); NetworkState[] states = new NetworkState[]{ buildWifiState(true /*isMetered*/, TEST_IFACE2), buildMobile3gState(IMSI_1)}; expectNetworkStatsUidDetail(buildEmptyStats()); mService.forceUpdateIfaces(NETWORKS_WIFI, states, getActiveIface(states), new VpnInfo[0]); // Create some traffic on mobile network. incrementCurrentTime(HOUR_IN_MILLIS); expectNetworkStatsUidDetail(new NetworkStats(getElapsedRealtime(), 4) .insertEntry(TEST_IFACE, UID_RED, SET_DEFAULT, TAG_NONE, METERED_NO, ROAMING_NO, DEFAULT_NETWORK_NO, 2L, 1L, 3L, 4L, 0L) .insertEntry(TEST_IFACE, UID_RED, SET_DEFAULT, TAG_NONE, METERED_NO, ROAMING_NO, DEFAULT_NETWORK_YES, 1L, 3L, 2L, 1L, 0L) .insertEntry(TEST_IFACE, UID_RED, SET_DEFAULT, 0xF00D, 5L, 4L, 1L, 4L, 0L)); // Increment operation count, which must have a specific tag. mService.incrementOperationCount(UID_RED, 0xF00D, 2); forcePollAndWaitForIdle(); // Verify mobile summary is not changed by the operation count. final NetworkTemplate templateMobile = buildTemplateMobileWithRatType(null, NETWORK_TYPE_ALL); final NetworkStats statsMobile = mSession.getSummaryForAllUid( templateMobile, Long.MIN_VALUE, Long.MAX_VALUE, true); assertValues(statsMobile, IFACE_ALL, UID_RED, SET_ALL, TAG_NONE, METERED_ALL, ROAMING_ALL, DEFAULT_NETWORK_ALL, 3L, 4L, 5L, 5L, 0); assertValues(statsMobile, IFACE_ALL, UID_RED, SET_ALL, 0xF00D, METERED_ALL, ROAMING_ALL, DEFAULT_NETWORK_ALL, 5L, 4L, 1L, 4L, 0); // Verify the operation count is blamed onto the default network. // TODO: Blame onto the default network is not very reasonable. Consider blame onto the // network that generates the traffic. final NetworkTemplate templateWifi = buildTemplateWifiWildcard(); final NetworkStats statsWifi = mSession.getSummaryForAllUid( templateWifi, Long.MIN_VALUE, Long.MAX_VALUE, true); assertValues(statsWifi, IFACE_ALL, UID_RED, SET_ALL, 0xF00D, METERED_ALL, ROAMING_ALL, DEFAULT_NETWORK_ALL, 0L, 0L, 0L, 0L, 2); } private static File getBaseDir(File statsDir) { File baseDir = new File(statsDir, "netstats"); baseDir.mkdirs(); Loading Loading @@ -1446,14 +1491,14 @@ public class NetworkStatsServiceTest extends NetworkStatsBaseTest { } private static NetworkState buildWifiState() { return buildWifiState(false); return buildWifiState(false, TEST_IFACE); } private static NetworkState buildWifiState(boolean isMetered) { private static NetworkState buildWifiState(boolean isMetered, @NonNull String iface) { final NetworkInfo info = new NetworkInfo(TYPE_WIFI, 0, null, null); info.setDetailedState(DetailedState.CONNECTED, null, null); final LinkProperties prop = new LinkProperties(); prop.setInterfaceName(TEST_IFACE); prop.setInterfaceName(iface); final NetworkCapabilities capabilities = new NetworkCapabilities(); capabilities.setCapability(NetworkCapabilities.NET_CAPABILITY_NOT_METERED, !isMetered); capabilities.setCapability(NetworkCapabilities.NET_CAPABILITY_NOT_ROAMING, true); Loading