CURATOR-460 Move test from TestLeaderLatch to TestConnectionStateManager
Project: http://git-wip-us.apache.org/repos/asf/curator/repo Commit: http://git-wip-us.apache.org/repos/asf/curator/commit/0a5b29d5 Tree: http://git-wip-us.apache.org/repos/asf/curator/tree/0a5b29d5 Diff: http://git-wip-us.apache.org/repos/asf/curator/diff/0a5b29d5 Branch: refs/heads/master Commit: 0a5b29d588800d7eeabf66f23ea2e3ad0fa0416c Parents: 6e85467 Author: javando <antonio.rafael...@gmail.com> Authored: Wed Apr 4 23:10:12 2018 -0300 Committer: javando <antonio.rafael...@gmail.com> Committed: Wed Apr 4 23:10:12 2018 -0300 ---------------------------------------------------------------------- .../state/TestConnectionStateManager.java | 54 ++++++++++++++++++++ .../recipes/leader/TestLeaderLatch.java | 30 ----------- 2 files changed, 54 insertions(+), 30 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/curator/blob/0a5b29d5/curator-framework/src/test/java/org/apache/curator/framework/state/TestConnectionStateManager.java ---------------------------------------------------------------------- diff --git a/curator-framework/src/test/java/org/apache/curator/framework/state/TestConnectionStateManager.java b/curator-framework/src/test/java/org/apache/curator/framework/state/TestConnectionStateManager.java new file mode 100644 index 0000000..e313c56 --- /dev/null +++ b/curator-framework/src/test/java/org/apache/curator/framework/state/TestConnectionStateManager.java @@ -0,0 +1,54 @@ +package org.apache.curator.framework.state; + +import com.google.common.collect.Queues; +import org.apache.curator.connection.StandardConnectionHandlingPolicy; +import org.apache.curator.framework.CuratorFramework; +import org.apache.curator.framework.CuratorFrameworkFactory; +import org.apache.curator.retry.RetryOneTime; +import org.apache.curator.test.BaseClassForTests; +import org.apache.curator.test.compatibility.Timing2; +import org.apache.curator.utils.CloseableUtils; +import org.testng.Assert; +import org.testng.annotations.Test; + +import java.util.concurrent.BlockingQueue; +import java.util.concurrent.TimeUnit; + +public class TestConnectionStateManager extends BaseClassForTests { + + @Test + public void testSessionConnectionStateErrorPolicyWithExpirationPercent30() throws Exception { + Timing2 timing = new Timing2(); + CuratorFramework client = CuratorFrameworkFactory.builder() + .connectString(server.getConnectString()) + .connectionTimeoutMs(1000) + .sessionTimeoutMs(timing.session()) + .retryPolicy(new RetryOneTime(1)) + .connectionStateErrorPolicy(new SessionConnectionStateErrorPolicy()) + .connectionHandlingPolicy(new StandardConnectionHandlingPolicy(30)) + .build(); + + try { + final BlockingQueue<String> states = Queues.newLinkedBlockingQueue(); + ConnectionStateListener stateListener = new ConnectionStateListener() { + @Override + public void stateChanged(CuratorFramework client, ConnectionState newState) { + states.add(newState.name()); + } + }; + + timing.sleepABit(); + + client.getConnectionStateListenable().addListener(stateListener); + client.start(); + Assert.assertEquals(states.poll(timing.forWaiting().milliseconds(), TimeUnit.MILLISECONDS), ConnectionState.CONNECTED.name()); + server.close(); + + Assert.assertEquals(states.poll(timing.forWaiting().milliseconds(), TimeUnit.MILLISECONDS), ConnectionState.SUSPENDED.name()); + Assert.assertEquals(states.poll(timing.session() / 3, TimeUnit.MILLISECONDS), ConnectionState.LOST.name()); + } + finally { + CloseableUtils.closeQuietly(client); + } + } +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/curator/blob/0a5b29d5/curator-recipes/src/test/java/org/apache/curator/framework/recipes/leader/TestLeaderLatch.java ---------------------------------------------------------------------- diff --git a/curator-recipes/src/test/java/org/apache/curator/framework/recipes/leader/TestLeaderLatch.java b/curator-recipes/src/test/java/org/apache/curator/framework/recipes/leader/TestLeaderLatch.java index af1475d..011e4a0 100644 --- a/curator-recipes/src/test/java/org/apache/curator/framework/recipes/leader/TestLeaderLatch.java +++ b/curator-recipes/src/test/java/org/apache/curator/framework/recipes/leader/TestLeaderLatch.java @@ -23,7 +23,6 @@ import com.google.common.base.Throwables; import com.google.common.collect.Lists; import com.google.common.collect.Queues; import com.google.common.util.concurrent.ThreadFactoryBuilder; -import org.apache.curator.connection.StandardConnectionHandlingPolicy; import org.apache.curator.framework.CuratorFramework; import org.apache.curator.framework.CuratorFrameworkFactory; import org.apache.curator.framework.imps.TestCleanState; @@ -223,35 +222,6 @@ public class TestLeaderLatch extends BaseClassForTests next.add(states.poll(timing.forSessionSleep().milliseconds(), TimeUnit.MILLISECONDS)); next.add(states.poll(timing.forSessionSleep().milliseconds(), TimeUnit.MILLISECONDS)); Assert.assertTrue(next.equals(Arrays.asList(ConnectionState.LOST.name(), "false")) || next.equals(Arrays.asList("false", ConnectionState.LOST.name())), next.toString()); - - latch.close(); - client.close(); - - timing.sleepABit(); - states.clear(); - server = new TestingServer(); - client = CuratorFrameworkFactory.builder() - .connectString(server.getConnectString()) - .connectionTimeoutMs(1000) - .sessionTimeoutMs(timing.session()) - .retryPolicy(new RetryOneTime(1)) - .connectionStateErrorPolicy(new SessionConnectionStateErrorPolicy()) - .connectionHandlingPolicy(new StandardConnectionHandlingPolicy(30)) - .build(); - client.getConnectionStateListenable().addListener(stateListener); - client.start(); - latch = new LeaderLatch(client, "/test"); - latch.addListener(listener); - latch.start(); - Assert.assertEquals(states.poll(timing.forWaiting().milliseconds(), TimeUnit.MILLISECONDS), ConnectionState.CONNECTED.name()); - Assert.assertEquals(states.poll(timing.forWaiting().milliseconds(), TimeUnit.MILLISECONDS), "true"); - server.close(); - Assert.assertEquals(states.poll(timing.forWaiting().milliseconds(), TimeUnit.MILLISECONDS), ConnectionState.SUSPENDED.name()); - next = Lists.newArrayList(); - - next.add(states.poll(timing.session() / 3, TimeUnit.MILLISECONDS)); - next.add(states.poll(timing.forSleepingABit().milliseconds(), TimeUnit.MILLISECONDS)); - Assert.assertTrue(next.equals(Arrays.asList(ConnectionState.LOST.name(), "false")) || next.equals(Arrays.asList("false", ConnectionState.LOST.name())), next.toString()); } finally {