use of com.hazelcast.collection.impl.queue.model.VersionedObject in project hazelcast by hazelcast.
the class QueueListenerTest method testItemListener_addedToQueueConfig_Issue366.
@Test
public void testItemListener_addedToQueueConfig_Issue366() throws Exception {
String queueName = "Q";
int totalQueuePut = 2000;
CountdownItemListener countdownItemListener = new CountdownItemListener(totalQueuePut, 0);
Config config = getConfig();
ItemListenerConfig itemListenerConfig = new ItemListenerConfig().setImplementation(countdownItemListener).setIncludeValue(true);
config.getQueueConfig(queueName).addItemListenerConfig(itemListenerConfig);
TestHazelcastInstanceFactory factory = createHazelcastInstanceFactory(2);
HazelcastInstance instance = factory.newHazelcastInstance(config);
IQueue<VersionedObject<Integer>> queue = instance.getQueue(queueName);
for (int i = 0; i < totalQueuePut / 2; i++) {
queue.put(new VersionedObject<>(i));
}
HazelcastInstance second = factory.newHazelcastInstance(config);
assertTrueEventually(() -> {
EventService eventService1 = getNodeEngineImpl(instance).getEventService();
EventService eventService2 = getNodeEngineImpl(second).getEventService();
assertEquals(2, eventService1.getRegistrations(QueueService.SERVICE_NAME, queueName).size());
assertEquals(2, eventService2.getRegistrations(QueueService.SERVICE_NAME, queueName).size());
});
for (int i = 0; i < totalQueuePut / 4; i++) {
queue.put(new VersionedObject<>(i));
}
assertOpenEventually(countdownItemListener.added);
}
use of com.hazelcast.collection.impl.queue.model.VersionedObject in project hazelcast by hazelcast.
the class QueueAdvancedTest method testClearBackup.
@Test
public void testClearBackup() {
HazelcastInstance[] instances = createHazelcastInstances();
HazelcastInstance instance1 = instances[0];
HazelcastInstance instance2 = instances[1];
String name = generateKeyOwnedBy(instance1);
IQueue<VersionedObject<String>> queue1 = instance1.getQueue(name);
IQueue<VersionedObject<String>> queue2 = instance2.getQueue(name);
for (int i = 0; i < 4; i++) {
queue1.offer(new VersionedObject<>("item" + i, i));
}
assertSizeEventually(4, queue2);
assertIterableEquals(queue2, new VersionedObject<>("item0", 0), new VersionedObject<>("item1", 1), new VersionedObject<>("item2", 2), new VersionedObject<>("item3", 3));
queue1.clear();
instance1.shutdown();
assertSizeEventually(0, queue2);
}
use of com.hazelcast.collection.impl.queue.model.VersionedObject in project hazelcast by hazelcast.
the class QueueAdvancedTest method testQueueAfterShutdown.
/**
* Test case for issue 289.
* <p>
* 1. Create HazelcastInstance h1 and h2, then get a queue from each (same queue name)
* 2. Put a message on queue from h2
* 3. Take a message off on queue from h1
* 4. Shutdown h1, then check if queue is still empty on h2
*/
@Test
public void testQueueAfterShutdown() throws Exception {
HazelcastInstance[] instances = createHazelcastInstanceFactory(2).newInstances(getConfig());
HazelcastInstance h1 = instances[0];
HazelcastInstance h2 = instances[1];
IQueue<VersionedObject<String>> q1 = h1.getQueue("default");
IQueue<VersionedObject<String>> q2 = h2.getQueue("default");
q2.offer(new VersionedObject<>("item"));
assertEquals(1, q1.size());
assertEquals(1, q2.size());
assertEquals(new VersionedObject<>("item"), q1.take());
assertEquals(0, q1.size());
assertEquals(0, q2.size());
h1.getLifecycleService().shutdown();
assertEquals(0, q2.size());
}
use of com.hazelcast.collection.impl.queue.model.VersionedObject in project hazelcast by hazelcast.
the class QueueAdvancedTest method testAddAllBackup.
@Test
public void testAddAllBackup() {
HazelcastInstance[] instances = createHazelcastInstances();
HazelcastInstance instance1 = instances[0];
HazelcastInstance instance2 = instances[1];
String name = generateKeyOwnedBy(instance1);
IQueue<VersionedObject<String>> queue1 = instance1.getQueue(name);
IQueue<VersionedObject<String>> queue2 = instance2.getQueue(name);
List<VersionedObject<String>> list = new ArrayList<>();
for (int i = 0; i < 4; i++) {
list.add(new VersionedObject<>("item" + i, i));
}
assertTrue("Expected queue1.addAll() to succeed", queue1.addAll(list));
instance1.shutdown();
assertSizeEventually(4, queue2);
assertIterableEquals(queue2, new VersionedObject<>("item0", 0), new VersionedObject<>("item1", 1), new VersionedObject<>("item2", 2), new VersionedObject<>("item3", 3));
}
use of com.hazelcast.collection.impl.queue.model.VersionedObject in project hazelcast by hazelcast.
the class QueueAdvancedTest method testDeadTaker.
/**
* Test for issue 730 (Google).
*/
@Test
public void testDeadTaker() throws Exception {
Config config = getConfig();
CountDownLatch shutdownLatch = new CountDownLatch(1);
config.addListenerConfig(new ListenerConfig().setImplementation(new MembershipListener() {
@Override
public void memberAdded(MembershipEvent membershipEvent) {
}
@Override
public void memberRemoved(MembershipEvent membershipEvent) {
shutdownLatch.countDown();
}
}));
HazelcastInstance[] instances = createHazelcastInstanceFactory(2).newInstances(config);
HazelcastInstance h1 = instances[0];
HazelcastInstance h2 = instances[1];
warmUpPartitions(h1, h2);
IQueue<VersionedObject<String>> q1 = h1.getQueue("default");
IQueue<VersionedObject<String>> q2 = h2.getQueue("default");
CountDownLatch startLatch = new CountDownLatch(1);
new Thread(() -> {
try {
assertTrue("Expected startLatch.await() to succeed within 10 seconds", startLatch.await(10, SECONDS));
Thread.sleep(5000);
h2.getLifecycleService().terminate();
} catch (InterruptedException e) {
LOG.info(e);
}
}).start();
new Thread(() -> {
try {
startLatch.countDown();
VersionedObject<String> value = q2.take();
fail("Should not be able to take value from queue, but got: " + value);
} catch (HazelcastInstanceNotActiveException e) {
ignore(e);
} catch (InterruptedException e) {
LOG.info(e);
}
}).start();
assertTrue("Expected shutdownLatch.await() to succeed within 1 minute", shutdownLatch.await(1, MINUTES));
q1.offer(new VersionedObject<>("item"));
assertEquals(1, q1.size());
assertEquals(new VersionedObject<>("item"), q1.poll());
}
Aggregations