use of com.birbit.android.jobqueue.Job in project android-priority-jobqueue by yigit.
the class CallbackTest method successNonPersistent.
@Test
public void successNonPersistent() throws Throwable {
JobManagerCallback callback = mock(JobManagerCallback.class);
final Job job = spy(new PublicJob(new Params(0)));
doNothing().when(job).onAdded();
doNothing().when(job).onRun();
final JobManager jobManager = createJobManager();
jobManager.addCallback(callback);
waitUntilAJobIsDone(jobManager, new WaitUntilCallback() {
@Override
public void run() {
jobManager.addJob(job);
}
@Override
public void assertJob(Job job) {
}
});
verify(job).onAdded();
verify(job).onRun();
verify(callback).onJobAdded(job);
verify(callback).onJobRun(job, JobManagerCallback.RESULT_SUCCEED);
}
use of com.birbit.android.jobqueue.Job in project android-priority-jobqueue by yigit.
the class CallbackTest method cancelViaRetryLimit.
@Test
public void cancelViaRetryLimit() throws Throwable {
final Throwable error = new Exception();
JobManagerCallback callback = mock(JobManagerCallback.class);
final PublicJob job = spy(new PublicJob(new Params(0)));
doNothing().when(job).onAdded();
doThrow(error).when(job).onRun();
doReturn(3).when(job).getRetryLimit();
doReturn(RetryConstraint.RETRY).when(job).shouldReRunOnThrowable(any(Throwable.class), anyInt(), anyInt());
final JobManager jobManager = createJobManager();
jobManager.addCallback(callback);
waitUntilAJobIsDone(jobManager, new WaitUntilCallback() {
@Override
public void run() {
jobManager.addJob(job);
}
@Override
public void assertJob(Job job) {
}
});
verify(callback).onJobAdded(job);
verify(callback, times(2)).onJobRun(job, JobManagerCallback.RESULT_FAIL_WILL_RETRY);
verify(callback, times(1)).onJobRun(job, JobManagerCallback.RESULT_CANCEL_REACHED_RETRY_LIMIT);
verify(callback).onJobCancelled(job, false, error);
}
use of com.birbit.android.jobqueue.Job in project android-priority-jobqueue by yigit.
the class CancelBeforeRunningTest method testCancelBeforeRunning.
@Test
public void testCancelBeforeRunning() {
JobManager jobManager = createJobManager();
jobManager.stop();
DummyJob nonPersistentJob = new DummyJob(new Params(0).addTags("dummyTag"));
DummyJob persistentJob = new DummyJob(new Params(0).addTags("dummyTag").persist());
jobManager.addJob(nonPersistentJob);
jobManager.addJob(persistentJob);
CancelResult result = jobManager.cancelJobs(TagConstraint.ANY, "dummyTag");
assertThat("both jobs should be cancelled", result.getCancelledJobs().size(), is(2));
assertThat("both jobs should be cancelled", result.getFailedToCancel().size(), is(0));
for (Job j : result.getCancelledJobs()) {
DummyJob job = (DummyJob) j;
if (!job.isPersistent()) {
assertThat("job is still added", job.getOnAddedCnt(), is(1));
}
assertThat("job is cancelled", job.getOnCancelCnt(), is(1));
assertThat("job is NOT run", job.getOnRunCnt(), is(0));
}
}
use of com.birbit.android.jobqueue.Job in project android-priority-jobqueue by yigit.
the class CancelWhileRunningTest method testCancelBeforeRunning.
@Test
public void testCancelBeforeRunning() throws InterruptedException {
JobManager jobManager = createJobManager(new Configuration.Builder(RuntimeEnvironment.application).minConsumerCount(5).timer(mockTimer));
JobWithEndLatch nonPersistent1 = new JobWithEndLatch(new Params(0).addTags("dummyTag"), true);
JobWithEndLatch nonPersistent2 = new JobWithEndLatch(new Params(0).addTags("dummyTag"), false);
DummyJob persistentJob1 = new PersistentJobWithEndLatch(new Params(0).addTags("dummyTag"), false);
DummyJob persistentJob2 = new PersistentJobWithEndLatch(new Params(0).addTags("dummyTag"), true);
jobManager.addJob(nonPersistent1);
jobManager.addJob(nonPersistent2);
jobManager.addJob(persistentJob1);
jobManager.addJob(persistentJob2);
onStartLatch.await();
nonPersistent1.onStartLatch.await();
nonPersistent2.onStartLatch.await();
final CancelResult[] resultHolder = new CancelResult[2];
final CountDownLatch cancelLatch = new CountDownLatch(1);
jobManager.cancelJobsInBackground(new CancelResult.AsyncCancelCallback() {
@Override
public void onCancelled(CancelResult cancelResult) {
resultHolder[0] = cancelResult;
cancelLatch.countDown();
}
}, TagConstraint.ANY, "dummyTag");
jobManager.cancelJobsInBackground(new CancelResult.AsyncCancelCallback() {
@Override
public void onCancelled(CancelResult cancelResult) {
resultHolder[1] = cancelResult;
}
}, TagConstraint.ANY, "dummyTag");
assertThat("result should not arrive until existing jobs finish", cancelLatch.await(4, TimeUnit.SECONDS), is(false));
onEndLatch.countDown();
nonPersistent1.onEndLatch.countDown();
nonPersistent2.onEndLatch.countDown();
assertThat("when jobs in question are finished, cancel callback should be triggered", cancelLatch.await(10, TimeUnit.SECONDS), is(true));
final CancelResult result = resultHolder[0];
JqLog.d("cancelled jobs %s", result.getCancelledJobs());
JqLog.d("failed to cancel %s", result.getFailedToCancel());
assertThat("two jobs should be cancelled", result.getCancelledJobs().size(), is(2));
assertThat("two jobs should fail to cancel", result.getFailedToCancel().size(), is(2));
for (Job j : result.getCancelledJobs()) {
FailingJob job = (FailingJob) j;
if (!job.isPersistent()) {
assertThat("job is still added", job.getOnAddedCnt(), is(1));
}
if (job.fail) {
assertThat("job is cancelled", job.getOnCancelCnt(), is(1));
} else {
assertThat("job could not be cancelled", job.getOnCancelCnt(), is(0));
}
}
for (Job j : result.getFailedToCancel()) {
FailingJob job = (FailingJob) j;
if (!job.isPersistent()) {
assertThat("job is still added", job.getOnAddedCnt(), is(1));
}
if (job.fail) {
assertThat("job is cancelled", job.getOnCancelCnt(), is(1));
} else {
assertThat("job could not be cancelled", job.getOnCancelCnt(), is(0));
}
}
assertThat("second cancel should not cancel anything", resultHolder[1].getCancelledJobs().size(), is(0));
assertThat("second cancel should not cancel anything", resultHolder[1].getFailedToCancel().size(), is(0));
}
use of com.birbit.android.jobqueue.Job in project android-priority-jobqueue by yigit.
the class CountTest method testCount.
@TargetApi(Build.VERSION_CODES.GINGERBREAD)
@Test
public void testCount() throws Exception {
enableDebug();
JobManager jobManager = createJobManager();
jobManager.stop();
for (int i = 0; i < 10; i++) {
jobManager.addJob(new DummyJob(new Params(0).persist()));
MatcherAssert.assertThat((int) jobManager.count(), equalTo(i * 2 + 1));
jobManager.addJob(new DummyJob(new Params(0).persist()));
MatcherAssert.assertThat((int) jobManager.count(), equalTo(i * 2 + 2));
}
final CountDownLatch jobsToRun = new CountDownLatch(20);
jobManager.addCallback(new JobManagerCallbackAdapter() {
@Override
public void onAfterJobRun(@NonNull Job job, int resultCode) {
if (resultCode == JobManagerCallback.RESULT_SUCCEED) {
jobsToRun.countDown();
}
}
});
jobManager.start();
MatcherAssert.assertThat("test sanity", jobsToRun.await(1, TimeUnit.MINUTES), is(true));
MatcherAssert.assertThat((int) jobManager.count(), equalTo(0));
}
Aggregations