use of com.birbit.android.jobqueue.JobManager 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));
}
use of com.birbit.android.jobqueue.JobManager in project android-priority-jobqueue by yigit.
the class DelayTest method testDelay.
public void testDelay(boolean persist) throws Throwable {
JobManager jobManager = createJobManager();
jobManager.stop();
DummyJob delayedJob = new DummyJob(new Params(10).delayInMs(1000).setPersistent(persist));
DummyJob nonDelayedJob = new DummyJob(new Params(0).setPersistent(persist));
jobManager.addJob(delayedJob);
jobManager.addJob(nonDelayedJob);
JobHolder receivedJob = nextJob(jobManager);
MatcherAssert.assertThat("non-delayed job should be served", receivedJob, notNullValue());
MatcherAssert.assertThat("non-delayed job should id should match", receivedJob.getId(), equalTo(nonDelayedJob.getId()));
removeJob(jobManager, receivedJob);
MatcherAssert.assertThat("delayed job should not be served", nextJob(jobManager), nullValue());
MatcherAssert.assertThat("job count should still be 1", jobManager.count(), equalTo(1));
mockTimer.incrementMs(500);
MatcherAssert.assertThat("delayed job should not be served", nextJob(jobManager), nullValue());
MatcherAssert.assertThat("job count should still be 1", jobManager.count(), equalTo(1));
mockTimer.incrementMs(2000);
MatcherAssert.assertThat("job count should still be 1", jobManager.count(), equalTo(1));
receivedJob = nextJob(jobManager);
MatcherAssert.assertThat("now should be able to receive the delayed job.", receivedJob, notNullValue());
if (receivedJob != null) {
MatcherAssert.assertThat("received job should be the delayed job", receivedJob.getId(), equalTo(delayedJob.getId()));
}
}
use of com.birbit.android.jobqueue.JobManager in project android-priority-jobqueue by yigit.
the class GroupingTest method testGrouping.
@Test
public void testGrouping() throws Throwable {
JobManager jobManager = createJobManager();
jobManager.stop();
String jobId1 = addJob(jobManager, new DummyJob(new Params(0).groupBy("group1")));
String jobId2 = addJob(jobManager, new DummyJob(new Params(0).groupBy("group1")));
String jobId3 = addJob(jobManager, new DummyJob(new Params(0).persist().groupBy("group2")));
String jobId4 = addJob(jobManager, new DummyJob(new Params(0).persist().groupBy("group1")));
JobHolder nextJob = nextJob(jobManager);
MatcherAssert.assertThat("next job should be the first job from group1", nextJob.getId(), equalTo(jobId1));
JobHolder group2Job = nextJob(jobManager, Collections.singletonList("group1"));
MatcherAssert.assertThat("since group 1 is running now, next job should be from group 2", group2Job.getId(), equalTo(jobId3));
removeJob(jobManager, nextJob);
JobHolder group1NextJob = nextJob(jobManager, Arrays.asList("group2"));
MatcherAssert.assertThat("after removing job from group 1, another job from group1 should be returned", group1NextJob.getId(), equalTo(jobId2));
MatcherAssert.assertThat("when jobs from both groups are running, no job should be returned from next job", nextJob(jobManager, Arrays.asList("group1", "group2")), is(nullValue()));
removeJob(jobManager, group2Job);
MatcherAssert.assertThat("even after group2 job is complete, no jobs should be returned" + "since we only have group1 jobs left", nextJob(jobManager, Arrays.asList("group1")), is(nullValue()));
}
use of com.birbit.android.jobqueue.JobManager in project android-priority-jobqueue by yigit.
the class NetworkNextJobTest method testNetworkNextJob.
@Test
public void testNetworkNextJob() throws Throwable {
DummyNetworkUtil dummyNetworkUtil = new DummyNetworkUtil();
JobManager jobManager = createJobManager(new Configuration.Builder(RuntimeEnvironment.application).networkUtil(dummyNetworkUtil).timer(mockTimer));
jobManager.stop();
DummyJob dummyJob = new DummyJob(new Params(0).requireNetwork());
jobManager.addJob(dummyJob);
dummyNetworkUtil.setNetworkStatus(NetworkUtil.DISCONNECTED);
MatcherAssert.assertThat("when there isn't any network, next job should return null", nextJob(jobManager), nullValue());
MatcherAssert.assertThat("even if there is network, job manager should return correct count", jobManager.count(), equalTo(1));
dummyNetworkUtil.setNetworkStatus(NetworkUtil.METERED);
JobHolder retrieved = nextJob(jobManager);
MatcherAssert.assertThat("when network is recovered, next job should be retrieved", retrieved, notNullValue());
}
use of com.birbit.android.jobqueue.JobManager in project android-priority-jobqueue by yigit.
the class NonSerializableJobTest method test.
@Test
public void test() throws InterruptedException {
final Throwable[] throwable = new Throwable[1];
JobManager jobManager = createJobManager();
final CountDownLatch latch = new CountDownLatch(1);
jobManager.getJobManagerExecutionThread().setUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() {
@Override
public void uncaughtException(Thread thread, Throwable ex) {
throwable[0] = ex;
latch.countDown();
}
});
jobManager.addJobInBackground(new DummyJob(new Params(0).persist()) {
ICannotBeSerialized iCannotBeSerialized = new ICannotBeSerialized();
});
MatcherAssert.assertThat(latch.await(30, TimeUnit.SECONDS), CoreMatchers.is(true));
MatcherAssert.assertThat(throwable[0] instanceof RuntimeException, CoreMatchers.is(true));
MatcherAssert.assertThat(throwable[0].getCause() instanceof IOException, CoreMatchers.is(true));
}
Aggregations