use of com.birbit.android.jobqueue.messaging.message.CommandMessage in project android-priority-jobqueue by yigit.
the class ConsumerTest method pokePredicateTest.
@Test
public void pokePredicateTest() {
CommandMessage cm = new CommandMessage();
cm.set(CommandMessage.POKE);
assertThat(Consumer.pokeMessagePredicate.onMessage(cm), CoreMatchers.is(true));
cm.set(CommandMessage.QUIT);
assertThat(Consumer.pokeMessagePredicate.onMessage(cm), CoreMatchers.is(false));
assertThat(Consumer.pokeMessagePredicate.onMessage(new RunJobMessage()), CoreMatchers.is(false));
}
use of com.birbit.android.jobqueue.messaging.message.CommandMessage in project android-priority-jobqueue by yigit.
the class MessageQueueTestBase method addMessageOnIdle.
private void addMessageOnIdle(final boolean delayed) throws InterruptedException {
final MockTimer timer = new MockTimer();
final MessageQueue mq = createMessageQueue(timer, new MessageFactory());
final CountDownLatch idleLatch = new CountDownLatch(1);
final CountDownLatch runLatch = new CountDownLatch(1);
final MessageQueueConsumer mqConsumer = new MessageQueueConsumer() {
@Override
public void handleMessage(Message message) {
if (message.type == Type.COMMAND && ((CommandMessage) message).getWhat() == CommandMessage.POKE) {
runLatch.countDown();
}
}
@Override
public void onIdle() {
if (idleLatch.getCount() == 1) {
CommandMessage cm = new CommandMessage();
cm.set(CommandMessage.POKE);
if (delayed) {
mq.postAt(cm, timer.nanoTime() + 100000);
} else {
mq.post(cm);
}
idleLatch.countDown();
}
}
};
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
mq.consume(mqConsumer);
}
});
thread.start();
assertThat(idleLatch.await(10, TimeUnit.SECONDS), CoreMatchers.is(true));
timer.incrementMs(1000000);
assertThat(runLatch.await(10, TimeUnit.SECONDS), CoreMatchers.is(true));
mq.stop();
thread.join(5000);
if (thread.isAlive()) {
threadDump.failed(new AssertionFailedError("thread did not die"), null);
}
assertThat(thread.isAlive(), CoreMatchers.is(false));
}
use of com.birbit.android.jobqueue.messaging.message.CommandMessage in project android-priority-jobqueue by yigit.
the class MessageQueueTestBase method recycleOnClear.
@Test
public void recycleOnClear() {
MessageFactory factory = spy(new MessageFactory());
MockTimer mockTimer = new MockTimer();
T mq = createMessageQueue(mockTimer, factory);
CommandMessage cm = factory.obtain(CommandMessage.class);
cm.set(CommandMessage.POKE);
mq.post(cm);
mq.clear();
verify(factory).release(cm);
}
use of com.birbit.android.jobqueue.messaging.message.CommandMessage in project android-priority-jobqueue by yigit.
the class MessageQueueTestBase method postAtNoIdleCall.
@Test
public void postAtNoIdleCall() throws InterruptedException {
final MockTimer timer = new MockTimer();
final MessageQueue mq = createMessageQueue(timer, new MessageFactory());
final CountDownLatch idleLatch = new CountDownLatch(1);
final CountDownLatch firstIdleLatch = new CountDownLatch(1);
final CountDownLatch runLatch = new CountDownLatch(1);
final MessageQueueConsumer mqConsumer = new MessageQueueConsumer() {
@Override
public void handleMessage(Message message) {
if (message.type == Type.COMMAND && ((CommandMessage) message).getWhat() == CommandMessage.POKE) {
runLatch.countDown();
}
}
@Override
public void onIdle() {
if (firstIdleLatch.getCount() == 1) {
firstIdleLatch.countDown();
} else {
idleLatch.countDown();
}
}
};
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
mq.consume(mqConsumer);
}
});
thread.start();
firstIdleLatch.await();
CommandMessage cm = new CommandMessage();
cm.set(CommandMessage.POKE);
mq.postAt(cm, 100);
assertThat(idleLatch.await(3, TimeUnit.SECONDS), CoreMatchers.is(false));
timer.incrementNs(100);
assertThat(idleLatch.await(3, TimeUnit.SECONDS), CoreMatchers.is(true));
mq.stop();
thread.join();
}
use of com.birbit.android.jobqueue.messaging.message.CommandMessage in project android-priority-jobqueue by yigit.
the class CallbackManager method waitUntilAllMessagesAreConsumed.
/**
* convenience method to wait for existing callbacks to be consumed
*/
@VisibleForTesting
public boolean waitUntilAllMessagesAreConsumed(int seconds) {
final CountDownLatch latch = new CountDownLatch(1);
CommandMessage poke = factory.obtain(CommandMessage.class);
poke.set(CommandMessage.RUNNABLE);
poke.setRunnable(new Runnable() {
@Override
public void run() {
latch.countDown();
}
});
messageQueue.post(poke);
try {
return latch.await(seconds, TimeUnit.SECONDS);
} catch (InterruptedException e) {
return false;
}
}
Aggregations