Calculate total power for a BatteryConsumer by adding up PowerComponents

Bug: 158137862
Test: atest BatteryUsageStatsTest
Change-Id: I785799efcc895494be6e338475c6b4f276bdf9d5
This commit is contained in:
Dmitri Plotnikov
2021-01-28 18:51:39 -08:00
parent 5722117dcb
commit afe6fe643d
4 changed files with 10 additions and 33 deletions

View File

@@ -215,16 +215,6 @@ public abstract class BatteryConsumer {
return (T) this;
}
/**
* Sets the total amount of power consumed since BatteryStats reset, mAh.
*/
@SuppressWarnings("unchecked")
@NonNull
public T setConsumedPower(double consumedPower) {
mPowerComponentsBuilder.setTotalPowerConsumed(consumedPower);
return (T) this;
}
/**
* Sets the amount of time used by the specified component, e.g. CPU, WiFi etc.
*

View File

@@ -36,11 +36,15 @@ class PowerComponents {
private final int mModeledPowerComponentOffset;
PowerComponents(@NonNull Builder builder) {
mTotalPowerConsumed = builder.mTotalPowerConsumed;
mCustomPowerComponentCount = builder.mCustomPowerComponentCount;
mModeledPowerComponentOffset = builder.mModeledPowerComponentOffset;
mPowerComponents = builder.mPowerComponents;
mTimeComponents = builder.mTimeComponents;
double totalPower = 0;
for (int i = mPowerComponents.length - 1; i >= 0; i--) {
totalPower += mPowerComponents[i];
}
mTotalPowerConsumed = totalPower;
}
PowerComponents(@NonNull Parcel source) {
@@ -158,7 +162,6 @@ class PowerComponents {
* Builder for PowerComponents.
*/
static final class Builder {
private double mTotalPowerConsumed;
private final double[] mPowerComponents;
private final int mCustomPowerComponentCount;
private final long[] mTimeComponents;
@@ -180,15 +183,6 @@ class PowerComponents {
new long[BatteryConsumer.TIME_COMPONENT_COUNT + customTimeComponentCount];
}
/**
* Sets the sum amount of power consumed since BatteryStats reset.
*/
@NonNull
public Builder setTotalPowerConsumed(double totalPowerConsumed) {
mTotalPowerConsumed = totalPowerConsumed;
return this;
}
/**
* Sets the amount of drain attributed to the specified drain type, e.g. CPU, WiFi etc.
*

View File

@@ -123,14 +123,9 @@ public class BatteryUsageStatsProvider {
.setDischargePercentage(batteryStatsHelper.getStats().getDischargeAmount(0))
.setConsumedPower(batteryStatsHelper.getTotalPower());
final List<BatterySipper> usageList = batteryStatsHelper.getUsageList();
for (int i = 0; i < usageList.size(); i++) {
final BatterySipper sipper = usageList.get(i);
if (sipper.drainType == BatterySipper.DrainType.APP) {
batteryUsageStatsBuilder.getOrCreateUidBatteryConsumerBuilder(sipper.uidObj)
.setPackageWithHighestDrain(sipper.packageWithHighestDrain)
.setConsumedPower(sipper.sumPower());
}
SparseArray<? extends BatteryStats.Uid> uidStats = mStats.getUidStats();
for (int i = uidStats.size() - 1; i >= 0; i--) {
batteryUsageStatsBuilder.getOrCreateUidBatteryConsumerBuilder(uidStats.valueAt(i));
}
final long realtimeUs = SystemClock.elapsedRealtime() * 1000;

View File

@@ -73,7 +73,6 @@ public class BatteryUsageStatsTest {
final UidBatteryConsumer.Builder uidBatteryConsumerBuilder =
builder.getOrCreateUidBatteryConsumerBuilder(batteryStatsUid);
uidBatteryConsumerBuilder.setPackageWithHighestDrain("foo");
uidBatteryConsumerBuilder.setConsumedPower(200);
uidBatteryConsumerBuilder.setConsumedPower(BatteryConsumer.POWER_COMPONENT_USAGE, 300);
uidBatteryConsumerBuilder.setConsumedPower(BatteryConsumer.POWER_COMPONENT_CPU, 400);
uidBatteryConsumerBuilder.setConsumedPowerForCustomComponent(
@@ -90,7 +89,6 @@ public class BatteryUsageStatsTest {
final SystemBatteryConsumer.Builder systemBatteryConsumerBuilder =
builder.getOrCreateSystemBatteryConsumerBuilder(
SystemBatteryConsumer.DRAIN_TYPE_CAMERA);
systemBatteryConsumerBuilder.setConsumedPower(10000);
systemBatteryConsumerBuilder.setConsumedPower(BatteryConsumer.POWER_COMPONENT_CPU, 10100);
systemBatteryConsumerBuilder.setConsumedPowerForCustomComponent(
BatteryConsumer.FIRST_CUSTOM_POWER_COMPONENT_ID, 10200);
@@ -114,7 +112,6 @@ public class BatteryUsageStatsTest {
for (UidBatteryConsumer uidBatteryConsumer : uidBatteryConsumers) {
if (uidBatteryConsumer.getUid() == 2000) {
assertThat(uidBatteryConsumer.getPackageWithHighestDrain()).isEqualTo("foo");
assertThat(uidBatteryConsumer.getConsumedPower()).isEqualTo(200);
assertThat(uidBatteryConsumer.getConsumedPower(
BatteryConsumer.POWER_COMPONENT_USAGE)).isEqualTo(300);
assertThat(uidBatteryConsumer.getConsumedPower(
@@ -130,6 +127,7 @@ public class BatteryUsageStatsTest {
BatteryConsumer.TIME_COMPONENT_CPU_FOREGROUND)).isEqualTo(700);
assertThat(uidBatteryConsumer.getUsageDurationForCustomComponentMillis(
BatteryConsumer.FIRST_CUSTOM_TIME_COMPONENT_ID)).isEqualTo(800);
assertThat(uidBatteryConsumer.getConsumedPower()).isEqualTo(1710);
} else {
fail("Unexpected UID " + uidBatteryConsumer.getUid());
}
@@ -139,7 +137,6 @@ public class BatteryUsageStatsTest {
batteryUsageStats.getSystemBatteryConsumers();
for (SystemBatteryConsumer systemBatteryConsumer : systemBatteryConsumers) {
if (systemBatteryConsumer.getDrainType() == SystemBatteryConsumer.DRAIN_TYPE_CAMERA) {
assertThat(systemBatteryConsumer.getConsumedPower()).isEqualTo(10000);
assertThat(systemBatteryConsumer.getConsumedPower(
BatteryConsumer.POWER_COMPONENT_CPU)).isEqualTo(10100);
assertThat(systemBatteryConsumer.getConsumedPowerForCustomComponent(
@@ -151,6 +148,7 @@ public class BatteryUsageStatsTest {
BatteryConsumer.TIME_COMPONENT_CPU)).isEqualTo(10300);
assertThat(systemBatteryConsumer.getUsageDurationForCustomComponentMillis(
BatteryConsumer.FIRST_CUSTOM_TIME_COMPONENT_ID)).isEqualTo(10400);
assertThat(systemBatteryConsumer.getConsumedPower()).isEqualTo(30510);
} else {
fail("Unexpected drain type " + systemBatteryConsumer.getDrainType());
}