use of com.hazelcast.core.ClientListener in project hazelcast by hazelcast.
the class ClientServiceTest method testClientListener_fromConfig.
@Test
public void testClientListener_fromConfig() {
Config config = new Config();
final CountDownLatch connectedLatch = new CountDownLatch(1);
final CountDownLatch disconnectedLatch = new CountDownLatch(1);
ListenerConfig listenerConfig = new ListenerConfig(new ClientListener() {
@Override
public void clientConnected(Client client) {
connectedLatch.countDown();
}
@Override
public void clientDisconnected(Client client) {
disconnectedLatch.countDown();
}
});
config.addListenerConfig(listenerConfig);
HazelcastInstance instance = hazelcastFactory.newHazelcastInstance(config);
HazelcastInstance client = hazelcastFactory.newHazelcastClient();
client.shutdown();
assertOpenEventually(connectedLatch);
assertOpenEventually(disconnectedLatch);
instance.shutdown();
}
use of com.hazelcast.core.ClientListener in project hazelcast by hazelcast.
the class ClientServiceTest method testRemoveClientListener_whenListenerAlreadyRemoved.
@Test(timeout = 120000)
public void testRemoveClientListener_whenListenerAlreadyRemoved() {
HazelcastInstance instance = hazelcastFactory.newHazelcastInstance();
ClientService clientService = instance.getClientService();
ClientListener clientListener = mock(ClientListener.class);
String id = clientService.addClientListener(clientListener);
// first time remove
assertTrue(clientService.removeClientListener(id));
// second time remove
assertFalse(clientService.removeClientListener(id));
}
use of com.hazelcast.core.ClientListener in project hazelcast by hazelcast.
the class Node method initializeListeners.
@SuppressWarnings({ "checkstyle:npathcomplexity", "checkstyle:cyclomaticcomplexity" })
private void initializeListeners(Config config) {
for (final ListenerConfig listenerCfg : config.getListenerConfigs()) {
Object listener = listenerCfg.getImplementation();
if (listener == null) {
try {
listener = ClassLoaderUtil.newInstance(configClassLoader, listenerCfg.getClassName());
} catch (Exception e) {
logger.severe(e);
}
}
if (listener instanceof HazelcastInstanceAware) {
((HazelcastInstanceAware) listener).setHazelcastInstance(hazelcastInstance);
}
boolean known = false;
if (listener instanceof DistributedObjectListener) {
final ProxyServiceImpl proxyService = (ProxyServiceImpl) nodeEngine.getProxyService();
proxyService.addProxyListener((DistributedObjectListener) listener);
known = true;
}
if (listener instanceof MembershipListener) {
clusterService.addMembershipListener((MembershipListener) listener);
known = true;
}
if (listener instanceof MigrationListener) {
partitionService.addMigrationListener((MigrationListener) listener);
known = true;
}
if (listener instanceof PartitionLostListener) {
partitionService.addPartitionLostListener((PartitionLostListener) listener);
known = true;
}
if (listener instanceof LifecycleListener) {
hazelcastInstance.lifecycleService.addLifecycleListener((LifecycleListener) listener);
known = true;
}
if (listener instanceof ClientListener) {
String serviceName = ClientEngineImpl.SERVICE_NAME;
nodeEngine.getEventService().registerLocalListener(serviceName, serviceName, listener);
known = true;
}
if (listener instanceof InternalMigrationListener) {
final InternalPartitionServiceImpl partitionService = (InternalPartitionServiceImpl) nodeEngine.getPartitionService();
partitionService.setInternalMigrationListener((InternalMigrationListener) listener);
known = true;
}
if (nodeExtension.registerListener(listener)) {
known = true;
}
if (listener != null && !known) {
final String error = "Unknown listener type: " + listener.getClass();
Throwable t = new IllegalArgumentException(error);
logger.warning(error, t);
}
}
}
use of com.hazelcast.core.ClientListener in project hazelcast by hazelcast.
the class ClientServiceTest method testClientListener.
@Test(timeout = 120000)
public void testClientListener() throws InterruptedException {
final HazelcastInstance instance = hazelcastFactory.newHazelcastInstance();
final ClientService clientService = instance.getClientService();
final CountDownLatch latchAdd = new CountDownLatch(2);
final CountDownLatch latchRemove = new CountDownLatch(2);
final AtomicInteger totalAdd = new AtomicInteger(0);
final ClientListener clientListener = new ClientListener() {
@Override
public void clientConnected(Client client) {
totalAdd.incrementAndGet();
latchAdd.countDown();
}
@Override
public void clientDisconnected(Client client) {
latchRemove.countDown();
}
};
final String id = clientService.addClientListener(clientListener);
final HazelcastInstance client1 = hazelcastFactory.newHazelcastClient();
final HazelcastInstance client2 = hazelcastFactory.newHazelcastClient();
client1.getLifecycleService().shutdown();
client2.getLifecycleService().shutdown();
assertOpenEventually(latchAdd);
assertOpenEventually(latchRemove);
assertTrue(clientService.removeClientListener(id));
assertFalse(clientService.removeClientListener("foo"));
assertEquals(0, clientService.getConnectedClients().size());
hazelcastFactory.newHazelcastClient();
assertTrueEventually(new AssertTask() {
@Override
public void run() throws Exception {
assertEquals(1, clientService.getConnectedClients().size());
}
});
assertEquals(2, totalAdd.get());
}
use of com.hazelcast.core.ClientListener in project hazelcast by hazelcast.
the class ClientServiceTest method testClientListener_withShuttingDownOwnerMember.
@Test
public void testClientListener_withShuttingDownOwnerMember() {
Config config = new Config();
final CountDownLatch latch = new CountDownLatch(1);
final AtomicInteger atomicInteger = new AtomicInteger();
ListenerConfig listenerConfig = new ListenerConfig(new ClientListener() {
@Override
public void clientConnected(Client client) {
atomicInteger.incrementAndGet();
latch.countDown();
}
@Override
public void clientDisconnected(Client client) {
}
});
config.addListenerConfig(listenerConfig);
HazelcastInstance instance = hazelcastFactory.newHazelcastInstance();
//first member is owner connection
hazelcastFactory.newHazelcastClient();
hazelcastFactory.newHazelcastInstance(config);
//make sure connected to second one before proceeding
assertOpenEventually(latch);
//when first node is dead, client selects second one as owner
instance.shutdown();
//Testing that shutting down first member does not cause any client connected/disconnected event
assertTrueAllTheTime(new AssertTask() {
@Override
public void run() throws Exception {
assertEquals(1, atomicInteger.get());
}
}, 4);
}
Aggregations