You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by lb...@apache.org on 2018/06/15 14:58:59 UTC
[camel] branch master updated: Fix camel-zookeeper-starter test and
duplicated classes
This is an automated email from the ASF dual-hosted git repository.
lburgazzoli pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/master by this push:
new f3315d20 Fix camel-zookeeper-starter test and duplicated classes
f3315d20 is described below
commit f3315d206889a164ee0f7336c7441462d0f09f6c
Author: lburgazzoli <lb...@gmail.com>
AuthorDate: Fri Jun 15 16:58:28 2018 +0200
Fix camel-zookeeper-starter test and duplicated classes
---
.../camel-zookeeper-starter/pom.xml | 12 +++
.../ZooKeeperClusterServiceAutoConfiguration.java | 53 ----------
.../ZooKeeperClusterServiceConfiguration.java | 77 ---------------
.../cloud/ZooKeeperServiceRegistryTest.java | 110 ++-------------------
.../cluster/ZooKeeperClusterServiceTest.java | 89 +++++++++++++++++
platforms/spring-boot/spring-boot-dm/pom.xml | 3 +
6 files changed, 111 insertions(+), 233 deletions(-)
diff --git a/platforms/spring-boot/components-starter/camel-zookeeper-starter/pom.xml b/platforms/spring-boot/components-starter/camel-zookeeper-starter/pom.xml
index 7c274d2..b6210ce 100644
--- a/platforms/spring-boot/components-starter/camel-zookeeper-starter/pom.xml
+++ b/platforms/spring-boot/components-starter/camel-zookeeper-starter/pom.xml
@@ -39,6 +39,18 @@
<artifactId>camel-zookeeper</artifactId>
<version>${project.version}</version>
</dependency>
+ <dependency>
+ <groupId>org.apache.curator</groupId>
+ <artifactId>curator-test</artifactId>
+ <version>${curator-version}</version>
+ <exclusions>
+ <exclusion>
+ <groupId>org.apache.zookeeper</groupId>
+ <artifactId>zookeeper</artifactId>
+ </exclusion>
+ </exclusions>
+ <scope>test</scope>
+ </dependency>
<!--START OF GENERATED CODE-->
<dependency>
<groupId>org.apache.camel</groupId>
diff --git a/platforms/spring-boot/components-starter/camel-zookeeper-starter/src/main/java/org/apache/camel/component/zookeeper/cluster/springboot/ZooKeeperClusterServiceAutoConfiguration.java b/platforms/spring-boot/components-starter/camel-zookeeper-starter/src/main/java/org/apache/camel/component/zookeeper/cluster/springboot/ZooKeeperClusterServiceAutoConfiguration.java
deleted file mode 100644
index c34d82e..0000000
--- a/platforms/spring-boot/components-starter/camel-zookeeper-starter/src/main/java/org/apache/camel/component/zookeeper/cluster/springboot/ZooKeeperClusterServiceAutoConfiguration.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.component.zookeeper.cluster.springboot;
-
-import org.apache.camel.cluster.CamelClusterService;
-import org.apache.camel.component.zookeeper.cluster.ZooKeeperClusterService;
-import org.apache.camel.spring.boot.CamelAutoConfiguration;
-import org.apache.camel.spring.boot.cluster.ClusteredRouteControllerAutoConfiguration;
-import org.apache.camel.util.IntrospectionSupport;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.config.ConfigurableBeanFactory;
-import org.springframework.boot.autoconfigure.AutoConfigureBefore;
-import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
-import org.springframework.boot.context.properties.EnableConfigurationProperties;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.context.annotation.Scope;
-
-@Configuration
-@AutoConfigureBefore({ ClusteredRouteControllerAutoConfiguration.class, CamelAutoConfiguration.class })
-@ConditionalOnProperty(prefix = "camel.component.zookeeper.cluster.service", name = "enabled")
-@EnableConfigurationProperties(ZooKeeperClusterServiceConfiguration.class)
-public class ZooKeeperClusterServiceAutoConfiguration {
- @Autowired
- private ZooKeeperClusterServiceConfiguration configuration;
-
- @Bean(name = "zookeeper-cluster-service")
- @Scope(ConfigurableBeanFactory.SCOPE_SINGLETON)
- public CamelClusterService zookeeperClusterService() throws Exception {
- ZooKeeperClusterService service = new ZooKeeperClusterService();
-
- IntrospectionSupport.setProperties(
- service,
- IntrospectionSupport.getNonNullProperties(configuration)
- );
-
- return service;
- }
-}
diff --git a/platforms/spring-boot/components-starter/camel-zookeeper-starter/src/main/java/org/apache/camel/component/zookeeper/cluster/springboot/ZooKeeperClusterServiceConfiguration.java b/platforms/spring-boot/components-starter/camel-zookeeper-starter/src/main/java/org/apache/camel/component/zookeeper/cluster/springboot/ZooKeeperClusterServiceConfiguration.java
deleted file mode 100644
index 1feb5af..0000000
--- a/platforms/spring-boot/components-starter/camel-zookeeper-starter/src/main/java/org/apache/camel/component/zookeeper/cluster/springboot/ZooKeeperClusterServiceConfiguration.java
+++ /dev/null
@@ -1,77 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.component.zookeeper.cluster.springboot;
-
-import java.util.Map;
-
-import org.apache.camel.component.zookeeper.ZooKeeperCuratorConfiguration;
-import org.springframework.boot.context.properties.ConfigurationProperties;
-
-@ConfigurationProperties(prefix = "camel.component.zookeeper.cluster.service")
-public class ZooKeeperClusterServiceConfiguration extends ZooKeeperCuratorConfiguration {
- /**
- * Sets if the zookeeper cluster service should be enabled or not, default is false.
- */
- private boolean enabled;
-
- /**
- * Cluster Service ID
- */
- private String id;
-
- /**
- * Custom service attributes.
- */
- private Map<String, Object> attributes;
-
- /**
- * Service lookup order/priority.
- */
- private Integer order;
-
- public boolean isEnabled() {
- return enabled;
- }
-
- public void setEnabled(boolean enabled) {
- this.enabled = enabled;
- }
-
- public String getId() {
- return id;
- }
-
- public void setId(String id) {
- this.id = id;
- }
-
- public Map<String, Object> getAttributes() {
- return attributes;
- }
-
- public void setAttributes(Map<String, Object> attributes) {
- this.attributes = attributes;
- }
-
- public Integer getOrder() {
- return order;
- }
-
- public void setOrder(Integer order) {
- this.order = order;
- }
-}
diff --git a/platforms/spring-boot/components-starter/camel-zookeeper-starter/src/test/java/org/apache/camel/component/zookeeper/springboot/cloud/ZooKeeperServiceRegistryTest.java b/platforms/spring-boot/components-starter/camel-zookeeper-starter/src/test/java/org/apache/camel/component/zookeeper/springboot/cloud/ZooKeeperServiceRegistryTest.java
index 7243d61..76a6e87 100644
--- a/platforms/spring-boot/components-starter/camel-zookeeper-starter/src/test/java/org/apache/camel/component/zookeeper/springboot/cloud/ZooKeeperServiceRegistryTest.java
+++ b/platforms/spring-boot/components-starter/camel-zookeeper-starter/src/test/java/org/apache/camel/component/zookeeper/springboot/cloud/ZooKeeperServiceRegistryTest.java
@@ -16,13 +16,7 @@
*/
package org.apache.camel.component.zookeeper.springboot.cloud;
-import java.io.BufferedReader;
import java.io.File;
-import java.io.IOException;
-import java.io.InputStreamReader;
-import java.io.OutputStream;
-import java.net.InetSocketAddress;
-import java.net.Socket;
import java.util.Collection;
import java.util.UUID;
@@ -31,18 +25,15 @@ import org.apache.camel.cloud.ServiceRegistry;
import org.apache.camel.component.zookeeper.cloud.ZooKeeperServiceRegistry;
import org.apache.camel.impl.cloud.DefaultServiceDefinition;
import org.apache.camel.test.AvailablePortFinder;
-import org.apache.camel.util.IOHelper;
import org.apache.curator.framework.CuratorFramework;
import org.apache.curator.framework.CuratorFrameworkFactory;
import org.apache.curator.retry.ExponentialBackoffRetry;
+import org.apache.curator.test.TestingServer;
import org.apache.curator.utils.CloseableUtils;
import org.apache.curator.x.discovery.ServiceDiscovery;
import org.apache.curator.x.discovery.ServiceDiscoveryBuilder;
import org.apache.curator.x.discovery.ServiceInstance;
import org.apache.curator.x.discovery.details.JsonInstanceSerializer;
-import org.apache.zookeeper.server.NIOServerCnxnFactory;
-import org.apache.zookeeper.server.ZooKeeperServer;
-import org.apache.zookeeper.server.persistence.FileTxnSnapLog;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.TemporaryFolder;
@@ -72,10 +63,13 @@ public class ZooKeeperServiceRegistryTest {
@Test
public void testServiceRegistry() throws Exception {
- final ZooKeeperTestServer zkServer = new ZooKeeperTestServer(temporaryFolder.newFolder());
+ final int zkPort = AvailablePortFinder.getNextAvailable();
+ final File zkDir = temporaryFolder.newFolder();
+
+ final TestingServer zkServer = new TestingServer(zkPort, zkDir);
zkServer.start();
- final ZooKeeperTestClient zkClient = new ZooKeeperTestClient(zkServer.serverList());
+ final ZooKeeperTestClient zkClient = new ZooKeeperTestClient("localhost:" + zkPort);
zkClient.start();
try {
@@ -86,7 +80,7 @@ public class ZooKeeperServiceRegistryTest {
"spring.main.banner-mode=OFF",
"spring.application.name=" + UUID.randomUUID().toString(),
"camel.component.zookeeper.service-registry.enabled=true",
- "camel.component.zookeeper.service-registry.nodes=" + zkServer.serverList(),
+ "camel.component.zookeeper.service-registry.nodes=localhost:" + zkPort,
"camel.component.zookeeper.service-registry.id=" + UUID.randomUUID().toString(),
"camel.component.zookeeper.service-registry.base-path=" + SERVICE_PATH,
"camel.component.zookeeper.service-registry.service-host=localhost")
@@ -137,96 +131,6 @@ public class ZooKeeperServiceRegistryTest {
// Helpers
// *************************************
- public static class ZooKeeperTestServer {
- private NIOServerCnxnFactory connectionFactory;
- private ZooKeeperServer zkServer;
-
- public ZooKeeperTestServer(File root) throws Exception {
- zkServer = new ZooKeeperServer();
-
- File dataDir = new File(root, "log");
- File snapDir = new File(root, "data");
- FileTxnSnapLog ftxn = new FileTxnSnapLog(dataDir, snapDir);
-
- zkServer.setTxnLogFactory(ftxn);
- zkServer.setTickTime(1000);
-
- connectionFactory = new NIOServerCnxnFactory();
- connectionFactory.configure(new InetSocketAddress("localhost", AvailablePortFinder.getNextAvailable()), 0);
- connectionFactory.startup(zkServer);
- }
-
- public String serverList() {
- return "localhost:" + connectionFactory.getLocalPort();
- }
-
- private String send4LetterWord(String hp, String cmd) throws IOException {
- String split[] = hp.split(":");
- String host = split[0];
- int port;
- try {
- port = Integer.parseInt(split[1]);
- } catch (RuntimeException e) {
- throw new RuntimeException("Problem parsing " + hp + e.toString());
- }
-
- Socket sock = new Socket(host, port);
- BufferedReader reader = null;
- try {
- OutputStream outstream = sock.getOutputStream();
- outstream.write(cmd.getBytes());
- outstream.flush();
-
- reader = IOHelper.buffered(new InputStreamReader(sock.getInputStream()));
- StringBuilder sb = new StringBuilder();
- String line;
- while ((line = reader.readLine()) != null) {
- sb.append(line + "\n");
- }
- return sb.toString();
- } finally {
- sock.close();
- if (reader != null) {
- reader.close();
- }
- }
- }
-
- public void start() throws Exception {
- long start = System.currentTimeMillis();
- while (true) {
- try {
- String result = send4LetterWord(serverList(), "stat");
- if (result.startsWith("Zookeeper version:")) {
- return;
- }
- } catch (IOException e) {
- LOGGER.info("server {} not up {}", LOGGER, e);
- }
-
- if (System.currentTimeMillis() > start + 1000) {
- break;
- }
- try {
- Thread.sleep(250);
- } catch (InterruptedException e) {
- // ignore
- }
- }
- }
-
- public void stop() throws Exception {
- connectionFactory.shutdown();
- connectionFactory.join();
- zkServer.shutdown();
-
- while (zkServer.isRunning()) {
- zkServer.shutdown();
- Thread.sleep(100);
- }
- }
- }
-
public static class ZooKeeperTestClient {
private final CuratorFramework curator;
private final ServiceDiscovery<ZooKeeperServiceRegistry.MetaData> discovery;
diff --git a/platforms/spring-boot/components-starter/camel-zookeeper-starter/src/test/java/org/apache/camel/component/zookeeper/springboot/cluster/ZooKeeperClusterServiceTest.java b/platforms/spring-boot/components-starter/camel-zookeeper-starter/src/test/java/org/apache/camel/component/zookeeper/springboot/cluster/ZooKeeperClusterServiceTest.java
new file mode 100644
index 0000000..be031a3
--- /dev/null
+++ b/platforms/spring-boot/components-starter/camel-zookeeper-starter/src/test/java/org/apache/camel/component/zookeeper/springboot/cluster/ZooKeeperClusterServiceTest.java
@@ -0,0 +1,89 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.component.zookeeper.springboot.cluster;
+
+import java.io.File;
+import java.util.UUID;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.cluster.CamelClusterService;
+import org.apache.camel.component.zookeeper.cluster.ZooKeeperClusterService;
+import org.apache.camel.test.AvailablePortFinder;
+import org.apache.curator.test.TestingServer;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.rules.TemporaryFolder;
+import org.junit.rules.TestName;
+import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
+import org.springframework.boot.test.context.runner.ApplicationContextRunner;
+import org.springframework.context.annotation.Configuration;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+public class ZooKeeperClusterServiceTest {
+ private static final String SERVICE_PATH = "/camel";
+
+ @Rule
+ public final TestName testName = new TestName();
+ @Rule
+ public final TemporaryFolder temporaryFolder = new TemporaryFolder();
+
+ @Test
+ public void testClusterService() throws Exception {
+ final int zkPort = AvailablePortFinder.getNextAvailable();
+ final File zkDir = temporaryFolder.newFolder();
+
+ final TestingServer zkServer = new TestingServer(zkPort, zkDir);
+ zkServer.start();
+
+ try {
+ new ApplicationContextRunner()
+ .withUserConfiguration(TestConfiguration.class)
+ .withPropertyValues(
+ "debug=false",
+ "spring.main.banner-mode=OFF",
+ "spring.application.name=" + UUID.randomUUID().toString(),
+ "camel.component.zookeeper.cluster.service.enabled=true",
+ "camel.component.zookeeper.cluster.service.nodes=localhost:" + zkPort,
+ "camel.component.zookeeper.cluster.service.id=" + UUID.randomUUID().toString(),
+ "camel.component.zookeeper.cluster.service.base-path=" + SERVICE_PATH)
+ .run(
+ context -> {
+ assertThat(context).hasSingleBean(CamelContext.class);
+ assertThat(context).hasSingleBean(CamelClusterService.class);
+
+ final CamelContext camelContext = context.getBean(CamelContext.class);
+ final CamelClusterService clusterService = camelContext.hasService(CamelClusterService.class);
+
+ assertThat(clusterService).isNotNull();
+ assertThat(clusterService).isInstanceOf(ZooKeeperClusterService.class);
+ }
+ );
+ } finally {
+ zkServer.stop();
+ }
+ }
+
+ // *************************************
+ // Config
+ // *************************************
+
+ @EnableAutoConfiguration
+ @Configuration
+ public static class TestConfiguration {
+ }
+}
diff --git a/platforms/spring-boot/spring-boot-dm/pom.xml b/platforms/spring-boot/spring-boot-dm/pom.xml
index 2c03911..634ca47 100644
--- a/platforms/spring-boot/spring-boot-dm/pom.xml
+++ b/platforms/spring-boot/spring-boot-dm/pom.xml
@@ -49,6 +49,9 @@
<jackson-version>1.9.12</jackson-version>
<testcontainers-version>1.7.3</testcontainers-version>
+ <!-- needed for testing -->
+ <curator-version>2.12.0</curator-version>
+
<!-- Needed by starters -->
<egit-github-core-version>2.1.5</egit-github-core-version>
<google-guava-version>19.0</google-guava-version>
--
To stop receiving notification emails like this one, please contact
lburgazzoli@apache.org.