Merge "Improve logging for NetworkStatsObservers" am: ef1fdc95dd

Original change: https://android-review.googlesource.com/c/platform/packages/modules/Connectivity/+/2085625

Change-Id: Iacd0fa442ebba215de735d0a9f364cbdeabd7db8
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
Junyu Lai
2022-05-07 02:25:43 +00:00
committed by Automerger Merge Worker
3 changed files with 73 additions and 37 deletions

View File

@@ -18,6 +18,7 @@ package com.android.server.net;
import static android.app.usage.NetworkStatsManager.MIN_THRESHOLD_BYTES; import static android.app.usage.NetworkStatsManager.MIN_THRESHOLD_BYTES;
import android.annotation.NonNull;
import android.app.usage.NetworkStatsManager; import android.app.usage.NetworkStatsManager;
import android.content.Context; import android.content.Context;
import android.content.pm.PackageManager; import android.content.pm.PackageManager;
@@ -38,6 +39,7 @@ import android.os.Message;
import android.os.Process; import android.os.Process;
import android.os.RemoteException; import android.os.RemoteException;
import android.util.ArrayMap; import android.util.ArrayMap;
import android.util.IndentingPrintWriter;
import android.util.Log; import android.util.Log;
import android.util.SparseArray; import android.util.SparseArray;
@@ -52,6 +54,7 @@ import java.util.concurrent.atomic.AtomicInteger;
*/ */
class NetworkStatsObservers { class NetworkStatsObservers {
private static final String TAG = "NetworkStatsObservers"; private static final String TAG = "NetworkStatsObservers";
private static final boolean LOG = true;
private static final boolean LOGV = false; private static final boolean LOGV = false;
private static final int MSG_REGISTER = 1; private static final int MSG_REGISTER = 1;
@@ -77,13 +80,15 @@ class NetworkStatsObservers {
* *
* @return the normalized request wrapped within {@link RequestInfo}. * @return the normalized request wrapped within {@link RequestInfo}.
*/ */
public DataUsageRequest register(Context context, DataUsageRequest inputRequest, public DataUsageRequest register(@NonNull Context context,
IUsageCallback callback, int callingUid, @NetworkStatsAccess.Level int accessLevel) { @NonNull DataUsageRequest inputRequest, @NonNull IUsageCallback callback,
int callingPid, int callingUid, @NonNull String callingPackage,
@NetworkStatsAccess.Level int accessLevel) {
DataUsageRequest request = buildRequest(context, inputRequest, callingUid); DataUsageRequest request = buildRequest(context, inputRequest, callingUid);
RequestInfo requestInfo = buildRequestInfo(request, callback, callingUid, RequestInfo requestInfo = buildRequestInfo(request, callback, callingPid, callingUid,
accessLevel); callingPackage, accessLevel);
if (LOGV) Log.v(TAG, "Registering observer for " + request); if (LOG) Log.d(TAG, "Registering observer for " + requestInfo);
getHandler().sendMessage(mHandler.obtainMessage(MSG_REGISTER, requestInfo)); getHandler().sendMessage(mHandler.obtainMessage(MSG_REGISTER, requestInfo));
return request; return request;
} }
@@ -172,7 +177,7 @@ class NetworkStatsObservers {
RequestInfo requestInfo; RequestInfo requestInfo;
requestInfo = mDataUsageRequests.get(request.requestId); requestInfo = mDataUsageRequests.get(request.requestId);
if (requestInfo == null) { if (requestInfo == null) {
if (LOGV) Log.v(TAG, "Trying to unregister unknown request " + request); if (LOG) Log.d(TAG, "Trying to unregister unknown request " + request);
return; return;
} }
if (Process.SYSTEM_UID != callingUid && requestInfo.mCallingUid != callingUid) { if (Process.SYSTEM_UID != callingUid && requestInfo.mCallingUid != callingUid) {
@@ -180,7 +185,7 @@ class NetworkStatsObservers {
return; return;
} }
if (LOGV) Log.v(TAG, "Unregistering " + request); if (LOG) Log.d(TAG, "Unregistering " + requestInfo);
mDataUsageRequests.remove(request.requestId); mDataUsageRequests.remove(request.requestId);
requestInfo.unlinkDeathRecipient(); requestInfo.unlinkDeathRecipient();
requestInfo.callCallback(NetworkStatsManager.CALLBACK_RELEASED); requestInfo.callCallback(NetworkStatsManager.CALLBACK_RELEASED);
@@ -214,18 +219,19 @@ class NetworkStatsObservers {
} }
private RequestInfo buildRequestInfo(DataUsageRequest request, IUsageCallback callback, private RequestInfo buildRequestInfo(DataUsageRequest request, IUsageCallback callback,
int callingUid, @NetworkStatsAccess.Level int accessLevel) { int callingPid, int callingUid, @NonNull String callingPackage,
@NetworkStatsAccess.Level int accessLevel) {
if (accessLevel <= NetworkStatsAccess.Level.USER) { if (accessLevel <= NetworkStatsAccess.Level.USER) {
return new UserUsageRequestInfo(this, request, callback, callingUid, return new UserUsageRequestInfo(this, request, callback, callingPid,
accessLevel); callingUid, callingPackage, accessLevel);
} else { } else {
// Safety check in case a new access level is added and we forgot to update this // Safety check in case a new access level is added and we forgot to update this
if (accessLevel < NetworkStatsAccess.Level.DEVICESUMMARY) { if (accessLevel < NetworkStatsAccess.Level.DEVICESUMMARY) {
throw new IllegalArgumentException( throw new IllegalArgumentException(
"accessLevel " + accessLevel + " is less than DEVICESUMMARY."); "accessLevel " + accessLevel + " is less than DEVICESUMMARY.");
} }
return new NetworkUsageRequestInfo(this, request, callback, callingUid, return new NetworkUsageRequestInfo(this, request, callback, callingPid,
accessLevel); callingUid, callingPackage, accessLevel);
} }
} }
@@ -237,18 +243,22 @@ class NetworkStatsObservers {
private final NetworkStatsObservers mStatsObserver; private final NetworkStatsObservers mStatsObserver;
protected final DataUsageRequest mRequest; protected final DataUsageRequest mRequest;
private final IUsageCallback mCallback; private final IUsageCallback mCallback;
protected final int mCallingPid;
protected final int mCallingUid; protected final int mCallingUid;
protected final String mCallingPackage;
protected final @NetworkStatsAccess.Level int mAccessLevel; protected final @NetworkStatsAccess.Level int mAccessLevel;
protected NetworkStatsRecorder mRecorder; protected NetworkStatsRecorder mRecorder;
protected NetworkStatsCollection mCollection; protected NetworkStatsCollection mCollection;
RequestInfo(NetworkStatsObservers statsObserver, DataUsageRequest request, RequestInfo(NetworkStatsObservers statsObserver, DataUsageRequest request,
IUsageCallback callback, int callingUid, IUsageCallback callback, int callingPid, int callingUid,
@NetworkStatsAccess.Level int accessLevel) { @NonNull String callingPackage, @NetworkStatsAccess.Level int accessLevel) {
mStatsObserver = statsObserver; mStatsObserver = statsObserver;
mRequest = request; mRequest = request;
mCallback = callback; mCallback = callback;
mCallingPid = callingPid;
mCallingUid = callingUid; mCallingUid = callingUid;
mCallingPackage = callingPackage;
mAccessLevel = accessLevel; mAccessLevel = accessLevel;
try { try {
@@ -269,7 +279,8 @@ class NetworkStatsObservers {
@Override @Override
public String toString() { public String toString() {
return "RequestInfo from uid:" + mCallingUid return "RequestInfo from pid/uid:" + mCallingPid + "/" + mCallingUid
+ "(" + mCallingPackage + ")"
+ " for " + mRequest + " accessLevel:" + mAccessLevel; + " for " + mRequest + " accessLevel:" + mAccessLevel;
} }
@@ -338,9 +349,10 @@ class NetworkStatsObservers {
private static class NetworkUsageRequestInfo extends RequestInfo { private static class NetworkUsageRequestInfo extends RequestInfo {
NetworkUsageRequestInfo(NetworkStatsObservers statsObserver, DataUsageRequest request, NetworkUsageRequestInfo(NetworkStatsObservers statsObserver, DataUsageRequest request,
IUsageCallback callback, int callingUid, IUsageCallback callback, int callingPid, int callingUid,
@NetworkStatsAccess.Level int accessLevel) { @NonNull String callingPackage, @NetworkStatsAccess.Level int accessLevel) {
super(statsObserver, request, callback, callingUid, accessLevel); super(statsObserver, request, callback, callingPid, callingUid, callingPackage,
accessLevel);
} }
@Override @Override
@@ -380,9 +392,10 @@ class NetworkStatsObservers {
private static class UserUsageRequestInfo extends RequestInfo { private static class UserUsageRequestInfo extends RequestInfo {
UserUsageRequestInfo(NetworkStatsObservers statsObserver, DataUsageRequest request, UserUsageRequestInfo(NetworkStatsObservers statsObserver, DataUsageRequest request,
IUsageCallback callback, int callingUid, IUsageCallback callback, int callingPid, int callingUid,
@NetworkStatsAccess.Level int accessLevel) { @NonNull String callingPackage, @NetworkStatsAccess.Level int accessLevel) {
super(statsObserver, request, callback, callingUid, accessLevel); super(statsObserver, request, callback, callingPid, callingUid,
callingPackage, accessLevel);
} }
@Override @Override
@@ -448,4 +461,10 @@ class NetworkStatsObservers {
mCurrentTime = currentTime; mCurrentTime = currentTime;
} }
} }
public void dump(IndentingPrintWriter pw) {
for (int i = 0; i < mDataUsageRequests.size(); i++) {
pw.println(mDataUsageRequests.valueAt(i));
}
}
} }

View File

@@ -1279,13 +1279,14 @@ public class NetworkStatsService extends INetworkStatsService.Stub {
Objects.requireNonNull(request.template, "NetworkTemplate is null"); Objects.requireNonNull(request.template, "NetworkTemplate is null");
Objects.requireNonNull(callback, "callback is null"); Objects.requireNonNull(callback, "callback is null");
int callingUid = Binder.getCallingUid(); final int callingPid = Binder.getCallingPid();
final int callingUid = Binder.getCallingUid();
@NetworkStatsAccess.Level int accessLevel = checkAccessLevel(callingPackage); @NetworkStatsAccess.Level int accessLevel = checkAccessLevel(callingPackage);
DataUsageRequest normalizedRequest; DataUsageRequest normalizedRequest;
final long token = Binder.clearCallingIdentity(); final long token = Binder.clearCallingIdentity();
try { try {
normalizedRequest = mStatsObservers.register(mContext, normalizedRequest = mStatsObservers.register(mContext,
request, callback, callingUid, accessLevel); request, callback, callingPid, callingUid, callingPackage, accessLevel);
} finally { } finally {
Binder.restoreCallingIdentity(token); Binder.restoreCallingIdentity(token);
} }
@@ -2098,6 +2099,13 @@ public class NetworkStatsService extends INetworkStatsService.Stub {
} }
}); });
pw.decreaseIndent(); pw.decreaseIndent();
pw.println();
pw.println("Stats Observers:");
pw.increaseIndent();
mStatsObservers.dump(pw);
pw.decreaseIndent();
pw.println();
pw.println("Dev stats:"); pw.println("Dev stats:");
pw.increaseIndent(); pw.increaseIndent();

View File

@@ -86,11 +86,19 @@ public class NetworkStatsObserversTest {
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);
private static final int PID_SYSTEM = 1234;
private static final int PID_RED = 1235;
private static final int PID_BLUE = 1236;
private static final int UID_RED = UserHandle.PER_USER_RANGE + 1; private static final int UID_RED = UserHandle.PER_USER_RANGE + 1;
private static final int UID_BLUE = UserHandle.PER_USER_RANGE + 2; private static final int UID_BLUE = UserHandle.PER_USER_RANGE + 2;
private static final int UID_GREEN = UserHandle.PER_USER_RANGE + 3; private static final int UID_GREEN = UserHandle.PER_USER_RANGE + 3;
private static final int UID_ANOTHER_USER = 2 * UserHandle.PER_USER_RANGE + 4; private static final int UID_ANOTHER_USER = 2 * UserHandle.PER_USER_RANGE + 4;
private static final String PACKAGE_SYSTEM = "android";
private static final String PACKAGE_RED = "RED";
private static final String PACKAGE_BLUE = "BLUE";
private static final long WAIT_TIMEOUT_MS = 500; private static final long WAIT_TIMEOUT_MS = 500;
private static final long THRESHOLD_BYTES = 2 * MB_IN_BYTES; private static final long THRESHOLD_BYTES = 2 * MB_IN_BYTES;
private static final long BASE_BYTES = 7 * MB_IN_BYTES; private static final long BASE_BYTES = 7 * MB_IN_BYTES;
@@ -131,14 +139,15 @@ public class NetworkStatsObserversTest {
DataUsageRequest.REQUEST_ID_UNSET, sTemplateWifi, thresholdTooLowBytes); DataUsageRequest.REQUEST_ID_UNSET, sTemplateWifi, thresholdTooLowBytes);
final DataUsageRequest requestByApp = mStatsObservers.register(mContext, inputRequest, final DataUsageRequest requestByApp = mStatsObservers.register(mContext, inputRequest,
mUsageCallback, UID_RED, NetworkStatsAccess.Level.DEVICE); mUsageCallback, PID_RED , UID_RED, PACKAGE_RED, NetworkStatsAccess.Level.DEVICE);
assertTrue(requestByApp.requestId > 0); assertTrue(requestByApp.requestId > 0);
assertTrue(Objects.equals(sTemplateWifi, requestByApp.template)); assertTrue(Objects.equals(sTemplateWifi, requestByApp.template));
assertEquals(thresholdTooLowBytes, requestByApp.thresholdInBytes); assertEquals(thresholdTooLowBytes, requestByApp.thresholdInBytes);
// Verify the threshold requested by system uid won't be overridden. // Verify the threshold requested by system uid won't be overridden.
final DataUsageRequest requestBySystem = mStatsObservers.register(mContext, inputRequest, final DataUsageRequest requestBySystem = mStatsObservers.register(mContext, inputRequest,
mUsageCallback, Process.SYSTEM_UID, NetworkStatsAccess.Level.DEVICE); mUsageCallback, PID_SYSTEM, Process.SYSTEM_UID, PACKAGE_SYSTEM,
NetworkStatsAccess.Level.DEVICE);
assertTrue(requestBySystem.requestId > 0); assertTrue(requestBySystem.requestId > 0);
assertTrue(Objects.equals(sTemplateWifi, requestBySystem.template)); assertTrue(Objects.equals(sTemplateWifi, requestBySystem.template));
assertEquals(1, requestBySystem.thresholdInBytes); assertEquals(1, requestBySystem.thresholdInBytes);
@@ -151,7 +160,7 @@ public class NetworkStatsObserversTest {
DataUsageRequest.REQUEST_ID_UNSET, sTemplateWifi, highThresholdBytes); DataUsageRequest.REQUEST_ID_UNSET, sTemplateWifi, highThresholdBytes);
DataUsageRequest request = mStatsObservers.register(mContext, inputRequest, mUsageCallback, DataUsageRequest request = mStatsObservers.register(mContext, inputRequest, mUsageCallback,
Process.SYSTEM_UID, NetworkStatsAccess.Level.DEVICE); PID_SYSTEM, Process.SYSTEM_UID, PACKAGE_SYSTEM, NetworkStatsAccess.Level.DEVICE);
assertTrue(request.requestId > 0); assertTrue(request.requestId > 0);
assertTrue(Objects.equals(sTemplateWifi, request.template)); assertTrue(Objects.equals(sTemplateWifi, request.template));
assertEquals(highThresholdBytes, request.thresholdInBytes); assertEquals(highThresholdBytes, request.thresholdInBytes);
@@ -163,13 +172,13 @@ public class NetworkStatsObserversTest {
DataUsageRequest.REQUEST_ID_UNSET, sTemplateWifi, THRESHOLD_BYTES); DataUsageRequest.REQUEST_ID_UNSET, sTemplateWifi, THRESHOLD_BYTES);
DataUsageRequest request1 = mStatsObservers.register(mContext, inputRequest, mUsageCallback, DataUsageRequest request1 = mStatsObservers.register(mContext, inputRequest, mUsageCallback,
Process.SYSTEM_UID, NetworkStatsAccess.Level.DEVICE); PID_SYSTEM, Process.SYSTEM_UID, PACKAGE_SYSTEM, NetworkStatsAccess.Level.DEVICE);
assertTrue(request1.requestId > 0); assertTrue(request1.requestId > 0);
assertTrue(Objects.equals(sTemplateWifi, request1.template)); assertTrue(Objects.equals(sTemplateWifi, request1.template));
assertEquals(THRESHOLD_BYTES, request1.thresholdInBytes); assertEquals(THRESHOLD_BYTES, request1.thresholdInBytes);
DataUsageRequest request2 = mStatsObservers.register(mContext, inputRequest, mUsageCallback, DataUsageRequest request2 = mStatsObservers.register(mContext, inputRequest, mUsageCallback,
Process.SYSTEM_UID, NetworkStatsAccess.Level.DEVICE); PID_SYSTEM, Process.SYSTEM_UID, PACKAGE_SYSTEM, NetworkStatsAccess.Level.DEVICE);
assertTrue(request2.requestId > request1.requestId); assertTrue(request2.requestId > request1.requestId);
assertTrue(Objects.equals(sTemplateWifi, request2.template)); assertTrue(Objects.equals(sTemplateWifi, request2.template));
assertEquals(THRESHOLD_BYTES, request2.thresholdInBytes); assertEquals(THRESHOLD_BYTES, request2.thresholdInBytes);
@@ -189,7 +198,7 @@ public class NetworkStatsObserversTest {
DataUsageRequest.REQUEST_ID_UNSET, sTemplateImsi1, THRESHOLD_BYTES); DataUsageRequest.REQUEST_ID_UNSET, sTemplateImsi1, THRESHOLD_BYTES);
DataUsageRequest request = mStatsObservers.register(mContext, inputRequest, mUsageCallback, DataUsageRequest request = mStatsObservers.register(mContext, inputRequest, mUsageCallback,
Process.SYSTEM_UID, NetworkStatsAccess.Level.DEVICE); PID_SYSTEM, Process.SYSTEM_UID, PACKAGE_SYSTEM, NetworkStatsAccess.Level.DEVICE);
assertTrue(request.requestId > 0); assertTrue(request.requestId > 0);
assertTrue(Objects.equals(sTemplateImsi1, request.template)); assertTrue(Objects.equals(sTemplateImsi1, request.template));
assertEquals(THRESHOLD_BYTES, request.thresholdInBytes); assertEquals(THRESHOLD_BYTES, request.thresholdInBytes);
@@ -209,7 +218,7 @@ public class NetworkStatsObserversTest {
DataUsageRequest.REQUEST_ID_UNSET, sTemplateImsi1, THRESHOLD_BYTES); DataUsageRequest.REQUEST_ID_UNSET, sTemplateImsi1, THRESHOLD_BYTES);
DataUsageRequest request = mStatsObservers.register(mContext, inputRequest, mUsageCallback, DataUsageRequest request = mStatsObservers.register(mContext, inputRequest, mUsageCallback,
UID_RED, NetworkStatsAccess.Level.DEVICE); PID_RED, UID_RED, PACKAGE_RED, NetworkStatsAccess.Level.DEVICE);
assertTrue(request.requestId > 0); assertTrue(request.requestId > 0);
assertTrue(Objects.equals(sTemplateImsi1, request.template)); assertTrue(Objects.equals(sTemplateImsi1, request.template));
assertEquals(THRESHOLD_BYTES, request.thresholdInBytes); assertEquals(THRESHOLD_BYTES, request.thresholdInBytes);
@@ -237,7 +246,7 @@ public class NetworkStatsObserversTest {
DataUsageRequest.REQUEST_ID_UNSET, sTemplateImsi1, THRESHOLD_BYTES); DataUsageRequest.REQUEST_ID_UNSET, sTemplateImsi1, THRESHOLD_BYTES);
DataUsageRequest request = mStatsObservers.register(mContext, inputRequest, mUsageCallback, DataUsageRequest request = mStatsObservers.register(mContext, inputRequest, mUsageCallback,
Process.SYSTEM_UID, NetworkStatsAccess.Level.DEVICE); PID_SYSTEM, Process.SYSTEM_UID, PACKAGE_SYSTEM, NetworkStatsAccess.Level.DEVICE);
assertTrue(request.requestId > 0); assertTrue(request.requestId > 0);
assertTrue(Objects.equals(sTemplateImsi1, request.template)); assertTrue(Objects.equals(sTemplateImsi1, request.template));
assertEquals(THRESHOLD_BYTES, request.thresholdInBytes); assertEquals(THRESHOLD_BYTES, request.thresholdInBytes);
@@ -261,7 +270,7 @@ public class NetworkStatsObserversTest {
DataUsageRequest.REQUEST_ID_UNSET, sTemplateImsi1, THRESHOLD_BYTES); DataUsageRequest.REQUEST_ID_UNSET, sTemplateImsi1, THRESHOLD_BYTES);
DataUsageRequest request = mStatsObservers.register(mContext, inputRequest, mUsageCallback, DataUsageRequest request = mStatsObservers.register(mContext, inputRequest, mUsageCallback,
Process.SYSTEM_UID, NetworkStatsAccess.Level.DEVICE); PID_SYSTEM, Process.SYSTEM_UID, PACKAGE_SYSTEM, NetworkStatsAccess.Level.DEVICE);
assertTrue(request.requestId > 0); assertTrue(request.requestId > 0);
assertTrue(Objects.equals(sTemplateImsi1, request.template)); assertTrue(Objects.equals(sTemplateImsi1, request.template));
assertEquals(THRESHOLD_BYTES, request.thresholdInBytes); assertEquals(THRESHOLD_BYTES, request.thresholdInBytes);
@@ -291,7 +300,7 @@ public class NetworkStatsObserversTest {
DataUsageRequest.REQUEST_ID_UNSET, sTemplateImsi1, THRESHOLD_BYTES); DataUsageRequest.REQUEST_ID_UNSET, sTemplateImsi1, THRESHOLD_BYTES);
DataUsageRequest request = mStatsObservers.register(mContext, inputRequest, mUsageCallback, DataUsageRequest request = mStatsObservers.register(mContext, inputRequest, mUsageCallback,
Process.SYSTEM_UID, NetworkStatsAccess.Level.DEVICE); PID_SYSTEM, Process.SYSTEM_UID, PACKAGE_SYSTEM, NetworkStatsAccess.Level.DEVICE);
assertTrue(request.requestId > 0); assertTrue(request.requestId > 0);
assertTrue(Objects.equals(sTemplateImsi1, request.template)); assertTrue(Objects.equals(sTemplateImsi1, request.template));
assertEquals(THRESHOLD_BYTES, request.thresholdInBytes); assertEquals(THRESHOLD_BYTES, request.thresholdInBytes);
@@ -322,7 +331,7 @@ public class NetworkStatsObserversTest {
DataUsageRequest.REQUEST_ID_UNSET, sTemplateImsi1, THRESHOLD_BYTES); DataUsageRequest.REQUEST_ID_UNSET, sTemplateImsi1, THRESHOLD_BYTES);
DataUsageRequest request = mStatsObservers.register(mContext, inputRequest, mUsageCallback, DataUsageRequest request = mStatsObservers.register(mContext, inputRequest, mUsageCallback,
UID_RED, NetworkStatsAccess.Level.DEFAULT); PID_RED, UID_RED, PACKAGE_SYSTEM , NetworkStatsAccess.Level.DEFAULT);
assertTrue(request.requestId > 0); assertTrue(request.requestId > 0);
assertTrue(Objects.equals(sTemplateImsi1, request.template)); assertTrue(Objects.equals(sTemplateImsi1, request.template));
assertEquals(THRESHOLD_BYTES, request.thresholdInBytes); assertEquals(THRESHOLD_BYTES, request.thresholdInBytes);
@@ -355,7 +364,7 @@ public class NetworkStatsObserversTest {
DataUsageRequest.REQUEST_ID_UNSET, sTemplateImsi1, THRESHOLD_BYTES); DataUsageRequest.REQUEST_ID_UNSET, sTemplateImsi1, THRESHOLD_BYTES);
DataUsageRequest request = mStatsObservers.register(mContext, inputRequest, mUsageCallback, DataUsageRequest request = mStatsObservers.register(mContext, inputRequest, mUsageCallback,
UID_BLUE, NetworkStatsAccess.Level.DEFAULT); PID_BLUE, UID_BLUE, PACKAGE_BLUE, NetworkStatsAccess.Level.DEFAULT);
assertTrue(request.requestId > 0); assertTrue(request.requestId > 0);
assertTrue(Objects.equals(sTemplateImsi1, request.template)); assertTrue(Objects.equals(sTemplateImsi1, request.template));
assertEquals(THRESHOLD_BYTES, request.thresholdInBytes); assertEquals(THRESHOLD_BYTES, request.thresholdInBytes);
@@ -387,7 +396,7 @@ public class NetworkStatsObserversTest {
DataUsageRequest.REQUEST_ID_UNSET, sTemplateImsi1, THRESHOLD_BYTES); DataUsageRequest.REQUEST_ID_UNSET, sTemplateImsi1, THRESHOLD_BYTES);
DataUsageRequest request = mStatsObservers.register(mContext, inputRequest, mUsageCallback, DataUsageRequest request = mStatsObservers.register(mContext, inputRequest, mUsageCallback,
UID_BLUE, NetworkStatsAccess.Level.USER); PID_BLUE, UID_BLUE, PACKAGE_BLUE, NetworkStatsAccess.Level.USER);
assertTrue(request.requestId > 0); assertTrue(request.requestId > 0);
assertTrue(Objects.equals(sTemplateImsi1, request.template)); assertTrue(Objects.equals(sTemplateImsi1, request.template));
assertEquals(THRESHOLD_BYTES, request.thresholdInBytes); assertEquals(THRESHOLD_BYTES, request.thresholdInBytes);
@@ -420,7 +429,7 @@ public class NetworkStatsObserversTest {
DataUsageRequest.REQUEST_ID_UNSET, sTemplateImsi1, THRESHOLD_BYTES); DataUsageRequest.REQUEST_ID_UNSET, sTemplateImsi1, THRESHOLD_BYTES);
DataUsageRequest request = mStatsObservers.register(mContext, inputRequest, mUsageCallback, DataUsageRequest request = mStatsObservers.register(mContext, inputRequest, mUsageCallback,
UID_RED, NetworkStatsAccess.Level.USER); PID_RED, UID_RED, PACKAGE_RED, NetworkStatsAccess.Level.USER);
assertTrue(request.requestId > 0); assertTrue(request.requestId > 0);
assertTrue(Objects.equals(sTemplateImsi1, request.template)); assertTrue(Objects.equals(sTemplateImsi1, request.template));
assertEquals(THRESHOLD_BYTES, request.thresholdInBytes); assertEquals(THRESHOLD_BYTES, request.thresholdInBytes);