如何使用策展人从testServer获取事件?

时间:2019-05-24 01:31:18

标签: spring-boot apache-zookeeper apache-curator

我已经编写了有关服务的测试代码。 我的代码如下所示。

        Object obj = new Object();
        service.add(obj); // zookeeper node created in service.add

        Thread.sleep(7000); // wait until it is created

        Boolean created = OtherService.pick(a2, a2); // use node date in OtherService

        assertThat(created).isTrue();

在这种情况下,我不想使用Thread.sleep。 有没有办法从TestingServer获取事件或回调以测试是否创建了节点?不使用thread.sleep ??

1 个答案:

答案 0 :(得分:0)

我使用闩锁与Zookeeper的节点创建进行同步。

        TreeCacheListener listener = (curator, event) -> {
            switch (event.getType()) {
                case NODE_ADDED:
                    createdLatch.countDown();
                }
            };
        cache.getListenable().addListener(listener);

        Object obj = new Object();
        service.add(obj); // node creation by zookeeper

        // Wait until Node is created
        timing.awaitLatch(createdLatch);

        Boolean created = OtherService.pick(a2, a2); // use node date in OtherService

        assertThat(created).isTrue();