Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 5c010903 authored by Vishnu Nair's avatar Vishnu Nair
Browse files

Register ConnectivityService with dumpsys priorities

Register service with HIGH and NORMAL priority suppport. Dump network diagnostics as part of the HIGH priority bucket.

Test: adb shell setprop dumpstate.version "2.0-dev-priority-dumps" && \
                adb bugreport ~/tmp_new.zip
Test: adb shell dumpsys --priority HIGH

Change-Id: I1ad263efbc264c3328e70dc9f7ddeb2d31bc4d41
parent fe0c2c45
Loading
Loading
Loading
Loading
+28 −0
Original line number Original line Diff line number Diff line
@@ -143,6 +143,7 @@ import com.android.server.connectivity.tethering.TetheringDependencies;
import com.android.server.net.BaseNetworkObserver;
import com.android.server.net.BaseNetworkObserver;
import com.android.server.net.LockdownVpnTracker;
import com.android.server.net.LockdownVpnTracker;
import com.android.server.net.NetworkPolicyManagerInternal;
import com.android.server.net.NetworkPolicyManagerInternal;
import com.android.server.utils.PriorityDump;


import com.google.android.collect.Lists;
import com.google.android.collect.Lists;


@@ -682,6 +683,28 @@ public class ConnectivityService extends IConnectivityManager.Stub
    }
    }
    private LegacyTypeTracker mLegacyTypeTracker = new LegacyTypeTracker();
    private LegacyTypeTracker mLegacyTypeTracker = new LegacyTypeTracker();


    /**
     * Helper class which parses out priority arguments and dumps sections according to their
     * priority. If priority arguments are omitted, function calls the legacy dump command.
     */
    private final PriorityDump.PriorityDumper mPriorityDumper = new PriorityDump.PriorityDumper() {
        @Override
        public void dumpHigh(FileDescriptor fd, PrintWriter pw, String[] args, boolean asProto) {
            doDump(fd, pw, new String[] {DIAG_ARG}, asProto);
            doDump(fd, pw, new String[] {SHORT_ARG}, asProto);
        }

        @Override
        public void dumpNormal(FileDescriptor fd, PrintWriter pw, String[] args, boolean asProto) {
            doDump(fd, pw, args, asProto);
        }

        @Override
        public void dump(FileDescriptor fd, PrintWriter pw, String[] args, boolean asProto) {
           doDump(fd, pw, args, asProto);
        }
    };

    public ConnectivityService(Context context, INetworkManagementService netManager,
    public ConnectivityService(Context context, INetworkManagementService netManager,
            INetworkStatsService statsService, INetworkPolicyManager policyManager) {
            INetworkStatsService statsService, INetworkPolicyManager policyManager) {
        this(context, netManager, statsService, policyManager, new IpConnectivityLog());
        this(context, netManager, statsService, policyManager, new IpConnectivityLog());
@@ -1862,8 +1885,13 @@ public class ConnectivityService extends IConnectivityManager.Stub


    @Override
    @Override
    protected void dump(FileDescriptor fd, PrintWriter writer, String[] args) {
    protected void dump(FileDescriptor fd, PrintWriter writer, String[] args) {
        PriorityDump.dump(mPriorityDumper, fd, writer, args);
    }

    private void doDump(FileDescriptor fd, PrintWriter writer, String[] args, boolean asProto) {
        final IndentingPrintWriter pw = new IndentingPrintWriter(writer, "  ");
        final IndentingPrintWriter pw = new IndentingPrintWriter(writer, "  ");
        if (!DumpUtils.checkDumpPermission(mContext, TAG, pw)) return;
        if (!DumpUtils.checkDumpPermission(mContext, TAG, pw)) return;
        if (asProto) return;


        if (argsContain(args, DIAG_ARG)) {
        if (argsContain(args, DIAG_ARG)) {
            dumpNetworkDiagnostics(pw);
            dumpNetworkDiagnostics(pw);
+3 −1
Original line number Original line Diff line number Diff line
@@ -1138,7 +1138,9 @@ public final class SystemServer {
                try {
                try {
                    connectivity = new ConnectivityService(
                    connectivity = new ConnectivityService(
                            context, networkManagement, networkStats, networkPolicy);
                            context, networkManagement, networkStats, networkPolicy);
                    ServiceManager.addService(Context.CONNECTIVITY_SERVICE, connectivity);
                    ServiceManager.addService(Context.CONNECTIVITY_SERVICE, connectivity,
                            /* allowIsolated= */ false,
                            DUMP_FLAG_PRIORITY_HIGH | DUMP_FLAG_PRIORITY_NORMAL);
                    networkStats.bindConnectivityManager(connectivity);
                    networkStats.bindConnectivityManager(connectivity);
                    networkPolicy.bindConnectivityManager(connectivity);
                    networkPolicy.bindConnectivityManager(connectivity);
                } catch (Throwable e) {
                } catch (Throwable e) {