Merge "BatteryUsageStats - use bus end time" into sc-dev

This commit is contained in:
Adam Bookatz
2021-05-26 17:19:47 +00:00
committed by Android (Google) Code Review
3 changed files with 11 additions and 22 deletions

View File

@@ -368,27 +368,19 @@ public final class BatteryUsageStats implements Parcelable {
};
/** Returns a proto (as used for atoms.proto) corresponding to this BatteryUsageStats. */
public byte[] getStatsProto(long sessionEndTimestampMs) {
final long sessionStartMillis = getStatsStartTimestamp();
// TODO(b/187223764): Use the getStatsEndTimestamp() instead, once that is added.
final long sessionEndMillis = sessionEndTimestampMs;
final long sessionDurationMillis = sessionEndTimestampMs - getStatsStartTimestamp();
public byte[] getStatsProto() {
final BatteryConsumer deviceBatteryConsumer = getAggregateBatteryConsumer(
AGGREGATE_BATTERY_CONSUMER_SCOPE_DEVICE);
final int sessionDischargePercentage = getDischargePercentage();
final ProtoOutputStream proto = new ProtoOutputStream();
proto.write(BatteryUsageStatsAtomsProto.SESSION_START_MILLIS, sessionStartMillis);
proto.write(BatteryUsageStatsAtomsProto.SESSION_END_MILLIS, sessionEndMillis);
proto.write(BatteryUsageStatsAtomsProto.SESSION_DURATION_MILLIS, sessionDurationMillis);
proto.write(BatteryUsageStatsAtomsProto.SESSION_START_MILLIS, getStatsStartTimestamp());
proto.write(BatteryUsageStatsAtomsProto.SESSION_END_MILLIS, getStatsEndTimestamp());
proto.write(BatteryUsageStatsAtomsProto.SESSION_DURATION_MILLIS, getStatsDuration());
deviceBatteryConsumer.writeStatsProto(proto,
BatteryUsageStatsAtomsProto.DEVICE_BATTERY_CONSUMER);
writeUidBatteryConsumersProto(proto);
proto.write(BatteryUsageStatsAtomsProto.SESSION_DISCHARGE_PERCENTAGE,
sessionDischargePercentage);
getDischargePercentage());
return proto.getBytes();
}
@@ -399,8 +391,8 @@ public final class BatteryUsageStats implements Parcelable {
private void writeUidBatteryConsumersProto(ProtoOutputStream proto) {
final List<UidBatteryConsumer> consumers = getUidBatteryConsumers();
// TODO: Sort the list by power consumption. If during the for, proto.getRawSize() > 45kb,
// truncate the remainder of the list.
// TODO(b/189225426): Sort the list by power consumption. If during the for,
// proto.getRawSize() > 45kb, truncate the remainder of the list.
final int size = consumers.size();
for (int i = 0; i < size; i++) {
final UidBatteryConsumer consumer = consumers.get(i);

View File

@@ -48,9 +48,8 @@ public class BatteryUsageStatsPulledTest {
@Test
public void testGetStatsProto() {
final long sessionEndTimestampMs = 1050;
final BatteryUsageStats bus = buildBatteryUsageStats();
final byte[] bytes = bus.getStatsProto(sessionEndTimestampMs);
final byte[] bytes = bus.getStatsProto();
BatteryUsageStatsAtomsProto proto;
try {
proto = BatteryUsageStatsAtomsProto.parseFrom(bytes);
@@ -60,9 +59,9 @@ public class BatteryUsageStatsPulledTest {
}
assertEquals(bus.getStatsStartTimestamp(), proto.sessionStartMillis);
assertEquals(sessionEndTimestampMs, proto.sessionEndMillis);
assertEquals(bus.getStatsEndTimestamp(), proto.sessionEndMillis);
assertEquals(
sessionEndTimestampMs - bus.getStatsStartTimestamp(),
bus.getStatsEndTimestamp() - bus.getStatsStartTimestamp(),
proto.sessionDurationMillis);
assertEquals(bus.getDischargePercentage(), proto.sessionDischargePercentage);

View File

@@ -771,9 +771,7 @@ public final class BatteryStatsService extends IBatteryStats.Stub
default:
throw new UnsupportedOperationException("Unknown tagId=" + atomTag);
}
// TODO(b/187223764): busTime won't be needed once end_session is a field in BUS.
final long busTime = System.currentTimeMillis();
final byte[] statsProto = bus.getStatsProto(busTime);
final byte[] statsProto = bus.getStatsProto();
data.add(FrameworkStatsLog.buildStatsEvent(atomTag, statsProto));