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 <[email protected]> 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>
