Add wakeup alarm anomaly detector
Wakeup alarm count frequent is calculated by a / b, where 1. a: the total wakeup alarm count since the last full charge 2. b: total time running since last full charge (include sleeping time) This cl also has the following changes: 1. Move bunch of methods to BatteryUtils 2. Create type WAKEUP_ALARM 3. Add and update tests Upcoming cl will make sure we get the threshold from AnomalyDetectionPolicy Bug: 36921529 Test: RunSettingsRoboTests Change-Id: I4f7b85606df68b6057f6c7d3f3be7f9a9a747f1d
This commit is contained in:
@@ -21,6 +21,7 @@ import android.os.Process;
|
||||
import android.text.format.DateUtils;
|
||||
|
||||
import com.android.internal.os.BatterySipper;
|
||||
import com.android.internal.os.BatteryStatsHelper;
|
||||
import com.android.settings.SettingsRobolectricTestRunner;
|
||||
import com.android.settings.TestConfig;
|
||||
import com.android.settings.testutils.FakeFeatureFactory;
|
||||
@@ -68,6 +69,9 @@ public class BatteryUtilsTest {
|
||||
private static final long TIME_STATE_BACKGROUND = 6000 * UNIT;
|
||||
private static final long TIME_FOREGROUND_ACTIVITY_ZERO = 0;
|
||||
private static final long TIME_FOREGROUND_ACTIVITY = 100 * DateUtils.MINUTE_IN_MILLIS;
|
||||
private static final long TIME_SINCE_LAST_FULL_CHARGE_MS = 120 * 60 * 1000;
|
||||
private static final long TIME_SINCE_LAST_FULL_CHARGE_US =
|
||||
TIME_SINCE_LAST_FULL_CHARGE_MS * 1000;
|
||||
|
||||
private static final int UID = 123;
|
||||
private static final long TIME_EXPECTED_FOREGROUND = 1500;
|
||||
@@ -100,6 +104,8 @@ public class BatteryUtilsTest {
|
||||
private BatterySipper mCellBatterySipper;
|
||||
@Mock(answer = Answers.RETURNS_DEEP_STUBS)
|
||||
private Context mContext;
|
||||
@Mock(answer = Answers.RETURNS_DEEP_STUBS)
|
||||
private BatteryStatsHelper mBatteryStatsHelper;
|
||||
private BatteryUtils mBatteryUtils;
|
||||
private FakeFeatureFactory mFeatureFactory;
|
||||
private PowerUsageFeatureProvider mProvider;
|
||||
@@ -122,6 +128,8 @@ public class BatteryUtilsTest {
|
||||
anyLong(), anyInt());
|
||||
doReturn(TIME_STATE_BACKGROUND).when(mUid).getProcessStateTime(eq(PROCESS_STATE_BACKGROUND),
|
||||
anyLong(), anyInt());
|
||||
when(mBatteryStatsHelper.getStats().computeBatteryRealtime(anyLong(), anyInt())).thenReturn(
|
||||
TIME_SINCE_LAST_FULL_CHARGE_US);
|
||||
|
||||
mNormalBatterySipper.drainType = BatterySipper.DrainType.APP;
|
||||
mNormalBatterySipper.totalPowerMah = TOTAL_BATTERY_USAGE;
|
||||
@@ -278,6 +286,12 @@ public class BatteryUtilsTest {
|
||||
BATTERY_APP_USAGE + BATTERY_SCREEN_USAGE);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testCalculateRunningTimeBasedOnStatsType() {
|
||||
assertThat(mBatteryUtils.calculateRunningTimeBasedOnStatsType(mBatteryStatsHelper,
|
||||
BatteryStats.STATS_SINCE_CHARGED)).isEqualTo(TIME_SINCE_LAST_FULL_CHARGE_MS);
|
||||
}
|
||||
|
||||
private BatterySipper createTestSmearBatterySipper(long activityTime, double totalPowerMah,
|
||||
int uidCode, boolean isUidNull) {
|
||||
final BatterySipper sipper = mock(BatterySipper.class);
|
||||
|
Reference in New Issue
Block a user