Search in sources :

Example 16 with LifecycleEvent

use of com.hazelcast.core.LifecycleEvent in project hazelcast by hazelcast.

the class ClientRegressionWithMockNetworkTest method testClientConnectionEvents.

@Test
public void testClientConnectionEvents() throws InterruptedException {
    final LinkedList<LifecycleState> list = new LinkedList<LifecycleState>();
    list.offer(LifecycleState.STARTING);
    list.offer(LifecycleState.STARTED);
    list.offer(LifecycleState.CLIENT_CONNECTED);
    list.offer(LifecycleState.CLIENT_DISCONNECTED);
    list.offer(LifecycleState.CLIENT_CONNECTED);
    list.offer(LifecycleState.CLIENT_DISCONNECTED);
    list.offer(LifecycleState.SHUTTING_DOWN);
    list.offer(LifecycleState.SHUTDOWN);
    hazelcastFactory.newHazelcastInstance();
    final CountDownLatch latch = new CountDownLatch(list.size());
    final CountDownLatch connectedLatch = new CountDownLatch(2);
    final CountDownLatch disconnectedLatch = new CountDownLatch(2);
    LifecycleListener listener = new LifecycleListener() {

        public void stateChanged(LifecycleEvent event) {
            Logger.getLogger(getClass()).info("stateChanged: " + event);
            final LifecycleState state = list.poll();
            LifecycleState eventState = event.getState();
            if (state != null && state.equals(eventState)) {
                latch.countDown();
            }
            if (LifecycleState.CLIENT_CONNECTED.equals(eventState)) {
                connectedLatch.countDown();
            }
            if (LifecycleState.CLIENT_DISCONNECTED.equals(eventState)) {
                disconnectedLatch.countDown();
            }
        }
    };
    final ListenerConfig listenerConfig = new ListenerConfig(listener);
    final ClientConfig clientConfig = new ClientConfig();
    clientConfig.addListenerConfig(listenerConfig);
    clientConfig.getNetworkConfig().setConnectionAttemptLimit(100);
    HazelcastInstance hazelcastClient = hazelcastFactory.newHazelcastClient(clientConfig);
    hazelcastFactory.shutdownAllMembers();
    hazelcastFactory.newHazelcastInstance();
    assertOpenEventually("LifecycleState failed. Expected two CLIENT_CONNECTED events!", connectedLatch);
    hazelcastFactory.shutdownAllMembers();
    //wait for disconnect then call client.shutdown(). Otherwise shutdown could prevent firing DISCONNECTED event
    assertOpenEventually("LifecycleState failed. Expected two CLIENT_DISCONNECTED events!", disconnectedLatch);
    hazelcastClient.shutdown();
    assertOpenEventually("LifecycleState failed", latch);
}
Also used : ListenerConfig(com.hazelcast.config.ListenerConfig) HazelcastInstance(com.hazelcast.core.HazelcastInstance) LifecycleEvent(com.hazelcast.core.LifecycleEvent) LifecycleState(com.hazelcast.core.LifecycleEvent.LifecycleState) LifecycleListener(com.hazelcast.core.LifecycleListener) CountDownLatch(java.util.concurrent.CountDownLatch) ClientConfig(com.hazelcast.client.config.ClientConfig) LinkedList(java.util.LinkedList) QuickTest(com.hazelcast.test.annotation.QuickTest) NightlyTest(com.hazelcast.test.annotation.NightlyTest) Test(org.junit.Test) ParallelTest(com.hazelcast.test.annotation.ParallelTest)

Example 17 with LifecycleEvent

use of com.hazelcast.core.LifecycleEvent in project hazelcast by hazelcast.

the class ClientServiceTest method testClientShutdownDuration_whenServersDown.

@Test
public void testClientShutdownDuration_whenServersDown() {
    HazelcastInstance hazelcastInstance = hazelcastFactory.newHazelcastInstance();
    final CountDownLatch countDownLatch = new CountDownLatch(1);
    ClientConfig config = new ClientConfig();
    config.getNetworkConfig().setConnectionAttemptPeriod(0).setConnectionAttemptLimit(1);
    HazelcastInstance client = hazelcastFactory.newHazelcastClient(config);
    client.getLifecycleService().addLifecycleListener(new LifecycleListener() {

        @Override
        public void stateChanged(LifecycleEvent event) {
            if (event.getState() == LifecycleEvent.LifecycleState.SHUTDOWN)
                countDownLatch.countDown();
        }
    });
    hazelcastInstance.shutdown();
    assertOpenEventually(countDownLatch, ClusterListenerSupport.TERMINATE_TIMEOUT_SECONDS);
}
Also used : HazelcastInstance(com.hazelcast.core.HazelcastInstance) LifecycleEvent(com.hazelcast.core.LifecycleEvent) LifecycleListener(com.hazelcast.core.LifecycleListener) CountDownLatch(java.util.concurrent.CountDownLatch) ClientConfig(com.hazelcast.client.config.ClientConfig) QuickTest(com.hazelcast.test.annotation.QuickTest) NightlyTest(com.hazelcast.test.annotation.NightlyTest) Test(org.junit.Test) ParallelTest(com.hazelcast.test.annotation.ParallelTest)

Example 18 with LifecycleEvent

use of com.hazelcast.core.LifecycleEvent in project hazelcast by hazelcast.

the class ClientHeartbeatTest method testClientEndpointsDelaySeconds_whenHeartbeatResumed.

@Test
public void testClientEndpointsDelaySeconds_whenHeartbeatResumed() throws Exception {
    int delaySeconds = 2;
    Config config = new Config();
    config.setProperty(GroupProperty.CLIENT_ENDPOINT_REMOVE_DELAY_SECONDS.getName(), String.valueOf(delaySeconds));
    HazelcastInstance hazelcastInstance = hazelcastFactory.newHazelcastInstance(config);
    ClientConfig clientConfig = new ClientConfig();
    clientConfig.setProperty(ClientProperty.HEARTBEAT_TIMEOUT.getName(), "4000");
    clientConfig.setProperty(ClientProperty.HEARTBEAT_INTERVAL.getName(), "1000");
    HazelcastInstance client = hazelcastFactory.newHazelcastClient(clientConfig);
    final CountDownLatch disconnectedLatch = new CountDownLatch(1);
    LifecycleService lifecycleService = client.getLifecycleService();
    lifecycleService.addLifecycleListener(new LifecycleListener() {

        @Override
        public void stateChanged(LifecycleEvent event) {
            if (LifecycleEvent.LifecycleState.CLIENT_DISCONNECTED == event.getState()) {
                disconnectedLatch.countDown();
            }
        }
    });
    blockMessagesFromInstance(hazelcastInstance, client);
    //Wait for client to disconnect because of hearBeat problem.
    assertOpenEventually(disconnectedLatch);
    final CountDownLatch connectedLatch = new CountDownLatch(1);
    final AtomicLong stateChangeCount = new AtomicLong();
    lifecycleService.addLifecycleListener(new LifecycleListener() {

        @Override
        public void stateChanged(LifecycleEvent event) {
            stateChangeCount.incrementAndGet();
            Logger.getLogger(this.getClass()).info("state event : " + event);
            if (LifecycleEvent.LifecycleState.CLIENT_CONNECTED == event.getState()) {
                connectedLatch.countDown();
            }
        }
    });
    unblockMessagesFromInstance(hazelcastInstance, client);
    //Wait for client to connect back after heartbeat issue is resolved
    assertOpenEventually(connectedLatch);
    //After client connected, there should not be further change in client state
    //We are specifically testing for scheduled ClientDisconnectionOperation not to take action when run
    assertTrueAllTheTime(new AssertTask() {

        @Override
        public void run() throws Exception {
            assertEquals(1, stateChangeCount.get());
        }
    }, delaySeconds * 2);
}
Also used : AtomicLong(java.util.concurrent.atomic.AtomicLong) HazelcastInstance(com.hazelcast.core.HazelcastInstance) ClientConfig(com.hazelcast.client.config.ClientConfig) Config(com.hazelcast.config.Config) LifecycleEvent(com.hazelcast.core.LifecycleEvent) AssertTask(com.hazelcast.test.AssertTask) LifecycleService(com.hazelcast.core.LifecycleService) LifecycleListener(com.hazelcast.core.LifecycleListener) ClientConfig(com.hazelcast.client.config.ClientConfig) CountDownLatch(java.util.concurrent.CountDownLatch) ExpectedException(org.junit.rules.ExpectedException) ExecutionException(java.util.concurrent.ExecutionException) TargetDisconnectedException(com.hazelcast.spi.exception.TargetDisconnectedException) QuickTest(com.hazelcast.test.annotation.QuickTest) Test(org.junit.Test) ParallelTest(com.hazelcast.test.annotation.ParallelTest)

Example 19 with LifecycleEvent

use of com.hazelcast.core.LifecycleEvent in project hazelcast by hazelcast.

the class AbstractListenersOnReconnectTest method testListenersWhenClientDisconnectedOperationRuns_whenOwnerConnectionRemoved.

@Test
public void testListenersWhenClientDisconnectedOperationRuns_whenOwnerConnectionRemoved() {
    Config config = new Config();
    int endpointDelaySeconds = 2;
    config.setProperty(GroupProperty.CLIENT_ENDPOINT_REMOVE_DELAY_SECONDS.getName(), String.valueOf(endpointDelaySeconds));
    config.setProperty(GroupProperty.CLIENT_HEARTBEAT_TIMEOUT_SECONDS.getName(), "4");
    HazelcastInstance ownerServer = factory.newHazelcastInstance(config);
    ClientConfig smartClientConfig = getSmartClientConfig();
    smartClientConfig.setProperty(ClientProperty.HEARTBEAT_INTERVAL.getName(), "500");
    client = factory.newHazelcastClient(smartClientConfig);
    factory.newHazelcastInstance(config);
    setupListener();
    final CountDownLatch disconnectedLatch = new CountDownLatch(1);
    final CountDownLatch connectedLatch = new CountDownLatch(1);
    client.getLifecycleService().addLifecycleListener(new LifecycleListener() {

        @Override
        public void stateChanged(LifecycleEvent event) {
            if (LifecycleEvent.LifecycleState.CLIENT_DISCONNECTED == event.getState()) {
                disconnectedLatch.countDown();
            }
            if (LifecycleEvent.LifecycleState.CLIENT_CONNECTED == event.getState()) {
                connectedLatch.countDown();
            }
        }
    });
    blockMessagesToInstance(ownerServer, client);
    assertOpenEventually(disconnectedLatch);
    sleepAtLeastMillis(TimeUnit.SECONDS.toMillis(endpointDelaySeconds) * 2);
    unblockMessagesToInstance(ownerServer, client);
    assertOpenEventually(connectedLatch);
    validateRegistrationsAndListenerFunctionality();
}
Also used : HazelcastInstance(com.hazelcast.core.HazelcastInstance) ClientConfig(com.hazelcast.client.config.ClientConfig) Config(com.hazelcast.config.Config) LifecycleEvent(com.hazelcast.core.LifecycleEvent) LifecycleListener(com.hazelcast.core.LifecycleListener) ClientConfig(com.hazelcast.client.config.ClientConfig) CountDownLatch(java.util.concurrent.CountDownLatch) Test(org.junit.Test)

Example 20 with LifecycleEvent

use of com.hazelcast.core.LifecycleEvent in project hazelcast by hazelcast.

the class AbstractListenersOnReconnectTest method testListenersWhenClientDisconnectedOperationRuns_whenOwnerMemberRemoved.

//--------------------------------------------------------------------------------- //
@Test
public void testListenersWhenClientDisconnectedOperationRuns_whenOwnerMemberRemoved() {
    Config config = new Config();
    int endpointDelaySeconds = 2;
    config.setProperty(GroupProperty.CLIENT_ENDPOINT_REMOVE_DELAY_SECONDS.getName(), String.valueOf(endpointDelaySeconds));
    HazelcastInstance ownerServer = factory.newHazelcastInstance(config);
    client = factory.newHazelcastClient(getSmartClientConfig());
    HazelcastInstance server2 = factory.newHazelcastInstance(config);
    setupListener();
    final CountDownLatch disconnectedLatch = new CountDownLatch(1);
    final CountDownLatch connectedLatch = new CountDownLatch(1);
    client.getLifecycleService().addLifecycleListener(new LifecycleListener() {

        @Override
        public void stateChanged(LifecycleEvent event) {
            if (LifecycleEvent.LifecycleState.CLIENT_DISCONNECTED == event.getState()) {
                disconnectedLatch.countDown();
            }
            if (LifecycleEvent.LifecycleState.CLIENT_CONNECTED == event.getState()) {
                connectedLatch.countDown();
            }
        }
    });
    blockMessagesToInstance(server2, client);
    ownerServer.shutdown();
    sleepAtLeastMillis(TimeUnit.SECONDS.toMillis(endpointDelaySeconds) * 2);
    unblockMessagesToInstance(server2, client);
    assertOpenEventually(disconnectedLatch);
    assertOpenEventually(connectedLatch);
    clusterSize = clusterSize - 1;
    validateRegistrationsAndListenerFunctionality();
}
Also used : HazelcastInstance(com.hazelcast.core.HazelcastInstance) ClientConfig(com.hazelcast.client.config.ClientConfig) Config(com.hazelcast.config.Config) LifecycleEvent(com.hazelcast.core.LifecycleEvent) LifecycleListener(com.hazelcast.core.LifecycleListener) CountDownLatch(java.util.concurrent.CountDownLatch) Test(org.junit.Test)

Aggregations

LifecycleEvent (com.hazelcast.core.LifecycleEvent)25 LifecycleListener (com.hazelcast.core.LifecycleListener)25 HazelcastInstance (com.hazelcast.core.HazelcastInstance)22 CountDownLatch (java.util.concurrent.CountDownLatch)22 Test (org.junit.Test)20 ClientConfig (com.hazelcast.client.config.ClientConfig)13 ParallelTest (com.hazelcast.test.annotation.ParallelTest)13 QuickTest (com.hazelcast.test.annotation.QuickTest)13 NightlyTest (com.hazelcast.test.annotation.NightlyTest)9 Config (com.hazelcast.config.Config)8 ListenerConfig (com.hazelcast.config.ListenerConfig)6 HazelcastClientInstanceImpl (com.hazelcast.client.impl.HazelcastClientInstanceImpl)5 AssertTask (com.hazelcast.test.AssertTask)5 JoinConfig (com.hazelcast.config.JoinConfig)3 NetworkConfig (com.hazelcast.config.NetworkConfig)3 DistributedObject (com.hazelcast.core.DistributedObject)3 ExecutionException (java.util.concurrent.ExecutionException)3 LifecycleService (com.hazelcast.core.LifecycleService)2 HazelcastInstanceFactory.newHazelcastInstance (com.hazelcast.instance.HazelcastInstanceFactory.newHazelcastInstance)2 Node (com.hazelcast.instance.Node)2