Merge "Dump app usage event data in db in BugReportContentProvider."

This commit is contained in:
Kuan Wang
2022-12-28 03:08:40 +00:00
committed by Android (Google) Code Review
3 changed files with 31 additions and 7 deletions

View File

@@ -48,8 +48,9 @@ public final class BugReportContentProvider extends ContentProvider {
Log.w(TAG, "ignore battery usage states dump in the work profile"); Log.w(TAG, "ignore battery usage states dump in the work profile");
return; return;
} }
writer.println("dump BatteryUsage states:"); writer.println("dump BatteryUsage and AppUsage states:");
LogUtils.dumpUsageDatabaseHist(context, writer); LogUtils.dumpBatteryUsageDatabaseHist(context, writer);
LogUtils.dumpAppUsageDatabaseHist(context, writer);
} }
@Override @Override

View File

@@ -19,6 +19,8 @@ package com.android.settings.fuelgauge.batteryusage.bugreport;
import android.content.Context; import android.content.Context;
import android.util.Log; import android.util.Log;
import com.android.settings.fuelgauge.batteryusage.db.AppUsageEventDao;
import com.android.settings.fuelgauge.batteryusage.db.AppUsageEventEntity;
import com.android.settings.fuelgauge.batteryusage.db.BatteryState; import com.android.settings.fuelgauge.batteryusage.db.BatteryState;
import com.android.settings.fuelgauge.batteryusage.db.BatteryStateDao; import com.android.settings.fuelgauge.batteryusage.db.BatteryStateDao;
import com.android.settings.fuelgauge.batteryusage.db.BatteryStateDatabase; import com.android.settings.fuelgauge.batteryusage.db.BatteryStateDatabase;
@@ -38,7 +40,7 @@ public final class LogUtils {
private static final Duration DUMP_TIME_OFFSET_FOR_ENTRY = Duration.ofHours(4); private static final Duration DUMP_TIME_OFFSET_FOR_ENTRY = Duration.ofHours(4);
@SuppressWarnings("JavaUtilDate") @SuppressWarnings("JavaUtilDate")
static void dumpUsageDatabaseHist(Context context, PrintWriter writer) { static void dumpBatteryUsageDatabaseHist(Context context, PrintWriter writer) {
final BatteryStateDao dao = final BatteryStateDao dao =
BatteryStateDatabase BatteryStateDatabase
.getInstance(context.getApplicationContext()) .getInstance(context.getApplicationContext())
@@ -48,7 +50,7 @@ public final class LogUtils {
// Gets all distinct timestamps. // Gets all distinct timestamps.
final List<Long> timestamps = dao.getDistinctTimestamps(timeOffset); final List<Long> timestamps = dao.getDistinctTimestamps(timeOffset);
final int distinctCount = timestamps.size(); final int distinctCount = timestamps.size();
writer.println("\n\tDatabaseHistory:"); writer.println("\n\tBattery DatabaseHistory:");
writer.println("distinct timestamp count:" + distinctCount); writer.println("distinct timestamp count:" + distinctCount);
Log.w(TAG, "distinct timestamp count:" + distinctCount); Log.w(TAG, "distinct timestamp count:" + distinctCount);
if (distinctCount == 0) { if (distinctCount == 0) {
@@ -68,5 +70,17 @@ public final class LogUtils {
stateList.stream().forEach(state -> writer.println(state)); stateList.stream().forEach(state -> writer.println(state));
} }
@SuppressWarnings("JavaUtilDate")
static void dumpAppUsageDatabaseHist(Context context, PrintWriter writer) {
final AppUsageEventDao dao =
BatteryStateDatabase
.getInstance(context.getApplicationContext())
.appUsageEventDao();
writer.println("\n\tApp DatabaseHistory:");
final List<AppUsageEventEntity> eventList = dao.getAllAfter(
Clock.systemUTC().millis() - DUMP_TIME_OFFSET_FOR_ENTRY.toMillis());
eventList.stream().forEach(event -> writer.println(event));
}
private LogUtils() {} private LogUtils() {}
} }

View File

@@ -36,8 +36,10 @@ import java.io.StringWriter;
/** Tests of {@link BugReportContentProvider}. */ /** Tests of {@link BugReportContentProvider}. */
@RunWith(RobolectricTestRunner.class) @RunWith(RobolectricTestRunner.class)
public final class BugReportContentProviderTest { public final class BugReportContentProviderTest {
private static final String PACKAGE_NAME1 = "com.android.settings"; private static final String PACKAGE_NAME1 = "com.android.settings1";
private static final String PACKAGE_NAME2 = "com.android.systemui"; private static final String PACKAGE_NAME2 = "com.android.settings2";
private static final String PACKAGE_NAME3 = "com.android.settings3";
private static final String PACKAGE_NAME4 = "com.android.settings4";
private Context mContext; private Context mContext;
private PrintWriter mPrintWriter; private PrintWriter mPrintWriter;
@@ -57,6 +59,10 @@ public final class BugReportContentProviderTest {
mContext, System.currentTimeMillis(), PACKAGE_NAME1); mContext, System.currentTimeMillis(), PACKAGE_NAME1);
BatteryTestUtils.insertDataToBatteryStateTable( BatteryTestUtils.insertDataToBatteryStateTable(
mContext, System.currentTimeMillis(), PACKAGE_NAME2); mContext, System.currentTimeMillis(), PACKAGE_NAME2);
BatteryTestUtils.insertDataToAppUsageEventTable(
mContext, /*userId=*/ 1, System.currentTimeMillis(), PACKAGE_NAME3);
BatteryTestUtils.insertDataToAppUsageEventTable(
mContext, /*userId=*/ 1, System.currentTimeMillis(), PACKAGE_NAME4);
} }
@Test @Test
@@ -81,9 +87,12 @@ public final class BugReportContentProviderTest {
mBugReportContentProvider.dump(FileDescriptor.out, mPrintWriter, new String[] {}); mBugReportContentProvider.dump(FileDescriptor.out, mPrintWriter, new String[] {});
String dumpContent = mStringWriter.toString(); String dumpContent = mStringWriter.toString();
assertThat(dumpContent).contains("DatabaseHistory"); assertThat(dumpContent).contains("Battery DatabaseHistory");
assertThat(dumpContent).contains(PACKAGE_NAME1); assertThat(dumpContent).contains(PACKAGE_NAME1);
assertThat(dumpContent).contains(PACKAGE_NAME2); assertThat(dumpContent).contains(PACKAGE_NAME2);
assertThat(dumpContent).contains("distinct timestamp count:2"); assertThat(dumpContent).contains("distinct timestamp count:2");
assertThat(dumpContent).contains("App DatabaseHistory");
assertThat(dumpContent).contains(PACKAGE_NAME3);
assertThat(dumpContent).contains(PACKAGE_NAME4);
} }
} }