Search in sources :

Example 26 with VersionedObject

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);
}
Also used : VersionedObject(com.hazelcast.collection.impl.queue.model.VersionedObject) HazelcastInstance(com.hazelcast.core.HazelcastInstance) QueueConfig(com.hazelcast.config.QueueConfig) Config(com.hazelcast.config.Config) ItemListenerConfig(com.hazelcast.config.ItemListenerConfig) ItemListenerConfig(com.hazelcast.config.ItemListenerConfig) EventService(com.hazelcast.spi.impl.eventservice.EventService) TestHazelcastInstanceFactory(com.hazelcast.test.TestHazelcastInstanceFactory) ParallelJVMTest(com.hazelcast.test.annotation.ParallelJVMTest) QuickTest(com.hazelcast.test.annotation.QuickTest) Test(org.junit.Test)

Example 27 with VersionedObject

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);
}
Also used : VersionedObject(com.hazelcast.collection.impl.queue.model.VersionedObject) HazelcastInstance(com.hazelcast.core.HazelcastInstance) ParallelJVMTest(com.hazelcast.test.annotation.ParallelJVMTest) QuickTest(com.hazelcast.test.annotation.QuickTest) Test(org.junit.Test)

Example 28 with VersionedObject

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());
}
Also used : VersionedObject(com.hazelcast.collection.impl.queue.model.VersionedObject) HazelcastInstance(com.hazelcast.core.HazelcastInstance) ParallelJVMTest(com.hazelcast.test.annotation.ParallelJVMTest) QuickTest(com.hazelcast.test.annotation.QuickTest) Test(org.junit.Test)

Example 29 with VersionedObject

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));
}
Also used : VersionedObject(com.hazelcast.collection.impl.queue.model.VersionedObject) HazelcastInstance(com.hazelcast.core.HazelcastInstance) ArrayList(java.util.ArrayList) ParallelJVMTest(com.hazelcast.test.annotation.ParallelJVMTest) QuickTest(com.hazelcast.test.annotation.QuickTest) Test(org.junit.Test)

Example 30 with VersionedObject

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());
}
Also used : VersionedObject(com.hazelcast.collection.impl.queue.model.VersionedObject) ListenerConfig(com.hazelcast.config.ListenerConfig) Config(com.hazelcast.config.Config) MembershipEvent(com.hazelcast.cluster.MembershipEvent) CountDownLatch(java.util.concurrent.CountDownLatch) TestThread(com.hazelcast.test.TestThread) ListenerConfig(com.hazelcast.config.ListenerConfig) HazelcastInstanceNotActiveException(com.hazelcast.core.HazelcastInstanceNotActiveException) HazelcastInstance(com.hazelcast.core.HazelcastInstance) MembershipListener(com.hazelcast.cluster.MembershipListener) ParallelJVMTest(com.hazelcast.test.annotation.ParallelJVMTest) QuickTest(com.hazelcast.test.annotation.QuickTest) Test(org.junit.Test)

Aggregations

VersionedObject (com.hazelcast.collection.impl.queue.model.VersionedObject)78 Test (org.junit.Test)77 ParallelJVMTest (com.hazelcast.test.annotation.ParallelJVMTest)76 QuickTest (com.hazelcast.test.annotation.QuickTest)76 HazelcastInstance (com.hazelcast.core.HazelcastInstance)68 TransactionContext (com.hazelcast.transaction.TransactionContext)25 Config (com.hazelcast.config.Config)23 TestHazelcastInstanceFactory (com.hazelcast.test.TestHazelcastInstanceFactory)19 CountDownLatch (java.util.concurrent.CountDownLatch)16 QueueStoreConfig (com.hazelcast.config.QueueStoreConfig)10 LocalQueueStats (com.hazelcast.collection.LocalQueueStats)8 ArrayList (java.util.ArrayList)7 AtomicInteger (java.util.concurrent.atomic.AtomicInteger)6 TestThread (com.hazelcast.test.TestThread)5 TransactionException (com.hazelcast.transaction.TransactionException)4 ItemListenerConfig (com.hazelcast.config.ItemListenerConfig)3 ListenerConfig (com.hazelcast.config.ListenerConfig)3 QueueConfig (com.hazelcast.config.QueueConfig)3 HazelcastInstanceNotActiveException (com.hazelcast.core.HazelcastInstanceNotActiveException)3 ExecutorService (java.util.concurrent.ExecutorService)3