use of com.birbit.android.jobqueue.Params in project android-priority-jobqueue by yigit.
the class SingleIdTest method testSingleId.
private void testSingleId(boolean persistent) throws Throwable {
JobManager jobManager = createJobManager();
jobManager.stop();
String singleId = "forks";
DummyJob dummyJob1 = new DummyJob(new Params(0).setPersistent(persistent).setSingleId(singleId));
String jobId1 = addJob(jobManager, dummyJob1);
DummyJob dummyJob2 = new DummyJob(new Params(0).setPersistent(persistent));
String jobId2 = addJob(jobManager, dummyJob2);
assertThat("should add job if doesn't have singleId", jobManager.countReadyJobs(), is(2));
DummyJob dummyJob3 = new DummyJob(new Params(0).setPersistent(persistent).setSingleId("otherId"));
String jobId3 = addJob(jobManager, dummyJob3);
assertThat("should add job if different singleId", jobManager.countReadyJobs(), is(3));
DummyJob dummyJob4 = new DummyJob(new Params(0).setPersistent(persistent).setSingleId(singleId));
addJob(jobManager, dummyJob4);
assertThat("should not add job with same singleId", jobManager.countReadyJobs(), is(3));
assertThat("should return the same id", nextJob(jobManager).getId(), is(jobId1));
assertThat("should return the same id", nextJob(jobManager).getId(), is(jobId2));
assertThat("should return the same id", nextJob(jobManager).getId(), is(jobId3));
assertThat("should return the same id", nextJob(jobManager), is(nullValue()));
}
use of com.birbit.android.jobqueue.Params in project android-priority-jobqueue by yigit.
the class SlowOnAddedTest method testNonPersistent.
@Test
public void testNonPersistent() throws InterruptedException {
JobManager jobManager = createJobManager();
CountDownLatch runLatch = new CountDownLatch(1);
MyDummyJob job = new MyDummyJob(new Params(2), runLatch);
for (int i = 0; i < 50; i++) {
jobManager.addJob(new DummyJob(new Params(1)));
}
jobManager.addJob(job);
runLatch.await();
assertThat("on added should be called before on run", job.onAddedCntWhenRun, equalTo(1));
}
use of com.birbit.android.jobqueue.Params in project android-priority-jobqueue by yigit.
the class JobParamsTest method assertParamsUnderstood.
@Test
public void assertParamsUnderstood() {
MockTimer mockTimer = new MockTimer();
JobHolder j1 = JobQueueTestBase.createNewJobHolder(new Params(1).requireNetwork(), mockTimer);
assertThat("require network param should be understood properly", j1.getRequiredNetworkType(), equalTo(NetworkUtil.METERED));
JobHolder j2 = JobQueueTestBase.createNewJobHolder(new Params(1).groupBy("blah"), mockTimer);
assertThat("group param should be understood properly", j2.getGroupId(), equalTo("blah"));
assertThat("require network param should be understood properly", j2.getRequiredNetworkType(), equalTo(NetworkUtil.DISCONNECTED));
JobHolder j3 = JobQueueTestBase.createNewJobHolder(new Params(1).persist(), mockTimer);
assertThat("persist param should be understood properly", j3.persistent, equalTo(true));
JobHolder j4 = JobQueueTestBase.createNewJobHolder(new Params(1).setPersistent(false).setRequiresNetwork(false).setGroupId(null).setSingleId(null), mockTimer);
assertThat("persist param should be understood properly", j4.persistent, equalTo(false));
assertThat("require network param should be understood properly", j4.getRequiredNetworkType(), equalTo(NetworkUtil.DISCONNECTED));
assertThat("group param should be understood properly", j4.groupId, nullValue());
assertThat("single param should be understood properly", j4.getSingleInstanceId(), nullValue());
mockTimer.incrementMs(2);
DummyJob j15 = new DummyJob(new Params(1).singleInstanceBy("bloop"));
assertThat("single param should be understood properly", j15.getSingleInstanceId(), endsWith("bloop"));
assertThat("group param should be automatically set if single instance", j15.getRunGroupId(), notNullValue());
mockTimer.setNow(150);
JobHolder j6 = JobQueueTestBase.createNewJobHolder(new Params(1), mockTimer);
assertThat("no deadline", j6.getDeadlineNs(), is(Params.FOREVER));
JobHolder j7 = JobQueueTestBase.createNewJobHolder(new Params(1).overrideDeadlineToCancelInMs(100), mockTimer);
assertThat("100 ms deadline", j7.getDeadlineNs(), is(100000150L));
assertThat("100 ms deadline", j7.shouldCancelOnDeadline(), is(true));
JobHolder j13 = JobQueueTestBase.createNewJobHolder(new Params(1).overrideDeadlineToCancelInMs(200), mockTimer);
assertThat("100 ms deadline", j13.getDeadlineNs(), is(200000150L));
assertThat("100 ms deadline", j7.shouldCancelOnDeadline(), is(true));
}
use of com.birbit.android.jobqueue.Params in project android-priority-jobqueue by yigit.
the class JobQueueTestBase method testDelayUntilWithUnmeteredNetworkRequirement2.
@Test
public void testDelayUntilWithUnmeteredNetworkRequirement2() {
JobQueue jobQueue = createNewJobQueue();
JobHolder holder1 = createNewJobHolder(new Params(2).overrideDeadlineToRunInMs(3000).requireUnmeteredNetwork().delayInMs(2000));
jobQueue.insert(holder1);
TestConstraint constraint = new TestConstraint(mockTimer);
constraint.setMaxNetworkType(NetworkUtil.UNMETERED);
assertThat(jobQueue.getNextJobDelayUntilNs(constraint), is(2000000000L));
constraint.setMaxNetworkType(NetworkUtil.METERED);
assertThat(jobQueue.getNextJobDelayUntilNs(constraint), is(3000000000L));
}
use of com.birbit.android.jobqueue.Params in project android-priority-jobqueue by yigit.
the class RetryLogicTest method testChangePriority.
@Ignore
public void testChangePriority(boolean persistent) throws InterruptedException {
final AtomicInteger priority = new AtomicInteger(1);
retryProvider = new RetryProvider() {
@Override
public RetryConstraint build(Job job, Throwable throwable, int runCount, int maxRunCount) {
RetryConstraint constraint = new RetryConstraint(true);
priority.set(job.getPriority() * 2);
constraint.setNewPriority(priority.get());
return constraint;
}
};
onRunCallback = new Callback() {
@Override
public void on(Job job) {
assertThat("priority should be the expected value", job.getPriority(), is(priority.get()));
}
};
RetryJob retryJob = new RetryJob(new Params(priority.get()).setPersistent(persistent));
retryJob.retryLimit = 3;
canRun = true;
onRunLatch = new CountDownLatch(3);
createJobManager().addJob(retryJob);
assertThat(onRunLatch.await(5, TimeUnit.SECONDS), is(true));
assertThat("it should run 3 times", runCount, is(3));
assertThat(cancelLatch.await(5, TimeUnit.SECONDS), is(true));
}
Aggregations