Merge "Track CACHED procstate in BatteryStats" into tm-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
b79d6441df
@@ -165,6 +165,7 @@ public abstract class BatteryConsumer {
|
|||||||
PROCESS_STATE_FOREGROUND,
|
PROCESS_STATE_FOREGROUND,
|
||||||
PROCESS_STATE_BACKGROUND,
|
PROCESS_STATE_BACKGROUND,
|
||||||
PROCESS_STATE_FOREGROUND_SERVICE,
|
PROCESS_STATE_FOREGROUND_SERVICE,
|
||||||
|
PROCESS_STATE_CACHED,
|
||||||
})
|
})
|
||||||
@Retention(RetentionPolicy.SOURCE)
|
@Retention(RetentionPolicy.SOURCE)
|
||||||
public @interface ProcessState {
|
public @interface ProcessState {
|
||||||
@@ -175,8 +176,9 @@ public abstract class BatteryConsumer {
|
|||||||
public static final int PROCESS_STATE_FOREGROUND = 1;
|
public static final int PROCESS_STATE_FOREGROUND = 1;
|
||||||
public static final int PROCESS_STATE_BACKGROUND = 2;
|
public static final int PROCESS_STATE_BACKGROUND = 2;
|
||||||
public static final int PROCESS_STATE_FOREGROUND_SERVICE = 3;
|
public static final int PROCESS_STATE_FOREGROUND_SERVICE = 3;
|
||||||
|
public static final int PROCESS_STATE_CACHED = 4;
|
||||||
|
|
||||||
public static final int PROCESS_STATE_COUNT = 4;
|
public static final int PROCESS_STATE_COUNT = 5;
|
||||||
|
|
||||||
private static final String[] sProcessStateNames = new String[PROCESS_STATE_COUNT];
|
private static final String[] sProcessStateNames = new String[PROCESS_STATE_COUNT];
|
||||||
|
|
||||||
@@ -186,6 +188,7 @@ public abstract class BatteryConsumer {
|
|||||||
sProcessStateNames[PROCESS_STATE_FOREGROUND] = "fg";
|
sProcessStateNames[PROCESS_STATE_FOREGROUND] = "fg";
|
||||||
sProcessStateNames[PROCESS_STATE_BACKGROUND] = "bg";
|
sProcessStateNames[PROCESS_STATE_BACKGROUND] = "bg";
|
||||||
sProcessStateNames[PROCESS_STATE_FOREGROUND_SERVICE] = "fgs";
|
sProcessStateNames[PROCESS_STATE_FOREGROUND_SERVICE] = "fgs";
|
||||||
|
sProcessStateNames[PROCESS_STATE_CACHED] = "cached";
|
||||||
}
|
}
|
||||||
|
|
||||||
private static final int[] SUPPORTED_POWER_COMPONENTS_PER_PROCESS_STATE = {
|
private static final int[] SUPPORTED_POWER_COMPONENTS_PER_PROCESS_STATE = {
|
||||||
|
|||||||
@@ -680,6 +680,8 @@ public abstract class BatteryStats implements Parcelable {
|
|||||||
return BatteryConsumer.PROCESS_STATE_BACKGROUND;
|
return BatteryConsumer.PROCESS_STATE_BACKGROUND;
|
||||||
case BatteryStats.Uid.PROCESS_STATE_FOREGROUND_SERVICE:
|
case BatteryStats.Uid.PROCESS_STATE_FOREGROUND_SERVICE:
|
||||||
return BatteryConsumer.PROCESS_STATE_FOREGROUND_SERVICE;
|
return BatteryConsumer.PROCESS_STATE_FOREGROUND_SERVICE;
|
||||||
|
case BatteryStats.Uid.PROCESS_STATE_CACHED:
|
||||||
|
return BatteryConsumer.PROCESS_STATE_CACHED;
|
||||||
default:
|
default:
|
||||||
return BatteryConsumer.PROCESS_STATE_UNSPECIFIED;
|
return BatteryConsumer.PROCESS_STATE_UNSPECIFIED;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -292,6 +292,10 @@ class PowerComponents {
|
|||||||
procState = BatteryUsageStatsAtomsProto.BatteryConsumerData.PowerComponentUsageSlice
|
procState = BatteryUsageStatsAtomsProto.BatteryConsumerData.PowerComponentUsageSlice
|
||||||
.FOREGROUND_SERVICE;
|
.FOREGROUND_SERVICE;
|
||||||
break;
|
break;
|
||||||
|
case BatteryConsumer.PROCESS_STATE_CACHED:
|
||||||
|
procState = BatteryUsageStatsAtomsProto.BatteryConsumerData.PowerComponentUsageSlice
|
||||||
|
.CACHED;
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
throw new IllegalArgumentException("Unknown process state: " + processState);
|
throw new IllegalArgumentException("Unknown process state: " + processState);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -119,6 +119,8 @@ public final class UidBatteryConsumer extends BatteryConsumer {
|
|||||||
skipEmptyComponents);
|
skipEmptyComponents);
|
||||||
appendProcessStateData(sb, BatteryConsumer.PROCESS_STATE_FOREGROUND_SERVICE,
|
appendProcessStateData(sb, BatteryConsumer.PROCESS_STATE_FOREGROUND_SERVICE,
|
||||||
skipEmptyComponents);
|
skipEmptyComponents);
|
||||||
|
appendProcessStateData(sb, BatteryConsumer.PROCESS_STATE_CACHED,
|
||||||
|
skipEmptyComponents);
|
||||||
pw.print(sb);
|
pw.print(sb);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1929,18 +1929,26 @@ public class BatteryStatsImpl extends BatteryStats {
|
|||||||
private final TimeBase mTimeBase;
|
private final TimeBase mTimeBase;
|
||||||
private final LongMultiStateCounter mCounter;
|
private final LongMultiStateCounter mCounter;
|
||||||
|
|
||||||
private TimeMultiStateCounter(TimeBase timeBase, Parcel in, long timestampMs) {
|
private TimeMultiStateCounter(TimeBase timeBase, int stateCount, long timestampMs) {
|
||||||
|
this(timeBase, new LongMultiStateCounter(stateCount), timestampMs);
|
||||||
|
}
|
||||||
|
|
||||||
|
private TimeMultiStateCounter(TimeBase timeBase, LongMultiStateCounter counter,
|
||||||
|
long timestampMs) {
|
||||||
mTimeBase = timeBase;
|
mTimeBase = timeBase;
|
||||||
mCounter = LongMultiStateCounter.CREATOR.createFromParcel(in);
|
mCounter = counter;
|
||||||
mCounter.setEnabled(mTimeBase.isRunning(), timestampMs);
|
mCounter.setEnabled(mTimeBase.isRunning(), timestampMs);
|
||||||
timeBase.add(this);
|
timeBase.add(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
private TimeMultiStateCounter(TimeBase timeBase, int stateCount, long timestampMs) {
|
@Nullable
|
||||||
mTimeBase = timeBase;
|
private static TimeMultiStateCounter readFromParcel(Parcel in, TimeBase timeBase,
|
||||||
mCounter = new LongMultiStateCounter(stateCount);
|
int stateCount, long timestampMs) {
|
||||||
mCounter.setEnabled(mTimeBase.isRunning(), timestampMs);
|
LongMultiStateCounter counter = LongMultiStateCounter.CREATOR.createFromParcel(in);
|
||||||
timeBase.add(this);
|
if (counter.getStateCount() != stateCount) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
return new TimeMultiStateCounter(timeBase, counter, timestampMs);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void writeToParcel(Parcel out) {
|
private void writeToParcel(Parcel out) {
|
||||||
@@ -3510,11 +3518,8 @@ public class BatteryStatsImpl extends BatteryStats {
|
|||||||
|
|
||||||
private TimeMultiStateCounter readTimeMultiStateCounter(Parcel in, TimeBase timeBase) {
|
private TimeMultiStateCounter readTimeMultiStateCounter(Parcel in, TimeBase timeBase) {
|
||||||
if (in.readBoolean()) {
|
if (in.readBoolean()) {
|
||||||
final TimeMultiStateCounter counter =
|
return TimeMultiStateCounter.readFromParcel(in, timeBase,
|
||||||
new TimeMultiStateCounter(timeBase, in, mClock.elapsedRealtime());
|
BatteryConsumer.PROCESS_STATE_COUNT, mClock.elapsedRealtime());
|
||||||
if (counter.getStateCount() == BatteryConsumer.PROCESS_STATE_COUNT) {
|
|
||||||
return counter;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
@@ -3537,9 +3542,10 @@ public class BatteryStatsImpl extends BatteryStats {
|
|||||||
// invalid.
|
// invalid.
|
||||||
TimeMultiStateCounter[] counters = new TimeMultiStateCounter[numCounters];
|
TimeMultiStateCounter[] counters = new TimeMultiStateCounter[numCounters];
|
||||||
for (int i = 0; i < numCounters; i++) {
|
for (int i = 0; i < numCounters; i++) {
|
||||||
final TimeMultiStateCounter counter =
|
final TimeMultiStateCounter counter = TimeMultiStateCounter.readFromParcel(in,
|
||||||
new TimeMultiStateCounter(timeBase, in, mClock.elapsedRealtime());
|
timeBase, BatteryConsumer.PROCESS_STATE_COUNT,
|
||||||
if (counter.getStateCount() == BatteryConsumer.PROCESS_STATE_COUNT) {
|
mClock.elapsedRealtime());
|
||||||
|
if (counter != null) {
|
||||||
counters[i] = counter;
|
counters[i] = counter;
|
||||||
} else {
|
} else {
|
||||||
valid = false;
|
valid = false;
|
||||||
@@ -10744,11 +10750,9 @@ public class BatteryStatsImpl extends BatteryStats {
|
|||||||
= new LongSamplingCounter(mBsi.mOnBatteryTimeBase, in);
|
= new LongSamplingCounter(mBsi.mOnBatteryTimeBase, in);
|
||||||
}
|
}
|
||||||
if (in.readBoolean()) {
|
if (in.readBoolean()) {
|
||||||
final TimeMultiStateCounter counter =
|
mMobileRadioActiveTime = TimeMultiStateCounter.readFromParcel(in,
|
||||||
new TimeMultiStateCounter(mBsi.mOnBatteryTimeBase, in, timestampMs);
|
mBsi.mOnBatteryTimeBase, BatteryConsumer.PROCESS_STATE_COUNT,
|
||||||
if (counter.getStateCount() == BatteryConsumer.PROCESS_STATE_COUNT) {
|
timestampMs);
|
||||||
mMobileRadioActiveTime = counter;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
mMobileRadioActiveCount = new LongSamplingCounter(mBsi.mOnBatteryTimeBase, in);
|
mMobileRadioActiveCount = new LongSamplingCounter(mBsi.mOnBatteryTimeBase, in);
|
||||||
@@ -10794,11 +10798,9 @@ public class BatteryStatsImpl extends BatteryStats {
|
|||||||
|
|
||||||
int stateCount = in.readInt();
|
int stateCount = in.readInt();
|
||||||
if (stateCount != 0) {
|
if (stateCount != 0) {
|
||||||
final TimeMultiStateCounter counter = new TimeMultiStateCounter(
|
mCpuActiveTimeMs = TimeMultiStateCounter.readFromParcel(in,
|
||||||
mBsi.mOnBatteryTimeBase, in, timestampMs);
|
mBsi.mOnBatteryTimeBase, BatteryConsumer.PROCESS_STATE_COUNT,
|
||||||
if (stateCount == BatteryConsumer.PROCESS_STATE_COUNT) {
|
timestampMs);
|
||||||
mCpuActiveTimeMs = counter;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
mCpuClusterTimesMs = new LongSamplingCounterArray(mBsi.mOnBatteryTimeBase, in);
|
mCpuClusterTimesMs = new LongSamplingCounterArray(mBsi.mOnBatteryTimeBase, in);
|
||||||
|
|
||||||
@@ -16887,14 +16889,18 @@ public class BatteryStatsImpl extends BatteryStats {
|
|||||||
mNextMaxDailyDeadlineMs = in.readLong();
|
mNextMaxDailyDeadlineMs = in.readLong();
|
||||||
mBatteryTimeToFullSeconds = in.readLong();
|
mBatteryTimeToFullSeconds = in.readLong();
|
||||||
|
|
||||||
mMeasuredEnergyStatsConfig = MeasuredEnergyStats.Config.createFromParcel(in);
|
final MeasuredEnergyStats.Config config = MeasuredEnergyStats.Config.createFromParcel(in);
|
||||||
|
final MeasuredEnergyStats measuredEnergyStats =
|
||||||
/**
|
MeasuredEnergyStats.createAndReadSummaryFromParcel(mMeasuredEnergyStatsConfig, in);
|
||||||
* WARNING: Supported buckets may have changed across boots. Bucket mismatch is handled
|
if (config != null && Arrays.equals(config.getStateNames(),
|
||||||
* later when {@link #initMeasuredEnergyStatsLocked} is called.
|
getBatteryConsumerProcessStateNames())) {
|
||||||
*/
|
/**
|
||||||
mGlobalMeasuredEnergyStats = MeasuredEnergyStats.createAndReadSummaryFromParcel(
|
* WARNING: Supported buckets may have changed across boots. Bucket mismatch is handled
|
||||||
mMeasuredEnergyStatsConfig, in);
|
* later when {@link #initMeasuredEnergyStatsLocked} is called.
|
||||||
|
*/
|
||||||
|
mMeasuredEnergyStatsConfig = config;
|
||||||
|
mGlobalMeasuredEnergyStats = measuredEnergyStats;
|
||||||
|
}
|
||||||
|
|
||||||
mStartCount++;
|
mStartCount++;
|
||||||
|
|
||||||
@@ -16986,7 +16992,6 @@ public class BatteryStatsImpl extends BatteryStats {
|
|||||||
getScreenOffRpmTimerLocked(rpmName).readSummaryFromParcelLocked(in);
|
getScreenOffRpmTimerLocked(rpmName).readSummaryFromParcelLocked(in);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int NKW = in.readInt();
|
int NKW = in.readInt();
|
||||||
if (NKW > 10000) {
|
if (NKW > 10000) {
|
||||||
throw new ParcelFormatException("File corrupt: too many kernel wake locks " + NKW);
|
throw new ParcelFormatException("File corrupt: too many kernel wake locks " + NKW);
|
||||||
@@ -17114,11 +17119,9 @@ public class BatteryStatsImpl extends BatteryStats {
|
|||||||
u.mNetworkPacketActivityCounters[i].readSummaryFromParcelLocked(in);
|
u.mNetworkPacketActivityCounters[i].readSummaryFromParcelLocked(in);
|
||||||
}
|
}
|
||||||
if (in.readBoolean()) {
|
if (in.readBoolean()) {
|
||||||
TimeMultiStateCounter counter = new TimeMultiStateCounter(
|
u.mMobileRadioActiveTime = TimeMultiStateCounter.readFromParcel(in,
|
||||||
mOnBatteryTimeBase, in, elapsedRealtimeMs);
|
mOnBatteryTimeBase, BatteryConsumer.PROCESS_STATE_COUNT,
|
||||||
if (counter.getStateCount() == BatteryConsumer.PROCESS_STATE_COUNT) {
|
elapsedRealtimeMs);
|
||||||
u.mMobileRadioActiveTime = counter;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
u.mMobileRadioActiveCount.readSummaryFromParcelLocked(in);
|
u.mMobileRadioActiveCount.readSummaryFromParcelLocked(in);
|
||||||
}
|
}
|
||||||
@@ -17168,11 +17171,9 @@ public class BatteryStatsImpl extends BatteryStats {
|
|||||||
|
|
||||||
int stateCount = in.readInt();
|
int stateCount = in.readInt();
|
||||||
if (stateCount != 0) {
|
if (stateCount != 0) {
|
||||||
final TimeMultiStateCounter counter = new TimeMultiStateCounter(
|
u.mCpuActiveTimeMs = TimeMultiStateCounter.readFromParcel(in,
|
||||||
mOnBatteryTimeBase, in, mClock.elapsedRealtime());
|
mOnBatteryTimeBase, BatteryConsumer.PROCESS_STATE_COUNT,
|
||||||
if (stateCount == BatteryConsumer.PROCESS_STATE_COUNT) {
|
mClock.elapsedRealtime());
|
||||||
u.mCpuActiveTimeMs = counter;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
u.mCpuClusterTimesMs.readSummaryFromParcelLocked(in);
|
u.mCpuClusterTimesMs.readSummaryFromParcelLocked(in);
|
||||||
|
|
||||||
@@ -18007,9 +18008,15 @@ public class BatteryStatsImpl extends BatteryStats {
|
|||||||
mLastWriteTimeMs = in.readLong();
|
mLastWriteTimeMs = in.readLong();
|
||||||
mBatteryTimeToFullSeconds = in.readLong();
|
mBatteryTimeToFullSeconds = in.readLong();
|
||||||
|
|
||||||
mMeasuredEnergyStatsConfig = MeasuredEnergyStats.Config.createFromParcel(in);
|
|
||||||
mGlobalMeasuredEnergyStats =
|
final MeasuredEnergyStats.Config config = MeasuredEnergyStats.Config.createFromParcel(in);
|
||||||
|
final MeasuredEnergyStats measuredEnergyStats =
|
||||||
MeasuredEnergyStats.createFromParcel(mMeasuredEnergyStatsConfig, in);
|
MeasuredEnergyStats.createFromParcel(mMeasuredEnergyStatsConfig, in);
|
||||||
|
if (config != null && Arrays.equals(config.getStateNames(),
|
||||||
|
getBatteryConsumerProcessStateNames())) {
|
||||||
|
mMeasuredEnergyStatsConfig = config;
|
||||||
|
mGlobalMeasuredEnergyStats = measuredEnergyStats;
|
||||||
|
}
|
||||||
|
|
||||||
mRpmStats.clear();
|
mRpmStats.clear();
|
||||||
int NRPMS = in.readInt();
|
int NRPMS = in.readInt();
|
||||||
|
|||||||
@@ -194,6 +194,7 @@ public class MeasuredEnergyStats {
|
|||||||
return mSupportedMultiStateBuckets[index];
|
return mSupportedMultiStateBuckets[index];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@NonNull
|
||||||
public String[] getStateNames() {
|
public String[] getStateNames() {
|
||||||
return mStateNames;
|
return mStateNames;
|
||||||
}
|
}
|
||||||
@@ -321,6 +322,10 @@ public class MeasuredEnergyStats {
|
|||||||
LongMultiStateCounter multiStateCounter = null;
|
LongMultiStateCounter multiStateCounter = null;
|
||||||
if (in.readBoolean()) {
|
if (in.readBoolean()) {
|
||||||
multiStateCounter = LongMultiStateCounter.CREATOR.createFromParcel(in);
|
multiStateCounter = LongMultiStateCounter.CREATOR.createFromParcel(in);
|
||||||
|
if (mConfig == null
|
||||||
|
|| multiStateCounter.getStateCount() != mConfig.getStateNames().length) {
|
||||||
|
multiStateCounter = null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (index < mAccumulatedChargeMicroCoulomb.length) {
|
if (index < mAccumulatedChargeMicroCoulomb.length) {
|
||||||
|
|||||||
@@ -76,6 +76,7 @@ message BatteryUsageStatsAtomsProto {
|
|||||||
FOREGROUND = 1;
|
FOREGROUND = 1;
|
||||||
BACKGROUND = 2;
|
BACKGROUND = 2;
|
||||||
FOREGROUND_SERVICE = 3;
|
FOREGROUND_SERVICE = 3;
|
||||||
|
CACHED = 4;
|
||||||
}
|
}
|
||||||
|
|
||||||
optional ProcessState process_state = 2;
|
optional ProcessState process_state = 2;
|
||||||
|
|||||||
@@ -188,6 +188,9 @@ public class BatteryConsumerData {
|
|||||||
case BatteryConsumer.PROCESS_STATE_FOREGROUND_SERVICE:
|
case BatteryConsumer.PROCESS_STATE_FOREGROUND_SERVICE:
|
||||||
label = "FGS";
|
label = "FGS";
|
||||||
break;
|
break;
|
||||||
|
case BatteryConsumer.PROCESS_STATE_CACHED:
|
||||||
|
label = "cached";
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -242,13 +242,17 @@ public class BatteryUsageStatsPulledTest {
|
|||||||
BatteryConsumer.PROCESS_STATE_BACKGROUND);
|
BatteryConsumer.PROCESS_STATE_BACKGROUND);
|
||||||
final BatteryConsumer.Key keyFgs = uidBuilder.getKey(BatteryConsumer.POWER_COMPONENT_CPU,
|
final BatteryConsumer.Key keyFgs = uidBuilder.getKey(BatteryConsumer.POWER_COMPONENT_CPU,
|
||||||
BatteryConsumer.PROCESS_STATE_FOREGROUND_SERVICE);
|
BatteryConsumer.PROCESS_STATE_FOREGROUND_SERVICE);
|
||||||
|
final BatteryConsumer.Key keyCached = uidBuilder.getKey(BatteryConsumer.POWER_COMPONENT_CPU,
|
||||||
|
BatteryConsumer.PROCESS_STATE_CACHED);
|
||||||
|
|
||||||
uidBuilder.setConsumedPower(keyFg, 9100, BatteryConsumer.POWER_MODEL_POWER_PROFILE)
|
uidBuilder.setConsumedPower(keyFg, 9100, BatteryConsumer.POWER_MODEL_POWER_PROFILE)
|
||||||
.setUsageDurationMillis(keyFg, 8100)
|
.setUsageDurationMillis(keyFg, 8100)
|
||||||
.setConsumedPower(keyBg, 9200, BatteryConsumer.POWER_MODEL_MEASURED_ENERGY)
|
.setConsumedPower(keyBg, 9200, BatteryConsumer.POWER_MODEL_MEASURED_ENERGY)
|
||||||
.setUsageDurationMillis(keyBg, 8200)
|
.setUsageDurationMillis(keyBg, 8200)
|
||||||
.setConsumedPower(keyFgs, 9300, BatteryConsumer.POWER_MODEL_MEASURED_ENERGY)
|
.setConsumedPower(keyFgs, 9300, BatteryConsumer.POWER_MODEL_MEASURED_ENERGY)
|
||||||
.setUsageDurationMillis(keyFgs, 8300);
|
.setUsageDurationMillis(keyFgs, 8300)
|
||||||
|
.setConsumedPower(keyCached, 9400, BatteryConsumer.POWER_MODEL_MEASURED_ENERGY)
|
||||||
|
.setUsageDurationMillis(keyFgs, 8400);
|
||||||
|
|
||||||
builder.getOrCreateUidBatteryConsumerBuilder(batteryStatsUid1)
|
builder.getOrCreateUidBatteryConsumerBuilder(batteryStatsUid1)
|
||||||
.setPackageWithHighestDrain("myPackage1")
|
.setPackageWithHighestDrain("myPackage1")
|
||||||
|
|||||||
@@ -20,6 +20,7 @@ import static android.os.BatteryConsumer.POWER_COMPONENT_ANY;
|
|||||||
import static android.os.BatteryConsumer.POWER_MODEL_MEASURED_ENERGY;
|
import static android.os.BatteryConsumer.POWER_MODEL_MEASURED_ENERGY;
|
||||||
import static android.os.BatteryConsumer.POWER_MODEL_UNDEFINED;
|
import static android.os.BatteryConsumer.POWER_MODEL_UNDEFINED;
|
||||||
import static android.os.BatteryConsumer.PROCESS_STATE_BACKGROUND;
|
import static android.os.BatteryConsumer.PROCESS_STATE_BACKGROUND;
|
||||||
|
import static android.os.BatteryConsumer.PROCESS_STATE_CACHED;
|
||||||
import static android.os.BatteryConsumer.PROCESS_STATE_FOREGROUND;
|
import static android.os.BatteryConsumer.PROCESS_STATE_FOREGROUND;
|
||||||
import static android.os.BatteryConsumer.PROCESS_STATE_FOREGROUND_SERVICE;
|
import static android.os.BatteryConsumer.PROCESS_STATE_FOREGROUND_SERVICE;
|
||||||
|
|
||||||
@@ -83,7 +84,7 @@ public class BatteryUsageStatsTest {
|
|||||||
final Parcel parcel = Parcel.obtain();
|
final Parcel parcel = Parcel.obtain();
|
||||||
parcel.writeParcelable(outBatteryUsageStats, 0);
|
parcel.writeParcelable(outBatteryUsageStats, 0);
|
||||||
|
|
||||||
assertThat(parcel.dataSize()).isLessThan(7000);
|
assertThat(parcel.dataSize()).isLessThan(8000);
|
||||||
|
|
||||||
parcel.setDataPosition(0);
|
parcel.setDataPosition(0);
|
||||||
|
|
||||||
@@ -155,10 +156,11 @@ public class BatteryUsageStatsTest {
|
|||||||
assertThat(dump).contains("cpu(fg): 2333 apps: 1333 duration: 3s 332ms");
|
assertThat(dump).contains("cpu(fg): 2333 apps: 1333 duration: 3s 332ms");
|
||||||
assertThat(dump).contains("cpu(bg): 2444 apps: 1444 duration: 4s 442ms");
|
assertThat(dump).contains("cpu(bg): 2444 apps: 1444 duration: 4s 442ms");
|
||||||
assertThat(dump).contains("cpu(fgs): 2555 apps: 1555 duration: 5s 552ms");
|
assertThat(dump).contains("cpu(fgs): 2555 apps: 1555 duration: 5s 552ms");
|
||||||
|
assertThat(dump).contains("cpu(cached): 123 apps: 123 duration: 456ms");
|
||||||
assertThat(dump).contains("FOO: 20200 apps: 10200 duration: 20s 400ms");
|
assertThat(dump).contains("FOO: 20200 apps: 10200 duration: 20s 400ms");
|
||||||
assertThat(dump).contains("UID 271: 1200 fg: 1777 bg: 1888 fgs: 1999 ( screen=300 "
|
assertThat(dump).contains("UID 271: 1200 fg: 1777 bg: 1888 fgs: 1999 cached: 123 "
|
||||||
+ "cpu=400 (600ms) cpu:fg=1777 (7s 771ms) cpu:bg=1888 (8s 881ms) "
|
+ "( screen=300 cpu=400 (600ms) cpu:fg=1777 (7s 771ms) cpu:bg=1888 (8s 881ms) "
|
||||||
+ "cpu:fgs=1999 (9s 991ms) FOO=500 )");
|
+ "cpu:fgs=1999 (9s 991ms) cpu:cached=123 (456ms) FOO=500 )");
|
||||||
assertThat(dump).contains("User 42: 30.0 ( cpu=10.0 (30ms) FOO=20.0 )");
|
assertThat(dump).contains("User 42: 30.0 ( cpu=10.0 (30ms) FOO=20.0 )");
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -193,13 +195,15 @@ public class BatteryUsageStatsTest {
|
|||||||
5321, 7432, 423, BatteryConsumer.POWER_MODEL_POWER_PROFILE, 745,
|
5321, 7432, 423, BatteryConsumer.POWER_MODEL_POWER_PROFILE, 745,
|
||||||
POWER_MODEL_UNDEFINED,
|
POWER_MODEL_UNDEFINED,
|
||||||
956, 1167, 1478,
|
956, 1167, 1478,
|
||||||
true, 3554, 3776, 3998, 3554, 15542, 3776, 17762, 3998, 19982);
|
true, 3554, 3776, 3998, 444, 3554, 15542, 3776, 17762, 3998, 19982,
|
||||||
|
444, 1110);
|
||||||
} else if (uidBatteryConsumer.getUid() == APP_UID2) {
|
} else if (uidBatteryConsumer.getUid() == APP_UID2) {
|
||||||
assertUidBatteryConsumer(uidBatteryConsumer, 1332, "bar",
|
assertUidBatteryConsumer(uidBatteryConsumer, 1332, "bar",
|
||||||
1111, 2222, 333, BatteryConsumer.POWER_MODEL_POWER_PROFILE, 444,
|
1111, 2222, 333, BatteryConsumer.POWER_MODEL_POWER_PROFILE, 444,
|
||||||
BatteryConsumer.POWER_MODEL_POWER_PROFILE,
|
BatteryConsumer.POWER_MODEL_POWER_PROFILE,
|
||||||
555, 666, 777,
|
555, 666, 777,
|
||||||
true, 1777, 1888, 1999, 1777, 7771, 1888, 8881, 1999, 9991);
|
true, 1777, 1888, 1999, 321, 1777, 7771, 1888, 8881, 1999, 9991,
|
||||||
|
321, 654);
|
||||||
} else {
|
} else {
|
||||||
fail("Unexpected UID " + uidBatteryConsumer.getUid());
|
fail("Unexpected UID " + uidBatteryConsumer.getUid());
|
||||||
}
|
}
|
||||||
@@ -267,17 +271,17 @@ public class BatteryUsageStatsTest {
|
|||||||
1000, 2000,
|
1000, 2000,
|
||||||
300, BatteryConsumer.POWER_MODEL_POWER_PROFILE, 400,
|
300, BatteryConsumer.POWER_MODEL_POWER_PROFILE, 400,
|
||||||
BatteryConsumer.POWER_MODEL_POWER_PROFILE, 500, 600, 800,
|
BatteryConsumer.POWER_MODEL_POWER_PROFILE, 500, 600, 800,
|
||||||
1777, 7771, 1888, 8881, 1999, 9991);
|
1777, 7771, 1888, 8881, 1999, 9991, 123, 456);
|
||||||
|
|
||||||
addAggregateBatteryConsumer(builder,
|
addAggregateBatteryConsumer(builder,
|
||||||
BatteryUsageStats.AGGREGATE_BATTERY_CONSUMER_SCOPE_ALL_APPS, 0,
|
BatteryUsageStats.AGGREGATE_BATTERY_CONSUMER_SCOPE_ALL_APPS, 0,
|
||||||
10100, 10200, 10300, 10400,
|
10100, 10200, 10300, 10400,
|
||||||
1333, 3331, 1444, 4441, 1555, 5551);
|
1333, 3331, 1444, 4441, 1555, 5551, 123, 456);
|
||||||
|
|
||||||
addAggregateBatteryConsumer(builder,
|
addAggregateBatteryConsumer(builder,
|
||||||
BatteryUsageStats.AGGREGATE_BATTERY_CONSUMER_SCOPE_DEVICE, 30000,
|
BatteryUsageStats.AGGREGATE_BATTERY_CONSUMER_SCOPE_DEVICE, 30000,
|
||||||
20100, 20200, 20300, 20400,
|
20100, 20200, 20300, 20400,
|
||||||
2333, 3332, 2444, 4442, 2555, 5552);
|
2333, 3332, 2444, 4442, 2555, 5552, 123, 456);
|
||||||
|
|
||||||
if (includeUserBatteryConsumer) {
|
if (includeUserBatteryConsumer) {
|
||||||
builder.getOrCreateUserBatteryConsumerBuilder(USER_ID)
|
builder.getOrCreateUserBatteryConsumerBuilder(USER_ID)
|
||||||
@@ -310,23 +314,23 @@ public class BatteryUsageStatsTest {
|
|||||||
4321, 5432,
|
4321, 5432,
|
||||||
123, BatteryConsumer.POWER_MODEL_POWER_PROFILE, 345, POWER_MODEL_MEASURED_ENERGY,
|
123, BatteryConsumer.POWER_MODEL_POWER_PROFILE, 345, POWER_MODEL_MEASURED_ENERGY,
|
||||||
456, 567, 678,
|
456, 567, 678,
|
||||||
1777, 7771, 1888, 8881, 1999, 9991);
|
1777, 7771, 1888, 8881, 1999, 9991, 321, 654);
|
||||||
|
|
||||||
addUidBatteryConsumer(builder, batteryStats, APP_UID2, "bar",
|
addUidBatteryConsumer(builder, batteryStats, APP_UID2, "bar",
|
||||||
1111, 2222,
|
1111, 2222,
|
||||||
333, BatteryConsumer.POWER_MODEL_POWER_PROFILE, 444,
|
333, BatteryConsumer.POWER_MODEL_POWER_PROFILE, 444,
|
||||||
BatteryConsumer.POWER_MODEL_POWER_PROFILE, 555, 666, 777,
|
BatteryConsumer.POWER_MODEL_POWER_PROFILE, 555, 666, 777,
|
||||||
1777, 7771, 1888, 8881, 1999, 9991);
|
1777, 7771, 1888, 8881, 1999, 9991, 321, 654);
|
||||||
|
|
||||||
addAggregateBatteryConsumer(builder,
|
addAggregateBatteryConsumer(builder,
|
||||||
BatteryUsageStats.AGGREGATE_BATTERY_CONSUMER_SCOPE_ALL_APPS, 0,
|
BatteryUsageStats.AGGREGATE_BATTERY_CONSUMER_SCOPE_ALL_APPS, 0,
|
||||||
10123, 10234, 10345, 10456,
|
10123, 10234, 10345, 10456,
|
||||||
4333, 3334, 5444, 4445, 6555, 5556);
|
4333, 3334, 5444, 4445, 6555, 5556, 321, 654);
|
||||||
|
|
||||||
addAggregateBatteryConsumer(builder,
|
addAggregateBatteryConsumer(builder,
|
||||||
BatteryUsageStats.AGGREGATE_BATTERY_CONSUMER_SCOPE_DEVICE, 12345,
|
BatteryUsageStats.AGGREGATE_BATTERY_CONSUMER_SCOPE_DEVICE, 12345,
|
||||||
20111, 20222, 20333, 20444,
|
20111, 20222, 20333, 20444,
|
||||||
7333, 3337, 8444, 4448, 9555, 5559);
|
7333, 3337, 8444, 4448, 9555, 5559, 123, 456);
|
||||||
|
|
||||||
return builder;
|
return builder;
|
||||||
}
|
}
|
||||||
@@ -337,7 +341,7 @@ public class BatteryUsageStatsTest {
|
|||||||
int screenPowerModel, double cpuPower, int cpuPowerModel, double customComponentPower,
|
int screenPowerModel, double cpuPower, int cpuPowerModel, double customComponentPower,
|
||||||
int cpuDuration, int customComponentDuration, double cpuPowerForeground,
|
int cpuDuration, int customComponentDuration, double cpuPowerForeground,
|
||||||
int cpuDurationForeground, double cpuPowerBackground, int cpuDurationBackground,
|
int cpuDurationForeground, double cpuPowerBackground, int cpuDurationBackground,
|
||||||
double cpuPowerFgs, int cpuDurationFgs) {
|
double cpuPowerFgs, int cpuDurationFgs, double cpuPowerCached, long cpuDurationCached) {
|
||||||
final BatteryStatsImpl.Uid batteryStatsUid = batteryStats.getUidStatsLocked(uid);
|
final BatteryStatsImpl.Uid batteryStatsUid = batteryStats.getUidStatsLocked(uid);
|
||||||
final UidBatteryConsumer.Builder uidBuilder =
|
final UidBatteryConsumer.Builder uidBuilder =
|
||||||
builder.getOrCreateUidBatteryConsumerBuilder(batteryStatsUid);
|
builder.getOrCreateUidBatteryConsumerBuilder(batteryStatsUid);
|
||||||
@@ -365,6 +369,9 @@ public class BatteryUsageStatsTest {
|
|||||||
final BatteryConsumer.Key cpuFgsKey = uidBuilder.getKey(
|
final BatteryConsumer.Key cpuFgsKey = uidBuilder.getKey(
|
||||||
BatteryConsumer.POWER_COMPONENT_CPU,
|
BatteryConsumer.POWER_COMPONENT_CPU,
|
||||||
BatteryConsumer.PROCESS_STATE_FOREGROUND_SERVICE);
|
BatteryConsumer.PROCESS_STATE_FOREGROUND_SERVICE);
|
||||||
|
final BatteryConsumer.Key cachedKey = uidBuilder.getKey(
|
||||||
|
BatteryConsumer.POWER_COMPONENT_CPU,
|
||||||
|
BatteryConsumer.PROCESS_STATE_CACHED);
|
||||||
uidBuilder
|
uidBuilder
|
||||||
.setConsumedPower(cpuFgKey, cpuPowerForeground,
|
.setConsumedPower(cpuFgKey, cpuPowerForeground,
|
||||||
BatteryConsumer.POWER_MODEL_POWER_PROFILE)
|
BatteryConsumer.POWER_MODEL_POWER_PROFILE)
|
||||||
@@ -374,7 +381,10 @@ public class BatteryUsageStatsTest {
|
|||||||
.setUsageDurationMillis(cpuBgKey, cpuDurationBackground)
|
.setUsageDurationMillis(cpuBgKey, cpuDurationBackground)
|
||||||
.setConsumedPower(cpuFgsKey, cpuPowerFgs,
|
.setConsumedPower(cpuFgsKey, cpuPowerFgs,
|
||||||
BatteryConsumer.POWER_MODEL_POWER_PROFILE)
|
BatteryConsumer.POWER_MODEL_POWER_PROFILE)
|
||||||
.setUsageDurationMillis(cpuFgsKey, cpuDurationFgs);
|
.setUsageDurationMillis(cpuFgsKey, cpuDurationFgs)
|
||||||
|
.setConsumedPower(cachedKey, cpuPowerCached,
|
||||||
|
BatteryConsumer.POWER_MODEL_POWER_PROFILE)
|
||||||
|
.setUsageDurationMillis(cachedKey, cpuDurationCached);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -382,7 +392,7 @@ public class BatteryUsageStatsTest {
|
|||||||
double consumedPower, int cpuPower, int customComponentPower, int cpuDuration,
|
double consumedPower, int cpuPower, int customComponentPower, int cpuDuration,
|
||||||
int customComponentDuration, double cpuPowerForeground, long cpuDurationForeground,
|
int customComponentDuration, double cpuPowerForeground, long cpuDurationForeground,
|
||||||
double cpuPowerBackground, long cpuDurationBackground, double cpuPowerFgs,
|
double cpuPowerBackground, long cpuDurationBackground, double cpuPowerFgs,
|
||||||
long cpuDurationFgs) {
|
long cpuDurationFgs, double cpuPowerCached, long cpuDurationCached) {
|
||||||
final AggregateBatteryConsumer.Builder aggBuilder =
|
final AggregateBatteryConsumer.Builder aggBuilder =
|
||||||
builder.getAggregateBatteryConsumerBuilder(scope)
|
builder.getAggregateBatteryConsumerBuilder(scope)
|
||||||
.setConsumedPower(consumedPower)
|
.setConsumedPower(consumedPower)
|
||||||
@@ -406,6 +416,9 @@ public class BatteryUsageStatsTest {
|
|||||||
final BatteryConsumer.Key cpuFgsKey = aggBuilder.getKey(
|
final BatteryConsumer.Key cpuFgsKey = aggBuilder.getKey(
|
||||||
BatteryConsumer.POWER_COMPONENT_CPU,
|
BatteryConsumer.POWER_COMPONENT_CPU,
|
||||||
BatteryConsumer.PROCESS_STATE_FOREGROUND_SERVICE);
|
BatteryConsumer.PROCESS_STATE_FOREGROUND_SERVICE);
|
||||||
|
final BatteryConsumer.Key cpuCachedKey = aggBuilder.getKey(
|
||||||
|
BatteryConsumer.POWER_COMPONENT_CPU,
|
||||||
|
BatteryConsumer.PROCESS_STATE_CACHED);
|
||||||
aggBuilder
|
aggBuilder
|
||||||
.setConsumedPower(cpuFgKey, cpuPowerForeground,
|
.setConsumedPower(cpuFgKey, cpuPowerForeground,
|
||||||
BatteryConsumer.POWER_MODEL_POWER_PROFILE)
|
BatteryConsumer.POWER_MODEL_POWER_PROFILE)
|
||||||
@@ -415,7 +428,10 @@ public class BatteryUsageStatsTest {
|
|||||||
.setUsageDurationMillis(cpuBgKey, cpuDurationBackground)
|
.setUsageDurationMillis(cpuBgKey, cpuDurationBackground)
|
||||||
.setConsumedPower(cpuFgsKey, cpuPowerFgs,
|
.setConsumedPower(cpuFgsKey, cpuPowerFgs,
|
||||||
BatteryConsumer.POWER_MODEL_POWER_PROFILE)
|
BatteryConsumer.POWER_MODEL_POWER_PROFILE)
|
||||||
.setUsageDurationMillis(cpuFgsKey, cpuDurationFgs);
|
.setUsageDurationMillis(cpuFgsKey, cpuDurationFgs)
|
||||||
|
.setConsumedPower(cpuCachedKey, cpuPowerCached,
|
||||||
|
BatteryConsumer.POWER_MODEL_POWER_PROFILE)
|
||||||
|
.setUsageDurationMillis(cpuCachedKey, cpuDurationCached);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -432,7 +448,7 @@ public class BatteryUsageStatsTest {
|
|||||||
1000, 2000, 300, BatteryConsumer.POWER_MODEL_POWER_PROFILE, 400,
|
1000, 2000, 300, BatteryConsumer.POWER_MODEL_POWER_PROFILE, 400,
|
||||||
BatteryConsumer.POWER_MODEL_POWER_PROFILE,
|
BatteryConsumer.POWER_MODEL_POWER_PROFILE,
|
||||||
500, 600, 800,
|
500, 600, 800,
|
||||||
true, 1777, 1888, 1999, 1777, 7771, 1888, 8881, 1999, 9991);
|
true, 1777, 1888, 1999, 123, 1777, 7771, 1888, 8881, 1999, 9991, 123, 456);
|
||||||
} else {
|
} else {
|
||||||
fail("Unexpected UID " + uidBatteryConsumer.getUid());
|
fail("Unexpected UID " + uidBatteryConsumer.getUid());
|
||||||
}
|
}
|
||||||
@@ -484,8 +500,10 @@ public class BatteryUsageStatsTest {
|
|||||||
int cpuPowerModel, double customComponentPower, int cpuDuration,
|
int cpuPowerModel, double customComponentPower, int cpuDuration,
|
||||||
int customComponentDuration, boolean processStateDataIncluded,
|
int customComponentDuration, boolean processStateDataIncluded,
|
||||||
double totalPowerForeground, double totalPowerBackground, double totalPowerFgs,
|
double totalPowerForeground, double totalPowerBackground, double totalPowerFgs,
|
||||||
double cpuPowerForeground, int cpuDurationForeground, double cpuPowerBackground,
|
double totalPowerCached, double cpuPowerForeground, int cpuDurationForeground,
|
||||||
int cpuDurationBackground, double cpuPowerFgs, int cpuDurationFgs) {
|
double cpuPowerBackground,
|
||||||
|
int cpuDurationBackground, double cpuPowerFgs, int cpuDurationFgs,
|
||||||
|
int cpuPowerCached, int cpuDurationCached) {
|
||||||
assertThat(uidBatteryConsumer.getConsumedPower()).isEqualTo(consumedPower);
|
assertThat(uidBatteryConsumer.getConsumedPower()).isEqualTo(consumedPower);
|
||||||
assertThat(uidBatteryConsumer.getPackageWithHighestDrain()).isEqualTo(
|
assertThat(uidBatteryConsumer.getPackageWithHighestDrain()).isEqualTo(
|
||||||
packageWithHighestDrain);
|
packageWithHighestDrain);
|
||||||
@@ -525,6 +543,10 @@ public class BatteryUsageStatsTest {
|
|||||||
new BatteryConsumer.Dimensions(POWER_COMPONENT_ANY,
|
new BatteryConsumer.Dimensions(POWER_COMPONENT_ANY,
|
||||||
PROCESS_STATE_FOREGROUND_SERVICE)))
|
PROCESS_STATE_FOREGROUND_SERVICE)))
|
||||||
.isEqualTo(totalPowerFgs);
|
.isEqualTo(totalPowerFgs);
|
||||||
|
assertThat(uidBatteryConsumer.getConsumedPower(
|
||||||
|
new BatteryConsumer.Dimensions(POWER_COMPONENT_ANY,
|
||||||
|
PROCESS_STATE_CACHED)))
|
||||||
|
.isEqualTo(totalPowerCached);
|
||||||
}
|
}
|
||||||
|
|
||||||
final BatteryConsumer.Key cpuFgKey = uidBatteryConsumer.getKey(
|
final BatteryConsumer.Key cpuFgKey = uidBatteryConsumer.getKey(
|
||||||
@@ -563,6 +585,19 @@ public class BatteryUsageStatsTest {
|
|||||||
} else {
|
} else {
|
||||||
assertThat(cpuFgsKey).isNotNull();
|
assertThat(cpuFgsKey).isNotNull();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
final BatteryConsumer.Key cachedKey = uidBatteryConsumer.getKey(
|
||||||
|
BatteryConsumer.POWER_COMPONENT_CPU,
|
||||||
|
BatteryConsumer.PROCESS_STATE_CACHED);
|
||||||
|
if (processStateDataIncluded) {
|
||||||
|
assertThat(cachedKey).isNotNull();
|
||||||
|
assertThat(uidBatteryConsumer.getConsumedPower(cachedKey))
|
||||||
|
.isEqualTo(cpuPowerCached);
|
||||||
|
assertThat(uidBatteryConsumer.getUsageDurationMillis(cachedKey))
|
||||||
|
.isEqualTo(cpuDurationCached);
|
||||||
|
} else {
|
||||||
|
assertThat(cpuFgsKey).isNotNull();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void assertUserBatteryConsumer(UserBatteryConsumer userBatteryConsumer,
|
private void assertUserBatteryConsumer(UserBatteryConsumer userBatteryConsumer,
|
||||||
|
|||||||
@@ -145,10 +145,14 @@ public class BluetoothPowerCalculatorTest {
|
|||||||
final BatteryConsumer.Key fgs = uidConsumer.getKey(
|
final BatteryConsumer.Key fgs = uidConsumer.getKey(
|
||||||
BatteryConsumer.POWER_COMPONENT_BLUETOOTH,
|
BatteryConsumer.POWER_COMPONENT_BLUETOOTH,
|
||||||
BatteryConsumer.PROCESS_STATE_FOREGROUND_SERVICE);
|
BatteryConsumer.PROCESS_STATE_FOREGROUND_SERVICE);
|
||||||
|
final BatteryConsumer.Key cached = uidConsumer.getKey(
|
||||||
|
BatteryConsumer.POWER_COMPONENT_BLUETOOTH,
|
||||||
|
BatteryConsumer.PROCESS_STATE_CACHED);
|
||||||
|
|
||||||
assertThat(uidConsumer.getConsumedPower(foreground)).isWithin(PRECISION).of(0.081);
|
assertThat(uidConsumer.getConsumedPower(foreground)).isWithin(PRECISION).of(0.081);
|
||||||
assertThat(uidConsumer.getConsumedPower(background)).isWithin(PRECISION).of(0.0416666);
|
assertThat(uidConsumer.getConsumedPower(background)).isWithin(PRECISION).of(0.0416666);
|
||||||
assertThat(uidConsumer.getConsumedPower(fgs)).isWithin(PRECISION).of(0);
|
assertThat(uidConsumer.getConsumedPower(fgs)).isWithin(PRECISION).of(0);
|
||||||
|
assertThat(uidConsumer.getConsumedPower(cached)).isWithin(PRECISION).of(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -261,10 +265,14 @@ public class BluetoothPowerCalculatorTest {
|
|||||||
final BatteryConsumer.Key fgs = uidConsumer.getKey(
|
final BatteryConsumer.Key fgs = uidConsumer.getKey(
|
||||||
BatteryConsumer.POWER_COMPONENT_BLUETOOTH,
|
BatteryConsumer.POWER_COMPONENT_BLUETOOTH,
|
||||||
BatteryConsumer.PROCESS_STATE_FOREGROUND_SERVICE);
|
BatteryConsumer.PROCESS_STATE_FOREGROUND_SERVICE);
|
||||||
|
final BatteryConsumer.Key cached = uidConsumer.getKey(
|
||||||
|
BatteryConsumer.POWER_COMPONENT_BLUETOOTH,
|
||||||
|
BatteryConsumer.PROCESS_STATE_CACHED);
|
||||||
|
|
||||||
assertThat(uidConsumer.getConsumedPower(foreground)).isWithin(PRECISION).of(0.4965352);
|
assertThat(uidConsumer.getConsumedPower(foreground)).isWithin(PRECISION).of(0.4965352);
|
||||||
assertThat(uidConsumer.getConsumedPower(background)).isWithin(PRECISION).of(0.3255208);
|
assertThat(uidConsumer.getConsumedPower(background)).isWithin(PRECISION).of(0.3255208);
|
||||||
assertThat(uidConsumer.getConsumedPower(fgs)).isWithin(PRECISION).of(0);
|
assertThat(uidConsumer.getConsumedPower(fgs)).isWithin(PRECISION).of(0);
|
||||||
|
assertThat(uidConsumer.getConsumedPower(cached)).isWithin(PRECISION).of(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -28,7 +28,6 @@ import static android.app.usage.UsageStatsManager.REASON_SUB_USAGE_USER_INTERACT
|
|||||||
import static android.content.pm.PackageManager.PERMISSION_GRANTED;
|
import static android.content.pm.PackageManager.PERMISSION_GRANTED;
|
||||||
import static android.os.BatteryConsumer.POWER_COMPONENT_ANY;
|
import static android.os.BatteryConsumer.POWER_COMPONENT_ANY;
|
||||||
import static android.os.BatteryConsumer.PROCESS_STATE_BACKGROUND;
|
import static android.os.BatteryConsumer.PROCESS_STATE_BACKGROUND;
|
||||||
import static android.os.BatteryConsumer.PROCESS_STATE_COUNT;
|
|
||||||
import static android.os.BatteryConsumer.PROCESS_STATE_FOREGROUND;
|
import static android.os.BatteryConsumer.PROCESS_STATE_FOREGROUND;
|
||||||
import static android.os.BatteryConsumer.PROCESS_STATE_FOREGROUND_SERVICE;
|
import static android.os.BatteryConsumer.PROCESS_STATE_FOREGROUND_SERVICE;
|
||||||
import static android.os.BatteryConsumer.PROCESS_STATE_UNSPECIFIED;
|
import static android.os.BatteryConsumer.PROCESS_STATE_UNSPECIFIED;
|
||||||
@@ -38,7 +37,6 @@ import static android.util.TimeUtils.formatTime;
|
|||||||
import static com.android.server.am.ActivityManagerDebugConfig.TAG_AM;
|
import static com.android.server.am.ActivityManagerDebugConfig.TAG_AM;
|
||||||
import static com.android.server.am.ActivityManagerDebugConfig.TAG_WITH_CLASS_NAME;
|
import static com.android.server.am.ActivityManagerDebugConfig.TAG_WITH_CLASS_NAME;
|
||||||
import static com.android.server.am.AppRestrictionController.DEVICE_CONFIG_SUBNAMESPACE_PREFIX;
|
import static com.android.server.am.AppRestrictionController.DEVICE_CONFIG_SUBNAMESPACE_PREFIX;
|
||||||
import static com.android.server.am.BaseAppStateTracker.ONE_MINUTE;
|
|
||||||
|
|
||||||
import android.annotation.NonNull;
|
import android.annotation.NonNull;
|
||||||
import android.annotation.Nullable;
|
import android.annotation.Nullable;
|
||||||
@@ -71,7 +69,6 @@ import com.android.internal.annotations.VisibleForTesting;
|
|||||||
import com.android.internal.util.ArrayUtils;
|
import com.android.internal.util.ArrayUtils;
|
||||||
import com.android.server.am.AppBatteryTracker.AppBatteryPolicy;
|
import com.android.server.am.AppBatteryTracker.AppBatteryPolicy;
|
||||||
import com.android.server.am.AppRestrictionController.UidBatteryUsageProvider;
|
import com.android.server.am.AppRestrictionController.UidBatteryUsageProvider;
|
||||||
import com.android.server.am.BaseAppStateTracker.Injector;
|
|
||||||
import com.android.server.pm.UserManagerInternal;
|
import com.android.server.pm.UserManagerInternal;
|
||||||
|
|
||||||
import java.io.PrintWriter;
|
import java.io.PrintWriter;
|
||||||
@@ -684,7 +681,7 @@ final class AppBatteryTracker extends BaseAppStateTracker<AppBatteryPolicy>
|
|||||||
static final int BATTERY_USAGE_INDEX_FOREGROUND = PROCESS_STATE_FOREGROUND;
|
static final int BATTERY_USAGE_INDEX_FOREGROUND = PROCESS_STATE_FOREGROUND;
|
||||||
static final int BATTERY_USAGE_INDEX_BACKGROUND = PROCESS_STATE_BACKGROUND;
|
static final int BATTERY_USAGE_INDEX_BACKGROUND = PROCESS_STATE_BACKGROUND;
|
||||||
static final int BATTERY_USAGE_INDEX_FOREGROUND_SERVICE = PROCESS_STATE_FOREGROUND_SERVICE;
|
static final int BATTERY_USAGE_INDEX_FOREGROUND_SERVICE = PROCESS_STATE_FOREGROUND_SERVICE;
|
||||||
static final int BATTERY_USAGE_COUNT = PROCESS_STATE_COUNT;
|
static final int BATTERY_USAGE_COUNT = 4;
|
||||||
|
|
||||||
static final Dimensions[] BATT_DIMENS = new Dimensions[] {
|
static final Dimensions[] BATT_DIMENS = new Dimensions[] {
|
||||||
new Dimensions(AppBatteryPolicy.DEFAULT_BG_CURRENT_DRAIN_POWER_COMPONENTS,
|
new Dimensions(AppBatteryPolicy.DEFAULT_BG_CURRENT_DRAIN_POWER_COMPONENTS,
|
||||||
|
|||||||
Reference in New Issue
Block a user