Calculate total power for a BatteryConsumer by adding up PowerComponents
Bug: 158137862 Test: atest BatteryUsageStatsTest Change-Id: I785799efcc895494be6e338475c6b4f276bdf9d5
This commit is contained in:
@@ -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.
|
||||
*
|
||||
|
||||
@@ -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.
|
||||
*
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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());
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user