Merge "Add test for PendingJobQueue."

This commit is contained in:
TreeHugger Robot
2023-01-26 09:38:23 +00:00
committed by Android (Google) Code Review
2 changed files with 28 additions and 0 deletions

View File

@@ -219,6 +219,8 @@ class PendingJobQueue {
ajq.clear();
mAppJobQueuePool.release(ajq);
} else if (prevTimestamp != ajq.peekNextTimestamp()) {
// Removing the job changed the "next timestamp" in the queue, so we need to reinsert
// it to fix the ordering.
mOrderedQueues.remove(ajq);
mOrderedQueues.offer(ajq);
}

View File

@@ -201,6 +201,32 @@ public class PendingJobQueueTest {
}
}
assertNull(jobQueue.next());
assertEquals(0, jobQueue.size());
}
@Test
public void testRemove_duringIteration() {
List<JobStatus> jobs = new ArrayList<>();
jobs.add(createJobStatus("testRemove", createJobInfo(1), 1));
jobs.add(createJobStatus("testRemove", createJobInfo(2), 2));
jobs.add(createJobStatus("testRemove", createJobInfo(3).setExpedited(true), 3));
jobs.add(createJobStatus("testRemove", createJobInfo(4), 4));
jobs.add(createJobStatus("testRemove", createJobInfo(5).setExpedited(true), 5));
PendingJobQueue jobQueue = new PendingJobQueue();
jobQueue.addAll(jobs);
ArraySet<JobStatus> removed = new ArraySet<>();
JobStatus job;
jobQueue.resetIterator();
while ((job = jobQueue.next()) != null) {
jobQueue.remove(job);
removed.add(job);
assertFalse("Queue retained a removed job " + testJobToString(job),
jobQueue.contains(job));
}
assertNull(jobQueue.next());
assertEquals(0, jobQueue.size());
}
@Test