Search in sources :

Example 1 with TopicEvent

use of com.hazelcast.topic.impl.TopicEvent in project hazelcast by hazelcast.

the class EventServiceTest method testEventService.

@Test(timeout = 90000)
public void testEventService() throws Exception {
    TestHazelcastInstanceFactory factory = createHazelcastInstanceFactory(3);
    HazelcastInstanceProxy h1 = (HazelcastInstanceProxy) factory.newHazelcastInstance();
    HazelcastInstanceProxy h2 = (HazelcastInstanceProxy) factory.newHazelcastInstance();
    HazelcastInstanceProxy h3 = (HazelcastInstanceProxy) factory.newHazelcastInstance();
    CountDownLatch l1 = new CountDownLatch(1000);
    CountDownLatch l2 = new CountDownLatch(1000);
    CountDownLatch l3 = new CountDownLatch(1000);
    ITopic t1 = h1.getTopic("foo");
    ITopic t2 = h2.getTopic("foo");
    ITopic t3 = h3.getTopic("foo");
    t1.addMessageListener(createMessageListener(l1));
    t2.addMessageListener(createMessageListener(l2));
    t3.addMessageListener(createMessageListener(l3));
    MemberImpl m1 = (MemberImpl) h1.getCluster().getLocalMember();
    MemberImpl m2 = (MemberImpl) h2.getCluster().getLocalMember();
    MemberImpl m3 = (MemberImpl) h3.getCluster().getLocalMember();
    Address a1 = m1.getAddress();
    Address a2 = m2.getAddress();
    Address a3 = m3.getAddress();
    Field original = HazelcastInstanceProxy.class.getDeclaredField("original");
    original.setAccessible(true);
    HazelcastInstanceImpl impl1 = (HazelcastInstanceImpl) original.get(h1);
    HazelcastInstanceImpl impl2 = (HazelcastInstanceImpl) original.get(h2);
    HazelcastInstanceImpl impl3 = (HazelcastInstanceImpl) original.get(h3);
    EventService es1 = impl1.node.nodeEngine.getEventService();
    EventService es2 = impl2.node.nodeEngine.getEventService();
    EventService es3 = impl3.node.nodeEngine.getEventService();
    SerializationService ss1 = impl1.node.nodeEngine.getSerializationService();
    SerializationService ss2 = impl2.node.nodeEngine.getSerializationService();
    SerializationService ss3 = impl3.node.nodeEngine.getSerializationService();
    int counter = 0;
    for (int i = 0; i < 3000; i++) {
        if (counter == 0) {
            TopicEvent event = builTopicEvent("Foo" + i, m1, ss1);
            Collection<EventRegistration> registrations = es1.getRegistrations(TopicService.SERVICE_NAME, "foo");
            EventRegistration registration = findEventRegistration(a3, registrations);
            es1.publishEvent(TopicService.SERVICE_NAME, registration, event, 0);
        } else if (counter == 1) {
            TopicEvent event = builTopicEvent("Foo" + i, m2, ss2);
            Collection<EventRegistration> registrations = es2.getRegistrations(TopicService.SERVICE_NAME, "foo");
            EventRegistration registration = findEventRegistration(a1, registrations);
            es2.publishEvent(TopicService.SERVICE_NAME, registration, event, 0);
        } else if (counter == 2) {
            TopicEvent event = builTopicEvent("Foo" + i, m3, ss3);
            Collection<EventRegistration> registrations = es3.getRegistrations(TopicService.SERVICE_NAME, "foo");
            EventRegistration registration = findEventRegistration(a2, registrations);
            es3.publishEvent(TopicService.SERVICE_NAME, registration, event, 0);
        }
        counter++;
        if (counter == 3)
            counter = 0;
    }
    l1.await(30, TimeUnit.SECONDS);
    l2.await(30, TimeUnit.SECONDS);
    l3.await(30, TimeUnit.SECONDS);
}
Also used : HazelcastInstanceImpl(com.hazelcast.instance.HazelcastInstanceImpl) TopicEvent(com.hazelcast.topic.impl.TopicEvent) ITopic(com.hazelcast.core.ITopic) EventRegistration(com.hazelcast.spi.EventRegistration) Address(com.hazelcast.nio.Address) MemberImpl(com.hazelcast.instance.MemberImpl) SerializationService(com.hazelcast.spi.serialization.SerializationService) EventService(com.hazelcast.spi.EventService) CountDownLatch(java.util.concurrent.CountDownLatch) HazelcastInstanceProxy(com.hazelcast.instance.HazelcastInstanceProxy) Field(java.lang.reflect.Field) Collection(java.util.Collection) TestHazelcastInstanceFactory(com.hazelcast.test.TestHazelcastInstanceFactory) QuickTest(com.hazelcast.test.annotation.QuickTest) Test(org.junit.Test) ParallelTest(com.hazelcast.test.annotation.ParallelTest)

Aggregations

ITopic (com.hazelcast.core.ITopic)1 HazelcastInstanceImpl (com.hazelcast.instance.HazelcastInstanceImpl)1 HazelcastInstanceProxy (com.hazelcast.instance.HazelcastInstanceProxy)1 MemberImpl (com.hazelcast.instance.MemberImpl)1 Address (com.hazelcast.nio.Address)1 EventRegistration (com.hazelcast.spi.EventRegistration)1 EventService (com.hazelcast.spi.EventService)1 SerializationService (com.hazelcast.spi.serialization.SerializationService)1 TestHazelcastInstanceFactory (com.hazelcast.test.TestHazelcastInstanceFactory)1 ParallelTest (com.hazelcast.test.annotation.ParallelTest)1 QuickTest (com.hazelcast.test.annotation.QuickTest)1 TopicEvent (com.hazelcast.topic.impl.TopicEvent)1 Field (java.lang.reflect.Field)1 Collection (java.util.Collection)1 CountDownLatch (java.util.concurrent.CountDownLatch)1 Test (org.junit.Test)1