Как получить событие из testServer с помощью куратора? - PullRequest
0 голосов
/ 24 мая 2019

Я написал тестовый код о своем сервисе. Мой код выглядит следующим образом.

        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 Ответ

1 голос
/ 24 мая 2019

Я использовал latch для синхронизации с созданием узла 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();

...