Search in sources :

Example 11 with JobInfo

use of android.app.job.JobInfo in project android-priority-jobqueue by yigit.

the class FrameworkSchedulerTest method delay.

@Test
public void delay() {
    SchedulerConstraint constraint = mock(SchedulerConstraint.class);
    when(constraint.getNetworkStatus()).thenReturn(NetworkUtil.DISCONNECTED);
    when(constraint.getDelayInMs()).thenReturn(133L);
    JobInfo jobInfo = schedule(constraint);
    assertThat(jobInfo.isPersisted(), is(true));
    assertThat(jobInfo.getId(), is(1));
    assertThat(jobInfo.getMinLatencyMillis(), is(133L));
    assertThat(jobInfo.getMaxExecutionDelayMillis(), is(0L));
}
Also used : JobInfo(android.app.job.JobInfo) Test(org.junit.Test)

Example 12 with JobInfo

use of android.app.job.JobInfo in project android-priority-jobqueue by yigit.

the class FrameworkSchedulerTest method networkTest.

private void networkTest(@NetworkUtil.NetworkStatus int networkType, int expected) {
    SchedulerConstraint constraint = mock(SchedulerConstraint.class);
    when(constraint.getNetworkStatus()).thenReturn(networkType);
    JobInfo jobInfo = schedule(constraint);
    assertThat(jobInfo.isPersisted(), is(true));
    assertThat(jobInfo.getId(), is(1));
    assertThat(jobInfo.getMinLatencyMillis(), is(0L));
    assertThat(jobInfo.getMaxExecutionDelayMillis(), is(0L));
    assertThat(jobInfo.getNetworkType(), is(expected));
}
Also used : JobInfo(android.app.job.JobInfo)

Example 13 with JobInfo

use of android.app.job.JobInfo in project android_frameworks_base by DirtyUnicorns.

the class PrioritySchedulingTest method testLowerPriorityJobPreempted.

public void testLowerPriorityJobPreempted() throws Exception {
    JobInfo job1 = new JobInfo.Builder(111, kJobServiceComponent).setPriority(1).setOverrideDeadline(7000L).build();
    JobInfo job2 = new JobInfo.Builder(222, kJobServiceComponent).setPriority(1).setOverrideDeadline(7000L).build();
    JobInfo job3 = new JobInfo.Builder(333, kJobServiceComponent).setPriority(1).setOverrideDeadline(7000L).build();
    JobInfo job4 = new JobInfo.Builder(444, kJobServiceComponent).setPriority(2).setMinimumLatency(2000L).setOverrideDeadline(7000L).build();
    mJobScheduler.schedule(job1);
    mJobScheduler.schedule(job2);
    mJobScheduler.schedule(job3);
    mJobScheduler.schedule(job4);
    // Wait for job 4 to preempt one of the lower priority jobs
    Thread.sleep(10000);
    Event job4Execution = new Event(TestEnvironment.EVENT_START_JOB, 444);
    ArrayList<Event> executedEvents = kTestEnvironment.getExecutedEvents();
    boolean wasJob4Executed = executedEvents.contains(job4Execution);
    boolean wasSomeJobPreempted = false;
    for (Event event : executedEvents) {
        if (event.event == TestEnvironment.EVENT_PREEMPT_JOB) {
            wasSomeJobPreempted = true;
            break;
        }
    }
    assertTrue("No job was preempted.", wasSomeJobPreempted);
    assertTrue("Lower priority jobs were not preempted.", wasJob4Executed);
}
Also used : JobInfo(android.app.job.JobInfo) Event(com.android.server.job.MockPriorityJobService.TestEnvironment.Event)

Example 14 with JobInfo

use of android.app.job.JobInfo in project android_frameworks_base by DirtyUnicorns.

the class JobStoreTest method testMaybeWriteStatusToDisk.

public void testMaybeWriteStatusToDisk() throws Exception {
    int taskId = 5;
    // 20s
    long runByMillis = 20000L;
    // 2s
    long runFromMillis = 2000L;
    // 10s
    long initialBackoff = 10000L;
    final JobInfo task = new Builder(taskId, mComponent).setRequiresCharging(true).setRequiredNetworkType(JobInfo.NETWORK_TYPE_ANY).setBackoffCriteria(initialBackoff, JobInfo.BACKOFF_POLICY_EXPONENTIAL).setOverrideDeadline(runByMillis).setMinimumLatency(runFromMillis).setPersisted(true).build();
    final JobStatus ts = JobStatus.createFromJobInfo(task, SOME_UID, null, -1, null);
    mTaskStoreUnderTest.add(ts);
    Thread.sleep(IO_WAIT);
    // Manually load tasks from xml file.
    final JobSet jobStatusSet = new JobSet();
    mTaskStoreUnderTest.readJobMapFromDisk(jobStatusSet);
    assertEquals("Didn't get expected number of persisted tasks.", 1, jobStatusSet.size());
    final JobStatus loadedTaskStatus = jobStatusSet.getAllJobs().get(0);
    assertTasksEqual(task, loadedTaskStatus.getJob());
    assertTrue("JobStore#contains invalid.", mTaskStoreUnderTest.containsJob(ts));
    assertEquals("Different uids.", SOME_UID, loadedTaskStatus.getUid());
    compareTimestampsSubjectToIoLatency("Early run-times not the same after read.", ts.getEarliestRunTime(), loadedTaskStatus.getEarliestRunTime());
    compareTimestampsSubjectToIoLatency("Late run-times not the same after read.", ts.getLatestRunTimeElapsed(), loadedTaskStatus.getLatestRunTimeElapsed());
}
Also used : JobStatus(com.android.server.job.controllers.JobStatus) JobInfo(android.app.job.JobInfo) JobSet(com.android.server.job.JobStore.JobSet) Builder(android.app.job.JobInfo.Builder)

Example 15 with JobInfo

use of android.app.job.JobInfo in project android_frameworks_base by DirtyUnicorns.

the class JobStoreTest method testWritingTwoFilesToDisk.

public void testWritingTwoFilesToDisk() throws Exception {
    final JobInfo task1 = new Builder(8, mComponent).setRequiresDeviceIdle(true).setPeriodic(10000L).setRequiresCharging(true).setPersisted(true).build();
    final JobInfo task2 = new Builder(12, mComponent).setMinimumLatency(5000L).setBackoffCriteria(15000L, JobInfo.BACKOFF_POLICY_LINEAR).setOverrideDeadline(30000L).setRequiredNetworkType(JobInfo.NETWORK_TYPE_UNMETERED).setPersisted(true).build();
    final JobStatus taskStatus1 = JobStatus.createFromJobInfo(task1, SOME_UID, null, -1, null);
    final JobStatus taskStatus2 = JobStatus.createFromJobInfo(task2, SOME_UID, null, -1, null);
    mTaskStoreUnderTest.add(taskStatus1);
    mTaskStoreUnderTest.add(taskStatus2);
    Thread.sleep(IO_WAIT);
    final JobSet jobStatusSet = new JobSet();
    mTaskStoreUnderTest.readJobMapFromDisk(jobStatusSet);
    assertEquals("Incorrect # of persisted tasks.", 2, jobStatusSet.size());
    Iterator<JobStatus> it = jobStatusSet.getAllJobs().iterator();
    JobStatus loaded1 = it.next();
    JobStatus loaded2 = it.next();
    // Reverse them so we know which comparison to make.
    if (loaded1.getJobId() != 8) {
        JobStatus tmp = loaded1;
        loaded1 = loaded2;
        loaded2 = tmp;
    }
    assertTasksEqual(task1, loaded1.getJob());
    assertTasksEqual(task2, loaded2.getJob());
    assertTrue("JobStore#contains invalid.", mTaskStoreUnderTest.containsJob(taskStatus1));
    assertTrue("JobStore#contains invalid.", mTaskStoreUnderTest.containsJob(taskStatus2));
    // Check that the loaded task has the correct runtimes.
    compareTimestampsSubjectToIoLatency("Early run-times not the same after read.", taskStatus1.getEarliestRunTime(), loaded1.getEarliestRunTime());
    compareTimestampsSubjectToIoLatency("Late run-times not the same after read.", taskStatus1.getLatestRunTimeElapsed(), loaded1.getLatestRunTimeElapsed());
    compareTimestampsSubjectToIoLatency("Early run-times not the same after read.", taskStatus2.getEarliestRunTime(), loaded2.getEarliestRunTime());
    compareTimestampsSubjectToIoLatency("Late run-times not the same after read.", taskStatus2.getLatestRunTimeElapsed(), loaded2.getLatestRunTimeElapsed());
}
Also used : JobStatus(com.android.server.job.controllers.JobStatus) JobInfo(android.app.job.JobInfo) JobSet(com.android.server.job.JobStore.JobSet) Builder(android.app.job.JobInfo.Builder)

Aggregations

JobInfo (android.app.job.JobInfo)66 JobStatus (com.android.server.job.controllers.JobStatus)22 JobScheduler (android.app.job.JobScheduler)13 Builder (android.app.job.JobInfo.Builder)12 JobSet (com.android.server.job.JobStore.JobSet)12 ArrayList (java.util.ArrayList)10 ComponentName (android.content.ComponentName)8 Event (com.android.server.job.MockPriorityJobService.TestEnvironment.Event)8 Test (org.junit.Test)7 PersistableBundle (android.os.PersistableBundle)6 NotificationManager (android.app.NotificationManager)5 JobSchedulerInternal (com.android.server.job.JobSchedulerInternal)5 StateController (com.android.server.job.controllers.StateController)5 JobParameters (android.app.job.JobParameters)1 ConnectivityManager (android.net.ConnectivityManager)1 NonNull (android.support.annotation.NonNull)1 HashMap (java.util.HashMap)1 Map (java.util.Map)1