From 26aea48b9d7a9a6eb0bec4305ca818b29dd6f534 Mon Sep 17 00:00:00 2001 From: "konrad.dobrzynski" Date: Mon, 20 Jun 2016 15:43:15 +0200 Subject: [PATCH] Repaired overriding of connection string from EnsembleProvider fixes gh-86 --- .../zookeeper/ZookeeperAutoConfiguration.java | 7 ++- ...okeeperAutoConfigurationEnsembleTests.java | 54 +++++++++++++++++++ 2 files changed, 57 insertions(+), 4 deletions(-) create mode 100644 spring-cloud-zookeeper-core/src/test/java/org/springframework/cloud/zookeeper/ZookeeperAutoConfigurationEnsembleTests.java diff --git a/spring-cloud-zookeeper-core/src/main/java/org/springframework/cloud/zookeeper/ZookeeperAutoConfiguration.java b/spring-cloud-zookeeper-core/src/main/java/org/springframework/cloud/zookeeper/ZookeeperAutoConfiguration.java index 137156e0..b4148912 100644 --- a/spring-cloud-zookeeper-core/src/main/java/org/springframework/cloud/zookeeper/ZookeeperAutoConfiguration.java +++ b/spring-cloud-zookeeper-core/src/main/java/org/springframework/cloud/zookeeper/ZookeeperAutoConfiguration.java @@ -63,11 +63,10 @@ public class ZookeeperAutoConfiguration { CuratorFrameworkFactory.Builder builder = CuratorFrameworkFactory.builder(); if (this.ensembleProvider != null) { builder.ensembleProvider(this.ensembleProvider); + } else { + builder.connectString(properties.getConnectString()); } - CuratorFramework curator = builder - .retryPolicy(retryPolicy) - .connectString(properties.getConnectString()) - .build(); + CuratorFramework curator = builder.retryPolicy(retryPolicy).build(); curator.start(); log.trace("blocking until connected to zookeeper for " + properties.getBlockUntilConnectedWait() + properties.getBlockUntilConnectedUnit()); curator.blockUntilConnected(properties.getBlockUntilConnectedWait(), properties.getBlockUntilConnectedUnit()); diff --git a/spring-cloud-zookeeper-core/src/test/java/org/springframework/cloud/zookeeper/ZookeeperAutoConfigurationEnsembleTests.java b/spring-cloud-zookeeper-core/src/test/java/org/springframework/cloud/zookeeper/ZookeeperAutoConfigurationEnsembleTests.java new file mode 100644 index 00000000..9a2283e0 --- /dev/null +++ b/spring-cloud-zookeeper-core/src/test/java/org/springframework/cloud/zookeeper/ZookeeperAutoConfigurationEnsembleTests.java @@ -0,0 +1,54 @@ +package org.springframework.cloud.zookeeper; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotEquals; + +import org.apache.curator.ensemble.EnsembleProvider; +import org.apache.curator.ensemble.fixed.FixedEnsembleProvider; +import org.apache.curator.framework.CuratorFramework; +import org.apache.curator.test.TestingServer; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Bean; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; + +/** + * @author Konrad Kamil DobrzyƄski + */ +@RunWith(SpringJUnit4ClassRunner.class) +@ContextConfiguration(classes = { ZookeeperAutoConfigurationEnsembleTests.TestConfig.class, ZookeeperAutoConfiguration.class }) +public class ZookeeperAutoConfigurationEnsembleTests { + + @Autowired(required = false) CuratorFramework curator; + + @Autowired TestingServer testingServer; + + @Test + public void should_successfully_inject_Curator_with_ensemble_connection_string() { + assertEquals(testingServer.getConnectString(), curator.getZookeeperClient().getCurrentConnectionString()); + assertNotEquals(TestConfig.DUMMY_CONNECTION_STRING, curator.getZookeeperClient().getCurrentConnectionString()); + } + + static class TestConfig { + + static final String DUMMY_CONNECTION_STRING = "dummy-connection-string:2111"; + + @Bean + EnsembleProvider ensembleProvider(TestingServer testingServer){ + return new FixedEnsembleProvider(testingServer.getConnectString()); + } + + @Bean + ZookeeperProperties zookeeperProperties() { + ZookeeperProperties properties = new ZookeeperProperties(); + properties.setConnectString(DUMMY_CONNECTION_STRING); + return properties; + } + + @Bean(destroyMethod = "close") TestingServer testingServer() throws Exception { + return new TestingServer(); + } + } +}