This is an automated email from the ASF dual-hosted git repository. iluo pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/dubbo-samples.git
The following commit(s) were added to refs/heads/master by this push: new f41db5c integration test for dubbo-samples-docker f41db5c is described below commit f41db5c1b6f27a5e0f35224317576a8dfeecc1e8 Author: Ian Luo <ian....@gmail.com> AuthorDate: Thu Jun 20 10:33:55 2019 +0800 integration test for dubbo-samples-docker --- dubbo-samples-docker/pom.xml | 486 +++++++-------------- .../apache/dubbo/samples/docker/DemoService.java | 3 - .../dubbo/samples/docker/DemoServiceImpl.java | 2 +- .../docker/{App.java => DubboApplication.java} | 13 +- .../dubbo/samples/docker/EmbeddedZooKeeper.java | 272 ------------ .../src/main/resources/dubbo-docker-provider.xml | 18 +- ...pleApplicationTests.java => DemoServiceIT.java} | 15 +- .../src/test/resources/dubbo-docker-consumer.xml | 30 ++ 8 files changed, 209 insertions(+), 630 deletions(-) diff --git a/dubbo-samples-docker/pom.xml b/dubbo-samples-docker/pom.xml index c2076c8..f66685a 100644 --- a/dubbo-samples-docker/pom.xml +++ b/dubbo-samples-docker/pom.xml @@ -28,383 +28,199 @@ <properties> <source.level>1.8</source.level> <target.level>1.8</target.level> + <dubbo.version>2.7.2</dubbo.version> <spring.version>4.3.16.RELEASE</spring.version> - <dubbo.version>2.7.0</dubbo.version> - <dubbo.rpc.version>2.7.0</dubbo.rpc.version> - <zookeeper.version>3.4.13</zookeeper.version> - <curator.version>4.0.1</curator.version> - <validation-api.version>1.1.0.Final</validation-api.version> - <hibernate-validator.version>4.2.0.Final</hibernate-validator.version> - <resteasy.version>3.0.19.Final</resteasy.version> - <curator-client.version>4.0.1</curator-client.version> - <swagger.version>1.5.19</swagger.version> - <tomcat.version>7.0.88</tomcat.version> - <servlet.version>3.0.1</servlet.version> - <maven_checkstyle_version>3.0.0</maven_checkstyle_version> - <apache-rat-plugin.version>0.12</apache-rat-plugin.version> - <spring-boot.version>1.5.13.RELEASE</spring-boot.version> - <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> - <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> - <java.version>1.7</java.version> + <spring.boot.version>1.5.21.RELEASE</spring.boot.version> + <junit.version>4.12</junit.version> + <docker-maven-plugin.version>0.30.0</docker-maven-plugin.version> + <jib-maven-plugin.version>1.2.0</jib-maven-plugin.version> + <maven-compiler-plugin.version>3.7.0</maven-compiler-plugin.version> + <maven-failsafe-plugin.version>3.0.0-M3</maven-failsafe-plugin.version> + <image.name>${artifactId}:${dubbo.version}</image.name> + <dubbo.port>20880</dubbo.port> + <zookeeper.port>2181</zookeeper.port> + <main-class>org.apache.dubbo.samples.docker.DubboApplication</main-class> </properties> - <dependencyManagement> - <dependencies> - <dependency> - <groupId>org.springframework</groupId> - <artifactId>spring-framework-bom</artifactId> - <version>${spring.version}</version> - <type>pom</type> - <scope>import</scope> - </dependency> - <dependency> - <!-- Import dependency management from Spring Boot --> - <groupId>org.springframework.boot</groupId> - <artifactId>spring-boot-dependencies</artifactId> - <version>${spring-boot.version}</version> - <type>pom</type> - <scope>import</scope> - </dependency> - <dependency> - <groupId>io.netty</groupId> - <artifactId>netty-all</artifactId> - <version>4.1.16.Final</version> - </dependency> - <dependency> - <groupId>org.apache.dubbo</groupId> - <artifactId>dubbo-bom</artifactId> - <version>${dubbo.version}</version> - <type>pom</type> - <scope>import</scope> - </dependency> - <dependency> - <groupId>org.apache.dubbo</groupId> - <artifactId>dubbo</artifactId> - <version>${dubbo.version}</version> - <exclusions> - <exclusion> - <groupId>org.apache.thrift</groupId> - <artifactId>libthrift</artifactId> - </exclusion> - </exclusions> - </dependency> - <dependency> - <groupId>org.apache.dubbo</groupId> - <artifactId>dubbo-rpc-rest</artifactId> - <version>${dubbo.rpc.version}</version> - </dependency> - <dependency> - <groupId>org.apache.zookeeper</groupId> - <artifactId>zookeeper</artifactId> - <version>${zookeeper.version}</version> - </dependency> - <dependency> - <groupId>org.apache.curator</groupId> - <artifactId>curator-framework</artifactId> - <version>${curator.version}</version> - <exclusions> - <exclusion> - <groupId>org.apache.zookeeper</groupId> - <artifactId>zookeeper</artifactId> - </exclusion> - </exclusions> - </dependency> - <dependency> - <groupId>javax.validation</groupId> - <artifactId>validation-api</artifactId> - <version>${validation-api.version}</version> - </dependency> - <dependency> - <groupId>org.hibernate</groupId> - <artifactId>hibernate-validator</artifactId> - <version>${hibernate-validator.version}</version> - </dependency> - <dependency> - <groupId>org.jboss.resteasy</groupId> - <artifactId>resteasy-jackson-provider</artifactId> - <version>${resteasy.version}</version> - </dependency> - <dependency> - <groupId>org.apache.curator</groupId> - <artifactId>curator-client</artifactId> - <version>${curator-client.version}</version> - <exclusions> - <exclusion> - <groupId>org.apache.zookeeper</groupId> - <artifactId>zookeeper</artifactId> - </exclusion> - </exclusions> - </dependency> - <dependency> - <groupId>javax.servlet</groupId> - <artifactId>javax.servlet-api</artifactId> - <version>${servlet.version}</version> - </dependency> - <dependency> - <groupId>org.apache.tomcat.embed</groupId> - <artifactId>tomcat-embed-core</artifactId> - <version>${tomcat.version}</version> - </dependency> - <dependency> - <groupId>org.apache.tomcat.embed</groupId> - <artifactId>tomcat-embed-logging-juli</artifactId> - <version>${tomcat.version}</version> - </dependency> - <!-- swagger --> - <dependency> - <groupId>io.swagger</groupId> - <artifactId>swagger-annotations</artifactId> - <version>${swagger.version}</version> - </dependency> - <dependency> - <groupId>io.swagger</groupId> - <artifactId>swagger-jaxrs</artifactId> - <version>${swagger.version}</version> - </dependency> - </dependencies> - </dependencyManagement> - <dependencies> <dependency> - <groupId>org.apache.curator</groupId> - <artifactId>curator-framework</artifactId> - <exclusions> - <exclusion> - <groupId>io.netty</groupId> - <artifactId>netty</artifactId> - </exclusion> - <exclusion> - <groupId>org.apache.zookeeper</groupId> - <artifactId>zookeeper</artifactId> - </exclusion> - </exclusions> - </dependency> - <dependency> - <groupId>org.apache.zookeeper</groupId> - <artifactId>zookeeper</artifactId> - </dependency> - <dependency> <groupId>org.apache.dubbo</groupId> <artifactId>dubbo</artifactId> + <version>${dubbo.version}</version> </dependency> + <dependency> <groupId>org.apache.dubbo</groupId> - <artifactId>dubbo-configcenter-zookeeper</artifactId> - </dependency> - <dependency> - <groupId>io.netty</groupId> - <artifactId>netty-all</artifactId> - </dependency> - <dependency> - <groupId>org.slf4j</groupId> - <artifactId>slf4j-simple</artifactId> + <artifactId>dubbo-dependencies-zookeeper</artifactId> + <version>${dubbo.version}</version> + <type>pom</type> + <exclusions> + <exclusion> + <groupId> org.slf4j</groupId> + <artifactId>slf4j-log4j12</artifactId> + </exclusion> + </exclusions> </dependency> + <dependency> - <groupId>org.springframework</groupId> - <artifactId>spring-context</artifactId> + <groupId>junit</groupId> + <artifactId>junit</artifactId> + <version>${junit.version}</version> + <scope>test</scope> </dependency> + <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> - </dependency> - <dependency> - <groupId>com.alibaba</groupId> - <artifactId>dubbo</artifactId> - <version>2.6.5</version> - </dependency> - <dependency> - <groupId>io.netty</groupId> - <artifactId>netty-all</artifactId> - <version>4.0.35.Final</version> - </dependency> - <dependency> - <groupId>org.apache.zookeeper</groupId> - <artifactId>zookeeper</artifactId> - <version>3.4.9</version> - </dependency> - <dependency> - <groupId>org.apache.curator</groupId> - <artifactId>curator-framework</artifactId> - <version>2.12.0</version> - </dependency> - <dependency> - <groupId>org.apache.cxf</groupId> - <artifactId>cxf-rt-frontend-simple</artifactId> - <version>3.0.14</version> - </dependency> - <dependency> - <groupId>org.apache.cxf</groupId> - <artifactId>cxf-rt-transports-http</artifactId> - <version>3.0.14</version> - </dependency> - <dependency> - <groupId>org.apache.thrift</groupId> - <artifactId>libthrift</artifactId> - <version>0.11.0</version> - </dependency> - <dependency> - <groupId>com.caucho</groupId> - <artifactId>hessian</artifactId> - <version>4.0.38</version> - </dependency> - <dependency> - <groupId>javax.servlet</groupId> - <artifactId>servlet-api</artifactId> - <version>2.5</version> - </dependency> - <dependency> - <groupId>org.eclipse.jetty</groupId> - <artifactId>jetty-server</artifactId> - <version>9.4.11.v20180605</version> - </dependency> - <dependency> - <groupId>org.eclipse.jetty</groupId> - <artifactId>jetty-servlet</artifactId> - <version>9.4.11.v20180605</version> + <version>${spring.boot.version}</version> </dependency> <dependency> - <groupId>junit</groupId> - <artifactId>junit</artifactId> - <version>4.12</version> - </dependency> - <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> - <version>1.5.7.RELEASE</version> + <version>${spring.boot.version}</version> <scope>test</scope> </dependency> </dependencies> - - - <build> - <pluginManagement> - <plugins> - <plugin> - <groupId>org.springframework.boot</groupId> - <artifactId>spring-boot-maven-plugin</artifactId> - <version>${spring-boot.version}</version> - </plugin> - </plugins> - </pluginManagement> - <plugins> - <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-compiler-plugin</artifactId> - <version>3.7.0</version> - <configuration> - <source>${source.level}</source> - <target>${target.level}</target> - </configuration> - </plugin> - <plugin> - <groupId>org.apache.rat</groupId> - <artifactId>apache-rat-plugin</artifactId> - <version>${apache-rat-plugin.version}</version> - <executions> - <execution> - <id>verify.rat</id> - <phase>verify</phase> - <goals> - <goal>check</goal> - </goals> - <configuration> - <excludes> - <exclude>**/*.versionsBackup</exclude> - <exclude>**/.idea/</exclude> - <exclude>**/*.iml</exclude> - <exclude>**/*.txt</exclude> - <exclude>**/*.load</exclude> - <exclude>**/*.flex</exclude> - <exclude>**/*.fc</exclude> - <exclude>**/*.javascript</exclude> - <exclude>**/*.properties</exclude> - <exclude>**/*.thrift</exclude> - <exclude>**/*.sh</exclude> - <exclude>**/*.bat</exclude> - <exclude>**/*.md</exclude> - <exclude>.git/</exclude> - <exclude>.gitignore</exclude> - <!-- ASF jenkins box puts the Maven repo in our root directory. --> - <exclude>.repository/</exclude> - <exclude>**/.settings/*</exclude> - <exclude>**/.classpath</exclude> - <exclude>**/.project</exclude> - <exclude>**/target/**</exclude> - <exclude>**/*.log</exclude> - <exclude>CODE_OF_CONDUCT.md</exclude> - <exclude>.codecov.yml</exclude> - <exclude>.travis.yml</exclude> - <exclude>PULL_REQUEST_TEMPLATE.md</exclude> - <exclude>CONTRIBUTING.md</exclude> - <exclude>README.md</exclude> - <exclude>**/codestyle/*</exclude> - <exclude>**/resources/META-INF/**</exclude> - <exclude>**/webapp/swagger/**</exclude> - <exclude>**/org/apache/dubbo/samples/rpc/nativethrift/api/DemoService.java</exclude> - </excludes> - </configuration> - </execution> - </executions> - </plugin> - <plugin> - <groupId>org.springframework.boot</groupId> - <artifactId>spring-boot-maven-plugin</artifactId> - <configuration> - <mainClass>org.apache.dubbo.samples.docker.App</mainClass> - </configuration> - <executions> - <execution> - <phase>package</phase> - <goals> - <goal>repackage</goal> - </goals> - </execution> - </executions> - </plugin> - </plugins> - </build> - <profiles> <profile> - <id>checkstyle</id> - <activation> - <jdk>[1.8,)</jdk> - </activation> + <id>dubbo-integration-test</id> <build> <plugins> <plugin> - <groupId>org.apache.maven.plugins</groupId> - <artifactId>maven-checkstyle-plugin</artifactId> - <version>${maven_checkstyle_version}</version> - <dependencies> - <dependency> - <groupId>com.puppycrawl.tools</groupId> - <artifactId>checkstyle</artifactId> - <version>8.9</version> - </dependency> - </dependencies> + <groupId>org.apache.dubbo</groupId> + <artifactId>dubbo-maven-address-plugin</artifactId> + <version>1.0-SNAPSHOT</version> <executions> <execution> - <id>checkstyle-validation</id> - <phase>validate</phase> + <goals> + <goal>local-address</goal> + </goals> <configuration> - <configLocation>../codestyle/checkstyle.xml</configLocation> - <suppressionsLocation>../codestyle/checkstyle-suppressions.xml</suppressionsLocation> - <encoding>UTF-8</encoding> - <consoleOutput>true</consoleOutput> - <failOnViolation>true</failOnViolation> + <localAddress>dubbo-local-address</localAddress> </configuration> + <phase>initialize</phase> + </execution> + </executions> + </plugin> + + <plugin> + <groupId>com.google.cloud.tools</groupId> + <artifactId>jib-maven-plugin</artifactId> + <version>${jib-maven-plugin.version}</version> + <configuration> + <from> + <image>openjdk:8</image> + </from> + <to> + <image>${image.name}</image> + </to> + <container> + <mainClass>${main-class}</mainClass> + <ports> + <port>${dubbo.port}</port> + </ports> + <environment> + <DUBBO_IP_TO_REGISTRY>${dubbo-local-address}</DUBBO_IP_TO_REGISTRY> + </environment> + <jvmFlags> + <jvmFlag>-Dzookeeper.address=${dubbo-local-address}</jvmFlag> + </jvmFlags> + </container> + </configuration> + <executions> + <execution> + <phase>package</phase> <goals> - <goal>check</goal> + <goal>dockerBuild</goal> </goals> </execution> </executions> </plugin> + + <plugin> + <groupId>io.fabric8</groupId> + <artifactId>docker-maven-plugin</artifactId> + <version>${docker-maven-plugin.version}</version> + <configuration> + <images> + <image> + <name>zookeeper:latest</name> + <run> + <ports> + <port>${zookeeper.port}:${zookeeper.port}</port> + </ports> + </run> + </image> + <image> + <name>${image.name}</name> + <run> + <ports> + <port>${dubbo.port}:${dubbo.port}</port> + </ports> + <wait> + <log>dubbo service started</log> + </wait> + </run> + </image> + </images> + </configuration> + <executions> + <execution> + <id>start</id> + <phase>pre-integration-test</phase> + <goals> + <goal>start</goal> + </goals> + </execution> + <execution> + <id>stop</id> + <phase>post-integration-test</phase> + <goals> + <goal>stop</goal> + </goals> + </execution> + </executions> + </plugin> + + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-failsafe-plugin</artifactId> + <version>${maven-failsafe-plugin.version}</version> + <executions> + <execution> + <goals> + <goal>integration-test</goal> + <goal>verify</goal> + </goals> + <configuration> + <systemPropertyVariables> + <zookeeper.address>${dubbo-local-address}</zookeeper.address> + </systemPropertyVariables> + <includes> + <include>**/*IT.java</include> + </includes> + </configuration> + </execution> + </executions> + </plugin> </plugins> </build> </profile> </profiles> + <build> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-compiler-plugin</artifactId> + <version>${maven-compiler-plugin.version}</version> + <configuration> + <source>${source.level}</source> + <target>${target.level}</target> + </configuration> + </plugin> + </plugins> + </build> </project> diff --git a/dubbo-samples-docker/src/main/java/org/apache/dubbo/samples/docker/DemoService.java b/dubbo-samples-docker/src/main/java/org/apache/dubbo/samples/docker/DemoService.java index b24c430..bd1316a 100644 --- a/dubbo-samples-docker/src/main/java/org/apache/dubbo/samples/docker/DemoService.java +++ b/dubbo-samples-docker/src/main/java/org/apache/dubbo/samples/docker/DemoService.java @@ -18,9 +18,6 @@ */ package org.apache.dubbo.samples.docker; -/** - * Created by ken.lj on 2017/9/24. - */ public interface DemoService { String hello(String str); } diff --git a/dubbo-samples-docker/src/main/java/org/apache/dubbo/samples/docker/DemoServiceImpl.java b/dubbo-samples-docker/src/main/java/org/apache/dubbo/samples/docker/DemoServiceImpl.java index 07950a0..d36fe7b 100644 --- a/dubbo-samples-docker/src/main/java/org/apache/dubbo/samples/docker/DemoServiceImpl.java +++ b/dubbo-samples-docker/src/main/java/org/apache/dubbo/samples/docker/DemoServiceImpl.java @@ -21,6 +21,6 @@ package org.apache.dubbo.samples.docker; public class DemoServiceImpl implements DemoService { public String hello(String str) { - return "str"; + return "Hello " + str + " from docker"; } } diff --git a/dubbo-samples-docker/src/main/java/org/apache/dubbo/samples/docker/App.java b/dubbo-samples-docker/src/main/java/org/apache/dubbo/samples/docker/DubboApplication.java similarity index 78% rename from dubbo-samples-docker/src/main/java/org/apache/dubbo/samples/docker/App.java rename to dubbo-samples-docker/src/main/java/org/apache/dubbo/samples/docker/DubboApplication.java index 373998e..86f6665 100644 --- a/dubbo-samples-docker/src/main/java/org/apache/dubbo/samples/docker/App.java +++ b/dubbo-samples-docker/src/main/java/org/apache/dubbo/samples/docker/DubboApplication.java @@ -22,14 +22,15 @@ import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.context.annotation.ImportResource; -import java.io.IOException; +import java.util.concurrent.CountDownLatch; @SpringBootApplication @ImportResource("classpath:dubbo-docker-provider.xml") -public class App { +public class DubboApplication { - public static void main(String[] args) throws IOException { - new SpringApplicationBuilder(App.class).web(false).run(args); - System.in.read(); - } + public static void main(String[] args) throws Exception { + new SpringApplicationBuilder(DubboApplication.class).web(false).run(args); + System.out.println("dubbo service started"); + new CountDownLatch(1).await(); + } } diff --git a/dubbo-samples-docker/src/main/java/org/apache/dubbo/samples/docker/EmbeddedZooKeeper.java b/dubbo-samples-docker/src/main/java/org/apache/dubbo/samples/docker/EmbeddedZooKeeper.java deleted file mode 100644 index 0782ec4..0000000 --- a/dubbo-samples-docker/src/main/java/org/apache/dubbo/samples/docker/EmbeddedZooKeeper.java +++ /dev/null @@ -1,272 +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.dubbo.samples.docker; - -/* - * 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. - */ -import org.apache.zookeeper.server.ServerConfig; -import org.apache.zookeeper.server.ZooKeeperServerMain; -import org.apache.zookeeper.server.quorum.QuorumPeerConfig; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.context.SmartLifecycle; -import org.springframework.util.ErrorHandler; -import org.springframework.util.SocketUtils; - -import java.io.File; -import java.lang.reflect.Method; -import java.util.Properties; -import java.util.UUID; - -/** - * from: https://github.com/spring-projects/spring-xd/blob/v1.3.1.RELEASE/spring-xd-dirt/src/main/java/org/springframework/xd/dirt/zookeeper/ZooKeeperUtils.java - * - * Helper class to start an embedded instance of standalone (non clustered) ZooKeeper. - * - * NOTE: at least an external standalone server (if not an ensemble) are recommended, even for - * {@link org.springframework.xd.dirt.server.singlenode.SingleNodeApplication} - * - * @author Patrick Peralta - * @author Mark Fisher - * @author David Turanski - */ -public class EmbeddedZooKeeper implements SmartLifecycle { - - /** - * Logger. - */ - private static final Logger logger = LoggerFactory.getLogger(EmbeddedZooKeeper.class); - - /** - * ZooKeeper client port. This will be determined dynamically upon startup. - */ - private final int clientPort; - - /** - * Whether to auto-start. Default is true. - */ - private boolean autoStartup = true; - - /** - * Lifecycle phase. Default is 0. - */ - private int phase = 0; - - /** - * Thread for running the ZooKeeper server. - */ - private volatile Thread zkServerThread; - - /** - * ZooKeeper server. - */ - private volatile ZooKeeperServerMain zkServer; - - /** - * {@link ErrorHandler} to be invoked if an Exception is thrown from the ZooKeeper server thread. - */ - private ErrorHandler errorHandler; - - private boolean daemon = true; - - /** - * Construct an EmbeddedZooKeeper with a random port. - */ - public EmbeddedZooKeeper() { - clientPort = SocketUtils.findAvailableTcpPort(); - } - - /** - * Construct an EmbeddedZooKeeper with the provided port. - * - * @param clientPort port for ZooKeeper server to bind to - */ - public EmbeddedZooKeeper(int clientPort, boolean daemon) { - this.clientPort = clientPort; - this.daemon = daemon; - } - - /** - * Returns the port that clients should use to connect to this embedded server. - * - * @return dynamically determined client port - */ - public int getClientPort() { - return this.clientPort; - } - - /** - * Specify whether to start automatically. Default is true. - * - * @param autoStartup whether to start automatically - */ - public void setAutoStartup(boolean autoStartup) { - this.autoStartup = autoStartup; - } - - /** - * {@inheritDoc} - */ - @Override - public boolean isAutoStartup() { - return this.autoStartup; - } - - /** - * Specify the lifecycle phase for the embedded server. - * - * @param phase the lifecycle phase - */ - public void setPhase(int phase) { - this.phase = phase; - } - - /** - * {@inheritDoc} - */ - @Override - public int getPhase() { - return this.phase; - } - - /** - * {@inheritDoc} - */ - @Override - public boolean isRunning() { - return (zkServerThread != null); - } - - /** - * Start the ZooKeeper server in a background thread. - * <p> - * Register an error handler via {@link #setErrorHandler} in order to handle - * any exceptions thrown during startup or execution. - */ - @Override - public synchronized void start() { - if (zkServerThread == null) { - zkServerThread = new Thread(new ServerRunnable(), "ZooKeeper Server Starter"); - zkServerThread.setDaemon(daemon); - zkServerThread.start(); - } - } - - /** - * Shutdown the ZooKeeper server. - */ - @Override - public synchronized void stop() { - if (zkServerThread != null) { - // The shutdown method is protected...thus this hack to invoke it. - // This will log an exception on shutdown; see - // https://issues.apache.org/jira/browse/ZOOKEEPER-1873 for details. - try { - Method shutdown = ZooKeeperServerMain.class.getDeclaredMethod("shutdown"); - shutdown.setAccessible(true); - shutdown.invoke(zkServer); - } - - catch (Exception e) { - throw new RuntimeException(e); - } - - // It is expected that the thread will exit after - // the server is shutdown; this will block until - // the shutdown is complete. - try { - zkServerThread.join(5000); - zkServerThread = null; - } - catch (InterruptedException e) { - Thread.currentThread().interrupt(); - logger.warn("Interrupted while waiting for embedded ZooKeeper to exit"); - // abandoning zk thread - zkServerThread = null; - } - } - } - - /** - * Stop the server if running and invoke the callback when complete. - */ - @Override - public void stop(Runnable callback) { - stop(); - callback.run(); - } - - /** - * Provide an {@link ErrorHandler} to be invoked if an Exception is thrown from the ZooKeeper server thread. If none - * is provided, only error-level logging will occur. - * - * @param errorHandler the {@link ErrorHandler} to be invoked - */ - public void setErrorHandler(ErrorHandler errorHandler) { - this.errorHandler = errorHandler; - } - - /** - * Runnable implementation that starts the ZooKeeper server. - */ - private class ServerRunnable implements Runnable { - - @Override - public void run() { - try { - Properties properties = new Properties(); - File file = new File(System.getProperty("java.io.tmpdir") - + File.separator + UUID.randomUUID()); - file.deleteOnExit(); - properties.setProperty("dataDir", file.getAbsolutePath()); - properties.setProperty("clientPort", String.valueOf(clientPort)); - - QuorumPeerConfig quorumPeerConfig = new QuorumPeerConfig(); - quorumPeerConfig.parseProperties(properties); - - zkServer = new ZooKeeperServerMain(); - ServerConfig configuration = new ServerConfig(); - configuration.readFrom(quorumPeerConfig); - - zkServer.runFromConfig(configuration); - } - catch (Exception e) { - if (errorHandler != null) { - errorHandler.handleError(e); - } - else { - logger.error("Exception running embedded ZooKeeper", e); - } - } - } - } - -} \ No newline at end of file diff --git a/dubbo-samples-docker/src/main/resources/dubbo-docker-provider.xml b/dubbo-samples-docker/src/main/resources/dubbo-docker-provider.xml index f80bb6b..1e25e04 100644 --- a/dubbo-samples-docker/src/main/resources/dubbo-docker-provider.xml +++ b/dubbo-samples-docker/src/main/resources/dubbo-docker-provider.xml @@ -19,20 +19,20 @@ --> <beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dubbo="http://dubbo.apache.org/schema/dubbo" - xmlns="http://www.springframework.org/schema/beans" + xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd - http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd"> + http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> + <context:property-placeholder/> - <dubbo:application name="dubbo-docker-sample"/> + <dubbo:application name="dubbo-docker-provider"/> - <dubbo:registry client="curator" address="zookeeper://127.0.0.1:2181"/> + <dubbo:registry client="curator" address="zookeeper://${zookeeper.address:127.0.0.1}:2181"/> - <!-- 用dubbo协议在20880端口暴露服务 --> - <dubbo:protocol name="dubbo" port="20880" /> + <dubbo:protocol name="dubbo" port="20880"/> - <dubbo:provider delay="-1" /> + <dubbo:provider delay="-1"/> <dubbo:service interface="org.apache.dubbo.samples.docker.DemoService" ref="demoService"/> - <bean id="demoService" class="org.apache.dubbo.samples.docker.DemoServiceImpl" /> -</beans> \ No newline at end of file + <bean id="demoService" class="org.apache.dubbo.samples.docker.DemoServiceImpl"/> +</beans> diff --git a/dubbo-samples-docker/src/test/java/org/apache/dubbo/samples/docker/DubboDockerSampleApplicationTests.java b/dubbo-samples-docker/src/test/java/org/apache/dubbo/samples/docker/DemoServiceIT.java similarity index 71% rename from dubbo-samples-docker/src/test/java/org/apache/dubbo/samples/docker/DubboDockerSampleApplicationTests.java rename to dubbo-samples-docker/src/test/java/org/apache/dubbo/samples/docker/DemoServiceIT.java index fe44fa7..561f7e9 100644 --- a/dubbo-samples-docker/src/test/java/org/apache/dubbo/samples/docker/DubboDockerSampleApplicationTests.java +++ b/dubbo-samples-docker/src/test/java/org/apache/dubbo/samples/docker/DemoServiceIT.java @@ -19,17 +19,24 @@ package org.apache.dubbo.samples.docker; +import org.junit.Assert; import org.junit.Test; import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringRunner; @RunWith(SpringRunner.class) @SpringBootTest -public class DubboDockerSampleApplicationTests { +@ContextConfiguration(locations = {"classpath:/dubbo-docker-consumer.xml"}) +public class DemoServiceIT { + @Autowired + private DemoService demoService; - @Test - public void contextLoads() { - } + @Test + public void test() throws Exception { + Assert.assertEquals("Hello dubbo from docker", demoService.hello("dubbo")); + } } diff --git a/dubbo-samples-docker/src/test/resources/dubbo-docker-consumer.xml b/dubbo-samples-docker/src/test/resources/dubbo-docker-consumer.xml new file mode 100644 index 0000000..e3e2bbf --- /dev/null +++ b/dubbo-samples-docker/src/test/resources/dubbo-docker-consumer.xml @@ -0,0 +1,30 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + ~ 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. + --> +<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xmlns:dubbo="http://dubbo.apache.org/schema/dubbo" + xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" + xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd + http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> + <context:property-placeholder/> + + <dubbo:application name="dubbo-docker-consumer"/> + + <dubbo:registry address="zookeeper://${zookeeper.address:127.0.0.1}:2181"/> + + <dubbo:reference id="demoService" interface="org.apache.dubbo.samples.docker.DemoService"/> +</beans> --------------------------------------------------------------------- To unsubscribe, e-mail: notifications-unsubscr...@dubbo.apache.org For additional commands, e-mail: notifications-h...@dubbo.apache.org