From 8b298a00b23e3b82dfc6ccebf3a8213ad9223b12 Mon Sep 17 00:00:00 2001 From: James Mattis Date: Tue, 1 Jun 2021 22:34:04 -0700 Subject: [PATCH] Updating formatting and text for per-app dumpsys Fixing the indentation for dumpsys CONNECTIVITY for per app network info. Also updated to more clearly show when the active network is currently tagged to the "no service network" for configured apps so as to more clearly show intent to dumpsys consumers. Finally, correctly showing profile network preferences which weren't being shown previously. Prior formatting with no per-app networks: Current per-app default networks: Per-App Network Preference: none Updated formatting with no per-app networks: Current network preferences: Default requests: Prior formatting with active per-app networks ("none" is shown in this case since profile network preferences weren't correctly displayed): Current per-app default networks: Per-App Network Preference: none Is per-app network active: true Active network: 100 Tracked UIDs: {1100000-1199999} Updated formatting with active per-app networks: Current network preferences: Profile preferences: [[ProfileNetworkPreference user=UserHandle{11} caps=[ Capabilities: INTERNET&TRUSTED&NOT_VCN_MANAGED&ENTERPRISE Uids: <{1100000-1199999}>]]] OEM preferences: OemNetworkPreferences{mNetworkMappings={android.net.cts=-1}} Mobile data preferred UIDs: mMobileDataPreferredUids: {1, 2, 3} Default requests: Request: [uid/pid:1000/1423] - Satisfier: [100] Preference order: 10 Tracked UIDs:{1100000-1199999} Bug: 189860802 Test: adb shell dumpsys connectivity Change-Id: I5ed4bb83e9e5a4497f5019ab4e4c0f238989a246 --- .../android/server/ConnectivityService.java | 66 ++++++++++++------- 1 file changed, 42 insertions(+), 24 deletions(-) diff --git a/service/src/com/android/server/ConnectivityService.java b/service/src/com/android/server/ConnectivityService.java index 7223c194b1..cf5f1c7297 100644 --- a/service/src/com/android/server/ConnectivityService.java +++ b/service/src/com/android/server/ConnectivityService.java @@ -3014,9 +3014,9 @@ public class ConnectivityService extends IConnectivityManager.Stub } pw.println(); - pw.print("Current per-app default networks: "); + pw.println("Current network preferences: "); pw.increaseIndent(); - dumpPerAppNetworkPreferences(pw); + dumpNetworkPreferences(pw); pw.decreaseIndent(); pw.println(); @@ -3144,37 +3144,55 @@ public class ConnectivityService extends IConnectivityManager.Stub } } - private void dumpPerAppNetworkPreferences(IndentingPrintWriter pw) { - pw.println("Per-App Network Preference:"); - pw.increaseIndent(); - if (0 == mOemNetworkPreferences.getNetworkPreferences().size()) { - pw.println("none"); - } else { - pw.println(mOemNetworkPreferences.toString()); + private void dumpNetworkPreferences(IndentingPrintWriter pw) { + if (!mProfileNetworkPreferences.isEmpty()) { + pw.println("Profile preferences:"); + pw.increaseIndent(); + pw.println(mProfileNetworkPreferences.preferences); + pw.decreaseIndent(); + } + if (!mOemNetworkPreferences.isEmpty()) { + pw.println("OEM preferences:"); + pw.increaseIndent(); + pw.println(mOemNetworkPreferences); + pw.decreaseIndent(); + } + if (!mMobileDataPreferredUids.isEmpty()) { + pw.println("Mobile data preferred UIDs:"); + pw.increaseIndent(); + pw.println(mMobileDataPreferredUids); + pw.decreaseIndent(); } - pw.decreaseIndent(); + pw.println("Default requests:"); + pw.increaseIndent(); + dumpPerAppDefaultRequests(pw); + pw.decreaseIndent(); + } + + private void dumpPerAppDefaultRequests(IndentingPrintWriter pw) { for (final NetworkRequestInfo defaultRequest : mDefaultNetworkRequests) { if (mDefaultRequest == defaultRequest) { continue; } - final boolean isActive = null != defaultRequest.getSatisfier(); - pw.println("Is per-app network active:"); - pw.increaseIndent(); - pw.println(isActive); - if (isActive) { - pw.println("Active network: " + defaultRequest.getSatisfier().network.netId); - } - pw.println("Tracked UIDs:"); - pw.increaseIndent(); - if (0 == defaultRequest.mRequests.size()) { - pw.println("none, this should never occur."); + final NetworkAgentInfo satisfier = defaultRequest.getSatisfier(); + final String networkOutput; + if (null == satisfier) { + networkOutput = "null"; + } else if (mNoServiceNetwork.equals(satisfier)) { + networkOutput = "no service network"; } else { - pw.println(defaultRequest.mRequests.get(0).networkCapabilities.getUidRanges()); + networkOutput = String.valueOf(satisfier.network.netId); } - pw.decreaseIndent(); - pw.decreaseIndent(); + final String asUidString = (defaultRequest.mAsUid == defaultRequest.mUid) + ? "" : " asUid: " + defaultRequest.mAsUid; + final String requestInfo = "Request: [uid/pid:" + defaultRequest.mUid + "/" + + defaultRequest.mPid + asUidString + "]"; + final String satisfierOutput = "Satisfier: [" + networkOutput + "]" + + " Preference order: " + defaultRequest.mPreferenceOrder + + " Tracked UIDs: " + defaultRequest.getUids(); + pw.println(requestInfo + " - " + satisfierOutput); } }