public ZookeeperClient(final ZookeeperConfig zookeeperConfig) {
        this.config = zookeeperConfig;
        ExponentialBackoffRetry retryPolicy = new ExponentialBackoffRetry(config.getBaseSleepTimeMilliseconds(), config.getMaxRetries(), config.getMaxSleepTimeMilliseconds());

        CuratorFrameworkFactory.Builder builder = CuratorFrameworkFactory.builder()
                .connectString(config.getServerLists())
                .retryPolicy(retryPolicy)
                .connectionTimeoutMs(config.getConnectionTimeoutMilliseconds())
                .sessionTimeoutMs(config.getSessionTimeoutMilliseconds())
                .namespace(config.getNamespace());

        if (!StringUtils.isEmpty(config.getDigest())) {
            builder.authorization("digest", config.getDigest().getBytes(StandardCharsets.UTF_8));
        }

        this.client = builder.build();
    }
@Test
    public void zookeeperClientTest() {
        try (MockedConstruction<ZookeeperClient> zookeeperClientMockedConstruction = mockConstruction(ZookeeperClient.class)) {
            final ZookeeperProperties zookeeperProperties = new ZookeeperProperties();
            ZookeeperSyncConfiguration zookeeperListener = new ZookeeperSyncConfiguration();
            assertNotNull(zookeeperListener.zookeeperClient(zookeeperProperties));
            zookeeperProperties.setSessionTimeout(3000);
            zookeeperProperties.setConnectionTimeout(3000);
            assertNotNull(zookeeperListener.zookeeperClient(zookeeperProperties));
        }
    }