Loading src/com/android/settings/fuelgauge/batterytip/AnomalyCleanupJobService.java +1 −1 Original line number Diff line number Diff line Loading @@ -64,7 +64,7 @@ public class AnomalyCleanupJobService extends JobService { final BatteryTipPolicy policy = new BatteryTipPolicy(this); ThreadUtils.postOnBackgroundThread(() -> { batteryDatabaseManager.deleteAllAnomaliesBeforeTimeStamp( System.currentTimeMillis() - TimeUnit.HOURS.toMillis( System.currentTimeMillis() - TimeUnit.DAYS.toMillis( policy.dataHistoryRetainDay)); jobFinished(params, false /* wantsReschedule */); }); Loading tests/robotests/src/com/android/settings/fuelgauge/batterytip/AnomalyCleanupJobServiceTest.java +53 −4 Original line number Diff line number Diff line Loading @@ -17,36 +17,55 @@ package com.android.settings.fuelgauge.batterytip; import static com.google.common.truth.Truth.assertThat; import static org.junit.Assert.assertEquals; import static org.mockito.Matchers.any; import static org.mockito.Matchers.anyBoolean; import static org.mockito.Mockito.doNothing; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import static org.robolectric.RuntimeEnvironment.application; import android.app.job.JobInfo; import android.app.job.JobParameters; import android.app.job.JobScheduler; import android.content.Context; import com.android.settings.R; import com.android.settings.testutils.DatabaseTestUtils; import com.android.settings.testutils.SettingsRobolectricTestRunner; import com.android.settings.testutils.shadow.ShadowThreadUtils; import org.junit.After; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.robolectric.Robolectric; import org.robolectric.RuntimeEnvironment; import org.robolectric.Shadows; import org.robolectric.annotation.Config; import org.robolectric.shadows.ShadowJobScheduler; import java.util.List; import java.util.concurrent.TimeUnit; @RunWith(SettingsRobolectricTestRunner.class) @Config(shadows = ShadowThreadUtils.class) public class AnomalyCleanupJobServiceTest { private static final int UID = 1234; private static final String PACKAGE_NAME = "com.android.package"; private static final String PACKAGE_NAME_OLD = "com.android.package.old"; private static final int ANOMALY_TYPE = 1; private static final long TIMESTAMP_NOW = System.currentTimeMillis(); private static final long TIMESTAMP_31_DAYS_BEFORE = TIMESTAMP_NOW - TimeUnit.DAYS.toMillis(31); private Context mContext; private JobScheduler mJobScheduler; @Mock private JobParameters mParams; @Before public void setUp() { Loading @@ -57,8 +76,13 @@ public class AnomalyCleanupJobServiceTest { when(mContext.getSystemService(JobScheduler.class)).thenReturn(mJobScheduler); } @After public void cleanUp() { DatabaseTestUtils.clearDb(mContext); } @Test public void testScheduleCleanUp() { public void scheduleCleanUp() { AnomalyCleanupJobService.scheduleCleanUp(mContext); ShadowJobScheduler shadowJobScheduler = Loading @@ -74,10 +98,35 @@ public class AnomalyCleanupJobServiceTest { } @Test public void testScheduleCleanUp_invokeTwice_onlyScheduleOnce() { public void scheduleCleanUp_invokeTwice_onlyScheduleOnce() { AnomalyCleanupJobService.scheduleCleanUp(mContext); AnomalyCleanupJobService.scheduleCleanUp(mContext); verify(mJobScheduler, times(1)).schedule(any()); } @Test public void onStartJob_cleanUpDataBefore30days() { final BatteryDatabaseManager databaseManager = BatteryDatabaseManager.getInstance(mContext); final AnomalyCleanupJobService service = spy(Robolectric.setupService( AnomalyCleanupJobService.class)); doNothing().when(service).jobFinished(any(), anyBoolean()); // Insert two records, one is current and the other one is 31 days before databaseManager.insertAnomaly(UID, PACKAGE_NAME, ANOMALY_TYPE, AnomalyDatabaseHelper.State.NEW, TIMESTAMP_NOW); databaseManager.insertAnomaly(UID, PACKAGE_NAME_OLD, ANOMALY_TYPE, AnomalyDatabaseHelper.State.NEW, TIMESTAMP_31_DAYS_BEFORE); service.onStartJob(mParams); // In database, it only contains the current record final List<AppInfo> appInfos = databaseManager.queryAllAnomalies(0, AnomalyDatabaseHelper.State.NEW); assertThat(appInfos).containsExactly(new AppInfo.Builder() .setUid(UID) .setPackageName(PACKAGE_NAME) .addAnomalyType(ANOMALY_TYPE) .build()); } } Loading
src/com/android/settings/fuelgauge/batterytip/AnomalyCleanupJobService.java +1 −1 Original line number Diff line number Diff line Loading @@ -64,7 +64,7 @@ public class AnomalyCleanupJobService extends JobService { final BatteryTipPolicy policy = new BatteryTipPolicy(this); ThreadUtils.postOnBackgroundThread(() -> { batteryDatabaseManager.deleteAllAnomaliesBeforeTimeStamp( System.currentTimeMillis() - TimeUnit.HOURS.toMillis( System.currentTimeMillis() - TimeUnit.DAYS.toMillis( policy.dataHistoryRetainDay)); jobFinished(params, false /* wantsReschedule */); }); Loading
tests/robotests/src/com/android/settings/fuelgauge/batterytip/AnomalyCleanupJobServiceTest.java +53 −4 Original line number Diff line number Diff line Loading @@ -17,36 +17,55 @@ package com.android.settings.fuelgauge.batterytip; import static com.google.common.truth.Truth.assertThat; import static org.junit.Assert.assertEquals; import static org.mockito.Matchers.any; import static org.mockito.Matchers.anyBoolean; import static org.mockito.Mockito.doNothing; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import static org.robolectric.RuntimeEnvironment.application; import android.app.job.JobInfo; import android.app.job.JobParameters; import android.app.job.JobScheduler; import android.content.Context; import com.android.settings.R; import com.android.settings.testutils.DatabaseTestUtils; import com.android.settings.testutils.SettingsRobolectricTestRunner; import com.android.settings.testutils.shadow.ShadowThreadUtils; import org.junit.After; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.robolectric.Robolectric; import org.robolectric.RuntimeEnvironment; import org.robolectric.Shadows; import org.robolectric.annotation.Config; import org.robolectric.shadows.ShadowJobScheduler; import java.util.List; import java.util.concurrent.TimeUnit; @RunWith(SettingsRobolectricTestRunner.class) @Config(shadows = ShadowThreadUtils.class) public class AnomalyCleanupJobServiceTest { private static final int UID = 1234; private static final String PACKAGE_NAME = "com.android.package"; private static final String PACKAGE_NAME_OLD = "com.android.package.old"; private static final int ANOMALY_TYPE = 1; private static final long TIMESTAMP_NOW = System.currentTimeMillis(); private static final long TIMESTAMP_31_DAYS_BEFORE = TIMESTAMP_NOW - TimeUnit.DAYS.toMillis(31); private Context mContext; private JobScheduler mJobScheduler; @Mock private JobParameters mParams; @Before public void setUp() { Loading @@ -57,8 +76,13 @@ public class AnomalyCleanupJobServiceTest { when(mContext.getSystemService(JobScheduler.class)).thenReturn(mJobScheduler); } @After public void cleanUp() { DatabaseTestUtils.clearDb(mContext); } @Test public void testScheduleCleanUp() { public void scheduleCleanUp() { AnomalyCleanupJobService.scheduleCleanUp(mContext); ShadowJobScheduler shadowJobScheduler = Loading @@ -74,10 +98,35 @@ public class AnomalyCleanupJobServiceTest { } @Test public void testScheduleCleanUp_invokeTwice_onlyScheduleOnce() { public void scheduleCleanUp_invokeTwice_onlyScheduleOnce() { AnomalyCleanupJobService.scheduleCleanUp(mContext); AnomalyCleanupJobService.scheduleCleanUp(mContext); verify(mJobScheduler, times(1)).schedule(any()); } @Test public void onStartJob_cleanUpDataBefore30days() { final BatteryDatabaseManager databaseManager = BatteryDatabaseManager.getInstance(mContext); final AnomalyCleanupJobService service = spy(Robolectric.setupService( AnomalyCleanupJobService.class)); doNothing().when(service).jobFinished(any(), anyBoolean()); // Insert two records, one is current and the other one is 31 days before databaseManager.insertAnomaly(UID, PACKAGE_NAME, ANOMALY_TYPE, AnomalyDatabaseHelper.State.NEW, TIMESTAMP_NOW); databaseManager.insertAnomaly(UID, PACKAGE_NAME_OLD, ANOMALY_TYPE, AnomalyDatabaseHelper.State.NEW, TIMESTAMP_31_DAYS_BEFORE); service.onStartJob(mParams); // In database, it only contains the current record final List<AppInfo> appInfos = databaseManager.queryAllAnomalies(0, AnomalyDatabaseHelper.State.NEW); assertThat(appInfos).containsExactly(new AppInfo.Builder() .setUid(UID) .setPackageName(PACKAGE_NAME) .addAnomalyType(ANOMALY_TYPE) .build()); } }