Support to query TYPE_WIFI usage with subscriberId
Previous the API ignores subscriberId when network type is WIFI. Allow caller to call querySummaryXXXX with TYPE: WIFI + subscriberId: IMSI to get carrier merged wifi usage which matches the wifi network with the given IMSI. Bug: 176396812 Test: atest -c NetworkStatsServiceTest Change-Id: Ia033521a24e2bb56182d74a41bb2b39710571782
This commit is contained in:
@@ -152,6 +152,8 @@ public class NetworkStatsServiceTest extends NetworkStatsBaseTest {
|
|||||||
private static final String TEST_SSID = "AndroidAP";
|
private static final String TEST_SSID = "AndroidAP";
|
||||||
|
|
||||||
private static NetworkTemplate sTemplateWifi = buildTemplateWifi(TEST_SSID);
|
private static NetworkTemplate sTemplateWifi = buildTemplateWifi(TEST_SSID);
|
||||||
|
private static NetworkTemplate sTemplateCarrierWifi1 =
|
||||||
|
buildTemplateWifi(NetworkTemplate.WIFI_NETWORKID_ALL, IMSI_1);
|
||||||
private static NetworkTemplate sTemplateImsi1 = buildTemplateMobileAll(IMSI_1);
|
private static NetworkTemplate sTemplateImsi1 = buildTemplateMobileAll(IMSI_1);
|
||||||
private static NetworkTemplate sTemplateImsi2 = buildTemplateMobileAll(IMSI_2);
|
private static NetworkTemplate sTemplateImsi2 = buildTemplateMobileAll(IMSI_2);
|
||||||
|
|
||||||
@@ -297,45 +299,82 @@ public class NetworkStatsServiceTest extends NetworkStatsBaseTest {
|
|||||||
mHandlerThread.quitSafely();
|
mHandlerThread.quitSafely();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
private void initWifiStats(NetworkStateSnapshot snapshot) throws Exception {
|
||||||
public void testNetworkStatsWifi() throws Exception {
|
|
||||||
// pretend that wifi network comes online; service should ask about full
|
// pretend that wifi network comes online; service should ask about full
|
||||||
// network state, and poll any existing interfaces before updating.
|
// network state, and poll any existing interfaces before updating.
|
||||||
expectDefaultSettings();
|
expectDefaultSettings();
|
||||||
NetworkStateSnapshot[] states = new NetworkStateSnapshot[] {buildWifiState()};
|
NetworkStateSnapshot[] states = new NetworkStateSnapshot[] {snapshot};
|
||||||
expectNetworkStatsSummary(buildEmptyStats());
|
expectNetworkStatsSummary(buildEmptyStats());
|
||||||
expectNetworkStatsUidDetail(buildEmptyStats());
|
expectNetworkStatsUidDetail(buildEmptyStats());
|
||||||
|
|
||||||
mService.notifyNetworkStatus(NETWORKS_WIFI, states, getActiveIface(states),
|
mService.notifyNetworkStatus(NETWORKS_WIFI, states, getActiveIface(states),
|
||||||
new UnderlyingNetworkInfo[0]);
|
new UnderlyingNetworkInfo[0]);
|
||||||
|
}
|
||||||
|
|
||||||
// verify service has empty history for wifi
|
private void incrementWifiStats(long durationMillis, String iface,
|
||||||
|
long rxb, long rxp, long txb, long txp) throws Exception {
|
||||||
|
incrementCurrentTime(durationMillis);
|
||||||
|
expectDefaultSettings();
|
||||||
|
expectNetworkStatsSummary(new NetworkStats(getElapsedRealtime(), 1)
|
||||||
|
.insertEntry(iface, rxb, rxp, txb, txp));
|
||||||
|
expectNetworkStatsUidDetail(buildEmptyStats());
|
||||||
|
forcePollAndWaitForIdle();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testNetworkStatsCarrierWifi() throws Exception {
|
||||||
|
initWifiStats(buildWifiState(true, TEST_IFACE, IMSI_1));
|
||||||
|
// verify service has empty history for carrier merged wifi and non-carrier wifi
|
||||||
|
assertNetworkTotal(sTemplateCarrierWifi1, 0L, 0L, 0L, 0L, 0);
|
||||||
assertNetworkTotal(sTemplateWifi, 0L, 0L, 0L, 0L, 0);
|
assertNetworkTotal(sTemplateWifi, 0L, 0L, 0L, 0L, 0);
|
||||||
|
|
||||||
// modify some number on wifi, and trigger poll event
|
// modify some number on wifi, and trigger poll event
|
||||||
incrementCurrentTime(HOUR_IN_MILLIS);
|
incrementWifiStats(HOUR_IN_MILLIS, TEST_IFACE, 1024L, 1L, 2048L, 2L);
|
||||||
expectDefaultSettings();
|
|
||||||
expectNetworkStatsSummary(new NetworkStats(getElapsedRealtime(), 1)
|
|
||||||
.insertEntry(TEST_IFACE, 1024L, 1L, 2048L, 2L));
|
|
||||||
expectNetworkStatsUidDetail(buildEmptyStats());
|
|
||||||
forcePollAndWaitForIdle();
|
|
||||||
|
|
||||||
// verify service recorded history
|
// verify service recorded history
|
||||||
|
assertNetworkTotal(sTemplateCarrierWifi1, 1024L, 1L, 2048L, 2L, 0);
|
||||||
|
|
||||||
|
// verify service recorded history for wifi with SSID filter
|
||||||
assertNetworkTotal(sTemplateWifi, 1024L, 1L, 2048L, 2L, 0);
|
assertNetworkTotal(sTemplateWifi, 1024L, 1L, 2048L, 2L, 0);
|
||||||
|
|
||||||
|
|
||||||
// and bump forward again, with counters going higher. this is
|
// and bump forward again, with counters going higher. this is
|
||||||
// important, since polling should correctly subtract last snapshot.
|
// important, since polling should correctly subtract last snapshot.
|
||||||
incrementCurrentTime(DAY_IN_MILLIS);
|
incrementWifiStats(DAY_IN_MILLIS, TEST_IFACE, 4096L, 4L, 8192L, 8L);
|
||||||
expectDefaultSettings();
|
|
||||||
expectNetworkStatsSummary(new NetworkStats(getElapsedRealtime(), 1)
|
// verify service recorded history
|
||||||
.insertEntry(TEST_IFACE, 4096L, 4L, 8192L, 8L));
|
assertNetworkTotal(sTemplateCarrierWifi1, 4096L, 4L, 8192L, 8L, 0);
|
||||||
expectNetworkStatsUidDetail(buildEmptyStats());
|
// verify service recorded history for wifi with SSID filter
|
||||||
forcePollAndWaitForIdle();
|
assertNetworkTotal(sTemplateWifi, 4096L, 4L, 8192L, 8L, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testNetworkStatsNonCarrierWifi() throws Exception {
|
||||||
|
initWifiStats(buildWifiState());
|
||||||
|
|
||||||
|
// verify service has empty history for wifi
|
||||||
|
assertNetworkTotal(sTemplateWifi, 0L, 0L, 0L, 0L, 0);
|
||||||
|
// verify service has empty history for carrier merged wifi
|
||||||
|
assertNetworkTotal(sTemplateCarrierWifi1, 0L, 0L, 0L, 0L, 0);
|
||||||
|
|
||||||
|
// modify some number on wifi, and trigger poll event
|
||||||
|
incrementWifiStats(HOUR_IN_MILLIS, TEST_IFACE, 1024L, 1L, 2048L, 2L);
|
||||||
|
|
||||||
|
// verify service recorded history
|
||||||
|
assertNetworkTotal(sTemplateWifi, 1024L, 1L, 2048L, 2L, 0);
|
||||||
|
// verify service has empty history for carrier wifi since current network is non carrier
|
||||||
|
// wifi
|
||||||
|
assertNetworkTotal(sTemplateCarrierWifi1, 0L, 0L, 0L, 0L, 0);
|
||||||
|
|
||||||
|
// and bump forward again, with counters going higher. this is
|
||||||
|
// important, since polling should correctly subtract last snapshot.
|
||||||
|
incrementWifiStats(DAY_IN_MILLIS, TEST_IFACE, 4096L, 4L, 8192L, 8L);
|
||||||
|
|
||||||
// verify service recorded history
|
// verify service recorded history
|
||||||
assertNetworkTotal(sTemplateWifi, 4096L, 4L, 8192L, 8L, 0);
|
assertNetworkTotal(sTemplateWifi, 4096L, 4L, 8192L, 8L, 0);
|
||||||
|
// verify service has empty history for carrier wifi since current network is non carrier
|
||||||
|
// wifi
|
||||||
|
assertNetworkTotal(sTemplateCarrierWifi1, 0L, 0L, 0L, 0L, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -1662,10 +1701,15 @@ public class NetworkStatsServiceTest extends NetworkStatsBaseTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private static NetworkStateSnapshot buildWifiState() {
|
private static NetworkStateSnapshot buildWifiState() {
|
||||||
return buildWifiState(false, TEST_IFACE);
|
return buildWifiState(false, TEST_IFACE, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static NetworkStateSnapshot buildWifiState(boolean isMetered, @NonNull String iface) {
|
private static NetworkStateSnapshot buildWifiState(boolean isMetered, @NonNull String iface) {
|
||||||
|
return buildWifiState(isMetered, iface, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static NetworkStateSnapshot buildWifiState(boolean isMetered, @NonNull String iface,
|
||||||
|
String subscriberId) {
|
||||||
final LinkProperties prop = new LinkProperties();
|
final LinkProperties prop = new LinkProperties();
|
||||||
prop.setInterfaceName(iface);
|
prop.setInterfaceName(iface);
|
||||||
final NetworkCapabilities capabilities = new NetworkCapabilities();
|
final NetworkCapabilities capabilities = new NetworkCapabilities();
|
||||||
@@ -1673,7 +1717,7 @@ public class NetworkStatsServiceTest extends NetworkStatsBaseTest {
|
|||||||
capabilities.setCapability(NetworkCapabilities.NET_CAPABILITY_NOT_ROAMING, true);
|
capabilities.setCapability(NetworkCapabilities.NET_CAPABILITY_NOT_ROAMING, true);
|
||||||
capabilities.addTransportType(NetworkCapabilities.TRANSPORT_WIFI);
|
capabilities.addTransportType(NetworkCapabilities.TRANSPORT_WIFI);
|
||||||
capabilities.setSSID(TEST_SSID);
|
capabilities.setSSID(TEST_SSID);
|
||||||
return new NetworkStateSnapshot(WIFI_NETWORK, capabilities, prop, null, TYPE_WIFI);
|
return new NetworkStateSnapshot(WIFI_NETWORK, capabilities, prop, subscriberId, TYPE_WIFI);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static NetworkStateSnapshot buildMobile3gState(String subscriberId) {
|
private static NetworkStateSnapshot buildMobile3gState(String subscriberId) {
|
||||||
|
|||||||
Reference in New Issue
Block a user