Use POWER_COMPONENT_ constants instead of TIME_COMPONENT_... constants
Bug: 186006876 Test: atest FrameworksCoreTests:com.android.internal.os.BatteryStatsTests Change-Id: Ie52616e8d7b0d5c848802af94aeb3d3780af117a
This commit is contained in:
@@ -84,54 +84,6 @@ public abstract class BatteryConsumer {
|
||||
public static final int FIRST_CUSTOM_POWER_COMPONENT_ID = 1000;
|
||||
public static final int LAST_CUSTOM_POWER_COMPONENT_ID = 9999;
|
||||
|
||||
/**
|
||||
* Time usage component, describing the particular part of the system
|
||||
* that was used for the corresponding amount of time.
|
||||
*
|
||||
* @hide
|
||||
*/
|
||||
@IntDef(prefix = {"TIME_COMPONENT_"}, value = {
|
||||
TIME_COMPONENT_SCREEN,
|
||||
TIME_COMPONENT_CPU,
|
||||
TIME_COMPONENT_CPU_FOREGROUND,
|
||||
TIME_COMPONENT_BLUETOOTH,
|
||||
TIME_COMPONENT_CAMERA,
|
||||
TIME_COMPONENT_FLASHLIGHT,
|
||||
TIME_COMPONENT_MOBILE_RADIO,
|
||||
TIME_COMPONENT_SENSORS,
|
||||
TIME_COMPONENT_GNSS,
|
||||
TIME_COMPONENT_WIFI,
|
||||
TIME_COMPONENT_WAKELOCK,
|
||||
TIME_COMPONENT_MEMORY,
|
||||
TIME_COMPONENT_PHONE,
|
||||
TIME_COMPONENT_IDLE,
|
||||
})
|
||||
@Retention(RetentionPolicy.SOURCE)
|
||||
public static @interface TimeComponent {
|
||||
}
|
||||
|
||||
public static final int TIME_COMPONENT_SCREEN = 0;
|
||||
public static final int TIME_COMPONENT_CPU = 1;
|
||||
public static final int TIME_COMPONENT_CPU_FOREGROUND = 2;
|
||||
public static final int TIME_COMPONENT_BLUETOOTH = 3;
|
||||
public static final int TIME_COMPONENT_CAMERA = 4;
|
||||
public static final int TIME_COMPONENT_AUDIO = 5;
|
||||
public static final int TIME_COMPONENT_VIDEO = 6;
|
||||
public static final int TIME_COMPONENT_FLASHLIGHT = 7;
|
||||
public static final int TIME_COMPONENT_MOBILE_RADIO = 8;
|
||||
public static final int TIME_COMPONENT_SENSORS = 9;
|
||||
public static final int TIME_COMPONENT_GNSS = 10;
|
||||
public static final int TIME_COMPONENT_WIFI = 11;
|
||||
public static final int TIME_COMPONENT_WAKELOCK = 12;
|
||||
public static final int TIME_COMPONENT_MEMORY = 13;
|
||||
public static final int TIME_COMPONENT_PHONE = 14;
|
||||
public static final int TIME_COMPONENT_IDLE = 15;
|
||||
|
||||
public static final int TIME_COMPONENT_COUNT = 16;
|
||||
|
||||
public static final int FIRST_CUSTOM_TIME_COMPONENT_ID = 1000;
|
||||
public static final int LAST_CUSTOM_TIME_COMPONENT_ID = 9999;
|
||||
|
||||
/**
|
||||
* Identifiers of models used for power estimation.
|
||||
*
|
||||
@@ -166,7 +118,7 @@ public abstract class BatteryConsumer {
|
||||
* Total power consumed by this consumer, in mAh.
|
||||
*/
|
||||
public double getConsumedPower() {
|
||||
return mPowerComponents.getTotalConsumedPower();
|
||||
return mPowerComponents.getConsumedPower();
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -221,11 +173,11 @@ public abstract class BatteryConsumer {
|
||||
* Returns the amount of time since BatteryStats reset used by the specified component, e.g.
|
||||
* CPU, WiFi etc.
|
||||
*
|
||||
* @param componentId The ID of the time component, e.g.
|
||||
* {@link UidBatteryConsumer#TIME_COMPONENT_CPU}.
|
||||
* @param componentId The ID of the power component, e.g.
|
||||
* {@link UidBatteryConsumer#POWER_COMPONENT_CPU}.
|
||||
* @return Amount of time in milliseconds.
|
||||
*/
|
||||
public long getUsageDurationMillis(@TimeComponent int componentId) {
|
||||
public long getUsageDurationMillis(@PowerComponent int componentId) {
|
||||
return mPowerComponents.getUsageDurationMillis(componentId);
|
||||
}
|
||||
|
||||
@@ -248,9 +200,9 @@ public abstract class BatteryConsumer {
|
||||
final PowerComponents.Builder mPowerComponentsBuilder;
|
||||
|
||||
public BaseBuilder(@NonNull String[] customPowerComponentNames,
|
||||
int customTimeComponentCount, boolean includePowerModels) {
|
||||
boolean includePowerModels) {
|
||||
mPowerComponentsBuilder = new PowerComponents.Builder(customPowerComponentNames,
|
||||
customTimeComponentCount, includePowerModels);
|
||||
includePowerModels);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -296,13 +248,13 @@ public abstract class BatteryConsumer {
|
||||
/**
|
||||
* Sets the amount of time used by the specified component, e.g. CPU, WiFi etc.
|
||||
*
|
||||
* @param componentId The ID of the time component, e.g.
|
||||
* {@link UidBatteryConsumer#TIME_COMPONENT_CPU}.
|
||||
* @param componentId The ID of the power component, e.g.
|
||||
* {@link UidBatteryConsumer#POWER_COMPONENT_CPU}.
|
||||
* @param componentUsageTimeMillis Amount of time in microseconds.
|
||||
*/
|
||||
@SuppressWarnings("unchecked")
|
||||
@NonNull
|
||||
public T setUsageDurationMillis(@UidBatteryConsumer.TimeComponent int componentId,
|
||||
public T setUsageDurationMillis(@UidBatteryConsumer.PowerComponent int componentId,
|
||||
long componentUsageTimeMillis) {
|
||||
mPowerComponentsBuilder.setUsageDurationMillis(componentId, componentUsageTimeMillis);
|
||||
return (T) this;
|
||||
|
||||
@@ -292,7 +292,6 @@ public final class BatteryUsageStats implements Parcelable {
|
||||
public static final class Builder {
|
||||
@NonNull
|
||||
private final String[] mCustomPowerComponentNames;
|
||||
private final int mCustomTimeComponentCount;
|
||||
private final boolean mIncludePowerModels;
|
||||
private long mStatsStartTimestampMs;
|
||||
private int mDischargePercentage;
|
||||
@@ -309,14 +308,12 @@ public final class BatteryUsageStats implements Parcelable {
|
||||
private Parcel mHistoryBuffer;
|
||||
private List<BatteryStats.HistoryTag> mHistoryTagPool;
|
||||
|
||||
public Builder(@NonNull String[] customPowerComponentNames, int customTimeComponentCount) {
|
||||
this(customPowerComponentNames, customTimeComponentCount, false);
|
||||
public Builder(@NonNull String[] customPowerComponentNames) {
|
||||
this(customPowerComponentNames, false);
|
||||
}
|
||||
|
||||
public Builder(@NonNull String[] customPowerComponentNames, int customTimeComponentCount,
|
||||
boolean includePowerModels) {
|
||||
public Builder(@NonNull String[] customPowerComponentNames, boolean includePowerModels) {
|
||||
mCustomPowerComponentNames = customPowerComponentNames;
|
||||
mCustomTimeComponentCount = customTimeComponentCount;
|
||||
mIncludePowerModels = includePowerModels;
|
||||
}
|
||||
|
||||
@@ -399,7 +396,7 @@ public final class BatteryUsageStats implements Parcelable {
|
||||
UidBatteryConsumer.Builder builder = mUidBatteryConsumerBuilders.get(uid);
|
||||
if (builder == null) {
|
||||
builder = new UidBatteryConsumer.Builder(mCustomPowerComponentNames,
|
||||
mCustomTimeComponentCount, mIncludePowerModels, batteryStatsUid);
|
||||
mIncludePowerModels, batteryStatsUid);
|
||||
mUidBatteryConsumerBuilders.put(uid, builder);
|
||||
}
|
||||
return builder;
|
||||
@@ -415,7 +412,7 @@ public final class BatteryUsageStats implements Parcelable {
|
||||
SystemBatteryConsumer.Builder builder = mSystemBatteryConsumerBuilders.get(drainType);
|
||||
if (builder == null) {
|
||||
builder = new SystemBatteryConsumer.Builder(mCustomPowerComponentNames,
|
||||
mCustomTimeComponentCount, mIncludePowerModels, drainType);
|
||||
mIncludePowerModels, drainType);
|
||||
mSystemBatteryConsumerBuilders.put(drainType, builder);
|
||||
}
|
||||
return builder;
|
||||
@@ -430,7 +427,7 @@ public final class BatteryUsageStats implements Parcelable {
|
||||
UserBatteryConsumer.Builder builder = mUserBatteryConsumerBuilders.get(userId);
|
||||
if (builder == null) {
|
||||
builder = new UserBatteryConsumer.Builder(mCustomPowerComponentNames,
|
||||
mCustomTimeComponentCount, mIncludePowerModels, userId);
|
||||
mIncludePowerModels, userId);
|
||||
mUserBatteryConsumerBuilders.put(userId, builder);
|
||||
}
|
||||
return builder;
|
||||
|
||||
@@ -26,12 +26,10 @@ import android.annotation.NonNull;
|
||||
class PowerComponents {
|
||||
private static final int CUSTOM_POWER_COMPONENT_OFFSET = BatteryConsumer.POWER_COMPONENT_COUNT
|
||||
- BatteryConsumer.FIRST_CUSTOM_POWER_COMPONENT_ID;
|
||||
private static final int CUSTOM_TIME_COMPONENT_OFFSET = BatteryConsumer.TIME_COMPONENT_COUNT
|
||||
- BatteryConsumer.FIRST_CUSTOM_TIME_COMPONENT_ID;
|
||||
|
||||
private final double mTotalConsumedPowerMah;
|
||||
private final double mConsumedPowerMah;
|
||||
private final double[] mPowerComponentsMah;
|
||||
private final long[] mTimeComponentsMs;
|
||||
private final long[] mUsageDurationsMs;
|
||||
private final int mCustomPowerComponentCount;
|
||||
private final byte[] mPowerModels;
|
||||
// Not written to Parcel and must be explicitly restored during the parent object's unparceling
|
||||
@@ -41,16 +39,16 @@ class PowerComponents {
|
||||
mCustomPowerComponentNames = builder.mCustomPowerComponentNames;
|
||||
mCustomPowerComponentCount = mCustomPowerComponentNames.length;
|
||||
mPowerComponentsMah = builder.mPowerComponentsMah;
|
||||
mTimeComponentsMs = builder.mTimeComponentsMs;
|
||||
mTotalConsumedPowerMah = builder.getTotalPower();
|
||||
mUsageDurationsMs = builder.mUsageDurationsMs;
|
||||
mConsumedPowerMah = builder.getTotalPower();
|
||||
mPowerModels = builder.mPowerModels;
|
||||
}
|
||||
|
||||
PowerComponents(@NonNull Parcel source) {
|
||||
mTotalConsumedPowerMah = source.readDouble();
|
||||
mConsumedPowerMah = source.readDouble();
|
||||
mCustomPowerComponentCount = source.readInt();
|
||||
mPowerComponentsMah = source.createDoubleArray();
|
||||
mTimeComponentsMs = source.createLongArray();
|
||||
mUsageDurationsMs = source.createLongArray();
|
||||
if (source.readBoolean()) {
|
||||
mPowerModels = new byte[BatteryConsumer.POWER_COMPONENT_COUNT];
|
||||
source.readByteArray(mPowerModels);
|
||||
@@ -61,10 +59,10 @@ class PowerComponents {
|
||||
|
||||
/** Writes contents to Parcel */
|
||||
void writeToParcel(@NonNull Parcel dest, int flags) {
|
||||
dest.writeDouble(mTotalConsumedPowerMah);
|
||||
dest.writeDouble(mConsumedPowerMah);
|
||||
dest.writeInt(mCustomPowerComponentCount);
|
||||
dest.writeDoubleArray(mPowerComponentsMah);
|
||||
dest.writeLongArray(mTimeComponentsMs);
|
||||
dest.writeLongArray(mUsageDurationsMs);
|
||||
if (mPowerModels != null) {
|
||||
dest.writeBoolean(true);
|
||||
dest.writeByteArray(mPowerModels);
|
||||
@@ -76,8 +74,8 @@ class PowerComponents {
|
||||
/**
|
||||
* Total power consumed by this consumer, in mAh.
|
||||
*/
|
||||
public double getTotalConsumedPower() {
|
||||
return mTotalConsumedPowerMah;
|
||||
public double getConsumedPower() {
|
||||
return mConsumedPowerMah;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -152,17 +150,17 @@ class PowerComponents {
|
||||
/**
|
||||
* Returns the amount of time used by the specified component, e.g. CPU, WiFi etc.
|
||||
*
|
||||
* @param componentId The ID of the time component, e.g.
|
||||
* {@link BatteryConsumer#TIME_COMPONENT_CPU}.
|
||||
* @param componentId The ID of the power component, e.g.
|
||||
* {@link BatteryConsumer#POWER_COMPONENT_CPU}.
|
||||
* @return Amount of time in milliseconds.
|
||||
*/
|
||||
public long getUsageDurationMillis(@BatteryConsumer.TimeComponent int componentId) {
|
||||
if (componentId >= BatteryConsumer.TIME_COMPONENT_COUNT) {
|
||||
public long getUsageDurationMillis(@BatteryConsumer.PowerComponent int componentId) {
|
||||
if (componentId >= BatteryConsumer.POWER_COMPONENT_COUNT) {
|
||||
throw new IllegalArgumentException(
|
||||
"Unsupported time component ID: " + componentId);
|
||||
"Unsupported power component ID: " + componentId);
|
||||
}
|
||||
try {
|
||||
return mTimeComponentsMs[componentId];
|
||||
return mUsageDurationsMs[componentId];
|
||||
} catch (ArrayIndexOutOfBoundsException e) {
|
||||
throw new IllegalArgumentException("Unsupported power component ID: " + componentId);
|
||||
}
|
||||
@@ -175,15 +173,15 @@ class PowerComponents {
|
||||
* @return Amount of time in milliseconds.
|
||||
*/
|
||||
public long getUsageDurationForCustomComponentMillis(int componentId) {
|
||||
if (componentId < BatteryConsumer.FIRST_CUSTOM_TIME_COMPONENT_ID) {
|
||||
if (componentId < BatteryConsumer.FIRST_CUSTOM_POWER_COMPONENT_ID) {
|
||||
throw new IllegalArgumentException(
|
||||
"Unsupported custom time component ID: " + componentId);
|
||||
"Unsupported custom power component ID: " + componentId);
|
||||
}
|
||||
try {
|
||||
return mTimeComponentsMs[CUSTOM_TIME_COMPONENT_OFFSET + componentId];
|
||||
return mUsageDurationsMs[CUSTOM_POWER_COMPONENT_OFFSET + componentId];
|
||||
} catch (ArrayIndexOutOfBoundsException e) {
|
||||
throw new IllegalArgumentException(
|
||||
"Unsupported custom time component ID: " + componentId);
|
||||
"Unsupported custom power component ID: " + componentId);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -192,13 +190,13 @@ class PowerComponents {
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the largest usage duration among all time components.
|
||||
* Returns the largest usage duration among all power components.
|
||||
*/
|
||||
public long getMaxComponentUsageDurationMillis() {
|
||||
long max = 0;
|
||||
for (int i = mTimeComponentsMs.length - 1; i >= 0; i--) {
|
||||
if (mTimeComponentsMs[i] > max) {
|
||||
max = mTimeComponentsMs[i];
|
||||
for (int i = mUsageDurationsMs.length - 1; i >= 0; i--) {
|
||||
if (mUsageDurationsMs[i] > max) {
|
||||
max = mUsageDurationsMs[i];
|
||||
}
|
||||
}
|
||||
return max;
|
||||
@@ -210,17 +208,15 @@ class PowerComponents {
|
||||
static final class Builder {
|
||||
private final double[] mPowerComponentsMah;
|
||||
private final String[] mCustomPowerComponentNames;
|
||||
private final long[] mTimeComponentsMs;
|
||||
private final long[] mUsageDurationsMs;
|
||||
private final byte[] mPowerModels;
|
||||
|
||||
Builder(@NonNull String[] customPowerComponentNames, int customTimeComponentCount,
|
||||
boolean includePowerModels) {
|
||||
Builder(@NonNull String[] customPowerComponentNames, boolean includePowerModels) {
|
||||
mCustomPowerComponentNames = customPowerComponentNames;
|
||||
int powerComponentCount =
|
||||
BatteryConsumer.POWER_COMPONENT_COUNT + mCustomPowerComponentNames.length;
|
||||
mPowerComponentsMah = new double[powerComponentCount];
|
||||
mTimeComponentsMs =
|
||||
new long[BatteryConsumer.TIME_COMPONENT_COUNT + customTimeComponentCount];
|
||||
mUsageDurationsMs = new long[powerComponentCount];
|
||||
if (includePowerModels) {
|
||||
mPowerModels = new byte[BatteryConsumer.POWER_COMPONENT_COUNT];
|
||||
} else {
|
||||
@@ -281,22 +277,22 @@ class PowerComponents {
|
||||
/**
|
||||
* Sets the amount of time used by the specified component, e.g. CPU, WiFi etc.
|
||||
*
|
||||
* @param componentId The ID of the time component, e.g.
|
||||
* {@link BatteryConsumer#TIME_COMPONENT_CPU}.
|
||||
* @param componentId The ID of the power component, e.g.
|
||||
* {@link BatteryConsumer#POWER_COMPONENT_CPU}.
|
||||
* @param componentUsageDurationMillis Amount of time in milliseconds.
|
||||
*/
|
||||
@NonNull
|
||||
public Builder setUsageDurationMillis(@BatteryConsumer.TimeComponent int componentId,
|
||||
public Builder setUsageDurationMillis(@BatteryConsumer.PowerComponent int componentId,
|
||||
long componentUsageDurationMillis) {
|
||||
if (componentId >= BatteryConsumer.TIME_COMPONENT_COUNT) {
|
||||
if (componentId >= BatteryConsumer.POWER_COMPONENT_COUNT) {
|
||||
throw new IllegalArgumentException(
|
||||
"Unsupported time component ID: " + componentId);
|
||||
"Unsupported power component ID: " + componentId);
|
||||
}
|
||||
try {
|
||||
mTimeComponentsMs[componentId] = componentUsageDurationMillis;
|
||||
mUsageDurationsMs[componentId] = componentUsageDurationMillis;
|
||||
} catch (ArrayIndexOutOfBoundsException e) {
|
||||
throw new IllegalArgumentException(
|
||||
"Unsupported time component ID: " + componentId);
|
||||
"Unsupported power component ID: " + componentId);
|
||||
}
|
||||
return this;
|
||||
}
|
||||
@@ -310,16 +306,16 @@ class PowerComponents {
|
||||
@NonNull
|
||||
public Builder setUsageDurationForCustomComponentMillis(int componentId,
|
||||
long componentUsageDurationMillis) {
|
||||
if (componentId < BatteryConsumer.FIRST_CUSTOM_TIME_COMPONENT_ID) {
|
||||
if (componentId < BatteryConsumer.FIRST_CUSTOM_POWER_COMPONENT_ID) {
|
||||
throw new IllegalArgumentException(
|
||||
"Unsupported custom time component ID: " + componentId);
|
||||
"Unsupported custom power component ID: " + componentId);
|
||||
}
|
||||
try {
|
||||
mTimeComponentsMs[CUSTOM_TIME_COMPONENT_OFFSET + componentId] =
|
||||
mUsageDurationsMs[CUSTOM_POWER_COMPONENT_OFFSET + componentId] =
|
||||
componentUsageDurationMillis;
|
||||
} catch (ArrayIndexOutOfBoundsException e) {
|
||||
throw new IllegalArgumentException(
|
||||
"Unsupported custom time component ID: " + componentId);
|
||||
"Unsupported custom power component ID: " + componentId);
|
||||
}
|
||||
return this;
|
||||
}
|
||||
@@ -328,8 +324,8 @@ class PowerComponents {
|
||||
for (int i = mPowerComponentsMah.length - 1; i >= 0; i--) {
|
||||
mPowerComponentsMah[i] += other.mPowerComponentsMah[i];
|
||||
}
|
||||
for (int i = mTimeComponentsMs.length - 1; i >= 0; i--) {
|
||||
mTimeComponentsMs[i] += other.mTimeComponentsMs[i];
|
||||
for (int i = mUsageDurationsMs.length - 1; i >= 0; i--) {
|
||||
mUsageDurationsMs[i] += other.mUsageDurationsMs[i];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -147,9 +147,9 @@ public class SystemBatteryConsumer extends BatteryConsumer implements Parcelable
|
||||
private double mPowerConsumedByAppsMah;
|
||||
private List<UidBatteryConsumer.Builder> mUidBatteryConsumers;
|
||||
|
||||
Builder(@NonNull String[] customPowerComponentNames, int customTimeComponentCount,
|
||||
Builder(@NonNull String[] customPowerComponentNames,
|
||||
boolean includePowerModels, @DrainType int drainType) {
|
||||
super(customPowerComponentNames, customTimeComponentCount, includePowerModels);
|
||||
super(customPowerComponentNames, includePowerModels);
|
||||
mDrainType = drainType;
|
||||
}
|
||||
|
||||
|
||||
@@ -139,9 +139,9 @@ public final class UidBatteryConsumer extends BatteryConsumer implements Parcela
|
||||
public long mTimeInBackgroundMs;
|
||||
private boolean mExcludeFromBatteryUsageStats;
|
||||
|
||||
public Builder(@NonNull String[] customPowerComponentNames, int customTimeComponentCount,
|
||||
public Builder(@NonNull String[] customPowerComponentNames,
|
||||
boolean includePowerModels, @NonNull BatteryStats.Uid batteryStatsUid) {
|
||||
super(customPowerComponentNames, customTimeComponentCount, includePowerModels);
|
||||
super(customPowerComponentNames, includePowerModels);
|
||||
mBatteryStatsUid = batteryStatsUid;
|
||||
mUid = batteryStatsUid.getUid();
|
||||
}
|
||||
|
||||
@@ -77,9 +77,9 @@ public class UserBatteryConsumer extends BatteryConsumer implements Parcelable {
|
||||
private final int mUserId;
|
||||
private List<UidBatteryConsumer.Builder> mUidBatteryConsumers;
|
||||
|
||||
Builder(@NonNull String[] customPowerComponentNames, int customTimeComponentCount,
|
||||
boolean includePowerModels, int userId) {
|
||||
super(customPowerComponentNames, customTimeComponentCount, includePowerModels);
|
||||
Builder(@NonNull String[] customPowerComponentNames, boolean includePowerModels,
|
||||
int userId) {
|
||||
super(customPowerComponentNames, includePowerModels);
|
||||
mUserId = userId;
|
||||
}
|
||||
|
||||
|
||||
@@ -53,7 +53,7 @@ public class AmbientDisplayPowerCalculator extends PowerCalculator {
|
||||
builder.getOrCreateSystemBatteryConsumerBuilder(
|
||||
SystemBatteryConsumer.DRAIN_TYPE_AMBIENT_DISPLAY)
|
||||
.setConsumedPower(BatteryConsumer.POWER_COMPONENT_SCREEN, powerMah, powerModel)
|
||||
.setUsageDurationMillis(BatteryConsumer.TIME_COMPONENT_SCREEN, durationMs);
|
||||
.setUsageDurationMillis(BatteryConsumer.POWER_COMPONENT_SCREEN, durationMs);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -42,7 +42,7 @@ public class AudioPowerCalculator extends PowerCalculator {
|
||||
final long durationMs = mPowerEstimator.calculateDuration(u.getAudioTurnedOnTimer(),
|
||||
rawRealtimeUs, BatteryStats.STATS_SINCE_CHARGED);
|
||||
final double powerMah = mPowerEstimator.calculatePower(durationMs);
|
||||
app.setUsageDurationMillis(BatteryConsumer.TIME_COMPONENT_AUDIO, durationMs)
|
||||
app.setUsageDurationMillis(BatteryConsumer.POWER_COMPONENT_AUDIO, durationMs)
|
||||
.setConsumedPower(BatteryConsumer.POWER_COMPONENT_AUDIO, powerMah);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -124,16 +124,11 @@ public class BatteryUsageStatsProvider {
|
||||
final long realtimeUs = elapsedRealtime() * 1000;
|
||||
final long uptimeUs = uptimeMillis() * 1000;
|
||||
|
||||
final String[] customPowerComponentNames = mStats.getCustomEnergyConsumerNames();
|
||||
|
||||
// TODO(b/174186358): read extra time component number from configuration
|
||||
final int customTimeComponentCount = 0;
|
||||
|
||||
final boolean includePowerModels = (query.getFlags()
|
||||
& BatteryUsageStatsQuery.FLAG_BATTERY_USAGE_STATS_INCLUDE_POWER_MODELS) != 0;
|
||||
|
||||
final BatteryUsageStats.Builder batteryUsageStatsBuilder = new BatteryUsageStats.Builder(
|
||||
customPowerComponentNames, customTimeComponentCount, includePowerModels);
|
||||
mStats.getCustomEnergyConsumerNames(), includePowerModels);
|
||||
batteryUsageStatsBuilder.setStatsStartTimestamp(mStats.getStartClockTime());
|
||||
|
||||
SparseArray<? extends BatteryStats.Uid> uidStats = mStats.getUidStats();
|
||||
|
||||
@@ -88,7 +88,7 @@ public class BluetoothPowerCalculator extends PowerCalculator {
|
||||
+ " power=" + formatCharge(systemPowerMah));
|
||||
}
|
||||
systemBatteryConsumerBuilder
|
||||
.setUsageDurationMillis(BatteryConsumer.TIME_COMPONENT_BLUETOOTH,
|
||||
.setUsageDurationMillis(BatteryConsumer.POWER_COMPONENT_BLUETOOTH,
|
||||
systemComponentDurationMs)
|
||||
.setConsumedPower(BatteryConsumer.POWER_COMPONENT_BLUETOOTH,
|
||||
Math.max(systemPowerMah, total.powerMah), powerModel)
|
||||
@@ -105,7 +105,7 @@ public class BluetoothPowerCalculator extends PowerCalculator {
|
||||
final long durationMs = calculateDuration(activityCounter);
|
||||
final double powerMah = calculatePowerMah(powerModel, measuredChargeUC, activityCounter);
|
||||
|
||||
app.setUsageDurationMillis(BatteryConsumer.TIME_COMPONENT_BLUETOOTH, durationMs)
|
||||
app.setUsageDurationMillis(BatteryConsumer.POWER_COMPONENT_BLUETOOTH, durationMs)
|
||||
.setConsumedPower(BatteryConsumer.POWER_COMPONENT_BLUETOOTH, powerMah, powerModel);
|
||||
|
||||
total.durationMs += durationMs;
|
||||
|
||||
@@ -42,7 +42,7 @@ public class CameraPowerCalculator extends PowerCalculator {
|
||||
mPowerEstimator.calculateDuration(u.getCameraTurnedOnTimer(), rawRealtimeUs,
|
||||
BatteryStats.STATS_SINCE_CHARGED);
|
||||
final double powerMah = mPowerEstimator.calculatePower(durationMs);
|
||||
app.setUsageDurationMillis(BatteryConsumer.TIME_COMPONENT_CAMERA, durationMs)
|
||||
app.setUsageDurationMillis(BatteryConsumer.POWER_COMPONENT_CAMERA, durationMs)
|
||||
.setConsumedPower(BatteryConsumer.POWER_COMPONENT_CAMERA, powerMah);
|
||||
}
|
||||
|
||||
|
||||
@@ -97,9 +97,7 @@ public class CpuPowerCalculator extends PowerCalculator {
|
||||
result);
|
||||
|
||||
app.setConsumedPower(BatteryConsumer.POWER_COMPONENT_CPU, result.powerMah, powerModel)
|
||||
.setUsageDurationMillis(BatteryConsumer.TIME_COMPONENT_CPU, result.durationMs)
|
||||
.setUsageDurationMillis(BatteryConsumer.TIME_COMPONENT_CPU_FOREGROUND,
|
||||
result.durationFgMs)
|
||||
.setUsageDurationMillis(BatteryConsumer.POWER_COMPONENT_CPU, result.durationMs)
|
||||
.setPackageWithHighestDrain(result.packageWithHighestDrain);
|
||||
}
|
||||
|
||||
|
||||
@@ -39,7 +39,7 @@ public class FlashlightPowerCalculator extends PowerCalculator {
|
||||
final long durationMs = mPowerEstimator.calculateDuration(u.getFlashlightTurnedOnTimer(),
|
||||
rawRealtimeUs, BatteryStats.STATS_SINCE_CHARGED);
|
||||
final double powerMah = mPowerEstimator.calculatePower(durationMs);
|
||||
app.setUsageDurationMillis(BatteryConsumer.TIME_COMPONENT_FLASHLIGHT, durationMs)
|
||||
app.setUsageDurationMillis(BatteryConsumer.POWER_COMPONENT_FLASHLIGHT, durationMs)
|
||||
.setConsumedPower(BatteryConsumer.POWER_COMPONENT_FLASHLIGHT, powerMah);
|
||||
}
|
||||
|
||||
|
||||
@@ -74,7 +74,7 @@ public class GnssPowerCalculator extends PowerCalculator {
|
||||
powerMah = computePower(durationMs, averageGnssPowerMa);
|
||||
}
|
||||
|
||||
app.setUsageDurationMillis(BatteryConsumer.TIME_COMPONENT_GNSS, durationMs)
|
||||
app.setUsageDurationMillis(BatteryConsumer.POWER_COMPONENT_GNSS, durationMs)
|
||||
.setConsumedPower(BatteryConsumer.POWER_COMPONENT_GNSS, powerMah, powerModel);
|
||||
}
|
||||
|
||||
|
||||
@@ -55,7 +55,7 @@ public class IdlePowerCalculator extends PowerCalculator {
|
||||
if (mPowerMah != 0) {
|
||||
builder.getOrCreateSystemBatteryConsumerBuilder(SystemBatteryConsumer.DRAIN_TYPE_IDLE)
|
||||
.setConsumedPower(BatteryConsumer.POWER_COMPONENT_IDLE, mPowerMah)
|
||||
.setUsageDurationMillis(BatteryConsumer.TIME_COMPONENT_IDLE, mDurationMs);
|
||||
.setUsageDurationMillis(BatteryConsumer.POWER_COMPONENT_IDLE, mDurationMs);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -32,7 +32,7 @@ public class MemoryPowerCalculator extends PowerCalculator {
|
||||
final double powerMah = calculatePower(batteryStats, rawRealtimeUs,
|
||||
BatteryStats.STATS_SINCE_CHARGED);
|
||||
builder.getOrCreateSystemBatteryConsumerBuilder(SystemBatteryConsumer.DRAIN_TYPE_MEMORY)
|
||||
.setUsageDurationMillis(BatteryConsumer.TIME_COMPONENT_MEMORY, durationMs)
|
||||
.setUsageDurationMillis(BatteryConsumer.POWER_COMPONENT_MEMORY, durationMs)
|
||||
.setConsumedPower(BatteryConsumer.POWER_COMPONENT_MEMORY, powerMah);
|
||||
}
|
||||
|
||||
|
||||
@@ -107,7 +107,7 @@ public class MobileRadioPowerCalculator extends PowerCalculator {
|
||||
if (total.remainingPowerMah != 0 || total.totalAppPowerMah != 0) {
|
||||
builder.getOrCreateSystemBatteryConsumerBuilder(
|
||||
SystemBatteryConsumer.DRAIN_TYPE_MOBILE_RADIO)
|
||||
.setUsageDurationMillis(BatteryConsumer.TIME_COMPONENT_MOBILE_RADIO,
|
||||
.setUsageDurationMillis(BatteryConsumer.POWER_COMPONENT_MOBILE_RADIO,
|
||||
total.durationMs)
|
||||
.setConsumedPower(BatteryConsumer.POWER_COMPONENT_MOBILE_RADIO,
|
||||
total.remainingPowerMah + total.totalAppPowerMah,
|
||||
@@ -128,7 +128,7 @@ public class MobileRadioPowerCalculator extends PowerCalculator {
|
||||
radioActiveDurationMs, consumptionUC);
|
||||
total.totalAppPowerMah += powerMah;
|
||||
|
||||
app.setUsageDurationMillis(BatteryConsumer.TIME_COMPONENT_MOBILE_RADIO,
|
||||
app.setUsageDurationMillis(BatteryConsumer.POWER_COMPONENT_MOBILE_RADIO,
|
||||
radioActiveDurationMs)
|
||||
.setConsumedPower(BatteryConsumer.POWER_COMPONENT_MOBILE_RADIO, powerMah,
|
||||
powerModel);
|
||||
|
||||
@@ -46,7 +46,7 @@ public class PhonePowerCalculator extends PowerCalculator {
|
||||
if (phoneOnPower != 0) {
|
||||
builder.getOrCreateSystemBatteryConsumerBuilder(SystemBatteryConsumer.DRAIN_TYPE_PHONE)
|
||||
.setConsumedPower(BatteryConsumer.POWER_COMPONENT_PHONE, phoneOnPower)
|
||||
.setUsageDurationMillis(BatteryConsumer.TIME_COMPONENT_PHONE, phoneOnTimeMs);
|
||||
.setUsageDurationMillis(BatteryConsumer.POWER_COMPONENT_PHONE, phoneOnTimeMs);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -81,7 +81,7 @@ public class ScreenPowerCalculator extends PowerCalculator {
|
||||
final UidBatteryConsumer.Builder app = uidBatteryConsumerBuilders.valueAt(i);
|
||||
calculateAppUsingMeasuredEnergy(appPowerAndDuration, app.getBatteryStatsUid(),
|
||||
rawRealtimeUs);
|
||||
app.setUsageDurationMillis(BatteryConsumer.TIME_COMPONENT_SCREEN,
|
||||
app.setUsageDurationMillis(BatteryConsumer.POWER_COMPONENT_SCREEN,
|
||||
appPowerAndDuration.durationMs)
|
||||
.setConsumedPower(BatteryConsumer.POWER_COMPONENT_SCREEN,
|
||||
appPowerAndDuration.powerMah, powerModel);
|
||||
@@ -96,7 +96,7 @@ public class ScreenPowerCalculator extends PowerCalculator {
|
||||
}
|
||||
|
||||
builder.getOrCreateSystemBatteryConsumerBuilder(SystemBatteryConsumer.DRAIN_TYPE_SCREEN)
|
||||
.setUsageDurationMillis(BatteryConsumer.TIME_COMPONENT_SCREEN,
|
||||
.setUsageDurationMillis(BatteryConsumer.POWER_COMPONENT_SCREEN,
|
||||
totalPowerAndDuration.durationMs)
|
||||
.setConsumedPower(BatteryConsumer.POWER_COMPONENT_SCREEN,
|
||||
Math.max(totalPowerAndDuration.powerMah, totalAppPower), powerModel)
|
||||
@@ -251,7 +251,7 @@ public class ScreenPowerCalculator extends PowerCalculator {
|
||||
final UidBatteryConsumer.Builder app = uidBatteryConsumerBuilders.valueAt(i);
|
||||
final long durationMs = activityTimeArray.get(app.getUid(), 0);
|
||||
final double powerMah = totalScreenPowerMah * durationMs / totalActivityTimeMs;
|
||||
app.setUsageDurationMillis(BatteryConsumer.TIME_COMPONENT_SCREEN, durationMs)
|
||||
app.setUsageDurationMillis(BatteryConsumer.POWER_COMPONENT_SCREEN, durationMs)
|
||||
.setConsumedPower(BatteryConsumer.POWER_COMPONENT_SCREEN, powerMah,
|
||||
BatteryConsumer.POWER_MODEL_POWER_PROFILE);
|
||||
}
|
||||
|
||||
@@ -40,7 +40,7 @@ public class SensorPowerCalculator extends PowerCalculator {
|
||||
@Override
|
||||
protected void calculateApp(UidBatteryConsumer.Builder app, BatteryStats.Uid u,
|
||||
long rawRealtimeUs, long rawUptimeUs, BatteryUsageStatsQuery query) {
|
||||
app.setUsageDurationMillis(BatteryConsumer.TIME_COMPONENT_SENSORS,
|
||||
app.setUsageDurationMillis(BatteryConsumer.POWER_COMPONENT_SENSORS,
|
||||
calculateDuration(u, rawRealtimeUs, BatteryStats.STATS_SINCE_CHARGED))
|
||||
.setConsumedPower(BatteryConsumer.POWER_COMPONENT_SENSORS,
|
||||
calculatePowerMah(u, rawRealtimeUs, BatteryStats.STATS_SINCE_CHARGED));
|
||||
|
||||
@@ -39,7 +39,7 @@ public class VideoPowerCalculator extends PowerCalculator {
|
||||
final long durationMs = mPowerEstimator.calculateDuration(u.getVideoTurnedOnTimer(),
|
||||
rawRealtimeUs, BatteryStats.STATS_SINCE_CHARGED);
|
||||
final double powerMah = mPowerEstimator.calculatePower(durationMs);
|
||||
app.setUsageDurationMillis(BatteryConsumer.TIME_COMPONENT_VIDEO, durationMs)
|
||||
app.setUsageDurationMillis(BatteryConsumer.POWER_COMPONENT_VIDEO, durationMs)
|
||||
.setConsumedPower(BatteryConsumer.POWER_COMPONENT_VIDEO, powerMah);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -57,7 +57,7 @@ public class WakelockPowerCalculator extends PowerCalculator {
|
||||
final UidBatteryConsumer.Builder app = uidBatteryConsumerBuilders.valueAt(i);
|
||||
calculateApp(result, app.getBatteryStatsUid(), rawRealtimeUs,
|
||||
BatteryStats.STATS_SINCE_CHARGED);
|
||||
app.setUsageDurationMillis(BatteryConsumer.TIME_COMPONENT_WAKELOCK, result.durationMs)
|
||||
app.setUsageDurationMillis(BatteryConsumer.POWER_COMPONENT_WAKELOCK, result.durationMs)
|
||||
.setConsumedPower(BatteryConsumer.POWER_COMPONENT_WAKELOCK, result.powerMah);
|
||||
totalAppDurationMs += result.durationMs;
|
||||
|
||||
@@ -74,7 +74,7 @@ public class WakelockPowerCalculator extends PowerCalculator {
|
||||
if (osBatteryConsumer != null) {
|
||||
calculateRemaining(result, batteryStats, rawRealtimeUs, rawUptimeUs,
|
||||
BatteryStats.STATS_SINCE_CHARGED, osPowerMah, osDurationMs, totalAppDurationMs);
|
||||
osBatteryConsumer.setUsageDurationMillis(BatteryConsumer.TIME_COMPONENT_WAKELOCK,
|
||||
osBatteryConsumer.setUsageDurationMillis(BatteryConsumer.POWER_COMPONENT_WAKELOCK,
|
||||
result.durationMs)
|
||||
.setConsumedPower(BatteryConsumer.POWER_COMPONENT_WAKELOCK, result.powerMah);
|
||||
}
|
||||
|
||||
@@ -100,7 +100,7 @@ public class WifiPowerCalculator extends PowerCalculator {
|
||||
totalAppDurationMs += powerDurationAndTraffic.durationMs;
|
||||
totalAppPowerMah += powerDurationAndTraffic.powerMah;
|
||||
|
||||
app.setUsageDurationMillis(BatteryConsumer.TIME_COMPONENT_WIFI,
|
||||
app.setUsageDurationMillis(BatteryConsumer.POWER_COMPONENT_WIFI,
|
||||
powerDurationAndTraffic.durationMs);
|
||||
app.setConsumedPower(BatteryConsumer.POWER_COMPONENT_WIFI,
|
||||
powerDurationAndTraffic.powerMah, powerModel);
|
||||
@@ -118,7 +118,7 @@ public class WifiPowerCalculator extends PowerCalculator {
|
||||
totalAppDurationMs, totalAppPowerMah, consumptionUC);
|
||||
|
||||
systemBatteryConsumerBuilder
|
||||
.setUsageDurationMillis(BatteryConsumer.TIME_COMPONENT_WIFI,
|
||||
.setUsageDurationMillis(BatteryConsumer.POWER_COMPONENT_WIFI,
|
||||
powerDurationAndTraffic.durationMs)
|
||||
.setConsumedPower(BatteryConsumer.POWER_COMPONENT_WIFI,
|
||||
totalAppPowerMah + powerDurationAndTraffic.powerMah, powerModel)
|
||||
|
||||
@@ -58,11 +58,8 @@ public class PowerMetrics {
|
||||
|
||||
for (int component = 0; component < BatteryConsumer.POWER_COMPONENT_COUNT;
|
||||
component++) {
|
||||
totalPowerPerComponentMah[component] += uidBatteryConsumer.getConsumedPower(
|
||||
component);
|
||||
}
|
||||
|
||||
for (int component = 0; component < BatteryConsumer.TIME_COMPONENT_COUNT; component++) {
|
||||
totalPowerPerComponentMah[component] +=
|
||||
uidBatteryConsumer.getConsumedPower(component);
|
||||
totalDurationPerComponentMs[component] +=
|
||||
uidBatteryConsumer.getUsageDurationMillis(component);
|
||||
}
|
||||
@@ -76,18 +73,15 @@ public class PowerMetrics {
|
||||
addMetric(getPowerMetricName(component), MetricKind.POWER,
|
||||
selectedBatteryConsumer.getConsumedPower(component),
|
||||
totalPowerPerComponentMah[component]);
|
||||
}
|
||||
|
||||
for (int component = 0; component < BatteryConsumer.TIME_COMPONENT_COUNT; component++) {
|
||||
addMetric(getTimeMetricName(component), MetricKind.DURATION,
|
||||
addMetric(getDurationMetricName(component), MetricKind.DURATION,
|
||||
selectedBatteryConsumer.getUsageDurationMillis(component),
|
||||
totalDurationPerComponentMs[component]);
|
||||
}
|
||||
}
|
||||
|
||||
static String getTimeMetricName(int componentId) {
|
||||
return "TIME_" + DebugUtils.constantToString(BatteryConsumer.class,
|
||||
"TIME_COMPONENT_", componentId);
|
||||
static String getDurationMetricName(int componentId) {
|
||||
return "DURATION_" + DebugUtils.constantToString(BatteryConsumer.class,
|
||||
"POWER_COMPONENT_", componentId);
|
||||
}
|
||||
|
||||
static String getPowerMetricName(int componentId) {
|
||||
|
||||
@@ -306,8 +306,8 @@ public class PowerMetricsCollector implements TestRule {
|
||||
return null;
|
||||
}
|
||||
|
||||
public PowerMetrics.Metric getTimeMetric(@BatteryConsumer.TimeComponent int component) {
|
||||
final String name = PowerMetrics.getTimeMetricName(component);
|
||||
public PowerMetrics.Metric getTimeMetric(@BatteryConsumer.PowerComponent int component) {
|
||||
final String name = PowerMetrics.getDurationMetricName(component);
|
||||
for (PowerMetrics.Metric metric : mPowerMetricsDelta) {
|
||||
if (metric.metricName.equals(name)) {
|
||||
return metric;
|
||||
|
||||
@@ -27,6 +27,7 @@
|
||||
android:label="Battery Stats Viewer">
|
||||
<activity android:name=".BatteryConsumerPickerActivity"
|
||||
android:label="Battery Stats"
|
||||
android:icon="@mipmap/ic_launcher"
|
||||
android:launchMode="singleTop"
|
||||
android:exported="true">
|
||||
<intent-filter>
|
||||
@@ -36,7 +37,6 @@
|
||||
</activity>
|
||||
|
||||
<activity android:name=".BatteryStatsViewerActivity"
|
||||
android:icon="@mipmap/ic_launcher"
|
||||
android:label="Battery Stats"
|
||||
android:parentActivityName=".BatteryConsumerPickerActivity"/>
|
||||
</application>
|
||||
|
||||
@@ -68,7 +68,7 @@ public class BatteryConsumerData {
|
||||
double[] totalPowerByComponentMah = new double[BatteryConsumer.POWER_COMPONENT_COUNT];
|
||||
double[] totalModeledPowerByComponentMah =
|
||||
new double[BatteryConsumer.POWER_COMPONENT_COUNT];
|
||||
long[] totalDurationByComponentMs = new long[BatteryConsumer.TIME_COMPONENT_COUNT];
|
||||
long[] totalDurationByComponentMs = new long[BatteryConsumer.POWER_COMPONENT_COUNT];
|
||||
final int customComponentCount =
|
||||
requestedBatteryConsumer.getCustomPowerComponentCount();
|
||||
double[] totalCustomPowerByComponentMah = new double[customComponentCount];
|
||||
@@ -108,7 +108,7 @@ public class BatteryConsumerData {
|
||||
mBatteryConsumerInfo.isSystemBatteryConsumer);
|
||||
}
|
||||
|
||||
for (int component = 0; component < BatteryConsumer.TIME_COMPONENT_COUNT; component++) {
|
||||
for (int component = 0; component < BatteryConsumer.POWER_COMPONENT_COUNT; component++) {
|
||||
final String metricTitle = getTimeMetricTitle(component);
|
||||
addEntry(metricTitle, EntryType.DURATION,
|
||||
requestedBatteryConsumer.getUsageDurationMillis(component),
|
||||
@@ -141,7 +141,7 @@ public class BatteryConsumerData {
|
||||
|
||||
static String getTimeMetricTitle(int componentId) {
|
||||
final String componentName = DebugUtils.constantToString(BatteryConsumer.class,
|
||||
"TIME_COMPONENT_", componentId);
|
||||
"POWER_COMPONENT_", componentId);
|
||||
return componentName.charAt(0) + componentName.substring(1).toLowerCase().replace('_', ' ')
|
||||
+ " time";
|
||||
}
|
||||
@@ -159,7 +159,7 @@ public class BatteryConsumerData {
|
||||
private void computeTotalDuration(BatteryUsageStats batteryUsageStats,
|
||||
long[] durationByComponentMs) {
|
||||
for (BatteryConsumer consumer : batteryUsageStats.getUidBatteryConsumers()) {
|
||||
for (int component = 0; component < BatteryConsumer.TIME_COMPONENT_COUNT;
|
||||
for (int component = 0; component < BatteryConsumer.POWER_COMPONENT_COUNT;
|
||||
component++) {
|
||||
durationByComponentMs[component] += consumer.getUsageDurationMillis(component);
|
||||
}
|
||||
|
||||
@@ -65,7 +65,7 @@ public class AmbientDisplayPowerCalculatorTest {
|
||||
SystemBatteryConsumer consumer =
|
||||
mStatsRule.getSystemBatteryConsumer(
|
||||
SystemBatteryConsumer.DRAIN_TYPE_AMBIENT_DISPLAY);
|
||||
assertThat(consumer.getUsageDurationMillis(BatteryConsumer.TIME_COMPONENT_SCREEN))
|
||||
assertThat(consumer.getUsageDurationMillis(BatteryConsumer.POWER_COMPONENT_SCREEN))
|
||||
.isEqualTo(90 * MINUTE_IN_MS);
|
||||
// 100,000,00 uC / 1000 (micro-/milli-) / 360 (seconds/hour) = 27.777778 mAh
|
||||
assertThat(consumer.getConsumedPower(BatteryConsumer.POWER_COMPONENT_SCREEN))
|
||||
@@ -91,7 +91,7 @@ public class AmbientDisplayPowerCalculatorTest {
|
||||
SystemBatteryConsumer consumer =
|
||||
mStatsRule.getSystemBatteryConsumer(
|
||||
SystemBatteryConsumer.DRAIN_TYPE_AMBIENT_DISPLAY);
|
||||
assertThat(consumer.getUsageDurationMillis(BatteryConsumer.TIME_COMPONENT_SCREEN))
|
||||
assertThat(consumer.getUsageDurationMillis(BatteryConsumer.POWER_COMPONENT_SCREEN))
|
||||
.isEqualTo(90 * MINUTE_IN_MS);
|
||||
assertThat(consumer.getConsumedPower(BatteryConsumer.POWER_COMPONENT_SCREEN))
|
||||
.isWithin(PRECISION).of(15.0);
|
||||
|
||||
@@ -52,7 +52,7 @@ public class AudioPowerCalculatorTest {
|
||||
mStatsRule.apply(calculator);
|
||||
|
||||
UidBatteryConsumer consumer = mStatsRule.getUidBatteryConsumer(APP_UID);
|
||||
assertThat(consumer.getUsageDurationMillis(BatteryConsumer.TIME_COMPONENT_AUDIO))
|
||||
assertThat(consumer.getUsageDurationMillis(BatteryConsumer.POWER_COMPONENT_AUDIO))
|
||||
.isEqualTo(1000);
|
||||
assertThat(consumer.getConsumedPower(BatteryConsumer.POWER_COMPONENT_AUDIO))
|
||||
.isWithin(PRECISION).of(0.1);
|
||||
|
||||
@@ -171,7 +171,7 @@ public class BatteryUsageStatsRule implements TestRule {
|
||||
final boolean includePowerModels = (query.getFlags()
|
||||
& BatteryUsageStatsQuery.FLAG_BATTERY_USAGE_STATS_INCLUDE_POWER_MODELS) != 0;
|
||||
BatteryUsageStats.Builder builder = new BatteryUsageStats.Builder(
|
||||
customPowerComponentNames, 0, includePowerModels);
|
||||
customPowerComponentNames, includePowerModels);
|
||||
SparseArray<? extends BatteryStats.Uid> uidStats = mBatteryStats.getUidStats();
|
||||
for (int i = 0; i < uidStats.size(); i++) {
|
||||
builder.getOrCreateUidBatteryConsumerBuilder(uidStats.valueAt(i));
|
||||
|
||||
@@ -67,7 +67,7 @@ public class BatteryUsageStatsTest {
|
||||
final BatteryStatsImpl.Uid batteryStatsUid = batteryStats.getUidStatsLocked(2000);
|
||||
|
||||
final BatteryUsageStats.Builder builder =
|
||||
new BatteryUsageStats.Builder(new String[]{"FOO"}, 1)
|
||||
new BatteryUsageStats.Builder(new String[]{"FOO"})
|
||||
.setDischargePercentage(20)
|
||||
.setDischargedPowerRange(1000, 2000)
|
||||
.setStatsStartTimestamp(1000);
|
||||
@@ -83,11 +83,9 @@ public class BatteryUsageStatsTest {
|
||||
.setConsumedPowerForCustomComponent(
|
||||
BatteryConsumer.FIRST_CUSTOM_POWER_COMPONENT_ID, 500)
|
||||
.setUsageDurationMillis(
|
||||
BatteryConsumer.TIME_COMPONENT_CPU, 600)
|
||||
.setUsageDurationMillis(
|
||||
BatteryConsumer.TIME_COMPONENT_CPU_FOREGROUND, 700)
|
||||
BatteryConsumer.POWER_COMPONENT_CPU, 600)
|
||||
.setUsageDurationForCustomComponentMillis(
|
||||
BatteryConsumer.FIRST_CUSTOM_TIME_COMPONENT_ID, 800);
|
||||
BatteryConsumer.FIRST_CUSTOM_POWER_COMPONENT_ID, 800);
|
||||
|
||||
builder.getOrCreateSystemBatteryConsumerBuilder(SystemBatteryConsumer.DRAIN_TYPE_CAMERA)
|
||||
.setConsumedPower(
|
||||
@@ -95,9 +93,9 @@ public class BatteryUsageStatsTest {
|
||||
.setConsumedPowerForCustomComponent(
|
||||
BatteryConsumer.FIRST_CUSTOM_POWER_COMPONENT_ID, 10200)
|
||||
.setUsageDurationMillis(
|
||||
BatteryConsumer.TIME_COMPONENT_CPU, 10300)
|
||||
BatteryConsumer.POWER_COMPONENT_CPU, 10300)
|
||||
.setUsageDurationForCustomComponentMillis(
|
||||
BatteryConsumer.FIRST_CUSTOM_TIME_COMPONENT_ID, 10400)
|
||||
BatteryConsumer.FIRST_CUSTOM_POWER_COMPONENT_ID, 10400)
|
||||
.setPowerConsumedByApps(20000);
|
||||
|
||||
return builder.build();
|
||||
@@ -129,11 +127,9 @@ public class BatteryUsageStatsTest {
|
||||
assertThat(uidBatteryConsumer.getConsumedPowerForCustomComponent(
|
||||
BatteryConsumer.FIRST_CUSTOM_POWER_COMPONENT_ID)).isEqualTo(500);
|
||||
assertThat(uidBatteryConsumer.getUsageDurationMillis(
|
||||
BatteryConsumer.TIME_COMPONENT_CPU)).isEqualTo(600);
|
||||
assertThat(uidBatteryConsumer.getUsageDurationMillis(
|
||||
BatteryConsumer.TIME_COMPONENT_CPU_FOREGROUND)).isEqualTo(700);
|
||||
BatteryConsumer.POWER_COMPONENT_CPU)).isEqualTo(600);
|
||||
assertThat(uidBatteryConsumer.getUsageDurationForCustomComponentMillis(
|
||||
BatteryConsumer.FIRST_CUSTOM_TIME_COMPONENT_ID)).isEqualTo(800);
|
||||
BatteryConsumer.FIRST_CUSTOM_POWER_COMPONENT_ID)).isEqualTo(800);
|
||||
assertThat(uidBatteryConsumer.getConsumedPower()).isEqualTo(1200);
|
||||
assertThat(uidBatteryConsumer.getCustomPowerComponentCount()).isEqualTo(1);
|
||||
assertThat(uidBatteryConsumer.getCustomPowerComponentName(
|
||||
@@ -152,9 +148,9 @@ public class BatteryUsageStatsTest {
|
||||
assertThat(systemBatteryConsumer.getConsumedPowerForCustomComponent(
|
||||
BatteryConsumer.FIRST_CUSTOM_POWER_COMPONENT_ID)).isEqualTo(10200);
|
||||
assertThat(systemBatteryConsumer.getUsageDurationMillis(
|
||||
BatteryConsumer.TIME_COMPONENT_CPU)).isEqualTo(10300);
|
||||
BatteryConsumer.POWER_COMPONENT_CPU)).isEqualTo(10300);
|
||||
assertThat(systemBatteryConsumer.getUsageDurationForCustomComponentMillis(
|
||||
BatteryConsumer.FIRST_CUSTOM_TIME_COMPONENT_ID)).isEqualTo(10400);
|
||||
BatteryConsumer.FIRST_CUSTOM_POWER_COMPONENT_ID)).isEqualTo(10400);
|
||||
assertThat(systemBatteryConsumer.getConsumedPower()).isEqualTo(20300);
|
||||
assertThat(systemBatteryConsumer.getPowerConsumedByApps()).isEqualTo(20000);
|
||||
assertThat(systemBatteryConsumer.getUsageDurationMillis())
|
||||
|
||||
@@ -147,7 +147,7 @@ public class BluetoothPowerCalculatorTest {
|
||||
.isEqualTo(powerModel);
|
||||
|
||||
long usageDurationMillis = batteryConsumer.getUsageDurationMillis(
|
||||
BatteryConsumer.TIME_COMPONENT_BLUETOOTH);
|
||||
BatteryConsumer.POWER_COMPONENT_BLUETOOTH);
|
||||
|
||||
assertThat(usageDurationMillis).isEqualTo(durationMs);
|
||||
}
|
||||
|
||||
@@ -52,7 +52,7 @@ public class CameraPowerCalculatorTest {
|
||||
mStatsRule.apply(calculator);
|
||||
|
||||
UidBatteryConsumer consumer = mStatsRule.getUidBatteryConsumer(APP_UID);
|
||||
assertThat(consumer.getUsageDurationMillis(BatteryConsumer.TIME_COMPONENT_CAMERA))
|
||||
assertThat(consumer.getUsageDurationMillis(BatteryConsumer.POWER_COMPONENT_CAMERA))
|
||||
.isEqualTo(1000);
|
||||
assertThat(consumer.getConsumedPower(BatteryConsumer.POWER_COMPONENT_CAMERA))
|
||||
.isWithin(PRECISION).of(0.1);
|
||||
|
||||
@@ -144,7 +144,7 @@ public class CpuPowerCalculatorTest {
|
||||
mStatsRule.apply(BatteryUsageStatsRule.POWER_PROFILE_MODEL_ONLY, calculator);
|
||||
|
||||
UidBatteryConsumer uidConsumer1 = mStatsRule.getUidBatteryConsumer(APP_UID1);
|
||||
assertThat(uidConsumer1.getUsageDurationMillis(BatteryConsumer.TIME_COMPONENT_CPU))
|
||||
assertThat(uidConsumer1.getUsageDurationMillis(BatteryConsumer.POWER_COMPONENT_CPU))
|
||||
.isEqualTo(3333);
|
||||
assertThat(uidConsumer1.getConsumedPower(BatteryConsumer.POWER_COMPONENT_CPU))
|
||||
.isWithin(PRECISION).of(1.092233);
|
||||
@@ -153,7 +153,7 @@ public class CpuPowerCalculatorTest {
|
||||
assertThat(uidConsumer1.getPackageWithHighestDrain()).isEqualTo("bar");
|
||||
|
||||
UidBatteryConsumer uidConsumer2 = mStatsRule.getUidBatteryConsumer(APP_UID2);
|
||||
assertThat(uidConsumer2.getUsageDurationMillis(BatteryConsumer.TIME_COMPONENT_CPU))
|
||||
assertThat(uidConsumer2.getUsageDurationMillis(BatteryConsumer.POWER_COMPONENT_CPU))
|
||||
.isEqualTo(7777);
|
||||
assertThat(uidConsumer2.getConsumedPower(BatteryConsumer.POWER_COMPONENT_CPU))
|
||||
.isWithin(PRECISION).of(2.672322);
|
||||
@@ -208,7 +208,7 @@ public class CpuPowerCalculatorTest {
|
||||
mStatsRule.apply(calculator);
|
||||
|
||||
UidBatteryConsumer uidConsumer1 = mStatsRule.getUidBatteryConsumer(APP_UID1);
|
||||
assertThat(uidConsumer1.getUsageDurationMillis(BatteryConsumer.TIME_COMPONENT_CPU))
|
||||
assertThat(uidConsumer1.getUsageDurationMillis(BatteryConsumer.POWER_COMPONENT_CPU))
|
||||
.isEqualTo(3333);
|
||||
assertThat(uidConsumer1.getConsumedPower(BatteryConsumer.POWER_COMPONENT_CPU))
|
||||
.isWithin(PRECISION).of(3.18877);
|
||||
@@ -217,7 +217,7 @@ public class CpuPowerCalculatorTest {
|
||||
assertThat(uidConsumer1.getPackageWithHighestDrain()).isEqualTo("bar");
|
||||
|
||||
UidBatteryConsumer uidConsumer2 = mStatsRule.getUidBatteryConsumer(APP_UID2);
|
||||
assertThat(uidConsumer2.getUsageDurationMillis(BatteryConsumer.TIME_COMPONENT_CPU))
|
||||
assertThat(uidConsumer2.getUsageDurationMillis(BatteryConsumer.POWER_COMPONENT_CPU))
|
||||
.isEqualTo(7777);
|
||||
assertThat(uidConsumer2.getConsumedPower(BatteryConsumer.POWER_COMPONENT_CPU))
|
||||
.isWithin(PRECISION).of(7.44072);
|
||||
|
||||
@@ -52,7 +52,7 @@ public class FlashlightPowerCalculatorTest {
|
||||
mStatsRule.apply(calculator);
|
||||
|
||||
UidBatteryConsumer consumer = mStatsRule.getUidBatteryConsumer(APP_UID);
|
||||
assertThat(consumer.getUsageDurationMillis(BatteryConsumer.TIME_COMPONENT_FLASHLIGHT))
|
||||
assertThat(consumer.getUsageDurationMillis(BatteryConsumer.POWER_COMPONENT_FLASHLIGHT))
|
||||
.isEqualTo(1000);
|
||||
assertThat(consumer.getConsumedPower(BatteryConsumer.POWER_COMPONENT_FLASHLIGHT))
|
||||
.isWithin(PRECISION).of(0.1);
|
||||
|
||||
@@ -56,7 +56,7 @@ public class GnssPowerCalculatorTest {
|
||||
mStatsRule.apply(BatteryUsageStatsRule.POWER_PROFILE_MODEL_ONLY, calculator);
|
||||
|
||||
UidBatteryConsumer consumer = mStatsRule.getUidBatteryConsumer(APP_UID);
|
||||
assertThat(consumer.getUsageDurationMillis(BatteryConsumer.TIME_COMPONENT_GNSS))
|
||||
assertThat(consumer.getUsageDurationMillis(BatteryConsumer.POWER_COMPONENT_GNSS))
|
||||
.isEqualTo(1000);
|
||||
assertThat(consumer.getConsumedPower(BatteryConsumer.POWER_COMPONENT_GNSS))
|
||||
.isWithin(PRECISION).of(0.1);
|
||||
@@ -83,7 +83,7 @@ public class GnssPowerCalculatorTest {
|
||||
mStatsRule.apply(calculator);
|
||||
|
||||
UidBatteryConsumer consumer = mStatsRule.getUidBatteryConsumer(APP_UID);
|
||||
assertThat(consumer.getUsageDurationMillis(BatteryConsumer.TIME_COMPONENT_GNSS))
|
||||
assertThat(consumer.getUsageDurationMillis(BatteryConsumer.POWER_COMPONENT_GNSS))
|
||||
.isEqualTo(1000);
|
||||
assertThat(consumer.getConsumedPower(BatteryConsumer.POWER_COMPONENT_GNSS))
|
||||
.isWithin(PRECISION).of(2.77777);
|
||||
@@ -91,7 +91,7 @@ public class GnssPowerCalculatorTest {
|
||||
.isEqualTo(BatteryConsumer.POWER_MODEL_MEASURED_ENERGY);
|
||||
|
||||
UidBatteryConsumer consumer2 = mStatsRule.getUidBatteryConsumer(APP_UID2);
|
||||
assertThat(consumer2.getUsageDurationMillis(BatteryConsumer.TIME_COMPONENT_GNSS))
|
||||
assertThat(consumer2.getUsageDurationMillis(BatteryConsumer.POWER_COMPONENT_GNSS))
|
||||
.isEqualTo(2000);
|
||||
assertThat(consumer2.getConsumedPower(BatteryConsumer.POWER_COMPONENT_GNSS))
|
||||
.isWithin(PRECISION).of(5.55555);
|
||||
|
||||
@@ -48,7 +48,7 @@ public class IdlePowerCalculatorTest {
|
||||
|
||||
SystemBatteryConsumer consumer =
|
||||
mStatsRule.getSystemBatteryConsumer(SystemBatteryConsumer.DRAIN_TYPE_IDLE);
|
||||
assertThat(consumer.getUsageDurationMillis(BatteryConsumer.TIME_COMPONENT_IDLE))
|
||||
assertThat(consumer.getUsageDurationMillis(BatteryConsumer.POWER_COMPONENT_IDLE))
|
||||
.isEqualTo(3000);
|
||||
assertThat(consumer.getConsumedPower(BatteryConsumer.POWER_COMPONENT_IDLE))
|
||||
.isWithin(PRECISION).of(0.7);
|
||||
|
||||
@@ -55,7 +55,7 @@ public class MemoryPowerCalculatorTest {
|
||||
|
||||
SystemBatteryConsumer consumer =
|
||||
mStatsRule.getSystemBatteryConsumer(SystemBatteryConsumer.DRAIN_TYPE_MEMORY);
|
||||
assertThat(consumer.getUsageDurationMillis(BatteryConsumer.TIME_COMPONENT_MEMORY))
|
||||
assertThat(consumer.getUsageDurationMillis(BatteryConsumer.POWER_COMPONENT_MEMORY))
|
||||
.isEqualTo(3000);
|
||||
assertThat(consumer.getConsumedPower(BatteryConsumer.POWER_COMPONENT_MEMORY))
|
||||
.isWithin(PRECISION).of(0.7);
|
||||
|
||||
@@ -84,7 +84,7 @@ public class ScreenPowerCalculatorTest {
|
||||
|
||||
SystemBatteryConsumer consumer =
|
||||
mStatsRule.getSystemBatteryConsumer(SystemBatteryConsumer.DRAIN_TYPE_SCREEN);
|
||||
assertThat(consumer.getUsageDurationMillis(BatteryConsumer.TIME_COMPONENT_SCREEN))
|
||||
assertThat(consumer.getUsageDurationMillis(BatteryConsumer.POWER_COMPONENT_SCREEN))
|
||||
.isEqualTo(80 * MINUTE_IN_MS);
|
||||
|
||||
// 600000000 uAs * (1 mA / 1000 uA) * (1 h / 3600 s) = 166.66666 mAh
|
||||
@@ -98,7 +98,7 @@ public class ScreenPowerCalculatorTest {
|
||||
.isWithin(PRECISION).of(166.66666);
|
||||
|
||||
UidBatteryConsumer uid1 = mStatsRule.getUidBatteryConsumer(APP_UID1);
|
||||
assertThat(uid1.getUsageDurationMillis(BatteryConsumer.TIME_COMPONENT_SCREEN))
|
||||
assertThat(uid1.getUsageDurationMillis(BatteryConsumer.POWER_COMPONENT_SCREEN))
|
||||
.isEqualTo(20 * MINUTE_IN_MS);
|
||||
|
||||
// Uid1 took all of the foreground time during the first Display update.
|
||||
@@ -110,7 +110,7 @@ public class ScreenPowerCalculatorTest {
|
||||
.isEqualTo(BatteryConsumer.POWER_MODEL_MEASURED_ENERGY);
|
||||
|
||||
UidBatteryConsumer uid2 = mStatsRule.getUidBatteryConsumer(APP_UID2);
|
||||
assertThat(uid2.getUsageDurationMillis(BatteryConsumer.TIME_COMPONENT_SCREEN))
|
||||
assertThat(uid2.getUsageDurationMillis(BatteryConsumer.POWER_COMPONENT_SCREEN))
|
||||
.isEqualTo(60 * MINUTE_IN_MS);
|
||||
|
||||
// Uid2 ran for 40 minutes out of the total 45 min of foreground time during the second
|
||||
@@ -153,7 +153,7 @@ public class ScreenPowerCalculatorTest {
|
||||
|
||||
SystemBatteryConsumer consumer =
|
||||
mStatsRule.getSystemBatteryConsumer(SystemBatteryConsumer.DRAIN_TYPE_SCREEN);
|
||||
assertThat(consumer.getUsageDurationMillis(BatteryConsumer.TIME_COMPONENT_SCREEN))
|
||||
assertThat(consumer.getUsageDurationMillis(BatteryConsumer.POWER_COMPONENT_SCREEN))
|
||||
.isEqualTo(80 * MINUTE_IN_MS);
|
||||
assertThat(consumer.getConsumedPower(BatteryConsumer.POWER_COMPONENT_SCREEN))
|
||||
.isWithin(PRECISION).of(92.0);
|
||||
@@ -165,7 +165,7 @@ public class ScreenPowerCalculatorTest {
|
||||
.isWithin(PRECISION).of(92.0);
|
||||
|
||||
UidBatteryConsumer uid1 = mStatsRule.getUidBatteryConsumer(APP_UID1);
|
||||
assertThat(uid1.getUsageDurationMillis(BatteryConsumer.TIME_COMPONENT_SCREEN))
|
||||
assertThat(uid1.getUsageDurationMillis(BatteryConsumer.POWER_COMPONENT_SCREEN))
|
||||
.isEqualTo(20 * MINUTE_IN_MS);
|
||||
|
||||
// Uid1 took 20 out of the total of 80 min of foreground activity
|
||||
@@ -176,7 +176,7 @@ public class ScreenPowerCalculatorTest {
|
||||
.isEqualTo(BatteryConsumer.POWER_MODEL_POWER_PROFILE);
|
||||
|
||||
UidBatteryConsumer uid2 = mStatsRule.getUidBatteryConsumer(APP_UID2);
|
||||
assertThat(uid2.getUsageDurationMillis(BatteryConsumer.TIME_COMPONENT_SCREEN))
|
||||
assertThat(uid2.getUsageDurationMillis(BatteryConsumer.POWER_COMPONENT_SCREEN))
|
||||
.isEqualTo(60 * MINUTE_IN_MS);
|
||||
|
||||
// Uid2 took 60 out of the total of 80 min of foreground activity
|
||||
|
||||
@@ -70,7 +70,7 @@ public class SensorPowerCalculatorTest {
|
||||
mStatsRule.apply(calculator);
|
||||
|
||||
UidBatteryConsumer consumer = mStatsRule.getUidBatteryConsumer(APP_UID);
|
||||
assertThat(consumer.getUsageDurationMillis(BatteryConsumer.TIME_COMPONENT_SENSORS))
|
||||
assertThat(consumer.getUsageDurationMillis(BatteryConsumer.POWER_COMPONENT_SENSORS))
|
||||
.isEqualTo(3000);
|
||||
assertThat(consumer.getConsumedPower(BatteryConsumer.POWER_COMPONENT_SENSORS))
|
||||
.isWithin(PRECISION).of(0.5);
|
||||
|
||||
@@ -58,16 +58,16 @@ public class UserPowerCalculatorTest {
|
||||
assertThat(mStatsRule.getUserBatteryConsumer(USER1)).isNull();
|
||||
|
||||
assertThat(mStatsRule.getUidBatteryConsumer(UserHandle.getUid(USER1, APP_UID1))
|
||||
.getUsageDurationMillis(BatteryConsumer.TIME_COMPONENT_AUDIO)).isEqualTo(3000);
|
||||
.getUsageDurationMillis(BatteryConsumer.POWER_COMPONENT_AUDIO)).isEqualTo(3000);
|
||||
assertThat(mStatsRule.getUidBatteryConsumer(UserHandle.getUid(USER1, APP_UID1))
|
||||
.getUsageDurationMillis(BatteryConsumer.TIME_COMPONENT_VIDEO)).isEqualTo(7000);
|
||||
.getUsageDurationMillis(BatteryConsumer.POWER_COMPONENT_VIDEO)).isEqualTo(7000);
|
||||
|
||||
assertThat(mStatsRule.getUserBatteryConsumer(USER2)).isNull();
|
||||
|
||||
assertThat(mStatsRule.getUidBatteryConsumer(UserHandle.getUid(USER2, APP_UID2))
|
||||
.getUsageDurationMillis(BatteryConsumer.TIME_COMPONENT_AUDIO)).isEqualTo(5555);
|
||||
.getUsageDurationMillis(BatteryConsumer.POWER_COMPONENT_AUDIO)).isEqualTo(5555);
|
||||
assertThat(mStatsRule.getUidBatteryConsumer(UserHandle.getUid(USER2, APP_UID2))
|
||||
.getUsageDurationMillis(BatteryConsumer.TIME_COMPONENT_VIDEO)).isEqualTo(9999);
|
||||
.getUsageDurationMillis(BatteryConsumer.POWER_COMPONENT_VIDEO)).isEqualTo(9999);
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -82,19 +82,19 @@ public class UserPowerCalculatorTest {
|
||||
assertThat(mStatsRule.getUserBatteryConsumer(USER1)).isNull();
|
||||
|
||||
assertThat(mStatsRule.getUidBatteryConsumer(UserHandle.getUid(USER1, APP_UID1))
|
||||
.getUsageDurationMillis(BatteryConsumer.TIME_COMPONENT_AUDIO)).isEqualTo(3000);
|
||||
.getUsageDurationMillis(BatteryConsumer.POWER_COMPONENT_AUDIO)).isEqualTo(3000);
|
||||
assertThat(mStatsRule.getUidBatteryConsumer(UserHandle.getUid(USER1, APP_UID1))
|
||||
.getUsageDurationMillis(BatteryConsumer.TIME_COMPONENT_VIDEO)).isEqualTo(7000);
|
||||
.getUsageDurationMillis(BatteryConsumer.POWER_COMPONENT_VIDEO)).isEqualTo(7000);
|
||||
assertThat(mStatsRule.getUidBatteryConsumer(UserHandle.getUid(USER1, APP_UID2))).isNull();
|
||||
assertThat(mStatsRule.getUidBatteryConsumer(UserHandle.getUid(USER1, APP_UID3))
|
||||
.getUsageDurationMillis(BatteryConsumer.TIME_COMPONENT_AUDIO)).isEqualTo(7070);
|
||||
.getUsageDurationMillis(BatteryConsumer.POWER_COMPONENT_AUDIO)).isEqualTo(7070);
|
||||
assertThat(mStatsRule.getUidBatteryConsumer(UserHandle.getUid(USER1, APP_UID3))
|
||||
.getUsageDurationMillis(BatteryConsumer.TIME_COMPONENT_VIDEO)).isEqualTo(11110);
|
||||
.getUsageDurationMillis(BatteryConsumer.POWER_COMPONENT_VIDEO)).isEqualTo(11110);
|
||||
|
||||
UserBatteryConsumer user2 = mStatsRule.getUserBatteryConsumer(USER2);
|
||||
assertThat(user2.getUsageDurationMillis(BatteryConsumer.TIME_COMPONENT_AUDIO))
|
||||
assertThat(user2.getUsageDurationMillis(BatteryConsumer.POWER_COMPONENT_AUDIO))
|
||||
.isEqualTo(15308);
|
||||
assertThat(user2.getUsageDurationMillis(BatteryConsumer.TIME_COMPONENT_VIDEO))
|
||||
assertThat(user2.getUsageDurationMillis(BatteryConsumer.POWER_COMPONENT_VIDEO))
|
||||
.isEqualTo(24196);
|
||||
|
||||
assertThat(mStatsRule.getUidBatteryConsumer(UserHandle.getUid(USER2, APP_UID1))).isNull();
|
||||
@@ -130,7 +130,7 @@ public class UserPowerCalculatorTest {
|
||||
protected void calculateApp(UidBatteryConsumer.Builder app, BatteryStats.Uid u,
|
||||
long rawRealtimeUs, long rawUptimeUs, BatteryUsageStatsQuery query) {
|
||||
long durationMs = u.getAudioTurnedOnTimer().getTotalTimeLocked(rawRealtimeUs, 0);
|
||||
app.setUsageDurationMillis(BatteryConsumer.TIME_COMPONENT_AUDIO, durationMs / 1000);
|
||||
app.setUsageDurationMillis(BatteryConsumer.POWER_COMPONENT_AUDIO, durationMs / 1000);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -139,7 +139,7 @@ public class UserPowerCalculatorTest {
|
||||
protected void calculateApp(UidBatteryConsumer.Builder app, BatteryStats.Uid u,
|
||||
long rawRealtimeUs, long rawUptimeUs, BatteryUsageStatsQuery query) {
|
||||
long durationMs = u.getVideoTurnedOnTimer().getTotalTimeLocked(rawRealtimeUs, 0);
|
||||
app.setUsageDurationMillis(BatteryConsumer.TIME_COMPONENT_VIDEO, durationMs / 1000);
|
||||
app.setUsageDurationMillis(BatteryConsumer.POWER_COMPONENT_VIDEO, durationMs / 1000);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -52,7 +52,7 @@ public class VideoPowerCalculatorTest {
|
||||
mStatsRule.apply(calculator);
|
||||
|
||||
UidBatteryConsumer consumer = mStatsRule.getUidBatteryConsumer(APP_UID);
|
||||
assertThat(consumer.getUsageDurationMillis(BatteryConsumer.TIME_COMPONENT_VIDEO))
|
||||
assertThat(consumer.getUsageDurationMillis(BatteryConsumer.POWER_COMPONENT_VIDEO))
|
||||
.isEqualTo(1000);
|
||||
assertThat(consumer.getConsumedPower(BatteryConsumer.POWER_COMPONENT_VIDEO))
|
||||
.isWithin(PRECISION).of(0.1);
|
||||
|
||||
@@ -62,13 +62,13 @@ public class WakelockPowerCalculatorTest {
|
||||
mStatsRule.apply(calculator);
|
||||
|
||||
UidBatteryConsumer consumer = mStatsRule.getUidBatteryConsumer(APP_UID);
|
||||
assertThat(consumer.getUsageDurationMillis(BatteryConsumer.TIME_COMPONENT_WAKELOCK))
|
||||
assertThat(consumer.getUsageDurationMillis(BatteryConsumer.POWER_COMPONENT_WAKELOCK))
|
||||
.isEqualTo(1000);
|
||||
assertThat(consumer.getConsumedPower(BatteryConsumer.POWER_COMPONENT_WAKELOCK))
|
||||
.isWithin(PRECISION).of(0.1);
|
||||
|
||||
UidBatteryConsumer osConsumer = mStatsRule.getUidBatteryConsumer(Process.ROOT_UID);
|
||||
assertThat(osConsumer.getUsageDurationMillis(BatteryConsumer.TIME_COMPONENT_WAKELOCK))
|
||||
assertThat(osConsumer.getUsageDurationMillis(BatteryConsumer.POWER_COMPONENT_WAKELOCK))
|
||||
.isEqualTo(5000);
|
||||
assertThat(osConsumer.getConsumedPower(BatteryConsumer.POWER_COMPONENT_WAKELOCK))
|
||||
.isWithin(PRECISION).of(0.5);
|
||||
|
||||
@@ -87,7 +87,7 @@ public class WifiPowerCalculatorTest {
|
||||
mStatsRule.apply(BatteryUsageStatsRule.POWER_PROFILE_MODEL_ONLY, calculator);
|
||||
|
||||
UidBatteryConsumer uidConsumer = mStatsRule.getUidBatteryConsumer(APP_UID);
|
||||
assertThat(uidConsumer.getUsageDurationMillis(BatteryConsumer.TIME_COMPONENT_WIFI))
|
||||
assertThat(uidConsumer.getUsageDurationMillis(BatteryConsumer.POWER_COMPONENT_WIFI))
|
||||
.isEqualTo(1423);
|
||||
assertThat(uidConsumer.getConsumedPower(BatteryConsumer.POWER_COMPONENT_WIFI))
|
||||
.isWithin(PRECISION).of(0.2214666);
|
||||
@@ -96,7 +96,7 @@ public class WifiPowerCalculatorTest {
|
||||
|
||||
SystemBatteryConsumer systemConsumer =
|
||||
mStatsRule.getSystemBatteryConsumer(SystemBatteryConsumer.DRAIN_TYPE_WIFI);
|
||||
assertThat(systemConsumer.getUsageDurationMillis(BatteryConsumer.TIME_COMPONENT_WIFI))
|
||||
assertThat(systemConsumer.getUsageDurationMillis(BatteryConsumer.POWER_COMPONENT_WIFI))
|
||||
.isEqualTo(5577);
|
||||
assertThat(systemConsumer.getConsumedPower(BatteryConsumer.POWER_COMPONENT_WIFI))
|
||||
.isWithin(PRECISION).of(1.11153);
|
||||
@@ -117,7 +117,7 @@ public class WifiPowerCalculatorTest {
|
||||
mStatsRule.apply(calculator);
|
||||
|
||||
UidBatteryConsumer uidConsumer = mStatsRule.getUidBatteryConsumer(APP_UID);
|
||||
assertThat(uidConsumer.getUsageDurationMillis(BatteryConsumer.TIME_COMPONENT_WIFI))
|
||||
assertThat(uidConsumer.getUsageDurationMillis(BatteryConsumer.POWER_COMPONENT_WIFI))
|
||||
.isEqualTo(1423);
|
||||
/* Same ratio as in testPowerControllerBasedModel_nonMeasured but scaled by 1_000_000uC. */
|
||||
assertThat(uidConsumer.getConsumedPower(BatteryConsumer.POWER_COMPONENT_WIFI))
|
||||
@@ -127,7 +127,7 @@ public class WifiPowerCalculatorTest {
|
||||
|
||||
SystemBatteryConsumer systemConsumer =
|
||||
mStatsRule.getSystemBatteryConsumer(SystemBatteryConsumer.DRAIN_TYPE_WIFI);
|
||||
assertThat(systemConsumer.getUsageDurationMillis(BatteryConsumer.TIME_COMPONENT_WIFI))
|
||||
assertThat(systemConsumer.getUsageDurationMillis(BatteryConsumer.POWER_COMPONENT_WIFI))
|
||||
.isEqualTo(5577);
|
||||
/* Same ratio as in testPowerControllerBasedModel_nonMeasured but scaled by 1_000_000uC. */
|
||||
assertThat(systemConsumer.getConsumedPower(BatteryConsumer.POWER_COMPONENT_WIFI))
|
||||
@@ -162,7 +162,7 @@ public class WifiPowerCalculatorTest {
|
||||
mStatsRule.apply(BatteryUsageStatsRule.POWER_PROFILE_MODEL_ONLY, calculator);
|
||||
|
||||
UidBatteryConsumer uidConsumer = mStatsRule.getUidBatteryConsumer(APP_UID);
|
||||
assertThat(uidConsumer.getUsageDurationMillis(BatteryConsumer.TIME_COMPONENT_WIFI))
|
||||
assertThat(uidConsumer.getUsageDurationMillis(BatteryConsumer.POWER_COMPONENT_WIFI))
|
||||
.isEqualTo(1000);
|
||||
assertThat(uidConsumer.getConsumedPower(BatteryConsumer.POWER_COMPONENT_WIFI))
|
||||
.isWithin(PRECISION).of(0.8231573);
|
||||
@@ -171,7 +171,7 @@ public class WifiPowerCalculatorTest {
|
||||
|
||||
SystemBatteryConsumer systemConsumer =
|
||||
mStatsRule.getSystemBatteryConsumer(SystemBatteryConsumer.DRAIN_TYPE_WIFI);
|
||||
assertThat(systemConsumer.getUsageDurationMillis(BatteryConsumer.TIME_COMPONENT_WIFI))
|
||||
assertThat(systemConsumer.getUsageDurationMillis(BatteryConsumer.POWER_COMPONENT_WIFI))
|
||||
.isEqualTo(2222);
|
||||
assertThat(systemConsumer.getConsumedPower(BatteryConsumer.POWER_COMPONENT_WIFI))
|
||||
.isWithin(PRECISION).of(2.575000);
|
||||
@@ -193,7 +193,7 @@ public class WifiPowerCalculatorTest {
|
||||
mStatsRule.apply(calculator);
|
||||
|
||||
UidBatteryConsumer uidConsumer = mStatsRule.getUidBatteryConsumer(APP_UID);
|
||||
assertThat(uidConsumer.getUsageDurationMillis(BatteryConsumer.TIME_COMPONENT_WIFI))
|
||||
assertThat(uidConsumer.getUsageDurationMillis(BatteryConsumer.POWER_COMPONENT_WIFI))
|
||||
.isEqualTo(1000);
|
||||
/* Same ratio as in testTimerBasedModel_nonMeasured but scaled by 1_000_000uC. */
|
||||
assertThat(uidConsumer.getConsumedPower(BatteryConsumer.POWER_COMPONENT_WIFI))
|
||||
@@ -203,7 +203,7 @@ public class WifiPowerCalculatorTest {
|
||||
|
||||
SystemBatteryConsumer systemConsumer =
|
||||
mStatsRule.getSystemBatteryConsumer(SystemBatteryConsumer.DRAIN_TYPE_WIFI);
|
||||
assertThat(systemConsumer.getUsageDurationMillis(BatteryConsumer.TIME_COMPONENT_WIFI))
|
||||
assertThat(systemConsumer.getUsageDurationMillis(BatteryConsumer.POWER_COMPONENT_WIFI))
|
||||
.isEqualTo(2222);
|
||||
/* Same ratio as in testTimerBasedModel_nonMeasured but scaled by 1_000_000uC. */
|
||||
assertThat(systemConsumer.getConsumedPower(BatteryConsumer.POWER_COMPONENT_WIFI))
|
||||
|
||||
Reference in New Issue
Block a user