Merge "Dump app usage event data in db in BugReportContentProvider."
This commit is contained in:
@@ -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
|
||||||
|
@@ -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() {}
|
||||||
}
|
}
|
||||||
|
@@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user