首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何针对Zookeeper测试应用程序

如何针对Zookeeper测试应用程序
EN

Stack Overflow用户
提问于 2015-04-18 01:37:41
回答 1查看 667关注 0票数 1

我有一个应用程序,它使用Curator框架来确定领导力。我们希望能够在Zookeeper服务器上测试状态更改,有没有办法做到这一点?

从我们的角度来看,如果我们可以让服务器向连接的客户端发送连接状态(已连接、已重新连接、挂起、丢失),这将是有益的。我知道Curator提供了一个TestingServer类,但它似乎没有这个功能。

任何解决方案或想法都将不胜感激!

EN

回答 1

Stack Overflow用户

发布于 2017-09-06 14:14:02

https://apache.googlesource.com/curator/+/refs/heads/CURATOR-190/curator-recipes/src/test/java/org/apache/curator/framework/client/TestBackgroundStates.java

代码语言:javascript
复制
@Test
public void testConnectionStateListener() throws Exception
{
    server.close();
    Timing timing = new Timing();
    CuratorFramework client = CuratorFrameworkFactory.newClient(server.getConnectString(), timing.session(), timing.connection(), new RetryOneTime(timing.milliseconds()));
    try
    {
        client.start();
        final BlockingQueue<ConnectionState> stateVector = Queues.newLinkedBlockingQueue(1);
        ConnectionStateListener listener = new ConnectionStateListener()
        {
            @Override
            public void stateChanged(CuratorFramework client, ConnectionState newState)
            {
                stateVector.offer(newState);
            }
        };
        Timing waitingTiming = timing.forWaiting();
        client.getConnectionStateListenable().addListener(listener);
        server = new TestingServer(server.getPort());
        Assert.assertEquals(stateVector.poll(waitingTiming.milliseconds(), TimeUnit.MILLISECONDS), ConnectionState.CONNECTED);
        server.stop();
        Assert.assertEquals(stateVector.poll(waitingTiming.milliseconds(), TimeUnit.MILLISECONDS), ConnectionState.SUSPENDED);
        Assert.assertEquals(stateVector.poll(waitingTiming.milliseconds(), TimeUnit.MILLISECONDS), ConnectionState.LOST);
        server.restart();
        Assert.assertEquals(stateVector.poll(waitingTiming.milliseconds(), TimeUnit.MILLISECONDS), ConnectionState.RECONNECTED);
        server.close();
        Assert.assertEquals(stateVector.poll(waitingTiming.milliseconds(), TimeUnit.MILLISECONDS), ConnectionState.SUSPENDED);
        Assert.assertEquals(stateVector.poll(waitingTiming.milliseconds(), TimeUnit.MILLISECONDS), ConnectionState.LOST);
    }
    finally
    {
        CloseableUtils.closeQuietly(client);
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29705968

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档