Update tests for PANS network usage metrics
Update existing tests to use new NetworkTemplate/NetworkIdentity constructors, and add additional tests for new PANS metrics features. Bug: 175793874 Bug: 174485293 Test: Run the tests in this CL with atest Change-Id: I6f50993397d886a266874da0047c02022a69f62e
This commit is contained in:
@@ -17,6 +17,7 @@
|
||||
package com.android.server.net;
|
||||
|
||||
import static android.net.ConnectivityManager.TYPE_MOBILE;
|
||||
import static android.net.NetworkIdentity.OEM_NONE;
|
||||
import static android.net.NetworkStats.SET_ALL;
|
||||
import static android.net.NetworkStats.SET_DEFAULT;
|
||||
import static android.net.NetworkStats.TAG_NONE;
|
||||
@@ -213,7 +214,7 @@ public class NetworkStatsCollectionTest {
|
||||
final NetworkStats.Entry entry = new NetworkStats.Entry();
|
||||
final NetworkIdentitySet identSet = new NetworkIdentitySet();
|
||||
identSet.add(new NetworkIdentity(TYPE_MOBILE, TelephonyManager.NETWORK_TYPE_UNKNOWN,
|
||||
TEST_IMSI, null, false, true, true));
|
||||
TEST_IMSI, null, false, true, true, OEM_NONE));
|
||||
|
||||
int myUid = Process.myUid();
|
||||
int otherUidInSameUser = Process.myUid() + 1;
|
||||
@@ -468,7 +469,7 @@ public class NetworkStatsCollectionTest {
|
||||
final NetworkStatsCollection large = new NetworkStatsCollection(HOUR_IN_MILLIS);
|
||||
final NetworkIdentitySet ident = new NetworkIdentitySet();
|
||||
ident.add(new NetworkIdentity(ConnectivityManager.TYPE_MOBILE, -1, TEST_IMSI, null,
|
||||
false, true, true));
|
||||
false, true, true, OEM_NONE));
|
||||
large.recordData(ident, UID_ALL, SET_ALL, TAG_NONE, TIME_A, TIME_B,
|
||||
new NetworkStats.Entry(12_730_893_164L, 1, 0, 0, 0));
|
||||
|
||||
|
||||
@@ -17,6 +17,7 @@
|
||||
package com.android.server.net;
|
||||
|
||||
import static android.net.ConnectivityManager.TYPE_MOBILE;
|
||||
import static android.net.NetworkIdentity.OEM_NONE;
|
||||
import static android.net.NetworkStats.DEFAULT_NETWORK_NO;
|
||||
import static android.net.NetworkStats.DEFAULT_NETWORK_YES;
|
||||
import static android.net.NetworkStats.METERED_NO;
|
||||
@@ -220,7 +221,7 @@ public class NetworkStatsObserversTest {
|
||||
identSet.add(new NetworkIdentity(
|
||||
TYPE_MOBILE, TelephonyManager.NETWORK_TYPE_UNKNOWN,
|
||||
IMSI_1, null /* networkId */, false /* roaming */, true /* metered */,
|
||||
true /* defaultNetwork */));
|
||||
true /* defaultNetwork */, OEM_NONE));
|
||||
return identSet;
|
||||
}
|
||||
|
||||
|
||||
@@ -21,6 +21,9 @@ import static android.content.Intent.EXTRA_UID;
|
||||
import static android.net.ConnectivityManager.TYPE_MOBILE;
|
||||
import static android.net.ConnectivityManager.TYPE_VPN;
|
||||
import static android.net.ConnectivityManager.TYPE_WIFI;
|
||||
import static android.net.NetworkIdentity.OEM_NONE;
|
||||
import static android.net.NetworkIdentity.OEM_PAID;
|
||||
import static android.net.NetworkIdentity.OEM_PRIVATE;
|
||||
import static android.net.NetworkStats.DEFAULT_NETWORK_ALL;
|
||||
import static android.net.NetworkStats.DEFAULT_NETWORK_NO;
|
||||
import static android.net.NetworkStats.DEFAULT_NETWORK_YES;
|
||||
@@ -40,7 +43,10 @@ import static android.net.NetworkStats.TAG_ALL;
|
||||
import static android.net.NetworkStats.TAG_NONE;
|
||||
import static android.net.NetworkStats.UID_ALL;
|
||||
import static android.net.NetworkStatsHistory.FIELD_ALL;
|
||||
import static android.net.NetworkTemplate.MATCH_MOBILE_WILDCARD;
|
||||
import static android.net.NetworkTemplate.NETWORK_TYPE_ALL;
|
||||
import static android.net.NetworkTemplate.OEM_MANAGED_NO;
|
||||
import static android.net.NetworkTemplate.OEM_MANAGED_YES;
|
||||
import static android.net.NetworkTemplate.buildTemplateMobileAll;
|
||||
import static android.net.NetworkTemplate.buildTemplateMobileWithRatType;
|
||||
import static android.net.NetworkTemplate.buildTemplateWifi;
|
||||
@@ -643,6 +649,116 @@ public class NetworkStatsServiceTest extends NetworkStatsBaseTest {
|
||||
assertUidTotal(template5g, UID_RED, 5L, 13L, 31L, 9L, 2);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testMobileStatsOemManaged() throws Exception {
|
||||
final NetworkTemplate templateOemPaid = new NetworkTemplate(MATCH_MOBILE_WILDCARD,
|
||||
/*subscriberId=*/null, /*matchSubscriberIds=*/null, /*networkId=*/null,
|
||||
METERED_ALL, ROAMING_ALL, DEFAULT_NETWORK_ALL, NETWORK_TYPE_ALL, OEM_PAID);
|
||||
|
||||
final NetworkTemplate templateOemPrivate = new NetworkTemplate(MATCH_MOBILE_WILDCARD,
|
||||
/*subscriberId=*/null, /*matchSubscriberIds=*/null, /*networkId=*/null,
|
||||
METERED_ALL, ROAMING_ALL, DEFAULT_NETWORK_ALL, NETWORK_TYPE_ALL, OEM_PRIVATE);
|
||||
|
||||
final NetworkTemplate templateOemAll = new NetworkTemplate(MATCH_MOBILE_WILDCARD,
|
||||
/*subscriberId=*/null, /*matchSubscriberIds=*/null, /*networkId=*/null,
|
||||
METERED_ALL, ROAMING_ALL, DEFAULT_NETWORK_ALL, NETWORK_TYPE_ALL,
|
||||
OEM_PAID | OEM_PRIVATE);
|
||||
|
||||
final NetworkTemplate templateOemYes = new NetworkTemplate(MATCH_MOBILE_WILDCARD,
|
||||
/*subscriberId=*/null, /*matchSubscriberIds=*/null, /*networkId=*/null,
|
||||
METERED_ALL, ROAMING_ALL, DEFAULT_NETWORK_ALL, NETWORK_TYPE_ALL, OEM_MANAGED_YES);
|
||||
|
||||
final NetworkTemplate templateOemNone = new NetworkTemplate(MATCH_MOBILE_WILDCARD,
|
||||
/*subscriberId=*/null, /*matchSubscriberIds=*/null, /*networkId=*/null,
|
||||
METERED_ALL, ROAMING_ALL, DEFAULT_NETWORK_ALL, NETWORK_TYPE_ALL, OEM_MANAGED_NO);
|
||||
|
||||
// OEM_PAID network comes online.
|
||||
NetworkState[] states = new NetworkState[]{buildOemManagedMobileState(IMSI_1, false,
|
||||
new int[]{NetworkCapabilities.NET_CAPABILITY_OEM_PAID})};
|
||||
expectNetworkStatsSummary(buildEmptyStats());
|
||||
expectNetworkStatsUidDetail(buildEmptyStats());
|
||||
mService.forceUpdateIfaces(NETWORKS_MOBILE, states, getActiveIface(states),
|
||||
new UnderlyingNetworkInfo[0]);
|
||||
|
||||
// Create some traffic.
|
||||
incrementCurrentTime(MINUTE_IN_MILLIS);
|
||||
expectNetworkStatsUidDetail(new NetworkStats(getElapsedRealtime(), 1)
|
||||
.addEntry(new NetworkStats.Entry(TEST_IFACE, UID_RED, SET_DEFAULT, TAG_NONE,
|
||||
36L, 41L, 24L, 96L, 0L)));
|
||||
forcePollAndWaitForIdle();
|
||||
|
||||
// OEM_PRIVATE network comes online.
|
||||
states = new NetworkState[]{buildOemManagedMobileState(IMSI_1, false,
|
||||
new int[]{NetworkCapabilities.NET_CAPABILITY_OEM_PRIVATE})};
|
||||
expectNetworkStatsSummary(buildEmptyStats());
|
||||
expectNetworkStatsUidDetail(buildEmptyStats());
|
||||
mService.forceUpdateIfaces(NETWORKS_MOBILE, states, getActiveIface(states),
|
||||
new UnderlyingNetworkInfo[0]);
|
||||
|
||||
// Create some traffic.
|
||||
incrementCurrentTime(MINUTE_IN_MILLIS);
|
||||
expectNetworkStatsUidDetail(new NetworkStats(getElapsedRealtime(), 1)
|
||||
.addEntry(new NetworkStats.Entry(TEST_IFACE, UID_RED, SET_DEFAULT, TAG_NONE,
|
||||
49L, 71L, 72L, 48L, 0L)));
|
||||
forcePollAndWaitForIdle();
|
||||
|
||||
// OEM_PAID + OEM_PRIVATE network comes online.
|
||||
states = new NetworkState[]{buildOemManagedMobileState(IMSI_1, false,
|
||||
new int[]{NetworkCapabilities.NET_CAPABILITY_OEM_PRIVATE,
|
||||
NetworkCapabilities.NET_CAPABILITY_OEM_PAID})};
|
||||
expectNetworkStatsSummary(buildEmptyStats());
|
||||
expectNetworkStatsUidDetail(buildEmptyStats());
|
||||
mService.forceUpdateIfaces(NETWORKS_MOBILE, states, getActiveIface(states),
|
||||
new UnderlyingNetworkInfo[0]);
|
||||
|
||||
// Create some traffic.
|
||||
incrementCurrentTime(MINUTE_IN_MILLIS);
|
||||
expectNetworkStatsUidDetail(new NetworkStats(getElapsedRealtime(), 1)
|
||||
.addEntry(new NetworkStats.Entry(TEST_IFACE, UID_RED, SET_DEFAULT, TAG_NONE,
|
||||
57L, 86L, 83L, 93L, 0L)));
|
||||
forcePollAndWaitForIdle();
|
||||
|
||||
// OEM_NONE network comes online.
|
||||
states = new NetworkState[]{buildOemManagedMobileState(IMSI_1, false, new int[]{})};
|
||||
expectNetworkStatsSummary(buildEmptyStats());
|
||||
expectNetworkStatsUidDetail(buildEmptyStats());
|
||||
mService.forceUpdateIfaces(NETWORKS_MOBILE, states, getActiveIface(states),
|
||||
new UnderlyingNetworkInfo[0]);
|
||||
|
||||
// Create some traffic.
|
||||
incrementCurrentTime(MINUTE_IN_MILLIS);
|
||||
expectNetworkStatsUidDetail(new NetworkStats(getElapsedRealtime(), 1)
|
||||
.addEntry(new NetworkStats.Entry(TEST_IFACE, UID_RED, SET_DEFAULT, TAG_NONE,
|
||||
29L, 73L, 34L, 31L, 0L)));
|
||||
forcePollAndWaitForIdle();
|
||||
|
||||
// Verify OEM_PAID template gets only relevant stats.
|
||||
assertUidTotal(templateOemPaid, UID_RED, 36L, 41L, 24L, 96L, 0);
|
||||
|
||||
// Verify OEM_PRIVATE template gets only relevant stats.
|
||||
assertUidTotal(templateOemPrivate, UID_RED, 49L, 71L, 72L, 48L, 0);
|
||||
|
||||
// Verify OEM_PAID + OEM_PRIVATE template gets only relevant stats.
|
||||
assertUidTotal(templateOemAll, UID_RED, 57L, 86L, 83L, 93L, 0);
|
||||
|
||||
// Verify OEM_NONE sees only non-OEM managed stats.
|
||||
assertUidTotal(templateOemNone, UID_RED, 29L, 73L, 34L, 31L, 0);
|
||||
|
||||
// Verify OEM_MANAGED_YES sees all OEM managed stats.
|
||||
assertUidTotal(templateOemYes, UID_RED,
|
||||
36L + 49L + 57L,
|
||||
41L + 71L + 86L,
|
||||
24L + 72L + 83L,
|
||||
96L + 48L + 93L, 0);
|
||||
|
||||
// Verify ALL_MOBILE template gets both OEM managed and non-OEM managed stats.
|
||||
assertUidTotal(sTemplateImsi1, UID_RED,
|
||||
36L + 49L + 57L + 29L,
|
||||
41L + 71L + 86L + 73L,
|
||||
24L + 72L + 83L + 34L,
|
||||
96L + 48L + 93L + 31L, 0);
|
||||
}
|
||||
|
||||
// TODO: support per IMSI state
|
||||
private void setMobileRatTypeAndWaitForIdle(int ratType) {
|
||||
when(mNetworkStatsSubscriptionsMonitor.getRatTypeForSubscriberId(anyString()))
|
||||
@@ -1488,6 +1604,20 @@ public class NetworkStatsServiceTest extends NetworkStatsBaseTest {
|
||||
return new NetworkState(TYPE_VPN, prop, new NetworkCapabilities(), VPN_NETWORK, null);
|
||||
}
|
||||
|
||||
private static NetworkState buildOemManagedMobileState(String subscriberId, boolean isRoaming,
|
||||
int[] oemNetCapabilities) {
|
||||
final LinkProperties prop = new LinkProperties();
|
||||
prop.setInterfaceName(TEST_IFACE);
|
||||
final NetworkCapabilities capabilities = new NetworkCapabilities();
|
||||
capabilities.setCapability(NetworkCapabilities.NET_CAPABILITY_NOT_METERED, false);
|
||||
capabilities.setCapability(NetworkCapabilities.NET_CAPABILITY_NOT_ROAMING, !isRoaming);
|
||||
for (int nc : oemNetCapabilities) {
|
||||
capabilities.setCapability(nc, true);
|
||||
}
|
||||
capabilities.addTransportType(NetworkCapabilities.TRANSPORT_CELLULAR);
|
||||
return new NetworkState(TYPE_MOBILE, prop, capabilities, MOBILE_NETWORK, subscriberId);
|
||||
}
|
||||
|
||||
private long getElapsedRealtime() {
|
||||
return mElapsedRealtime;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user