Dump app usage event data in db in BugReportContentProvider.

Test: make RunSettingsRoboTests
Bug: 260965327
Change-Id: I9f7ac74ed53b19d6ce9be3afa3ecf2a602d6309b
This commit is contained in:
Kuan Wang
2022-12-27 11:57:58 +08:00
parent 23a91ff7d9
commit b2b74d8a8b
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");
return;
}
writer.println("dump BatteryUsage states:");
LogUtils.dumpUsageDatabaseHist(context, writer);
writer.println("dump BatteryUsage and AppUsage states:");
LogUtils.dumpBatteryUsageDatabaseHist(context, writer);
LogUtils.dumpAppUsageDatabaseHist(context, writer);
}
@Override

View File

@@ -19,6 +19,8 @@ package com.android.settings.fuelgauge.batteryusage.bugreport;
import android.content.Context;
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.BatteryStateDao;
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);
@SuppressWarnings("JavaUtilDate")
static void dumpUsageDatabaseHist(Context context, PrintWriter writer) {
static void dumpBatteryUsageDatabaseHist(Context context, PrintWriter writer) {
final BatteryStateDao dao =
BatteryStateDatabase
.getInstance(context.getApplicationContext())
@@ -48,7 +50,7 @@ public final class LogUtils {
// Gets all distinct timestamps.
final List<Long> timestamps = dao.getDistinctTimestamps(timeOffset);
final int distinctCount = timestamps.size();
writer.println("\n\tDatabaseHistory:");
writer.println("\n\tBattery DatabaseHistory:");
writer.println("distinct timestamp count:" + distinctCount);
Log.w(TAG, "distinct timestamp count:" + distinctCount);
if (distinctCount == 0) {
@@ -68,5 +70,17 @@ public final class LogUtils {
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() {}
}

View File

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