From 1ce20d65e0ef111e0614c87e08d467109267bc94 Mon Sep 17 00:00:00 2001 From: Benedict Wong Date: Mon, 12 Apr 2021 14:41:01 -0700 Subject: [PATCH] Improve dump detail This change improves the formatting and detail provided by the VCN dump Bug: 8675309 Test: atest FrameworksVcnTests Change-Id: I8f13a0d8fe54e9bf8948e9576e9705024fe79611 --- .../android/server/VcnManagementService.java | 36 +++++++++++++++++++ .../vcn/TelephonySubscriptionTracker.java | 12 +++++++ .../server/vcn/UnderlyingNetworkTracker.java | 13 +++++++ .../server/vcn/VcnGatewayConnection.java | 6 ++++ .../server/vcn/VcnNetworkProvider.java | 4 +++ 5 files changed, 71 insertions(+) diff --git a/services/core/java/com/android/server/VcnManagementService.java b/services/core/java/com/android/server/VcnManagementService.java index 3b31ab272ff29..f1857b0d816fc 100644 --- a/services/core/java/com/android/server/VcnManagementService.java +++ b/services/core/java/com/android/server/VcnManagementService.java @@ -935,13 +935,31 @@ public class VcnManagementService extends IVcnManagementService.Stub { pw.println("VcnManagementService dump:"); pw.increaseIndent(); + pw.println("mNetworkProvider:"); + pw.increaseIndent(); mNetworkProvider.dump(pw); + pw.decreaseIndent(); + pw.println(); + + pw.println("mTrackingNetworkCallback:"); + pw.increaseIndent(); + mTrackingNetworkCallback.dump(pw); + pw.decreaseIndent(); + pw.println(); synchronized (mLock) { + pw.println("mLastSnapshot:"); + pw.increaseIndent(); + mLastSnapshot.dump(pw); + pw.decreaseIndent(); + pw.println(); + pw.println("mVcns:"); + pw.increaseIndent(); for (Vcn vcn : mVcns.values()) { vcn.dump(pw); } + pw.decreaseIndent(); pw.println(); } @@ -1003,6 +1021,24 @@ public class VcnManagementService extends IVcnManagementService.Stub { return false; } + + /** Dumps the state of this snapshot for logging and debugging purposes. */ + public void dump(IndentingPrintWriter pw) { + pw.println("TrackingNetworkCallback:"); + pw.increaseIndent(); + + pw.println("mCaps:"); + pw.increaseIndent(); + synchronized (mCaps) { + for (Entry entry : mCaps.entrySet()) { + pw.println(entry.getKey() + ": " + entry.getValue()); + } + } + pw.decreaseIndent(); + pw.println(); + + pw.decreaseIndent(); + } } /** VcnCallbackImpl for Vcn signals sent up to VcnManagementService. */ diff --git a/services/core/java/com/android/server/vcn/TelephonySubscriptionTracker.java b/services/core/java/com/android/server/vcn/TelephonySubscriptionTracker.java index d8a145d9ae339..19fbdbd86099d 100644 --- a/services/core/java/com/android/server/vcn/TelephonySubscriptionTracker.java +++ b/services/core/java/com/android/server/vcn/TelephonySubscriptionTracker.java @@ -43,6 +43,7 @@ import android.util.Slog; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.annotations.VisibleForTesting.Visibility; +import com.android.internal.util.IndentingPrintWriter; import java.util.Collections; import java.util.HashMap; @@ -320,6 +321,17 @@ public class TelephonySubscriptionTracker extends BroadcastReceiver { && mPrivilegedPackages.equals(other.mPrivilegedPackages); } + /** Dumps the state of this snapshot for logging and debugging purposes. */ + public void dump(IndentingPrintWriter pw) { + pw.println("TelephonySubscriptionSnapshot:"); + pw.increaseIndent(); + + pw.println("mSubIdToGroupMap: " + mSubIdToGroupMap); + pw.println("mPrivilegedPackages: " + mPrivilegedPackages); + + pw.decreaseIndent(); + } + @Override public String toString() { return "TelephonySubscriptionSnapshot{ " diff --git a/services/core/java/com/android/server/vcn/UnderlyingNetworkTracker.java b/services/core/java/com/android/server/vcn/UnderlyingNetworkTracker.java index ab9de77005b30..a59b368ec321c 100644 --- a/services/core/java/com/android/server/vcn/UnderlyingNetworkTracker.java +++ b/services/core/java/com/android/server/vcn/UnderlyingNetworkTracker.java @@ -31,6 +31,7 @@ import android.util.Slog; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.annotations.VisibleForTesting.Visibility; +import com.android.internal.util.IndentingPrintWriter; import com.android.server.vcn.TelephonySubscriptionTracker.TelephonySubscriptionSnapshot; import java.util.ArrayList; @@ -396,6 +397,18 @@ public class UnderlyingNetworkTracker { return Objects.hash(network, networkCapabilities, linkProperties, isBlocked); } + /** Dumps the state of this record for logging and debugging purposes. */ + public void dump(IndentingPrintWriter pw) { + pw.println("UnderlyingNetworkRecord:"); + pw.increaseIndent(); + + pw.println("mNetwork: " + network); + pw.println("mNetworkCapabilities: " + networkCapabilities); + pw.println("mLinkProperties: " + linkProperties); + + pw.decreaseIndent(); + } + /** Builder to incrementally construct an UnderlyingNetworkRecord. */ private static class Builder { @NonNull private final Network mNetwork; diff --git a/services/core/java/com/android/server/vcn/VcnGatewayConnection.java b/services/core/java/com/android/server/vcn/VcnGatewayConnection.java index c5a2c7484afb3..0765a0a43581b 100644 --- a/services/core/java/com/android/server/vcn/VcnGatewayConnection.java +++ b/services/core/java/com/android/server/vcn/VcnGatewayConnection.java @@ -2054,6 +2054,12 @@ public class VcnGatewayConnection extends StateMachine { "mNetworkAgent.getNetwork(): " + (mNetworkAgent == null ? null : mNetworkAgent.getNetwork())); + pw.println("mUnderlying:"); + pw.increaseIndent(); + mUnderlying.dump(pw); + pw.decreaseIndent(); + pw.println(); + pw.decreaseIndent(); } diff --git a/services/core/java/com/android/server/vcn/VcnNetworkProvider.java b/services/core/java/com/android/server/vcn/VcnNetworkProvider.java index be0deb57ee769..4de0fdaba676b 100644 --- a/services/core/java/com/android/server/vcn/VcnNetworkProvider.java +++ b/services/core/java/com/android/server/vcn/VcnNetworkProvider.java @@ -163,15 +163,19 @@ public class VcnNetworkProvider extends NetworkProvider { pw.increaseIndent(); pw.println("mListeners:"); + pw.increaseIndent(); for (NetworkRequestListener listener : mListeners) { pw.println(listener); } + pw.decreaseIndent(); pw.println(); pw.println("mRequests.values:"); + pw.increaseIndent(); for (NetworkRequestEntry entry : mRequests.values()) { entry.dump(pw); } + pw.decreaseIndent(); pw.println(); pw.decreaseIndent();