You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicecomb.apache.org by li...@apache.org on 2020/04/07 00:21:58 UTC

[servicecomb-java-chassis] 01/03: [SCB-1850]add demo-edge to integrations tests and run when build

This is an automated email from the ASF dual-hosted git repository.

liubao pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/servicecomb-java-chassis.git

commit 8aa86f3f81cb4a816c090f9cd319bc7e4ed50cd0
Author: liubao <bi...@qq.com>
AuthorDate: Fri Apr 3 09:44:18 2020 +0800

    [SCB-1850]add demo-edge to integrations tests and run when build
---
 demo/demo-edge/authentication/pom.xml              |  42 +++
 .../src/main/resources/microservice.yaml           |   3 +-
 demo/demo-edge/business-1-1-0/pom.xml              |  41 ++-
 demo/demo-edge/business-1.0.0/pom.xml              |  39 +++
 demo/demo-edge/business-2.0.0/pom.xml              |  41 ++-
 demo/demo-edge/consumer/pom.xml                    |  45 ++-
 .../servicecomb/demo/edge/consumer/EdgeDemoIT.java |  39 +++
 demo/demo-edge/edge-service/pom.xml                |  39 +++
 .../src/main/resources/microservice.yaml           |   5 +-
 demo/demo-edge/pom.xml                             |  14 +-
 demo/docker-build-config/pom.xml                   |   2 +-
 demo/docker-run-config-edge/pom.xml                | 333 +++++++++++++++++++++
 demo/pom.xml                                       |   1 +
 13 files changed, 625 insertions(+), 19 deletions(-)

diff --git a/demo/demo-edge/authentication/pom.xml b/demo/demo-edge/authentication/pom.xml
index b27a5ee..0844d8e 100644
--- a/demo/demo-edge/authentication/pom.xml
+++ b/demo/demo-edge/authentication/pom.xml
@@ -35,4 +35,46 @@
       <artifactId>transport-rest-vertx</artifactId>
     </dependency>
   </dependencies>
+  <properties>
+    <demo.main>org.apache.servicecomb.demo.edge.authentication.AuthMain</demo.main>
+  </properties>
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-dependency-plugin</artifactId>
+      </plugin>
+      <plugin>
+        <groupId>com.github.odavid.maven.plugins</groupId>
+        <artifactId>mixin-maven-plugin</artifactId>
+        <configuration>
+          <mixins>
+            <mixin>
+              <groupId>org.apache.servicecomb.demo</groupId>
+              <artifactId>docker-build-config</artifactId>
+              <version>${project.version}</version>
+            </mixin>
+          </mixins>
+        </configuration>
+      </plugin>
+    </plugins>
+  </build>
+
+  <profiles>
+    <profile>
+      <id>docker</id>
+      <build>
+        <plugins>
+          <plugin>
+            <groupId>io.fabric8</groupId>
+            <artifactId>docker-maven-plugin</artifactId>
+          </plugin>
+          <plugin>
+            <groupId>org.commonjava.maven.plugins</groupId>
+            <artifactId>directory-maven-plugin</artifactId>
+          </plugin>
+        </plugins>
+      </build>
+    </profile>
+  </profiles>
 </project>
diff --git a/demo/demo-edge/authentication/src/main/resources/microservice.yaml b/demo/demo-edge/authentication/src/main/resources/microservice.yaml
index 87e42bc..3c68147 100644
--- a/demo/demo-edge/authentication/src/main/resources/microservice.yaml
+++ b/demo/demo-edge/authentication/src/main/resources/microservice.yaml
@@ -26,4 +26,5 @@ servicecomb:
   rest:
     address: 127.0.0.1:7070
     server:
-      verticle-count: 10
+      # for test case run in one core machine
+      verticle-count: 1
diff --git a/demo/demo-edge/business-1-1-0/pom.xml b/demo/demo-edge/business-1-1-0/pom.xml
index 3700a68..312fa3c 100644
--- a/demo/demo-edge/business-1-1-0/pom.xml
+++ b/demo/demo-edge/business-1-1-0/pom.xml
@@ -45,7 +45,46 @@
     <dependency>
       <groupId>org.apache.servicecomb.demo</groupId>
       <artifactId>model</artifactId>
-      <version>2.0.2-SNAPSHOT</version>
+      <version>${project.version}</version>
     </dependency>
   </dependencies>
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-dependency-plugin</artifactId>
+      </plugin>
+      <plugin>
+        <groupId>com.github.odavid.maven.plugins</groupId>
+        <artifactId>mixin-maven-plugin</artifactId>
+        <configuration>
+          <mixins>
+            <mixin>
+              <groupId>org.apache.servicecomb.demo</groupId>
+              <artifactId>docker-build-config</artifactId>
+              <version>${project.version}</version>
+            </mixin>
+          </mixins>
+        </configuration>
+      </plugin>
+    </plugins>
+  </build>
+
+  <profiles>
+    <profile>
+      <id>docker</id>
+      <build>
+        <plugins>
+          <plugin>
+            <groupId>io.fabric8</groupId>
+            <artifactId>docker-maven-plugin</artifactId>
+          </plugin>
+          <plugin>
+            <groupId>org.commonjava.maven.plugins</groupId>
+            <artifactId>directory-maven-plugin</artifactId>
+          </plugin>
+        </plugins>
+      </build>
+    </profile>
+  </profiles>
 </project>
diff --git a/demo/demo-edge/business-1.0.0/pom.xml b/demo/demo-edge/business-1.0.0/pom.xml
index 1a25bae..f8b385f 100644
--- a/demo/demo-edge/business-1.0.0/pom.xml
+++ b/demo/demo-edge/business-1.0.0/pom.xml
@@ -50,4 +50,43 @@
       <version>${project.version}</version>
     </dependency>
   </dependencies>
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-dependency-plugin</artifactId>
+      </plugin>
+      <plugin>
+        <groupId>com.github.odavid.maven.plugins</groupId>
+        <artifactId>mixin-maven-plugin</artifactId>
+        <configuration>
+          <mixins>
+            <mixin>
+              <groupId>org.apache.servicecomb.demo</groupId>
+              <artifactId>docker-build-config</artifactId>
+              <version>${project.version}</version>
+            </mixin>
+          </mixins>
+        </configuration>
+      </plugin>
+    </plugins>
+  </build>
+
+  <profiles>
+    <profile>
+      <id>docker</id>
+      <build>
+        <plugins>
+          <plugin>
+            <groupId>io.fabric8</groupId>
+            <artifactId>docker-maven-plugin</artifactId>
+          </plugin>
+          <plugin>
+            <groupId>org.commonjava.maven.plugins</groupId>
+            <artifactId>directory-maven-plugin</artifactId>
+          </plugin>
+        </plugins>
+      </build>
+    </profile>
+  </profiles>
 </project>
diff --git a/demo/demo-edge/business-2.0.0/pom.xml b/demo/demo-edge/business-2.0.0/pom.xml
index dc49872..8281e10 100644
--- a/demo/demo-edge/business-2.0.0/pom.xml
+++ b/demo/demo-edge/business-2.0.0/pom.xml
@@ -47,7 +47,46 @@
     <dependency>
       <groupId>org.apache.servicecomb.demo</groupId>
       <artifactId>model</artifactId>
-      <version>2.0.2-SNAPSHOT</version>
+      <version>${project.version}</version>
     </dependency>
   </dependencies>
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-dependency-plugin</artifactId>
+      </plugin>
+      <plugin>
+        <groupId>com.github.odavid.maven.plugins</groupId>
+        <artifactId>mixin-maven-plugin</artifactId>
+        <configuration>
+          <mixins>
+            <mixin>
+              <groupId>org.apache.servicecomb.demo</groupId>
+              <artifactId>docker-build-config</artifactId>
+              <version>${project.version}</version>
+            </mixin>
+          </mixins>
+        </configuration>
+      </plugin>
+    </plugins>
+  </build>
+
+  <profiles>
+    <profile>
+      <id>docker</id>
+      <build>
+        <plugins>
+          <plugin>
+            <groupId>io.fabric8</groupId>
+            <artifactId>docker-maven-plugin</artifactId>
+          </plugin>
+          <plugin>
+            <groupId>org.commonjava.maven.plugins</groupId>
+            <artifactId>directory-maven-plugin</artifactId>
+          </plugin>
+        </plugins>
+      </build>
+    </profile>
+  </profiles>
 </project>
diff --git a/demo/demo-edge/consumer/pom.xml b/demo/demo-edge/consumer/pom.xml
index df2d2b6..b40fb89 100644
--- a/demo/demo-edge/consumer/pom.xml
+++ b/demo/demo-edge/consumer/pom.xml
@@ -50,8 +50,51 @@
     </dependency>
     <dependency>
       <groupId>org.apache.servicecomb.demo</groupId>
+      <artifactId>demo-schema</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.servicecomb.demo</groupId>
       <artifactId>model</artifactId>
-      <version>2.0.2-SNAPSHOT</version>
+      <version>${project.version}</version>
     </dependency>
   </dependencies>
+  <build>
+    <plugins>
+      <!-- Because other demos depend on this module, if add classpath, the depended module will fail dual to spring configuration files duplication.
+         So, we remove maven-dependency-plugin to make all integration tests run. In your applications, still need to add this to make packaged jar files run.
+       -->
+      <!--
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-dependency-plugin</artifactId>
+      </plugin>
+      -->
+      <plugin>
+        <groupId>com.github.odavid.maven.plugins</groupId>
+        <artifactId>mixin-maven-plugin</artifactId>
+        <configuration>
+          <mixins>
+            <mixin>
+              <groupId>org.apache.servicecomb.demo</groupId>
+              <artifactId>docker-run-config-edge</artifactId>
+              <version>${project.version}</version>
+            </mixin>
+          </mixins>
+        </configuration>
+      </plugin>
+    </plugins>
+  </build>
+  <profiles>
+    <profile>
+      <id>docker</id>
+      <build>
+        <plugins>
+          <plugin>
+            <groupId>io.fabric8</groupId>
+            <artifactId>docker-maven-plugin</artifactId>
+          </plugin>
+        </plugins>
+      </build>
+    </profile>
+  </profiles>
 </project>
diff --git a/demo/demo-edge/consumer/src/test/java/org/apache/servicecomb/demo/edge/consumer/EdgeDemoIT.java b/demo/demo-edge/consumer/src/test/java/org/apache/servicecomb/demo/edge/consumer/EdgeDemoIT.java
new file mode 100644
index 0000000..f5f161f
--- /dev/null
+++ b/demo/demo-edge/consumer/src/test/java/org/apache/servicecomb/demo/edge/consumer/EdgeDemoIT.java
@@ -0,0 +1,39 @@
+/*
+ * 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.servicecomb.demo.edge.consumer;
+
+import static org.hamcrest.core.Is.is;
+import static org.junit.Assert.assertThat;
+
+import org.apache.servicecomb.demo.TestMgr;
+import org.junit.Before;
+import org.junit.Test;
+
+public class EdgeDemoIT {
+  @Before
+  public void setUp() {
+    TestMgr.errors().clear();
+  }
+
+  @Test
+  public void clientGetsNoError() throws Exception {
+    ConsumerMain.main(new String[0]);
+
+    assertThat(TestMgr.errors().isEmpty(), is(true));
+  }
+}
diff --git a/demo/demo-edge/edge-service/pom.xml b/demo/demo-edge/edge-service/pom.xml
index 9f6b99a..836a3b0 100644
--- a/demo/demo-edge/edge-service/pom.xml
+++ b/demo/demo-edge/edge-service/pom.xml
@@ -44,4 +44,43 @@
       <artifactId>provider-pojo</artifactId>
     </dependency>
   </dependencies>
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-dependency-plugin</artifactId>
+      </plugin>
+      <plugin>
+        <groupId>com.github.odavid.maven.plugins</groupId>
+        <artifactId>mixin-maven-plugin</artifactId>
+        <configuration>
+          <mixins>
+            <mixin>
+              <groupId>org.apache.servicecomb.demo</groupId>
+              <artifactId>docker-build-config</artifactId>
+              <version>${project.version}</version>
+            </mixin>
+          </mixins>
+        </configuration>
+      </plugin>
+    </plugins>
+  </build>
+
+  <profiles>
+    <profile>
+      <id>docker</id>
+      <build>
+        <plugins>
+          <plugin>
+            <groupId>io.fabric8</groupId>
+            <artifactId>docker-maven-plugin</artifactId>
+          </plugin>
+          <plugin>
+            <groupId>org.commonjava.maven.plugins</groupId>
+            <artifactId>directory-maven-plugin</artifactId>
+          </plugin>
+        </plugins>
+      </build>
+    </profile>
+  </profiles>
 </project>
diff --git a/demo/demo-edge/edge-service/src/main/resources/microservice.yaml b/demo/demo-edge/edge-service/src/main/resources/microservice.yaml
index f4f2489..cd575cb 100644
--- a/demo/demo-edge/edge-service/src/main/resources/microservice.yaml
+++ b/demo/demo-edge/edge-service/src/main/resources/microservice.yaml
@@ -26,9 +26,10 @@ servicecomb:
   rest:
     address: 127.0.0.1:18080
     server:
-      verticle-count: 8
+      # for test case run in one core machine
+      verticle-count: 1
     client:
-      verticle-count: 8
+      verticle-count: 1
   handler:
     chain:
       Consumer:
diff --git a/demo/demo-edge/pom.xml b/demo/demo-edge/pom.xml
index 3dd60ef..99ba17c 100644
--- a/demo/demo-edge/pom.xml
+++ b/demo/demo-edge/pom.xml
@@ -40,23 +40,13 @@
   </dependencies>
 
   <modules>
-    <module>edge-service</module>
-
-
     <module>model</module>
-    <module>consumer</module>
+    <module>edge-service</module>
     <module>business-1.0.0</module>
     <module>business-1-1-0</module>
     <module>business-2.0.0</module>
     <module>authentication</module>
+    <module>consumer</module>
   </modules>
 
-  <build>
-    <plugins>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-dependency-plugin</artifactId>
-      </plugin>
-    </plugins>
-  </build>
 </project>
diff --git a/demo/docker-build-config/pom.xml b/demo/docker-build-config/pom.xml
index 99bc943..6e1c028 100644
--- a/demo/docker-build-config/pom.xml
+++ b/demo/docker-build-config/pom.xml
@@ -52,7 +52,7 @@
                     <descriptor>${root.basedir}/demo/assembly/assembly.xml</descriptor>
                   </assembly>
                   <entryPoint>
-                    <shell>java $JAVA_OPTS -jar $JAR_PATH</shell>
+                    <shell>java -Xmx64m $JAVA_OPTS -jar $JAR_PATH</shell>
                   </entryPoint>
                 </build>
               </image>
diff --git a/demo/docker-run-config-edge/pom.xml b/demo/docker-run-config-edge/pom.xml
new file mode 100644
index 0000000..d6ae1a5
--- /dev/null
+++ b/demo/docker-run-config-edge/pom.xml
@@ -0,0 +1,333 @@
+<?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.
+  -->
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <parent>
+    <artifactId>demo-parent</artifactId>
+    <groupId>org.apache.servicecomb.demo</groupId>
+    <version>2.0.2-SNAPSHOT</version>
+  </parent>
+  <modelVersion>4.0.0</modelVersion>
+
+  <artifactId>docker-run-config-edge</artifactId>
+  <name>Java Chassis::Demo::Docker Run Config</name>
+
+  <packaging>pom</packaging>
+
+  <build>
+    <pluginManagement>
+      <plugins>
+        <plugin>
+          <groupId>io.fabric8</groupId>
+          <artifactId>docker-maven-plugin</artifactId>
+          <configuration>
+            <images>
+              <image>
+                <name>servicecomb/service-center</name>
+                <alias>service-center</alias>
+                <run>
+                  <wait>
+                    <log>server is ready</log>
+                    <tcp>
+                      <ports>
+                        <port>30100</port>
+                      </ports>
+                    </tcp>
+                    <time>60000</time>
+                  </wait>
+                  <ports>
+                    <port>service.center.port:30100</port>
+                  </ports>
+                </run>
+              </image>
+              <image>
+                <name>authentication:${project.version}</name>
+                <alias>authentication</alias>
+                <run>
+                  <env>
+                    <JAVA_OPTS>
+                      -Dservicecomb.service.registry.address=http://sc.servicecomb.io:30100 -Dservicecomb.service.publishAddress=${docker.hostname}
+                    </JAVA_OPTS>
+                    <JAR_PATH>/maven/maven/authentication-${project.version}.jar</JAR_PATH>
+                  </env>
+                  <links>
+                    <link>service-center:sc.servicecomb.io</link>
+                  </links>
+                  <wait>
+                    <log>Register microservice instance success</log>
+                    <!--
+                        the log waiting of the plugin has a bug and fails frequently
+                        refer to https://github.com/fabric8io/docker-maven-plugin/issues/767
+                        this http checking is used as a temporary solution
+                    -->
+                    <tcp>
+                      <ports>
+                        <port>7070</port>
+                      </ports>
+                    </tcp>
+                    <time>120000</time>
+                  </wait>
+                  <ports>
+                    <port>7070:7070</port>
+                  </ports>
+                  <dependsOn>
+                    <container>service-center</container>
+                  </dependsOn>
+                </run>
+              </image>
+              <image>
+                <name>business-1-0-0:${project.version}</name>
+                <alias>business-1-0-0</alias>
+                <run>
+                  <env>
+                    <JAVA_OPTS>
+                      -Dservicecomb.service.registry.address=http://sc.servicecomb.io:30100 -Dservicecomb.service.publishAddress=${docker.hostname}
+                    </JAVA_OPTS>
+                    <JAR_PATH>/maven/maven/business-1-0-0-${project.version}.jar</JAR_PATH>
+                  </env>
+                  <links>
+                    <link>service-center:sc.servicecomb.io</link>
+                  </links>
+                  <wait>
+                    <log>Register microservice instance success</log>
+                    <!--
+                        the log waiting of the plugin has a bug and fails frequently
+                        refer to https://github.com/fabric8io/docker-maven-plugin/issues/767
+                        this http checking is used as a temporary solution
+                    -->
+                    <tcp>
+                      <ports>
+                        <port>8080</port>
+                      </ports>
+                    </tcp>
+                    <time>120000</time>
+                  </wait>
+                  <ports>
+                    <port>8080:8080</port>
+                  </ports>
+                  <dependsOn>
+                    <container>service-center</container>
+                  </dependsOn>
+                </run>
+              </image>
+              <image>
+                <name>business-1-1-0:${project.version}</name>
+                <alias>business-1-1-0</alias>
+                <run>
+                  <env>
+                    <JAVA_OPTS>
+                      -Dservicecomb.service.registry.address=http://sc.servicecomb.io:30100 -Dservicecomb.service.publishAddress=${docker.hostname}
+                    </JAVA_OPTS>
+                    <JAR_PATH>/maven/maven/business-1-1-0-${project.version}.jar</JAR_PATH>
+                  </env>
+                  <links>
+                    <link>service-center:sc.servicecomb.io</link>
+                  </links>
+                  <wait>
+                    <log>Register microservice instance success</log>
+                    <!--
+                        the log waiting of the plugin has a bug and fails frequently
+                        refer to https://github.com/fabric8io/docker-maven-plugin/issues/767
+                        this http checking is used as a temporary solution
+                    -->
+                    <tcp>
+                      <ports>
+                        <port>8090</port>
+                      </ports>
+                    </tcp>
+                    <time>120000</time>
+                  </wait>
+                  <ports>
+                    <port>8090:8090</port>
+                  </ports>
+                  <dependsOn>
+                    <container>service-center</container>
+                  </dependsOn>
+                </run>
+              </image>
+              <image>
+                <name>business-2-0-0:${project.version}</name>
+                <alias>business-2-0-0</alias>
+                <run>
+                  <env>
+                    <JAVA_OPTS>
+                      -Dservicecomb.service.registry.address=http://sc.servicecomb.io:30100 -Dservicecomb.service.publishAddress=${docker.hostname}
+                    </JAVA_OPTS>
+                    <JAR_PATH>/maven/maven/business-2-0-0-${project.version}.jar</JAR_PATH>
+                  </env>
+                  <links>
+                    <link>service-center:sc.servicecomb.io</link>
+                  </links>
+                  <wait>
+                    <log>Register microservice instance success</log>
+                    <!--
+                        the log waiting of the plugin has a bug and fails frequently
+                        refer to https://github.com/fabric8io/docker-maven-plugin/issues/767
+                        this http checking is used as a temporary solution
+                    -->
+                    <tcp>
+                      <ports>
+                        <port>8091</port>
+                      </ports>
+                    </tcp>
+                    <time>120000</time>
+                  </wait>
+                  <ports>
+                    <port>8091:8091</port>
+                  </ports>
+                  <dependsOn>
+                    <container>service-center</container>
+                  </dependsOn>
+                </run>
+              </image>
+              <image>
+                <name>edge-service:${project.version}</name>
+                <alias>edge-service</alias>
+                <run>
+                  <env>
+                    <JAVA_OPTS>
+                      -Dservicecomb.service.registry.address=http://sc.servicecomb.io:30100 -Dservicecomb.service.publishAddress=${docker.hostname}
+                    </JAVA_OPTS>
+                    <JAR_PATH>/maven/maven/edge-service-${project.version}.jar</JAR_PATH>
+                  </env>
+                  <links>
+                    <link>service-center:sc.servicecomb.io</link>
+                  </links>
+                  <wait>
+                    <log>Register microservice instance success</log>
+                    <!--
+                        the log waiting of the plugin has a bug and fails frequently
+                        refer to https://github.com/fabric8io/docker-maven-plugin/issues/767
+                        this http checking is used as a temporary solution
+                    -->
+                    <tcp>
+                      <ports>
+                        <port>18080</port>
+                      </ports>
+                    </tcp>
+                    <time>120000</time>
+                  </wait>
+                  <ports>
+                    <port>18080:18080</port>
+                  </ports>
+                  <dependsOn>
+                    <container>service-center</container>
+                  </dependsOn>
+                </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>
+      </plugins>
+    </pluginManagement>
+  </build>
+
+  <profiles>
+    <profile>
+      <id>docker</id>
+      <build>
+        <plugins>
+          <plugin>
+            <groupId>org.codehaus.gmaven</groupId>
+            <artifactId>gmaven-plugin</artifactId>
+            <executions>
+              <execution>
+                <id>add-default-properties</id>
+                <phase>initialize</phase>
+                <goals>
+                  <goal>execute</goal>
+                </goals>
+                <configuration>
+                  <source>
+                    project.properties.setProperty('docker.hostname', 'localhost')
+                    log.info("Docker hostname is " + project.properties['docker.hostname'])
+                  </source>
+                </configuration>
+              </execution>
+            </executions>
+          </plugin>
+          <plugin>
+            <groupId>org.apache.maven.plugins</groupId>
+            <artifactId>maven-failsafe-plugin</artifactId>
+            <version>2.19.1</version>
+            <configuration>
+              <systemPropertyVariables>
+                <servicecomb.service.registry.address>http://${docker.hostname}:${service.center.port}</servicecomb.service.registry.address>
+              </systemPropertyVariables>
+              <argLine>${jacoco.failsafe.argLine}</argLine>
+            </configuration>
+            <executions>
+              <execution>
+                <goals>
+                  <goal>integration-test</goal>
+                  <goal>verify</goal>
+                </goals>
+              </execution>
+            </executions>
+          </plugin>
+        </plugins>
+      </build>
+    </profile>
+    <profile>
+      <id>docker-machine</id>
+      <build>
+        <plugins>
+          <plugin>
+            <groupId>org.codehaus.gmaven</groupId>
+            <artifactId>gmaven-plugin</artifactId>
+            <executions>
+              <execution>
+                <id>add-dynamic-properties</id>
+                <phase>prepare-package</phase>
+                <goals>
+                  <goal>execute</goal>
+                </goals>
+                <configuration>
+                  <source>
+                    def process = "docker-machine ip default".execute()
+                    process.waitFor()
+                    project.properties.setProperty('docker.hostname', process.in.text.trim())
+
+                    log.info("Docker hostname is " + project.properties['docker.hostname'])
+                  </source>
+                </configuration>
+              </execution>
+            </executions>
+          </plugin>
+        </plugins>
+      </build>
+    </profile>
+  </profiles>
+</project>
diff --git a/demo/pom.xml b/demo/pom.xml
index 2125eb4..431ea88 100644
--- a/demo/pom.xml
+++ b/demo/pom.xml
@@ -33,6 +33,7 @@
   <modules>
     <module>docker-build-config</module>
     <module>docker-run-config</module>
+    <module>docker-run-config-edge</module>
     <module>demo-schema</module>
     <module>demo-pojo</module>
     <module>demo-jaxrs</module>