use of com.hazelcast.instance.HazelcastInstanceProxy 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);
}
Aggregations