Log NetworkRequestInfo to get more detailed history

Bug: 21641983
Bug: 22235775
Bug: 22299819
Bug: 22358164
Change-Id: I48a2d162dd499a3590f06d805267a63822856969
This commit is contained in:
Erik Kline
2015-07-09 18:24:03 +09:00
parent 718df19ed0
commit edf878bedb

View File

@@ -407,6 +407,10 @@ public class ConnectivityService extends IConnectivityManager.Stub
// sequence number of NetworkRequests // sequence number of NetworkRequests
private int mNextNetworkRequestId = 1; private int mNextNetworkRequestId = 1;
// NetworkRequest activity String log entries.
private static final int MAX_NETWORK_REQUEST_LOGS = 20;
private final LocalLog mNetworkRequestInfoLogs = new LocalLog(MAX_NETWORK_REQUEST_LOGS);
// Array of <Network,ReadOnlyLocalLogs> tracking network validation and results // Array of <Network,ReadOnlyLocalLogs> tracking network validation and results
private static final int MAX_VALIDATION_LOGS = 10; private static final int MAX_VALIDATION_LOGS = 10;
private final ArrayDeque<Pair<Network,ReadOnlyLocalLog>> mValidationLogs = private final ArrayDeque<Pair<Network,ReadOnlyLocalLog>> mValidationLogs =
@@ -609,8 +613,10 @@ public class ConnectivityService extends IConnectivityManager.Stub
if (DBG) log("ConnectivityService starting up"); if (DBG) log("ConnectivityService starting up");
mDefaultRequest = createInternetRequestForTransport(-1); mDefaultRequest = createInternetRequestForTransport(-1);
mNetworkRequests.put(mDefaultRequest, new NetworkRequestInfo( NetworkRequestInfo defaultNRI = new NetworkRequestInfo(null, mDefaultRequest,
null, mDefaultRequest, new Binder(), NetworkRequestInfo.REQUEST)); new Binder(), NetworkRequestInfo.REQUEST);
mNetworkRequests.put(mDefaultRequest, defaultNRI);
mNetworkRequestInfoLogs.log("REGISTER " + defaultNRI);
mDefaultMobileDataRequest = createInternetRequestForTransport( mDefaultMobileDataRequest = createInternetRequestForTransport(
NetworkCapabilities.TRANSPORT_CELLULAR); NetworkCapabilities.TRANSPORT_CELLULAR);
@@ -1858,6 +1864,12 @@ public class ConnectivityService extends IConnectivityManager.Stub
pw.decreaseIndent(); pw.decreaseIndent();
} }
} }
pw.println();
pw.println("mNetworkRequestInfoLogs (most recent first):");
pw.increaseIndent();
mNetworkRequestInfoLogs.reverseDump(fd, pw, args);
pw.decreaseIndent();
} }
} }
@@ -2207,6 +2219,7 @@ public class ConnectivityService extends IConnectivityManager.Stub
private void handleRegisterNetworkRequest(NetworkRequestInfo nri) { private void handleRegisterNetworkRequest(NetworkRequestInfo nri) {
mNetworkRequests.put(nri.request, nri); mNetworkRequests.put(nri.request, nri);
mNetworkRequestInfoLogs.log("REGISTER " + nri);
rematchAllNetworksAndRequests(null, 0); rematchAllNetworksAndRequests(null, 0);
if (nri.isRequest && mNetworkForRequestId.get(nri.request.requestId) == null) { if (nri.isRequest && mNetworkForRequestId.get(nri.request.requestId) == null) {
sendUpdatedScoreToFactories(nri.request, 0); sendUpdatedScoreToFactories(nri.request, 0);
@@ -2256,6 +2269,7 @@ public class ConnectivityService extends IConnectivityManager.Stub
if (DBG) log("releasing NetworkRequest " + request); if (DBG) log("releasing NetworkRequest " + request);
nri.unlinkDeathRecipient(); nri.unlinkDeathRecipient();
mNetworkRequests.remove(request); mNetworkRequests.remove(request);
mNetworkRequestInfoLogs.log("RELEASE " + nri);
if (nri.isRequest) { if (nri.isRequest) {
// Find all networks that are satisfying this request and remove the request // Find all networks that are satisfying this request and remove the request
// from their request lists. // from their request lists.
@@ -3528,8 +3542,9 @@ public class ConnectivityService extends IConnectivityManager.Stub
} }
public String toString() { public String toString() {
return (isRequest ? "Request" : "Listen") + " from uid/pid:" + mUid + "/" + return (isRequest ? "Request" : "Listen") +
mPid + " for " + request + " from uid/pid:" + mUid + "/" + mPid +
" for " + request +
(mPendingIntent == null ? "" : " to trigger " + mPendingIntent); (mPendingIntent == null ? "" : " to trigger " + mPendingIntent);
} }
} }
@@ -3559,9 +3574,9 @@ public class ConnectivityService extends IConnectivityManager.Stub
NetworkRequest networkRequest = new NetworkRequest(networkCapabilities, legacyType, NetworkRequest networkRequest = new NetworkRequest(networkCapabilities, legacyType,
nextNetworkRequestId()); nextNetworkRequestId());
if (DBG) log("requestNetwork for " + networkRequest);
NetworkRequestInfo nri = new NetworkRequestInfo(messenger, networkRequest, binder, NetworkRequestInfo nri = new NetworkRequestInfo(messenger, networkRequest, binder,
NetworkRequestInfo.REQUEST); NetworkRequestInfo.REQUEST);
if (DBG) log("requestNetwork for " + nri);
mHandler.sendMessage(mHandler.obtainMessage(EVENT_REGISTER_NETWORK_REQUEST, nri)); mHandler.sendMessage(mHandler.obtainMessage(EVENT_REGISTER_NETWORK_REQUEST, nri));
if (timeoutMs > 0) { if (timeoutMs > 0) {
@@ -3624,9 +3639,9 @@ public class ConnectivityService extends IConnectivityManager.Stub
NetworkRequest networkRequest = new NetworkRequest(networkCapabilities, TYPE_NONE, NetworkRequest networkRequest = new NetworkRequest(networkCapabilities, TYPE_NONE,
nextNetworkRequestId()); nextNetworkRequestId());
if (DBG) log("pendingRequest for " + networkRequest + " to trigger " + operation);
NetworkRequestInfo nri = new NetworkRequestInfo(networkRequest, operation, NetworkRequestInfo nri = new NetworkRequestInfo(networkRequest, operation,
NetworkRequestInfo.REQUEST); NetworkRequestInfo.REQUEST);
if (DBG) log("pendingRequest for " + nri);
mHandler.sendMessage(mHandler.obtainMessage(EVENT_REGISTER_NETWORK_REQUEST_WITH_INTENT, mHandler.sendMessage(mHandler.obtainMessage(EVENT_REGISTER_NETWORK_REQUEST_WITH_INTENT,
nri)); nri));
return networkRequest; return networkRequest;
@@ -3674,11 +3689,11 @@ public class ConnectivityService extends IConnectivityManager.Stub
enforceAccessPermission(); enforceAccessPermission();
} }
NetworkRequest networkRequest = new NetworkRequest(new NetworkCapabilities( NetworkRequest networkRequest = new NetworkRequest(
networkCapabilities), TYPE_NONE, nextNetworkRequestId()); new NetworkCapabilities(networkCapabilities), TYPE_NONE, nextNetworkRequestId());
if (DBG) log("listenForNetwork for " + networkRequest);
NetworkRequestInfo nri = new NetworkRequestInfo(messenger, networkRequest, binder, NetworkRequestInfo nri = new NetworkRequestInfo(messenger, networkRequest, binder,
NetworkRequestInfo.LISTEN); NetworkRequestInfo.LISTEN);
if (DBG) log("listenForNetwork for " + nri);
mHandler.sendMessage(mHandler.obtainMessage(EVENT_REGISTER_NETWORK_LISTENER, nri)); mHandler.sendMessage(mHandler.obtainMessage(EVENT_REGISTER_NETWORK_LISTENER, nri));
return networkRequest; return networkRequest;
@@ -3692,11 +3707,11 @@ public class ConnectivityService extends IConnectivityManager.Stub
enforceAccessPermission(); enforceAccessPermission();
} }
NetworkRequest networkRequest = new NetworkRequest(new NetworkCapabilities( NetworkRequest networkRequest = new NetworkRequest(
networkCapabilities), TYPE_NONE, nextNetworkRequestId()); new NetworkCapabilities(networkCapabilities), TYPE_NONE, nextNetworkRequestId());
if (DBG) log("pendingListenForNetwork for " + networkRequest + " to trigger " + operation);
NetworkRequestInfo nri = new NetworkRequestInfo(networkRequest, operation, NetworkRequestInfo nri = new NetworkRequestInfo(networkRequest, operation,
NetworkRequestInfo.LISTEN); NetworkRequestInfo.LISTEN);
if (DBG) log("pendingListenForNetwork for " + nri);
mHandler.sendMessage(mHandler.obtainMessage(EVENT_REGISTER_NETWORK_LISTENER, nri)); mHandler.sendMessage(mHandler.obtainMessage(EVENT_REGISTER_NETWORK_LISTENER, nri));
} }