Search in sources :

Example 6 with Job

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);
}
Also used : Params(com.birbit.android.jobqueue.Params) JobManager(com.birbit.android.jobqueue.JobManager) Job(com.birbit.android.jobqueue.Job) JobManagerCallback(com.birbit.android.jobqueue.callback.JobManagerCallback) Test(org.junit.Test)

Example 7 with Job

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);
}
Also used : Params(com.birbit.android.jobqueue.Params) JobManager(com.birbit.android.jobqueue.JobManager) Job(com.birbit.android.jobqueue.Job) JobManagerCallback(com.birbit.android.jobqueue.callback.JobManagerCallback) Test(org.junit.Test)

Example 8 with Job

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));
    }
}
Also used : CancelResult(com.birbit.android.jobqueue.CancelResult) DummyJob(com.birbit.android.jobqueue.test.jobs.DummyJob) Params(com.birbit.android.jobqueue.Params) JobManager(com.birbit.android.jobqueue.JobManager) DummyJob(com.birbit.android.jobqueue.test.jobs.DummyJob) Job(com.birbit.android.jobqueue.Job) Test(org.junit.Test)

Example 9 with Job

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));
}
Also used : CancelResult(com.birbit.android.jobqueue.CancelResult) Configuration(com.birbit.android.jobqueue.config.Configuration) Params(com.birbit.android.jobqueue.Params) JobManager(com.birbit.android.jobqueue.JobManager) CountDownLatch(java.util.concurrent.CountDownLatch) DummyJob(com.birbit.android.jobqueue.test.jobs.DummyJob) DummyJob(com.birbit.android.jobqueue.test.jobs.DummyJob) Job(com.birbit.android.jobqueue.Job) Test(org.junit.Test)

Example 10 with Job

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));
}
Also used : JobManagerCallbackAdapter(com.birbit.android.jobqueue.callback.JobManagerCallbackAdapter) DummyJob(com.birbit.android.jobqueue.test.jobs.DummyJob) Params(com.birbit.android.jobqueue.Params) JobManager(com.birbit.android.jobqueue.JobManager) CountDownLatch(java.util.concurrent.CountDownLatch) DummyJob(com.birbit.android.jobqueue.test.jobs.DummyJob) Job(com.birbit.android.jobqueue.Job) Test(org.junit.Test) TargetApi(android.annotation.TargetApi)

Aggregations

Job (com.birbit.android.jobqueue.Job)36 Params (com.birbit.android.jobqueue.Params)31 JobManager (com.birbit.android.jobqueue.JobManager)26 DummyJob (com.birbit.android.jobqueue.test.jobs.DummyJob)26 Test (org.junit.Test)21 CountDownLatch (java.util.concurrent.CountDownLatch)19 TargetApi (android.annotation.TargetApi)10 JobManagerCallbackAdapter (com.birbit.android.jobqueue.callback.JobManagerCallbackAdapter)10 RetryConstraint (com.birbit.android.jobqueue.RetryConstraint)9 Configuration (com.birbit.android.jobqueue.config.Configuration)8 AtomicInteger (java.util.concurrent.atomic.AtomicInteger)7 JobHolder (com.birbit.android.jobqueue.JobHolder)4 JobManagerCallback (com.birbit.android.jobqueue.callback.JobManagerCallback)4 ArrayList (java.util.ArrayList)4 CancelResult (com.birbit.android.jobqueue.CancelResult)3 SuppressLint (android.annotation.SuppressLint)2 NonNull (android.support.annotation.NonNull)2 SqliteJobQueue (com.birbit.android.jobqueue.persistentQueue.sqlite.SqliteJobQueue)2 Nullable (android.support.annotation.Nullable)1 Pair (android.util.Pair)1