Merge "Transfer ownership of NetworkStatsFactory to NetworkStatsService." am: bd94f0afd2
am: 92292f556b
Change-Id: If897c9c95fc8571949183c45a99a5c28cb032ebb
This commit is contained in:
@@ -245,27 +245,6 @@ interface INetworkManagementService
|
|||||||
** DATA USAGE RELATED
|
** DATA USAGE RELATED
|
||||||
**/
|
**/
|
||||||
|
|
||||||
/**
|
|
||||||
* Return global network statistics summarized at an interface level,
|
|
||||||
* without any UID-level granularity.
|
|
||||||
*/
|
|
||||||
NetworkStats getNetworkStatsSummaryDev();
|
|
||||||
NetworkStats getNetworkStatsSummaryXt();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Return detailed network statistics with UID-level granularity,
|
|
||||||
* including interface and tag details.
|
|
||||||
*/
|
|
||||||
NetworkStats getNetworkStatsDetail();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Return detailed network statistics for the requested UID and interfaces,
|
|
||||||
* including interface and tag details.
|
|
||||||
* @param uid UID to obtain statistics for, or {@link NetworkStats#UID_ALL}.
|
|
||||||
* @param ifaces Interfaces to obtain statistics for, or {@link NetworkStats#INTERFACES_ALL}.
|
|
||||||
*/
|
|
||||||
NetworkStats getNetworkStatsUidDetail(int uid, in String[] ifaces);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return summary of network statistics all tethering interfaces.
|
* Return summary of network statistics all tethering interfaces.
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -34,7 +34,6 @@ import static android.net.NetworkPolicyManager.FIREWALL_CHAIN_NAME_STANDBY;
|
|||||||
import static android.net.NetworkPolicyManager.FIREWALL_RULE_DEFAULT;
|
import static android.net.NetworkPolicyManager.FIREWALL_RULE_DEFAULT;
|
||||||
import static android.net.NetworkStats.SET_DEFAULT;
|
import static android.net.NetworkStats.SET_DEFAULT;
|
||||||
import static android.net.NetworkStats.STATS_PER_UID;
|
import static android.net.NetworkStats.STATS_PER_UID;
|
||||||
import static android.net.NetworkStats.TAG_ALL;
|
|
||||||
import static android.net.NetworkStats.TAG_NONE;
|
import static android.net.NetworkStats.TAG_NONE;
|
||||||
import static android.net.TrafficStats.UID_TETHERING;
|
import static android.net.TrafficStats.UID_TETHERING;
|
||||||
|
|
||||||
@@ -91,7 +90,6 @@ import com.android.internal.app.IBatteryStats;
|
|||||||
import com.android.internal.util.DumpUtils;
|
import com.android.internal.util.DumpUtils;
|
||||||
import com.android.internal.util.HexDump;
|
import com.android.internal.util.HexDump;
|
||||||
import com.android.internal.util.Preconditions;
|
import com.android.internal.util.Preconditions;
|
||||||
import com.android.server.net.NetworkStatsFactory;
|
|
||||||
|
|
||||||
import com.google.android.collect.Maps;
|
import com.google.android.collect.Maps;
|
||||||
|
|
||||||
@@ -165,8 +163,6 @@ public class NetworkManagementService extends INetworkManagementService.Stub {
|
|||||||
private final RemoteCallbackList<INetworkManagementEventObserver> mObservers =
|
private final RemoteCallbackList<INetworkManagementEventObserver> mObservers =
|
||||||
new RemoteCallbackList<>();
|
new RemoteCallbackList<>();
|
||||||
|
|
||||||
private final NetworkStatsFactory mStatsFactory = new NetworkStatsFactory();
|
|
||||||
|
|
||||||
@GuardedBy("mTetheringStatsProviders")
|
@GuardedBy("mTetheringStatsProviders")
|
||||||
private final HashMap<ITetheringStatsProvider, String>
|
private final HashMap<ITetheringStatsProvider, String>
|
||||||
mTetheringStatsProviders = Maps.newHashMap();
|
mTetheringStatsProviders = Maps.newHashMap();
|
||||||
@@ -1211,36 +1207,6 @@ public class NetworkManagementService extends INetworkManagementService.Stub {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public NetworkStats getNetworkStatsSummaryDev() {
|
|
||||||
mContext.enforceCallingOrSelfPermission(CONNECTIVITY_INTERNAL, TAG);
|
|
||||||
try {
|
|
||||||
return mStatsFactory.readNetworkStatsSummaryDev();
|
|
||||||
} catch (IOException e) {
|
|
||||||
throw new IllegalStateException(e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public NetworkStats getNetworkStatsSummaryXt() {
|
|
||||||
mContext.enforceCallingOrSelfPermission(CONNECTIVITY_INTERNAL, TAG);
|
|
||||||
try {
|
|
||||||
return mStatsFactory.readNetworkStatsSummaryXt();
|
|
||||||
} catch (IOException e) {
|
|
||||||
throw new IllegalStateException(e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public NetworkStats getNetworkStatsDetail() {
|
|
||||||
mContext.enforceCallingOrSelfPermission(CONNECTIVITY_INTERNAL, TAG);
|
|
||||||
try {
|
|
||||||
return mStatsFactory.readNetworkStatsDetail();
|
|
||||||
} catch (IOException e) {
|
|
||||||
throw new IllegalStateException(e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setInterfaceQuota(String iface, long quotaBytes) {
|
public void setInterfaceQuota(String iface, long quotaBytes) {
|
||||||
mContext.enforceCallingOrSelfPermission(CONNECTIVITY_INTERNAL, TAG);
|
mContext.enforceCallingOrSelfPermission(CONNECTIVITY_INTERNAL, TAG);
|
||||||
@@ -1540,16 +1506,6 @@ public class NetworkManagementService extends INetworkManagementService.Stub {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public NetworkStats getNetworkStatsUidDetail(int uid, String[] ifaces) {
|
|
||||||
mContext.enforceCallingOrSelfPermission(CONNECTIVITY_INTERNAL, TAG);
|
|
||||||
try {
|
|
||||||
return mStatsFactory.readNetworkStatsDetail(uid, ifaces, TAG_ALL);
|
|
||||||
} catch (IOException e) {
|
|
||||||
throw new IllegalStateException(e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private class NetdTetheringStatsProvider extends ITetheringStatsProvider.Stub {
|
private class NetdTetheringStatsProvider extends ITetheringStatsProvider.Stub {
|
||||||
@Override
|
@Override
|
||||||
public NetworkStats getTetherStats(int how) {
|
public NetworkStats getTetherStats(int how) {
|
||||||
|
|||||||
@@ -181,6 +181,7 @@ public class NetworkStatsService extends INetworkStatsService.Stub {
|
|||||||
|
|
||||||
private final Context mContext;
|
private final Context mContext;
|
||||||
private final INetworkManagementService mNetworkManager;
|
private final INetworkManagementService mNetworkManager;
|
||||||
|
private final NetworkStatsFactory mStatsFactory;
|
||||||
private final AlarmManager mAlarmManager;
|
private final AlarmManager mAlarmManager;
|
||||||
private final Clock mClock;
|
private final Clock mClock;
|
||||||
private final TelephonyManager mTeleManager;
|
private final TelephonyManager mTeleManager;
|
||||||
@@ -336,8 +337,8 @@ public class NetworkStatsService extends INetworkStatsService.Stub {
|
|||||||
|
|
||||||
NetworkStatsService service = new NetworkStatsService(context, networkManager, alarmManager,
|
NetworkStatsService service = new NetworkStatsService(context, networkManager, alarmManager,
|
||||||
wakeLock, getDefaultClock(), TelephonyManager.getDefault(),
|
wakeLock, getDefaultClock(), TelephonyManager.getDefault(),
|
||||||
new DefaultNetworkStatsSettings(context), new NetworkStatsObservers(),
|
new DefaultNetworkStatsSettings(context), new NetworkStatsFactory(),
|
||||||
getDefaultSystemDir(), getDefaultBaseDir());
|
new NetworkStatsObservers(), getDefaultSystemDir(), getDefaultBaseDir());
|
||||||
service.registerLocalService();
|
service.registerLocalService();
|
||||||
|
|
||||||
HandlerThread handlerThread = new HandlerThread(TAG);
|
HandlerThread handlerThread = new HandlerThread(TAG);
|
||||||
@@ -354,7 +355,8 @@ public class NetworkStatsService extends INetworkStatsService.Stub {
|
|||||||
NetworkStatsService(Context context, INetworkManagementService networkManager,
|
NetworkStatsService(Context context, INetworkManagementService networkManager,
|
||||||
AlarmManager alarmManager, PowerManager.WakeLock wakeLock, Clock clock,
|
AlarmManager alarmManager, PowerManager.WakeLock wakeLock, Clock clock,
|
||||||
TelephonyManager teleManager, NetworkStatsSettings settings,
|
TelephonyManager teleManager, NetworkStatsSettings settings,
|
||||||
NetworkStatsObservers statsObservers, File systemDir, File baseDir) {
|
NetworkStatsFactory factory, NetworkStatsObservers statsObservers, File systemDir,
|
||||||
|
File baseDir) {
|
||||||
mContext = checkNotNull(context, "missing Context");
|
mContext = checkNotNull(context, "missing Context");
|
||||||
mNetworkManager = checkNotNull(networkManager, "missing INetworkManagementService");
|
mNetworkManager = checkNotNull(networkManager, "missing INetworkManagementService");
|
||||||
mAlarmManager = checkNotNull(alarmManager, "missing AlarmManager");
|
mAlarmManager = checkNotNull(alarmManager, "missing AlarmManager");
|
||||||
@@ -362,6 +364,7 @@ public class NetworkStatsService extends INetworkStatsService.Stub {
|
|||||||
mSettings = checkNotNull(settings, "missing NetworkStatsSettings");
|
mSettings = checkNotNull(settings, "missing NetworkStatsSettings");
|
||||||
mTeleManager = checkNotNull(teleManager, "missing TelephonyManager");
|
mTeleManager = checkNotNull(teleManager, "missing TelephonyManager");
|
||||||
mWakeLock = checkNotNull(wakeLock, "missing WakeLock");
|
mWakeLock = checkNotNull(wakeLock, "missing WakeLock");
|
||||||
|
mStatsFactory = checkNotNull(factory, "missing factory");
|
||||||
mStatsObservers = checkNotNull(statsObservers, "missing NetworkStatsObservers");
|
mStatsObservers = checkNotNull(statsObservers, "missing NetworkStatsObservers");
|
||||||
mSystemDir = checkNotNull(systemDir, "missing systemDir");
|
mSystemDir = checkNotNull(systemDir, "missing systemDir");
|
||||||
mBaseDir = checkNotNull(baseDir, "missing baseDir");
|
mBaseDir = checkNotNull(baseDir, "missing baseDir");
|
||||||
@@ -759,14 +762,7 @@ public class NetworkStatsService extends INetworkStatsService.Stub {
|
|||||||
|
|
||||||
// TODO: switch to data layer stats once kernel exports
|
// TODO: switch to data layer stats once kernel exports
|
||||||
// for now, read network layer stats and flatten across all ifaces
|
// for now, read network layer stats and flatten across all ifaces
|
||||||
final long token = Binder.clearCallingIdentity();
|
final NetworkStats networkLayer = readNetworkStatsUidDetail(uid, INTERFACES_ALL, TAG_ALL);
|
||||||
final NetworkStats networkLayer;
|
|
||||||
try {
|
|
||||||
networkLayer = mNetworkManager.getNetworkStatsUidDetail(uid,
|
|
||||||
NetworkStats.INTERFACES_ALL);
|
|
||||||
} finally {
|
|
||||||
Binder.restoreCallingIdentity(token);
|
|
||||||
}
|
|
||||||
|
|
||||||
// splice in operation counts
|
// splice in operation counts
|
||||||
networkLayer.spliceOperationsFrom(mUidOperations);
|
networkLayer.spliceOperationsFrom(mUidOperations);
|
||||||
@@ -1197,7 +1193,7 @@ public class NetworkStatsService extends INetworkStatsService.Stub {
|
|||||||
mobileIfaces.add(stackedIface);
|
mobileIfaces.add(stackedIface);
|
||||||
}
|
}
|
||||||
|
|
||||||
NetworkStatsFactory.noteStackedIface(stackedIface, baseIface);
|
mStatsFactory.noteStackedIface(stackedIface, baseIface);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1227,7 +1223,7 @@ public class NetworkStatsService extends INetworkStatsService.Stub {
|
|||||||
final NetworkStats xtSnapshot = getNetworkStatsXt();
|
final NetworkStats xtSnapshot = getNetworkStatsXt();
|
||||||
Trace.traceEnd(TRACE_TAG_NETWORK);
|
Trace.traceEnd(TRACE_TAG_NETWORK);
|
||||||
Trace.traceBegin(TRACE_TAG_NETWORK, "snapshotDev");
|
Trace.traceBegin(TRACE_TAG_NETWORK, "snapshotDev");
|
||||||
final NetworkStats devSnapshot = mNetworkManager.getNetworkStatsSummaryDev();
|
final NetworkStats devSnapshot = readNetworkStatsSummaryDev();
|
||||||
Trace.traceEnd(TRACE_TAG_NETWORK);
|
Trace.traceEnd(TRACE_TAG_NETWORK);
|
||||||
|
|
||||||
// Tethering snapshot for dev and xt stats. Counts per-interface data from tethering stats
|
// Tethering snapshot for dev and xt stats. Counts per-interface data from tethering stats
|
||||||
@@ -1621,6 +1617,30 @@ public class NetworkStatsService extends INetworkStatsService.Stub {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private NetworkStats readNetworkStatsSummaryDev() {
|
||||||
|
try {
|
||||||
|
return mStatsFactory.readNetworkStatsSummaryDev();
|
||||||
|
} catch (IOException e) {
|
||||||
|
throw new IllegalStateException(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private NetworkStats readNetworkStatsSummaryXt() {
|
||||||
|
try {
|
||||||
|
return mStatsFactory.readNetworkStatsSummaryXt();
|
||||||
|
} catch (IOException e) {
|
||||||
|
throw new IllegalStateException(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private NetworkStats readNetworkStatsUidDetail(int uid, String[] ifaces, int tag) {
|
||||||
|
try {
|
||||||
|
return mStatsFactory.readNetworkStatsDetail(uid, ifaces, tag);
|
||||||
|
} catch (IOException e) {
|
||||||
|
throw new IllegalStateException(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return snapshot of current UID statistics, including any
|
* Return snapshot of current UID statistics, including any
|
||||||
* {@link TrafficStats#UID_TETHERING}, video calling data usage, and {@link #mUidOperations}
|
* {@link TrafficStats#UID_TETHERING}, video calling data usage, and {@link #mUidOperations}
|
||||||
@@ -1631,8 +1651,7 @@ public class NetworkStatsService extends INetworkStatsService.Stub {
|
|||||||
*/
|
*/
|
||||||
private NetworkStats getNetworkStatsUidDetail(String[] ifaces)
|
private NetworkStats getNetworkStatsUidDetail(String[] ifaces)
|
||||||
throws RemoteException {
|
throws RemoteException {
|
||||||
final NetworkStats uidSnapshot = mNetworkManager.getNetworkStatsUidDetail(UID_ALL,
|
final NetworkStats uidSnapshot = readNetworkStatsUidDetail(UID_ALL, ifaces, TAG_ALL);
|
||||||
ifaces);
|
|
||||||
|
|
||||||
// fold tethering stats and operations into uid snapshot
|
// fold tethering stats and operations into uid snapshot
|
||||||
final NetworkStats tetherSnapshot = getNetworkStatsTethering(STATS_PER_UID);
|
final NetworkStats tetherSnapshot = getNetworkStatsTethering(STATS_PER_UID);
|
||||||
@@ -1662,7 +1681,7 @@ public class NetworkStatsService extends INetworkStatsService.Stub {
|
|||||||
* Return snapshot of current XT statistics with video calling data usage statistics.
|
* Return snapshot of current XT statistics with video calling data usage statistics.
|
||||||
*/
|
*/
|
||||||
private NetworkStats getNetworkStatsXt() throws RemoteException {
|
private NetworkStats getNetworkStatsXt() throws RemoteException {
|
||||||
final NetworkStats xtSnapshot = mNetworkManager.getNetworkStatsSummaryXt();
|
final NetworkStats xtSnapshot = readNetworkStatsSummaryXt();
|
||||||
|
|
||||||
final TelephonyManager telephonyManager = (TelephonyManager) mContext.getSystemService(
|
final TelephonyManager telephonyManager = (TelephonyManager) mContext.getSystemService(
|
||||||
Context.TELEPHONY_SERVICE);
|
Context.TELEPHONY_SERVICE);
|
||||||
|
|||||||
@@ -37,6 +37,7 @@ 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.STATS_PER_IFACE;
|
import static android.net.NetworkStats.STATS_PER_IFACE;
|
||||||
import static android.net.NetworkStats.STATS_PER_UID;
|
import static android.net.NetworkStats.STATS_PER_UID;
|
||||||
|
import static android.net.NetworkStats.TAG_ALL;
|
||||||
import static android.net.NetworkStats.TAG_NONE;
|
import static android.net.NetworkStats.TAG_NONE;
|
||||||
import static android.net.NetworkStats.UID_ALL;
|
import static android.net.NetworkStats.UID_ALL;
|
||||||
import static android.net.NetworkStatsHistory.FIELD_ALL;
|
import static android.net.NetworkStatsHistory.FIELD_ALL;
|
||||||
@@ -154,6 +155,7 @@ public class NetworkStatsServiceTest extends NetworkStatsBaseTest {
|
|||||||
private File mStatsDir;
|
private File mStatsDir;
|
||||||
|
|
||||||
private @Mock INetworkManagementService mNetManager;
|
private @Mock INetworkManagementService mNetManager;
|
||||||
|
private @Mock NetworkStatsFactory mStatsFactory;
|
||||||
private @Mock NetworkStatsSettings mSettings;
|
private @Mock NetworkStatsSettings mSettings;
|
||||||
private @Mock IBinder mBinder;
|
private @Mock IBinder mBinder;
|
||||||
private @Mock AlarmManager mAlarmManager;
|
private @Mock AlarmManager mAlarmManager;
|
||||||
@@ -189,8 +191,8 @@ public class NetworkStatsServiceTest extends NetworkStatsBaseTest {
|
|||||||
|
|
||||||
mService = new NetworkStatsService(
|
mService = new NetworkStatsService(
|
||||||
mServiceContext, mNetManager, mAlarmManager, wakeLock, mClock,
|
mServiceContext, mNetManager, mAlarmManager, wakeLock, mClock,
|
||||||
TelephonyManager.getDefault(), mSettings, new NetworkStatsObservers(),
|
TelephonyManager.getDefault(), mSettings, mStatsFactory,
|
||||||
mStatsDir, getBaseDir(mStatsDir));
|
new NetworkStatsObservers(), mStatsDir, getBaseDir(mStatsDir));
|
||||||
mHandlerThread = new HandlerThread("HandlerThread");
|
mHandlerThread = new HandlerThread("HandlerThread");
|
||||||
mHandlerThread.start();
|
mHandlerThread.start();
|
||||||
Handler.Callback callback = new NetworkStatsService.HandlerCallback(mService);
|
Handler.Callback callback = new NetworkStatsService.HandlerCallback(mService);
|
||||||
@@ -205,7 +207,7 @@ public class NetworkStatsServiceTest extends NetworkStatsBaseTest {
|
|||||||
|
|
||||||
mService.systemReady();
|
mService.systemReady();
|
||||||
// Verify that system ready fetches realtime stats
|
// Verify that system ready fetches realtime stats
|
||||||
verify(mNetManager).getNetworkStatsUidDetail(UID_ALL, INTERFACES_ALL);
|
verify(mStatsFactory).readNetworkStatsDetail(UID_ALL, INTERFACES_ALL, TAG_ALL);
|
||||||
|
|
||||||
mSession = mService.openSession();
|
mSession = mService.openSession();
|
||||||
assertNotNull("openSession() failed", mSession);
|
assertNotNull("openSession() failed", mSession);
|
||||||
@@ -696,7 +698,7 @@ public class NetworkStatsServiceTest extends NetworkStatsBaseTest {
|
|||||||
incrementCurrentTime(HOUR_IN_MILLIS);
|
incrementCurrentTime(HOUR_IN_MILLIS);
|
||||||
expectDefaultSettings();
|
expectDefaultSettings();
|
||||||
expectNetworkStatsSummary(buildEmptyStats());
|
expectNetworkStatsSummary(buildEmptyStats());
|
||||||
when(mNetManager.getNetworkStatsUidDetail(eq(UID_ALL), any()))
|
when(mStatsFactory.readNetworkStatsDetail(eq(UID_ALL), any(), eq(TAG_ALL)))
|
||||||
.thenReturn(new NetworkStats(getElapsedRealtime(), 1)
|
.thenReturn(new NetworkStats(getElapsedRealtime(), 1)
|
||||||
.addValues(uidStats));
|
.addValues(uidStats));
|
||||||
when(mNetManager.getNetworkStatsTethering(STATS_PER_UID))
|
when(mNetManager.getNetworkStatsTethering(STATS_PER_UID))
|
||||||
@@ -712,9 +714,10 @@ public class NetworkStatsServiceTest extends NetworkStatsBaseTest {
|
|||||||
//
|
//
|
||||||
// Additionally, we should have one call from the above call to mService#getDetailedUidStats
|
// Additionally, we should have one call from the above call to mService#getDetailedUidStats
|
||||||
// with the augmented ifaceFilter
|
// with the augmented ifaceFilter
|
||||||
verify(mNetManager, times(2)).getNetworkStatsUidDetail(UID_ALL, INTERFACES_ALL);
|
verify(mStatsFactory, times(2)).readNetworkStatsDetail(UID_ALL, INTERFACES_ALL, TAG_ALL);
|
||||||
verify(mNetManager, times(1)).getNetworkStatsUidDetail(
|
verify(mStatsFactory, times(1)).readNetworkStatsDetail(
|
||||||
eq(UID_ALL), eq(NetworkStatsFactory.augmentWithStackedInterfaces(ifaceFilter)));
|
eq(UID_ALL), eq(NetworkStatsFactory.augmentWithStackedInterfaces(ifaceFilter)),
|
||||||
|
eq(TAG_ALL));
|
||||||
assertTrue(ArrayUtils.contains(stats.getUniqueIfaces(), TEST_IFACE));
|
assertTrue(ArrayUtils.contains(stats.getUniqueIfaces(), TEST_IFACE));
|
||||||
assertTrue(ArrayUtils.contains(stats.getUniqueIfaces(), stackedIface));
|
assertTrue(ArrayUtils.contains(stats.getUniqueIfaces(), stackedIface));
|
||||||
assertEquals(2, stats.size());
|
assertEquals(2, stats.size());
|
||||||
@@ -1062,11 +1065,11 @@ public class NetworkStatsServiceTest extends NetworkStatsBaseTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void expectNetworkStatsSummaryDev(NetworkStats summary) throws Exception {
|
private void expectNetworkStatsSummaryDev(NetworkStats summary) throws Exception {
|
||||||
when(mNetManager.getNetworkStatsSummaryDev()).thenReturn(summary);
|
when(mStatsFactory.readNetworkStatsSummaryDev()).thenReturn(summary);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void expectNetworkStatsSummaryXt(NetworkStats summary) throws Exception {
|
private void expectNetworkStatsSummaryXt(NetworkStats summary) throws Exception {
|
||||||
when(mNetManager.getNetworkStatsSummaryXt()).thenReturn(summary);
|
when(mStatsFactory.readNetworkStatsSummaryXt()).thenReturn(summary);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void expectNetworkStatsTethering(int how, NetworkStats stats)
|
private void expectNetworkStatsTethering(int how, NetworkStats stats)
|
||||||
@@ -1080,7 +1083,8 @@ public class NetworkStatsServiceTest extends NetworkStatsBaseTest {
|
|||||||
|
|
||||||
private void expectNetworkStatsUidDetail(NetworkStats detail, NetworkStats tetherStats)
|
private void expectNetworkStatsUidDetail(NetworkStats detail, NetworkStats tetherStats)
|
||||||
throws Exception {
|
throws Exception {
|
||||||
when(mNetManager.getNetworkStatsUidDetail(UID_ALL, INTERFACES_ALL)).thenReturn(detail);
|
when(mStatsFactory.readNetworkStatsDetail(UID_ALL, INTERFACES_ALL, TAG_ALL))
|
||||||
|
.thenReturn(detail);
|
||||||
|
|
||||||
// also include tethering details, since they are folded into UID
|
// also include tethering details, since they are folded into UID
|
||||||
when(mNetManager.getNetworkStatsTethering(STATS_PER_UID)).thenReturn(tetherStats);
|
when(mNetManager.getNetworkStatsTethering(STATS_PER_UID)).thenReturn(tetherStats);
|
||||||
|
|||||||
Reference in New Issue
Block a user