Merge "Improve logging for NetworkStatsObservers"
This commit is contained in:
@@ -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));
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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();
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
Reference in New Issue
Block a user