OLD | NEW |
(Empty) | |
| 1 // Copyright 2017 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. |
| 4 |
| 5 package org.chromium.components.background_task_scheduler; |
| 6 |
| 7 import android.annotation.TargetApi; |
| 8 import android.app.job.JobInfo; |
| 9 import android.content.Context; |
| 10 import android.os.Build; |
| 11 import android.os.Bundle; |
| 12 import android.os.PersistableBundle; |
| 13 import android.support.test.filters.SmallTest; |
| 14 import android.test.InstrumentationTestCase; |
| 15 |
| 16 import org.chromium.base.test.util.MinAndroidSdkLevel; |
| 17 |
| 18 import java.util.concurrent.TimeUnit; |
| 19 |
| 20 /** |
| 21 * Tests for {@link BackgroundTaskSchedulerJobService}. |
| 22 */ |
| 23 @TargetApi(Build.VERSION_CODES.LOLLIPOP_MR1) |
| 24 @MinAndroidSdkLevel(Build.VERSION_CODES.LOLLIPOP_MR1) |
| 25 public class BackgroundTaskSchedulerJobServiceTest extends InstrumentationTestCa
se { |
| 26 private static class TestBackgroundTask implements BackgroundTask { |
| 27 @Override |
| 28 public boolean onStartTask( |
| 29 Context context, TaskParameters taskParameters, TaskFinishedCall
back callback) { |
| 30 return false; |
| 31 } |
| 32 |
| 33 @Override |
| 34 public boolean onStopTask(Context context, TaskParameters taskParameters
) { |
| 35 return false; |
| 36 } |
| 37 } |
| 38 |
| 39 @SmallTest |
| 40 public void testOneOffTaskInfoWithDeadlineConversion() { |
| 41 TaskInfo oneOffTask = TaskInfo.createOneOffTask(TaskIds.TEST, TestBackgr
oundTask.class, |
| 42 TimeUnit.MINUTES.toMillis(200)) |
| 43 .build(); |
| 44 JobInfo jobInfo = BackgroundTaskSchedulerJobService.createJobInfoFromTas
kInfo( |
| 45 getInstrumentation().getTargetContext(), oneOffTask); |
| 46 assertEquals(oneOffTask.getTaskId(), jobInfo.getId()); |
| 47 assertFalse(jobInfo.isPeriodic()); |
| 48 assertEquals(oneOffTask.getOneOffInfo().getWindowEndTimeMs(), |
| 49 jobInfo.getMaxExecutionDelayMillis()); |
| 50 } |
| 51 |
| 52 @SmallTest |
| 53 public void testOneOffTaskInfoWithWindowConversion() { |
| 54 TaskInfo oneOffTask = |
| 55 TaskInfo.createOneOffTask(TaskIds.TEST, TestBackgroundTask.class
, |
| 56 TimeUnit.MINUTES.toMillis(100), TimeUnit.MINUTES
.toMillis(200)) |
| 57 .build(); |
| 58 JobInfo jobInfo = BackgroundTaskSchedulerJobService.createJobInfoFromTas
kInfo( |
| 59 getInstrumentation().getTargetContext(), oneOffTask); |
| 60 assertEquals(oneOffTask.getTaskId(), jobInfo.getId()); |
| 61 assertFalse(jobInfo.isPeriodic()); |
| 62 assertEquals( |
| 63 oneOffTask.getOneOffInfo().getWindowStartTimeMs(), jobInfo.getMi
nLatencyMillis()); |
| 64 assertEquals(oneOffTask.getOneOffInfo().getWindowEndTimeMs(), |
| 65 jobInfo.getMaxExecutionDelayMillis()); |
| 66 } |
| 67 |
| 68 @SmallTest |
| 69 public void testPeriodicTaskInfoWithoutFlexConversion() { |
| 70 TaskInfo periodicTask = TaskInfo.createPeriodicTask(TaskIds.TEST, TestBa
ckgroundTask.class, |
| 71 TimeUnit.MINUTES.toMillis(200)) |
| 72 .build(); |
| 73 JobInfo jobInfo = BackgroundTaskSchedulerJobService.createJobInfoFromTas
kInfo( |
| 74 getInstrumentation().getTargetContext(), periodicTask); |
| 75 assertEquals(periodicTask.getTaskId(), jobInfo.getId()); |
| 76 assertTrue(jobInfo.isPeriodic()); |
| 77 assertEquals(periodicTask.getPeriodicInfo().getIntervalMs(), jobInfo.get
IntervalMillis()); |
| 78 } |
| 79 |
| 80 @SmallTest |
| 81 public void testPeriodicTaskInfoWithFlexConversion() { |
| 82 TaskInfo periodicTask = |
| 83 TaskInfo.createPeriodicTask(TaskIds.TEST, TestBackgroundTask.cla
ss, |
| 84 TimeUnit.MINUTES.toMillis(200), TimeUnit.MINUTES
.toMillis(50)) |
| 85 .build(); |
| 86 JobInfo jobInfo = BackgroundTaskSchedulerJobService.createJobInfoFromTas
kInfo( |
| 87 getInstrumentation().getTargetContext(), periodicTask); |
| 88 assertEquals(periodicTask.getTaskId(), jobInfo.getId()); |
| 89 assertTrue(jobInfo.isPeriodic()); |
| 90 assertEquals(periodicTask.getPeriodicInfo().getIntervalMs(), jobInfo.get
IntervalMillis()); |
| 91 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { |
| 92 assertEquals(periodicTask.getPeriodicInfo().getFlexMs(), jobInfo.get
FlexMillis()); |
| 93 } |
| 94 } |
| 95 |
| 96 @SmallTest |
| 97 public void testTaskInfoWithExtras() { |
| 98 Bundle taskExtras = new Bundle(); |
| 99 taskExtras.putString("foo", "bar"); |
| 100 taskExtras.putBoolean("bools", true); |
| 101 taskExtras.putLong("longs", 1342543L); |
| 102 TaskInfo oneOffTask = TaskInfo.createOneOffTask(TaskIds.TEST, TestBackgr
oundTask.class, |
| 103 TimeUnit.MINUTES.toMillis(200)) |
| 104 .setExtras(taskExtras) |
| 105 .build(); |
| 106 JobInfo jobInfo = BackgroundTaskSchedulerJobService.createJobInfoFromTas
kInfo( |
| 107 getInstrumentation().getTargetContext(), oneOffTask); |
| 108 assertEquals(oneOffTask.getTaskId(), jobInfo.getId()); |
| 109 PersistableBundle jobExtras = jobInfo.getExtras(); |
| 110 PersistableBundle persistableBundle = jobExtras.getPersistableBundle( |
| 111 BackgroundTaskSchedulerJobService.BACKGROUND_TASK_EXTRAS_KEY); |
| 112 assertEquals(taskExtras.keySet().size(), persistableBundle.keySet().size
()); |
| 113 assertEquals(taskExtras.getString("foo"), persistableBundle.getString("f
oo")); |
| 114 assertEquals(taskExtras.getBoolean("bools"), persistableBundle.getBoolea
n("bools")); |
| 115 assertEquals(taskExtras.getLong("longs"), persistableBundle.getLong("lon
gs")); |
| 116 } |
| 117 |
| 118 @SmallTest |
| 119 public void testTaskInfoWithManyConstraints() { |
| 120 TaskInfo.Builder taskBuilder = TaskInfo.createOneOffTask( |
| 121 TaskIds.TEST, TestBackgroundTask.class, TimeUnit.MINUTES.toMilli
s(200)); |
| 122 |
| 123 JobInfo jobInfo = BackgroundTaskSchedulerJobService.createJobInfoFromTas
kInfo( |
| 124 getInstrumentation().getTargetContext(), taskBuilder.setIsPersis
ted(true).build()); |
| 125 assertTrue(jobInfo.isPersisted()); |
| 126 |
| 127 jobInfo = BackgroundTaskSchedulerJobService.createJobInfoFromTaskInfo( |
| 128 getInstrumentation().getTargetContext(), |
| 129 taskBuilder.setRequiredNetworkType(TaskInfo.NETWORK_TYPE_UNMETER
ED).build()); |
| 130 assertEquals(JobInfo.NETWORK_TYPE_UNMETERED, jobInfo.getNetworkType()); |
| 131 |
| 132 jobInfo = BackgroundTaskSchedulerJobService.createJobInfoFromTaskInfo( |
| 133 getInstrumentation().getTargetContext(), |
| 134 taskBuilder.setRequiresCharging(true).build()); |
| 135 assertTrue(jobInfo.isRequireCharging()); |
| 136 } |
| 137 } |
OLD | NEW |