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

Commit 0818df08 authored by Hui Yu's avatar Hui Yu
Browse files

Usagestats dumpsys print list of usagestats database files.

Print total number and list of daily/weekly/monthly/yearly files, so
we can tell if excessive number of files are created.

Bug: 125426689
Test: "adb shell dumpsys usagestats" and search for UsageStatsDatabase
Change-Id: Id5c6028151d4c21e019820f7b6070712283f4983
parent 8e79fe25
Loading
Loading
Loading
Loading
+33 −0
Original line number Diff line number Diff line
@@ -27,6 +27,7 @@ import android.util.Slog;
import android.util.TimeUtils;

import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.util.IndentingPrintWriter;

import libcore.io.IoUtils;

@@ -1246,4 +1247,36 @@ public class UsageStatsDatabase {
        }
        directory.delete();
    }

    /**
     * print total number and list of stats files for each interval type.
     * @param pw
     */
    public void dump(IndentingPrintWriter pw, boolean compact) {
        synchronized (mLock) {
            pw.println("UsageStatsDatabase:");
            pw.increaseIndent();
            for (int i = 0; i < mSortedStatFiles.length; i++) {
                final TimeSparseArray<AtomicFile> files = mSortedStatFiles[i];
                final int size = files.size();
                pw.print(UserUsageStatsService.intervalToString(i));
                pw.print(" stats files: ");
                pw.print(size);
                pw.println(", sorted list of files:");
                pw.increaseIndent();
                for (int f = 0; f < size; f++) {
                    final long fileName = files.keyAt(f);
                    if (compact) {
                        pw.print(UserUsageStatsService.formatDateTime(fileName, false));
                    } else {
                        pw.printPair(Long.toString(fileName),
                                UserUsageStatsService.formatDateTime(fileName, true));
                    }
                    pw.println();
                }
                pw.decreaseIndent();
            }
            pw.decreaseIndent();
        }
    }
}
+3 −2
Original line number Diff line number Diff line
@@ -658,9 +658,10 @@ class UserUsageStatsService {
            pw.println(" stats");
            printIntervalStats(pw, mCurrentStats[interval], !compact, true, pkg);
        }
        mDatabase.dump(pw, compact);
    }

    private String formatDateTime(long dateTime, boolean pretty) {
    static String formatDateTime(long dateTime, boolean pretty) {
        if (pretty) {
            return "\"" + sDateFormat.format(dateTime)+ "\"";
        }
@@ -888,7 +889,7 @@ class UserUsageStatsService {
        pw.decreaseIndent();
    }

    private static String intervalToString(int interval) {
    public static String intervalToString(int interval) {
        switch (interval) {
            case INTERVAL_DAILY:
                return "daily";