BatteryUsageStats - use bus end time
Now that BUS contains an end time and a duration, use those in the atom instead of estimating them from the clock time that the request was made. Bug: 187223764 Test: atest BatteryUsageStatsProtoTests Change-Id: Ie69d42bfd19c3a0055e96a25ac33c16c0f7d1a3f
This commit is contained in:
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -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));
|
||||
|
||||
|
||||
Reference in New Issue
Block a user