Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 30f903da authored by jackqdyulei's avatar jackqdyulei
Browse files

Build extra data in wakeup anomaly

Wakeup Anomaly need this data to decide which action to take. The
previous cl adds it to wakelock anomaly, not wakeup anomaly.

Bug: 63777620
Test: RunSettingsRoboTests
Change-Id: I07c7252398add1573ea7de82953cbeabdbfe947d
parent 8e1f509b
Loading
Loading
Loading
Loading
+0 −5
Original line number Original line Diff line number Diff line
@@ -91,17 +91,12 @@ public class WakeLockAnomalyDetector implements AnomalyDetector {
                final String packageName = mBatteryUtils.getPackageName(uid.getUid());
                final String packageName = mBatteryUtils.getPackageName(uid.getUid());
                final CharSequence displayName = Utils.getApplicationLabel(mContext,
                final CharSequence displayName = Utils.getApplicationLabel(mContext,
                        packageName);
                        packageName);
                final int targetSdkVersion = mBatteryUtils.getTargetSdkVersion(packageName);


                Anomaly anomaly = new Anomaly.Builder()
                Anomaly anomaly = new Anomaly.Builder()
                        .setUid(uid.getUid())
                        .setUid(uid.getUid())
                        .setType(Anomaly.AnomalyType.WAKE_LOCK)
                        .setType(Anomaly.AnomalyType.WAKE_LOCK)
                        .setDisplayName(displayName)
                        .setDisplayName(displayName)
                        .setPackageName(packageName)
                        .setPackageName(packageName)
                        .setTargetSdkVersion(targetSdkVersion)
                        .setBackgroundRestrictionEnabled(
                                mBatteryUtils.isBackgroundRestrictionEnabled(targetSdkVersion,
                                        uid.getUid(), packageName))
                        .build();
                        .build();


                if (mAnomalyUtils.getAnomalyAction(anomaly).isActionActive(anomaly)) {
                if (mAnomalyUtils.getAnomalyAction(anomaly).isActionActive(anomaly)) {
+5 −0
Original line number Original line Diff line number Diff line
@@ -89,12 +89,17 @@ public class WakeupAlarmAnomalyDetector implements AnomalyDetector {
                    final String packageName = mBatteryUtils.getPackageName(uid.getUid());
                    final String packageName = mBatteryUtils.getPackageName(uid.getUid());
                    final CharSequence displayName = Utils.getApplicationLabel(mContext,
                    final CharSequence displayName = Utils.getApplicationLabel(mContext,
                            packageName);
                            packageName);
                    final int targetSdkVersion = mBatteryUtils.getTargetSdkVersion(packageName);


                    Anomaly anomaly = new Anomaly.Builder()
                    Anomaly anomaly = new Anomaly.Builder()
                            .setUid(uid.getUid())
                            .setUid(uid.getUid())
                            .setType(Anomaly.AnomalyType.WAKEUP_ALARM)
                            .setType(Anomaly.AnomalyType.WAKEUP_ALARM)
                            .setDisplayName(displayName)
                            .setDisplayName(displayName)
                            .setPackageName(packageName)
                            .setPackageName(packageName)
                            .setTargetSdkVersion(targetSdkVersion)
                            .setBackgroundRestrictionEnabled(
                                    mBatteryUtils.isBackgroundRestrictionEnabled(targetSdkVersion,
                                            uid.getUid(), packageName))
                            .build();
                            .build();


                    if (mAnomalyUtils.getAnomalyAction(anomaly).isActionActive(anomaly)) {
                    if (mAnomalyUtils.getAnomalyAction(anomaly).isActionActive(anomaly)) {
+35 −16
Original line number Original line Diff line number Diff line
@@ -21,13 +21,13 @@ import static com.google.common.truth.Truth.assertThat;
import static org.mockito.ArgumentMatchers.nullable;
import static org.mockito.ArgumentMatchers.nullable;
import static org.mockito.Matchers.any;
import static org.mockito.Matchers.any;
import static org.mockito.Matchers.anyInt;
import static org.mockito.Matchers.anyInt;
import static org.mockito.Matchers.eq;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.spy;


import android.content.Context;
import android.content.Context;
import android.content.pm.ApplicationInfo;
import android.content.pm.ApplicationInfo;
import android.os.BatteryStats;
import android.os.BatteryStats;
import android.os.Build;
import android.text.format.DateUtils;
import android.text.format.DateUtils;
import android.util.ArrayMap;
import android.util.ArrayMap;


@@ -56,7 +56,12 @@ import java.util.List;
@RunWith(SettingsRobolectricTestRunner.class)
@RunWith(SettingsRobolectricTestRunner.class)
@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
public class WakeupAlarmAnomalyDetectorTest {
public class WakeupAlarmAnomalyDetectorTest {
    private static final String TARGET_PACKAGE_NAME = "com.android.app";
    private static final String TARGET_PACKAGE_NAME = "com.android.target";
    private static final String ANOMALY_PACKAGE_NAME = "com.android.anomaly";
    private static final boolean TARGET_BACKGROUND_RESTRICTION_ON = false;
    private static final boolean ANOMALY_BACKGROUND_RESTRICTION_ON = true;
    private static final int TARGET_SDK = Build.VERSION_CODES.L;
    private static final int ANOMALY_SDK = Build.VERSION_CODES.O;
    private static final int ANOMALY_UID = 111;
    private static final int ANOMALY_UID = 111;
    private static final int NORMAL_UID = 222;
    private static final int NORMAL_UID = 222;
    private static final int TARGET_UID = 333;
    private static final int TARGET_UID = 333;
@@ -96,6 +101,8 @@ public class WakeupAlarmAnomalyDetectorTest {
    private WakeupAlarmAnomalyDetector mWakeupAlarmAnomalyDetector;
    private WakeupAlarmAnomalyDetector mWakeupAlarmAnomalyDetector;
    private Context mContext;
    private Context mContext;
    private List<BatterySipper> mUsageList;
    private List<BatterySipper> mUsageList;
    private Anomaly mAnomaly;
    private Anomaly mTargetAnomaly;


    @Before
    @Before
    public void setUp() throws Exception {
    public void setUp() throws Exception {
@@ -123,6 +130,30 @@ public class WakeupAlarmAnomalyDetectorTest {
        mUsageList.add(mTargetSipper);
        mUsageList.add(mTargetSipper);
        doReturn(mUsageList).when(mBatteryStatsHelper).getUsageList();
        doReturn(mUsageList).when(mBatteryStatsHelper).getUsageList();


        doReturn(TARGET_PACKAGE_NAME).when(mBatteryUtils).getPackageName(TARGET_UID);
        doReturn(ANOMALY_PACKAGE_NAME).when(mBatteryUtils).getPackageName(ANOMALY_UID);
        doReturn(TARGET_SDK).when(mBatteryUtils).getTargetSdkVersion(TARGET_PACKAGE_NAME);
        doReturn(ANOMALY_SDK).when(mBatteryUtils).getTargetSdkVersion(ANOMALY_PACKAGE_NAME);
        doReturn(TARGET_BACKGROUND_RESTRICTION_ON).when(mBatteryUtils)
                .isBackgroundRestrictionEnabled(TARGET_SDK, TARGET_UID, TARGET_PACKAGE_NAME);
        doReturn(ANOMALY_BACKGROUND_RESTRICTION_ON).when(mBatteryUtils)
                .isBackgroundRestrictionEnabled(ANOMALY_SDK, ANOMALY_UID, ANOMALY_PACKAGE_NAME);

        mAnomaly = new Anomaly.Builder()
                .setUid(ANOMALY_UID)
                .setPackageName(ANOMALY_PACKAGE_NAME)
                .setType(Anomaly.AnomalyType.WAKEUP_ALARM)
                .setTargetSdkVersion(ANOMALY_SDK)
                .setBackgroundRestrictionEnabled(ANOMALY_BACKGROUND_RESTRICTION_ON)
                .build();
        mTargetAnomaly = new Anomaly.Builder()
                .setUid(TARGET_UID)
                .setPackageName(TARGET_PACKAGE_NAME)
                .setType(Anomaly.AnomalyType.WAKEUP_ALARM)
                .setTargetSdkVersion(TARGET_SDK)
                .setBackgroundRestrictionEnabled(TARGET_BACKGROUND_RESTRICTION_ON)
                .build();

        mWakeupAlarmAnomalyDetector = spy(
        mWakeupAlarmAnomalyDetector = spy(
                new WakeupAlarmAnomalyDetector(mContext, mPolicy, mAnomalyUtils));
                new WakeupAlarmAnomalyDetector(mContext, mPolicy, mAnomalyUtils));
        mWakeupAlarmAnomalyDetector.mBatteryUtils = mBatteryUtils;
        mWakeupAlarmAnomalyDetector.mBatteryUtils = mBatteryUtils;
@@ -137,18 +168,10 @@ public class WakeupAlarmAnomalyDetectorTest {
                mTargetUid);
                mTargetUid);
        doReturn(NORMAL_WAKEUP_COUNT).when(mWakeupAlarmAnomalyDetector).getWakeupAlarmCountFromUid(
        doReturn(NORMAL_WAKEUP_COUNT).when(mWakeupAlarmAnomalyDetector).getWakeupAlarmCountFromUid(
                mNormalUid);
                mNormalUid);
        final Anomaly anomaly = new Anomaly.Builder()
                .setUid(ANOMALY_UID)
                .setType(Anomaly.AnomalyType.WAKEUP_ALARM)
                .build();
        final Anomaly targetAnomaly = new Anomaly.Builder()
                .setUid(TARGET_UID)
                .setType(Anomaly.AnomalyType.WAKEUP_ALARM)
                .build();


        List<Anomaly> mAnomalies = mWakeupAlarmAnomalyDetector.detectAnomalies(mBatteryStatsHelper);
        List<Anomaly> mAnomalies = mWakeupAlarmAnomalyDetector.detectAnomalies(mBatteryStatsHelper);


        assertThat(mAnomalies).containsExactly(anomaly, targetAnomaly);
        assertThat(mAnomalies).containsExactly(mAnomaly, mTargetAnomaly);
    }
    }


    @Test
    @Test
@@ -160,15 +183,11 @@ public class WakeupAlarmAnomalyDetectorTest {
                mTargetUid);
                mTargetUid);
        doReturn(NORMAL_WAKEUP_COUNT).when(mWakeupAlarmAnomalyDetector).getWakeupAlarmCountFromUid(
        doReturn(NORMAL_WAKEUP_COUNT).when(mWakeupAlarmAnomalyDetector).getWakeupAlarmCountFromUid(
                mNormalUid);
                mNormalUid);
        final Anomaly targetAnomaly = new Anomaly.Builder()
                .setUid(TARGET_UID)
                .setType(Anomaly.AnomalyType.WAKEUP_ALARM)
                .build();


        List<Anomaly> mAnomalies = mWakeupAlarmAnomalyDetector.detectAnomalies(mBatteryStatsHelper,
        List<Anomaly> mAnomalies = mWakeupAlarmAnomalyDetector.detectAnomalies(mBatteryStatsHelper,
                TARGET_PACKAGE_NAME);
                TARGET_PACKAGE_NAME);


        assertThat(mAnomalies).containsExactly(targetAnomaly);
        assertThat(mAnomalies).containsExactly(mTargetAnomaly);
    }
    }


    @Test
    @Test