diff options
author | 2023-08-18 17:32:10 +0800 | |
---|---|---|
committer | 2023-09-01 06:45:20 +0000 | |
commit | 0549a3f28dc446624717c222757faaff032fccf1 (patch) | |
tree | 5e1b4732da2e1816fc9c28b35b74fd5bdc3eb3fa | |
parent | 9a619fccbf0095dd543a070ac6158523b75cc07a (diff) |
Add a threshold to filter out small power usage in battery stats.
Bug: 289185969
Bug: 291689623
Test: presubmit
Change-Id: I486109b4a617b9ac3b24df59e28a7ea8b2a76c57
13 files changed, 82 insertions, 32 deletions
diff --git a/core/java/android/os/AggregateBatteryConsumer.java b/core/java/android/os/AggregateBatteryConsumer.java index 7a153ef9c6f3..c5f56144c29c 100644 --- a/core/java/android/os/AggregateBatteryConsumer.java +++ b/core/java/android/os/AggregateBatteryConsumer.java @@ -116,8 +116,9 @@ public final class AggregateBatteryConsumer extends BatteryConsumer { * Builder for DeviceBatteryConsumer. */ public static final class Builder extends BaseBuilder<AggregateBatteryConsumer.Builder> { - public Builder(BatteryConsumer.BatteryConsumerData data, int scope) { - super(data, CONSUMER_TYPE_AGGREGATE); + public Builder(BatteryConsumer.BatteryConsumerData data, int scope, + double minConsumedPowerThreshold) { + super(data, CONSUMER_TYPE_AGGREGATE, minConsumedPowerThreshold); data.putInt(COLUMN_INDEX_SCOPE, scope); } diff --git a/core/java/android/os/BatteryConsumer.java b/core/java/android/os/BatteryConsumer.java index 0ba8d51e820f..ca84b3563561 100644 --- a/core/java/android/os/BatteryConsumer.java +++ b/core/java/android/os/BatteryConsumer.java @@ -795,11 +795,12 @@ public abstract class BatteryConsumer { protected final BatteryConsumer.BatteryConsumerData mData; protected final PowerComponents.Builder mPowerComponentsBuilder; - public BaseBuilder(BatteryConsumer.BatteryConsumerData data, int consumerType) { + public BaseBuilder(BatteryConsumer.BatteryConsumerData data, int consumerType, + double minConsumedPowerThreshold) { mData = data; data.putLong(COLUMN_INDEX_BATTERY_CONSUMER_TYPE, consumerType); - mPowerComponentsBuilder = new PowerComponents.Builder(data); + mPowerComponentsBuilder = new PowerComponents.Builder(data, minConsumedPowerThreshold); } @Nullable diff --git a/core/java/android/os/BatteryUsageStats.java b/core/java/android/os/BatteryUsageStats.java index e2c52cecc2b1..cc37b5433b82 100644 --- a/core/java/android/os/BatteryUsageStats.java +++ b/core/java/android/os/BatteryUsageStats.java @@ -707,7 +707,7 @@ public final class BatteryUsageStats implements Parcelable, Closeable { XML_ATTR_PREFIX_INCLUDES_PROC_STATE_DATA, false); builder = new Builder(customComponentNames.toArray(new String[0]), true, - includesProcStateData); + includesProcStateData, 0); builder.setStatsStartTimestamp( parser.getAttributeLong(null, XML_ATTR_START_TIMESTAMP)); @@ -782,6 +782,7 @@ public final class BatteryUsageStats implements Parcelable, Closeable { private final String[] mCustomPowerComponentNames; private final boolean mIncludePowerModels; private final boolean mIncludesProcessStateData; + private final double mMinConsumedPowerThreshold; private final BatteryConsumer.BatteryConsumerDataLayout mBatteryConsumerDataLayout; private long mStatsStartTimestampMs; private long mStatsEndTimestampMs; @@ -802,11 +803,11 @@ public final class BatteryUsageStats implements Parcelable, Closeable { private BatteryStatsHistory mBatteryStatsHistory; public Builder(@NonNull String[] customPowerComponentNames) { - this(customPowerComponentNames, false, false); + this(customPowerComponentNames, false, false, 0); } public Builder(@NonNull String[] customPowerComponentNames, boolean includePowerModels, - boolean includeProcessStateData) { + boolean includeProcessStateData, double minConsumedPowerThreshold) { mBatteryConsumersCursorWindow = new CursorWindow(null, BATTERY_CONSUMER_CURSOR_WINDOW_SIZE); mBatteryConsumerDataLayout = @@ -817,12 +818,14 @@ public final class BatteryUsageStats implements Parcelable, Closeable { mCustomPowerComponentNames = customPowerComponentNames; mIncludePowerModels = includePowerModels; mIncludesProcessStateData = includeProcessStateData; + mMinConsumedPowerThreshold = minConsumedPowerThreshold; for (int scope = 0; scope < AGGREGATE_BATTERY_CONSUMER_SCOPE_COUNT; scope++) { final BatteryConsumer.BatteryConsumerData data = BatteryConsumer.BatteryConsumerData.create(mBatteryConsumersCursorWindow, mBatteryConsumerDataLayout); mAggregateBatteryConsumersBuilders[scope] = - new AggregateBatteryConsumer.Builder(data, scope); + new AggregateBatteryConsumer.Builder( + data, scope, mMinConsumedPowerThreshold); } } @@ -961,7 +964,8 @@ public final class BatteryUsageStats implements Parcelable, Closeable { final BatteryConsumer.BatteryConsumerData data = BatteryConsumer.BatteryConsumerData.create(mBatteryConsumersCursorWindow, mBatteryConsumerDataLayout); - builder = new UidBatteryConsumer.Builder(data, batteryStatsUid); + builder = new UidBatteryConsumer.Builder(data, batteryStatsUid, + mMinConsumedPowerThreshold); mUidBatteryConsumerBuilders.put(uid, builder); } return builder; @@ -979,7 +983,7 @@ public final class BatteryUsageStats implements Parcelable, Closeable { final BatteryConsumer.BatteryConsumerData data = BatteryConsumer.BatteryConsumerData.create(mBatteryConsumersCursorWindow, mBatteryConsumerDataLayout); - builder = new UidBatteryConsumer.Builder(data, uid); + builder = new UidBatteryConsumer.Builder(data, uid, mMinConsumedPowerThreshold); mUidBatteryConsumerBuilders.put(uid, builder); } return builder; @@ -996,7 +1000,7 @@ public final class BatteryUsageStats implements Parcelable, Closeable { final BatteryConsumer.BatteryConsumerData data = BatteryConsumer.BatteryConsumerData.create(mBatteryConsumersCursorWindow, mBatteryConsumerDataLayout); - builder = new UserBatteryConsumer.Builder(data, userId); + builder = new UserBatteryConsumer.Builder(data, userId, mMinConsumedPowerThreshold); mUserBatteryConsumerBuilders.put(userId, builder); } return builder; diff --git a/core/java/android/os/BatteryUsageStatsQuery.java b/core/java/android/os/BatteryUsageStatsQuery.java index b3f4d9874f4e..49d7e8bc5632 100644 --- a/core/java/android/os/BatteryUsageStatsQuery.java +++ b/core/java/android/os/BatteryUsageStatsQuery.java @@ -80,6 +80,7 @@ public final class BatteryUsageStatsQuery implements Parcelable { private final long mMaxStatsAgeMs; private final long mFromTimestamp; private final long mToTimestamp; + private final double mMinConsumedPowerThreshold; private final @BatteryConsumer.PowerComponent int[] mPowerComponents; private BatteryUsageStatsQuery(@NonNull Builder builder) { @@ -87,6 +88,7 @@ public final class BatteryUsageStatsQuery implements Parcelable { mUserIds = builder.mUserIds != null ? builder.mUserIds.toArray() : new int[]{UserHandle.USER_ALL}; mMaxStatsAgeMs = builder.mMaxStatsAgeMs; + mMinConsumedPowerThreshold = builder.mMinConsumedPowerThreshold; mFromTimestamp = builder.mFromTimestamp; mToTimestamp = builder.mToTimestamp; mPowerComponents = builder.mPowerComponents; @@ -137,6 +139,14 @@ public final class BatteryUsageStatsQuery implements Parcelable { } /** + * Returns the minimal power component consumed power threshold. The small power consuming + * components will be reported as zero. + */ + public double getMinConsumedPowerThreshold() { + return mMinConsumedPowerThreshold; + } + + /** * Returns the exclusive lower bound of the stored snapshot timestamps that should be included * in the aggregation. Ignored if {@link #getToTimestamp()} is zero. */ @@ -158,6 +168,7 @@ public final class BatteryUsageStatsQuery implements Parcelable { mUserIds = new int[in.readInt()]; in.readIntArray(mUserIds); mMaxStatsAgeMs = in.readLong(); + mMinConsumedPowerThreshold = in.readDouble(); mFromTimestamp = in.readLong(); mToTimestamp = in.readLong(); mPowerComponents = in.createIntArray(); @@ -169,6 +180,7 @@ public final class BatteryUsageStatsQuery implements Parcelable { dest.writeInt(mUserIds.length); dest.writeIntArray(mUserIds); dest.writeLong(mMaxStatsAgeMs); + dest.writeDouble(mMinConsumedPowerThreshold); dest.writeLong(mFromTimestamp); dest.writeLong(mToTimestamp); dest.writeIntArray(mPowerComponents); @@ -202,6 +214,7 @@ public final class BatteryUsageStatsQuery implements Parcelable { private long mMaxStatsAgeMs = DEFAULT_MAX_STATS_AGE_MS; private long mFromTimestamp; private long mToTimestamp; + private double mMinConsumedPowerThreshold = 0; private @BatteryConsumer.PowerComponent int[] mPowerComponents; /** @@ -301,5 +314,14 @@ public final class BatteryUsageStatsQuery implements Parcelable { mMaxStatsAgeMs = maxStatsAgeMs; return this; } + + /** + * Set the minimal power component consumed power threshold. The small power consuming + * components will be reported as zero. + */ + public Builder setMinConsumedPowerThreshold(double minConsumedPowerThreshold) { + mMinConsumedPowerThreshold = minConsumedPowerThreshold; + return this; + } } } diff --git a/core/java/android/os/PowerComponents.java b/core/java/android/os/PowerComponents.java index 5dffa0a0ac34..9e5f5399301c 100644 --- a/core/java/android/os/PowerComponents.java +++ b/core/java/android/os/PowerComponents.java @@ -461,9 +461,11 @@ class PowerComponents { private static final byte POWER_MODEL_UNINITIALIZED = -1; private final BatteryConsumer.BatteryConsumerData mData; + private final double mMinConsumedPowerThreshold; - Builder(BatteryConsumer.BatteryConsumerData data) { + Builder(BatteryConsumer.BatteryConsumerData data, double minConsumedPowerThreshold) { mData = data; + mMinConsumedPowerThreshold = minConsumedPowerThreshold; for (BatteryConsumer.Key[] keys : mData.layout.keys) { for (BatteryConsumer.Key key : keys) { if (key.mPowerModelColumnIndex != -1) { @@ -476,6 +478,9 @@ class PowerComponents { @NonNull public Builder setConsumedPower(BatteryConsumer.Key key, double componentPower, int powerModel) { + if (Math.abs(componentPower) < mMinConsumedPowerThreshold) { + componentPower = 0; + } mData.putDouble(key.mPowerColumnIndex, componentPower); if (key.mPowerModelColumnIndex != -1) { mData.putInt(key.mPowerModelColumnIndex, powerModel); @@ -491,6 +496,9 @@ class PowerComponents { */ @NonNull public Builder setConsumedPowerForCustomComponent(int componentId, double componentPower) { + if (Math.abs(componentPower) < mMinConsumedPowerThreshold) { + componentPower = 0; + } final int index = componentId - BatteryConsumer.FIRST_CUSTOM_POWER_COMPONENT_ID; if (index < 0 || index >= mData.layout.customPowerComponentCount) { throw new IllegalArgumentException( diff --git a/core/java/android/os/UidBatteryConsumer.java b/core/java/android/os/UidBatteryConsumer.java index 103452d255a7..03a1b6f7fe01 100644 --- a/core/java/android/os/UidBatteryConsumer.java +++ b/core/java/android/os/UidBatteryConsumer.java @@ -207,17 +207,18 @@ public final class UidBatteryConsumer extends BatteryConsumer { private String mPackageWithHighestDrain = PACKAGE_NAME_UNINITIALIZED; private boolean mExcludeFromBatteryUsageStats; - public Builder(BatteryConsumerData data, @NonNull BatteryStats.Uid batteryStatsUid) { - this(data, batteryStatsUid, batteryStatsUid.getUid()); + public Builder(BatteryConsumerData data, @NonNull BatteryStats.Uid batteryStatsUid, + double minConsumedPowerThreshold) { + this(data, batteryStatsUid, batteryStatsUid.getUid(), minConsumedPowerThreshold); } - public Builder(BatteryConsumerData data, int uid) { - this(data, null, uid); + public Builder(BatteryConsumerData data, int uid, double minConsumedPowerThreshold) { + this(data, null, uid, minConsumedPowerThreshold); } private Builder(BatteryConsumerData data, @Nullable BatteryStats.Uid batteryStatsUid, - int uid) { - super(data, CONSUMER_TYPE_UID); + int uid, double minConsumedPowerThreshold) { + super(data, CONSUMER_TYPE_UID, minConsumedPowerThreshold); mBatteryStatsUid = batteryStatsUid; mUid = uid; mIsVirtualUid = mUid == Process.SDK_SANDBOX_VIRTUAL_UID; diff --git a/core/java/android/os/UserBatteryConsumer.java b/core/java/android/os/UserBatteryConsumer.java index 6b4a5cfc836f..a2ff078263ca 100644 --- a/core/java/android/os/UserBatteryConsumer.java +++ b/core/java/android/os/UserBatteryConsumer.java @@ -107,8 +107,8 @@ public class UserBatteryConsumer extends BatteryConsumer { public static final class Builder extends BaseBuilder<Builder> { private List<UidBatteryConsumer.Builder> mUidBatteryConsumers; - Builder(BatteryConsumerData data, int userId) { - super(data, CONSUMER_TYPE_USER); + Builder(BatteryConsumerData data, int userId, double minConsumedPowerThreshold) { + super(data, CONSUMER_TYPE_USER, minConsumedPowerThreshold); data.putLong(COLUMN_INDEX_USER_ID, userId); } diff --git a/core/tests/batterystatstests/BatteryUsageStatsProtoTests/src/com/android/internal/os/BatteryUsageStatsPulledTest.java b/core/tests/batterystatstests/BatteryUsageStatsProtoTests/src/com/android/internal/os/BatteryUsageStatsPulledTest.java index 0676f899674d..aaaa3c7740c5 100644 --- a/core/tests/batterystatstests/BatteryUsageStatsProtoTests/src/com/android/internal/os/BatteryUsageStatsPulledTest.java +++ b/core/tests/batterystatstests/BatteryUsageStatsProtoTests/src/com/android/internal/os/BatteryUsageStatsPulledTest.java @@ -241,7 +241,8 @@ public class BatteryUsageStatsPulledTest { final BatteryUsageStats.Builder builder = new BatteryUsageStats.Builder(new String[]{"CustomConsumer1", "CustomConsumer2"}, /* includePowerModels */ true, - /* includeProcessStats */true) + /* includeProcessStats */ true, + /* minConsumedPowerThreshold */ 0) .setDischargePercentage(20) .setDischargedPowerRange(1000, 2000) .setDischargeDurationMs(1234) @@ -325,7 +326,7 @@ public class BatteryUsageStatsPulledTest { @Test public void testLargeAtomTruncated() { final BatteryUsageStats.Builder builder = - new BatteryUsageStats.Builder(new String[0], true, false); + new BatteryUsageStats.Builder(new String[0], true, false, 0); // If not truncated, this BatteryUsageStats object would generate a proto buffer // significantly larger than 50 Kb for (int i = 0; i < 3000; i++) { diff --git a/services/core/java/com/android/server/am/BatteryStatsService.java b/services/core/java/com/android/server/am/BatteryStatsService.java index dc6f8584006e..2c745ae3bf55 100644 --- a/services/core/java/com/android/server/am/BatteryStatsService.java +++ b/services/core/java/com/android/server/am/BatteryStatsService.java @@ -17,7 +17,6 @@ package com.android.server.am; import static android.Manifest.permission.BATTERY_STATS; -import static android.Manifest.permission.BLUETOOTH_CONNECT; import static android.Manifest.permission.DEVICE_POWER; import static android.Manifest.permission.NETWORK_STACK; import static android.Manifest.permission.POWER_SAVER; @@ -31,6 +30,7 @@ import static android.os.BatteryStats.POWER_DATA_UNAVAILABLE; import android.annotation.EnforcePermission; import android.annotation.NonNull; import android.annotation.RequiresNoPermission; +import android.annotation.SuppressLint; import android.app.StatsManager; import android.app.usage.NetworkStatsManager; import android.bluetooth.BluetoothActivityEnergyInfo; @@ -82,6 +82,7 @@ import android.os.health.HealthStatsParceler; import android.os.health.HealthStatsWriter; import android.os.health.UidHealthStats; import android.power.PowerStatsInternal; +import android.provider.DeviceConfig; import android.provider.Settings; import android.telephony.DataConnectionRealTimeInfo; import android.telephony.ModemActivityInfo; @@ -169,6 +170,7 @@ public final class BatteryStatsService extends IBatteryStats.Stub .replaceWith("?"); private static final int MAX_LOW_POWER_STATS_SIZE = 32768; private static final int POWER_STATS_QUERY_TIMEOUT_MILLIS = 2000; + private static final String MIN_CONSUMED_POWER_THRESHOLD_KEY = "min_consumed_power_threshold"; private static final String EMPTY = "Empty"; private final HandlerThread mHandlerThread; @@ -855,12 +857,17 @@ public final class BatteryStatsService extends IBatteryStats.Stub final BatteryUsageStats bus; switch (atomTag) { case FrameworkStatsLog.BATTERY_USAGE_STATS_SINCE_RESET: + @SuppressLint("MissingPermission") + final double minConsumedPowerThreshold = + DeviceConfig.getFloat(DeviceConfig.NAMESPACE_BATTERY_STATS, + MIN_CONSUMED_POWER_THRESHOLD_KEY, 0); final BatteryUsageStatsQuery querySinceReset = new BatteryUsageStatsQuery.Builder() .setMaxStatsAgeMs(0) .includeProcessStateData() .includeVirtualUids() .includePowerModels() + .setMinConsumedPowerThreshold(minConsumedPowerThreshold) .build(); bus = getBatteryUsageStats(List.of(querySinceReset)).get(0); break; diff --git a/services/core/java/com/android/server/power/stats/BatteryUsageStatsProvider.java b/services/core/java/com/android/server/power/stats/BatteryUsageStatsProvider.java index ebd4aec3aef9..5e5f6f2bd644 100644 --- a/services/core/java/com/android/server/power/stats/BatteryUsageStatsProvider.java +++ b/services/core/java/com/android/server/power/stats/BatteryUsageStatsProvider.java @@ -166,10 +166,11 @@ public class BatteryUsageStatsProvider { && mStats.isProcessStateDataAvailable(); final boolean includeVirtualUids = ((query.getFlags() & BatteryUsageStatsQuery.FLAG_BATTERY_USAGE_STATS_INCLUDE_VIRTUAL_UIDS) != 0); + final double minConsumedPowerThreshold = query.getMinConsumedPowerThreshold(); final BatteryUsageStats.Builder batteryUsageStatsBuilder = new BatteryUsageStats.Builder( mStats.getCustomEnergyConsumerNames(), includePowerModels, - includeProcessStateData); + includeProcessStateData, minConsumedPowerThreshold); // TODO(b/188068523): use a monotonic clock to ensure resilience of order and duration // of stats sessions to wall-clock adjustments batteryUsageStatsBuilder.setStatsStartTimestamp(mStats.getStartClockTime()); @@ -303,10 +304,12 @@ public class BatteryUsageStatsProvider { final boolean includeProcessStateData = ((query.getFlags() & BatteryUsageStatsQuery.FLAG_BATTERY_USAGE_STATS_INCLUDE_PROCESS_STATE_DATA) != 0) && mStats.isProcessStateDataAvailable(); + final double minConsumedPowerThreshold = query.getMinConsumedPowerThreshold(); final String[] customEnergyConsumerNames = mStats.getCustomEnergyConsumerNames(); final BatteryUsageStats.Builder builder = new BatteryUsageStats.Builder( - customEnergyConsumerNames, includePowerModels, includeProcessStateData); + customEnergyConsumerNames, includePowerModels, includeProcessStateData, + minConsumedPowerThreshold); if (mBatteryUsageStatsStore == null) { Log.e(TAG, "BatteryUsageStatsStore is unavailable"); return builder.build(); diff --git a/services/tests/servicestests/src/com/android/server/power/stats/BatteryUsageStatsRule.java b/services/tests/servicestests/src/com/android/server/power/stats/BatteryUsageStatsRule.java index 3135215d65f7..a1e1da68bfcc 100644 --- a/services/tests/servicestests/src/com/android/server/power/stats/BatteryUsageStatsRule.java +++ b/services/tests/servicestests/src/com/android/server/power/stats/BatteryUsageStatsRule.java @@ -222,8 +222,10 @@ public class BatteryUsageStatsRule implements TestRule { & BatteryUsageStatsQuery.FLAG_BATTERY_USAGE_STATS_INCLUDE_POWER_MODELS) != 0; final boolean includeProcessStateData = (query.getFlags() & BatteryUsageStatsQuery.FLAG_BATTERY_USAGE_STATS_INCLUDE_PROCESS_STATE_DATA) != 0; + final double minConsumedPowerThreshold = query.getMinConsumedPowerThreshold(); BatteryUsageStats.Builder builder = new BatteryUsageStats.Builder( - customPowerComponentNames, includePowerModels, includeProcessStateData); + customPowerComponentNames, includePowerModels, includeProcessStateData, + minConsumedPowerThreshold); SparseArray<? extends BatteryStats.Uid> uidStats = mBatteryStats.getUidStats(); for (int i = 0; i < uidStats.size(); i++) { builder.getOrCreateUidBatteryConsumerBuilder(uidStats.valueAt(i)); diff --git a/services/tests/servicestests/src/com/android/server/power/stats/BatteryUsageStatsTest.java b/services/tests/servicestests/src/com/android/server/power/stats/BatteryUsageStatsTest.java index 266a22632a6d..07c486c6ce58 100644 --- a/services/tests/servicestests/src/com/android/server/power/stats/BatteryUsageStatsTest.java +++ b/services/tests/servicestests/src/com/android/server/power/stats/BatteryUsageStatsTest.java @@ -181,7 +181,7 @@ public class BatteryUsageStatsTest { final BatteryUsageStats stats2 = buildBatteryUsageStats2(new String[]{"FOO"}, true).build(); final BatteryUsageStats sum = - new BatteryUsageStats.Builder(new String[]{"FOO"}, true, true) + new BatteryUsageStats.Builder(new String[]{"FOO"}, true, true, 0) .add(stats1) .add(stats2) .build(); @@ -222,7 +222,7 @@ public class BatteryUsageStatsTest { @Test public void testAdd_customComponentMismatch() { final BatteryUsageStats.Builder builder = - new BatteryUsageStats.Builder(new String[]{"FOO"}, true, true); + new BatteryUsageStats.Builder(new String[]{"FOO"}, true, true, 0); final BatteryUsageStats stats = buildBatteryUsageStats2(new String[]{"BAR"}, false).build(); assertThrows(IllegalArgumentException.class, () -> builder.add(stats)); @@ -231,7 +231,7 @@ public class BatteryUsageStatsTest { @Test public void testAdd_processStateDataMismatch() { final BatteryUsageStats.Builder builder = - new BatteryUsageStats.Builder(new String[]{"FOO"}, true, true); + new BatteryUsageStats.Builder(new String[]{"FOO"}, true, true, 0); final BatteryUsageStats stats = buildBatteryUsageStats2(new String[]{"FOO"}, false).build(); assertThrows(IllegalArgumentException.class, () -> builder.add(stats)); @@ -260,7 +260,7 @@ public class BatteryUsageStatsTest { final MockBatteryStatsImpl batteryStats = new MockBatteryStatsImpl(clocks); final BatteryUsageStats.Builder builder = - new BatteryUsageStats.Builder(new String[]{"FOO"}, true, true) + new BatteryUsageStats.Builder(new String[]{"FOO"}, true, true, 0) .setBatteryCapacity(4000) .setDischargePercentage(20) .setDischargedPowerRange(1000, 2000) @@ -305,7 +305,7 @@ public class BatteryUsageStatsTest { final BatteryUsageStats.Builder builder = new BatteryUsageStats.Builder(customPowerComponentNames, true, - includeProcessStateData); + includeProcessStateData, 0); builder.setDischargePercentage(30) .setDischargedPowerRange(1234, 2345) .setStatsStartTimestamp(2000) diff --git a/tests/BatteryStatsPerfTest/src/com/android/internal/os/BatteryUsageStatsPerfTest.java b/tests/BatteryStatsPerfTest/src/com/android/internal/os/BatteryUsageStatsPerfTest.java index fe2fe0b40891..08430f2f2744 100644 --- a/tests/BatteryStatsPerfTest/src/com/android/internal/os/BatteryUsageStatsPerfTest.java +++ b/tests/BatteryStatsPerfTest/src/com/android/internal/os/BatteryUsageStatsPerfTest.java @@ -159,7 +159,7 @@ public class BatteryUsageStatsPerfTest { private static BatteryUsageStats buildBatteryUsageStats() { final BatteryUsageStats.Builder builder = - new BatteryUsageStats.Builder(new String[]{"FOO"}, true, false) + new BatteryUsageStats.Builder(new String[]{"FOO"}, true, false, 0) .setBatteryCapacity(4000) .setDischargePercentage(20) .setDischargedPowerRange(1000, 2000) |