Commit d887f0b1 by Nepxion

重构测试用例

parent 2c9a1352
......@@ -279,21 +279,21 @@ spring-cloud-consul的2.0.0.RELEASE(目前最新的稳定版)支持consul-ap
图1
![Alt text](https://github.com/Nepxion/Docs/blob/master/discovery-plugin-doc/Version.jpg)
上述服务分别见discovery-springcloud-example-xx字样的3个工程,对应的版本,端口号如下表
上述服务分别见discovery-springcloud-example字样的6个DiscoveryApplication,分别对应各自的application.properties。这6个应用,对应的版本和端口号如下表
| 服务 | 服务端口 | 管理端口 | 版本 |
| --- | --- | --- | --- |
| A | 1100 | 8100 | 1.0 |
| B1 | 1200 | 8200 | 1.0 |
| B2 | 1201 | 8201 | 1.1 |
| C1 | 1300 | | 1.0 |
| C2 | 1301 | | 1.1 |
| C3 | 1302 | | 1.2 |
| A1 | 1100 | 5100 | 1.0 |
| B1 | 1200 | 5200 | 1.0 |
| B2 | 1201 | 5201 | 1.1 |
| C1 | 1300 | 5300 | 1.0 |
| C2 | 1301 | 5301 | 1.1 |
| C3 | 1302 | 5302 | 1.2 |
### 运行效果
黑/白名单的IP地址注册的过滤
```xml
1. 首先example-a或example-b在rule.xml把本地IP地址写入
1. 首先在rule.xml把本地IP地址写入
2. 启动Application
3. 抛出禁止注册的异常,即本机不会注册到服务注册发现中心
```
......@@ -305,10 +305,10 @@ spring-cloud-consul的2.0.0.RELEASE(目前最新的稳定版)支持consul-ap
3. 通过Postman或者浏览器,执行GET http://localhost:1200/instances/discovery-springcloud-example-c,查看当前B1服务可访问C服务的列表
4. 通过Postman或者浏览器,执行GET http://localhost:1201/instances/discovery-springcloud-example-c,查看当前B2服务可访问C服务的列表
5. 通过Postman或者浏览器,执行POST http://localhost:1100/routeAll/,填入discovery-springcloud-example-b;discovery-springcloud-example-c,可以看到路由全路径,如图2结果
6. 通过Postman或者浏览器,执行POST http://localhost:8200/admin/config,发送新的规则XML,那么在B1服务上将会运行新的规则,再运行上述步骤,查看服务列表
7. 通过Postman或者浏览器,执行POST http://localhost:8201/admin/config,发送同样的规则XML,那么在B1服务上将会运行新的规则,再运行上述步骤,查看服务列表
8. 通过Postman或者浏览器,执行GET http://localhost:8200/admin/view,查看当前在B1服务已经生效的规则
9. 通过Postman或者浏览器,执行GET http://localhost:8201/admin/view,查看当前在B2服务已经生效的规则
6. 通过Postman或者浏览器,执行POST http://localhost:5200/admin/config,发送新的规则XML,那么在B1服务上将会运行新的规则,再运行上述步骤,查看服务列表
7. 通过Postman或者浏览器,执行POST http://localhost:5201/admin/config,发送同样的规则XML,那么在B1服务上将会运行新的规则,再运行上述步骤,查看服务列表
8. 通过Postman或者浏览器,执行GET http://localhost:5200/admin/view,查看当前在B1服务已经生效的规则
9. 通过Postman或者浏览器,执行GET http://localhost:5201/admin/view,查看当前在B2服务已经生效的规则
10.再执行步骤5,可以看到路由全路径将发生变化
```
图2结果
......
<?xml version="1.0" encoding="UTF-8"?>
<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">
<groupId>com.nepxion</groupId>
<artifactId>discovery-springcloud-example-b</artifactId>
<name>Nepxion Discovery Spring Cloud Example B</name>
<packaging>jar</packaging>
<modelVersion>4.0.0</modelVersion>
<version>1.0.0</version>
<description>Nepxion Discovery is an enhancement for Spring Cloud Discovery</description>
<url>http://www.nepxion.com</url>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.6.RELEASE</version>
</parent>
<properties>
<spring.cloud.version>Dalston.SR5</spring.cloud.version>
<!-- <spring.cloud.version>Edgware.SR3</spring.cloud.version> -->
<discovery.plugin.version>3.0.0</discovery.plugin.version>
<java.version>1.8</java.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring.cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>com.nepxion</groupId>
<!-- <artifactId>discovery-plugin-starter-eureka</artifactId> -->
<artifactId>discovery-plugin-starter-consul</artifactId>
<!-- <artifactId>discovery-plugin-starter-zookeeper</artifactId> -->
<version>${discovery.plugin.version}</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<compilerArgs>
<arg>-parameters</arg>
</compilerArgs>
<encoding>${project.build.sourceEncoding}</encoding>
<source>${java.version}</source>
<target>${java.version}</target>
</configuration>
</plugin>
</plugins>
</build>
</project>
\ No newline at end of file
package com.nepxion.discovery.plugin.example.impl;
/**
* <p>Title: Nepxion Discovery</p>
* <p>Description: Nepxion Discovery</p>
* <p>Copyright: Copyright (c) 2017-2050</p>
* <p>Company: Nepxion</p>
* @author Haojun Ren
* @version 1.0
*/
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import org.apache.commons.io.FileUtils;
import com.nepxion.discovery.plugin.configcenter.ConfigAdapter;
public class DiscoveryConfigAdapter extends ConfigAdapter {
@Override
protected String getLocalContextPath() {
return "classpath:rule.xml";
}
@Override
public InputStream getRemoteInputStream() {
try {
return FileUtils.openInputStream(new File("src/main/resources/rule.xml"));
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
}
\ No newline at end of file
# Spring cloud config
spring.application.name=discovery-springcloud-example-b
# Eureka config
eureka.client.serviceUrl.defaultZone=http://localhost:9528/eureka/
eureka.instance.preferIpAddress=true
# Consul config
spring.cloud.consul.host=localhost
spring.cloud.consul.port=8500
# Zookeeper config
spring.cloud.zookeeper.connectString=localhost:2181
spring.cloud.zookeeper.discovery.root=/spring-cloud-service
# Admin config
management.security.enabled=false
management.health.consul.enabled=false
\ No newline at end of file
<!-- Logback configuration. See http://logback.qos.ch/manual/index.html -->
<configuration scan="true" scanPeriod="10 seconds">
<!-- Simple file output -->
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- encoder defaults to ch.qos.logback.classic.encoder.PatternLayoutEncoder -->
<encoder>
<pattern>discovery %date %level [%thread] %logger{10} [%file:%line] - %msg%n</pattern>
<charset>UTF-8</charset>
</encoder>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>log/discovery-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<maxFileSize>50MB</maxFileSize>
</rollingPolicy>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>INFO</level>
</filter>
<!-- Safely log to the same file from multiple JVMs. Degrades performance! -->
<prudent>true</prudent>
</appender>
<appender name ="FILE_ASYNC" class= "ch.qos.logback.classic.AsyncAppender">
<discardingThreshold>0</discardingThreshold>
<queueSize>512</queueSize>
<appender-ref ref ="FILE"/>
</appender>
<!-- Console output -->
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<!-- encoder defaults to ch.qos.logback.classic.encoder.PatternLayoutEncoder -->
<encoder>
<pattern>discovery %date %level [%thread] %logger{10} [%file:%line] - %msg%n</pattern>
<charset>UTF-8</charset>
</encoder>
<!-- Only log level WARN and above -->
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>INFO</level>
</filter>
</appender>
<!-- For loggers in the these namespaces, log at all levels. -->
<logger name="pedestal" level="ALL" />
<logger name="hammock-cafe" level="ALL" />
<logger name="user" level="ALL" />
<root level="INFO">
<!-- <appender-ref ref="FILE_ASYNC" /> -->
<appender-ref ref="STDOUT" />
</root>
</configuration>
<?xml version="1.0" encoding="UTF-8"?>
<rule>
<discovery>
<version>
<!-- 表示消费端服务a的1.0,允许访问提供端服务b的1.0和1.1版本 -->
<service consumer-service-name="discovery-springcloud-example-a" provider-service-name="discovery-springcloud-example-b" consumer-version-value="1.0" provider-version-value="1.0;1.1"/>
<!-- 表示消费端服务b的1.0,允许访问提供端服务c的1.0和1.1版本 -->
<service consumer-service-name="discovery-springcloud-example-b" provider-service-name="discovery-springcloud-example-c" consumer-version-value="1.0" provider-version-value="1.0;1.1"/>
<!-- 表示消费端服务b的1.1,允许访问提供端服务c的1.2版本 -->
<service consumer-service-name="discovery-springcloud-example-b" provider-service-name="discovery-springcloud-example-c" consumer-version-value="1.1" provider-version-value="1.2"/>
</version>
</discovery>
</rule>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<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">
<groupId>com.nepxion</groupId>
<artifactId>discovery-springcloud-example-c</artifactId>
<name>Nepxion Discovery Spring Cloud Example C</name>
<packaging>jar</packaging>
<modelVersion>4.0.0</modelVersion>
<version>1.0.0</version>
<description>Nepxion Discovery is an enhancement for Spring Cloud Discovery</description>
<url>http://www.nepxion.com</url>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.6.RELEASE</version>
</parent>
<properties>
<spring.cloud.version>Dalston.SR5</spring.cloud.version>
<!-- <spring.cloud.version>Edgware.SR3</spring.cloud.version> -->
<java.version>1.8</java.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring.cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<!-- Zookeeper discovery needs spring-boot-starter-web -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<!-- <artifactId>spring-cloud-starter-eureka</artifactId> -->
<artifactId>spring-cloud-starter-consul-all</artifactId>
<!-- <artifactId>spring-cloud-starter-zookeeper-discovery</artifactId> -->
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<compilerArgs>
<arg>-parameters</arg>
</compilerArgs>
<encoding>${project.build.sourceEncoding}</encoding>
<source>${java.version}</source>
<target>${java.version}</target>
</configuration>
</plugin>
</plugins>
</build>
</project>
\ No newline at end of file
# Spring cloud config
spring.application.name=discovery-springcloud-example-c
# Eureka config
eureka.client.serviceUrl.defaultZone=http://localhost:9528/eureka/
eureka.instance.preferIpAddress=true
# Consul config
spring.cloud.consul.host=localhost
spring.cloud.consul.port=8500
# Zookeeper config
spring.cloud.zookeeper.connectString=localhost:2181
spring.cloud.zookeeper.discovery.root=/spring-cloud-service
# Admin config
management.health.consul.enabled=false
\ No newline at end of file
<!-- Logback configuration. See http://logback.qos.ch/manual/index.html -->
<configuration scan="true" scanPeriod="10 seconds">
<!-- Simple file output -->
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- encoder defaults to ch.qos.logback.classic.encoder.PatternLayoutEncoder -->
<encoder>
<pattern>discovery %date %level [%thread] %logger{10} [%file:%line] - %msg%n</pattern>
<charset>UTF-8</charset>
</encoder>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>log/discovery-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<maxFileSize>50MB</maxFileSize>
</rollingPolicy>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>INFO</level>
</filter>
<!-- Safely log to the same file from multiple JVMs. Degrades performance! -->
<prudent>true</prudent>
</appender>
<appender name ="FILE_ASYNC" class= "ch.qos.logback.classic.AsyncAppender">
<discardingThreshold>0</discardingThreshold>
<queueSize>512</queueSize>
<appender-ref ref ="FILE"/>
</appender>
<!-- Console output -->
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<!-- encoder defaults to ch.qos.logback.classic.encoder.PatternLayoutEncoder -->
<encoder>
<pattern>discovery %date %level [%thread] %logger{10} [%file:%line] - %msg%n</pattern>
<charset>UTF-8</charset>
</encoder>
<!-- Only log level WARN and above -->
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>INFO</level>
</filter>
</appender>
<!-- For loggers in the these namespaces, log at all levels. -->
<logger name="pedestal" level="ALL" />
<logger name="hammock-cafe" level="ALL" />
<logger name="user" level="ALL" />
<root level="INFO">
<!-- <appender-ref ref="FILE_ASYNC" /> -->
<appender-ref ref="STDOUT" />
</root>
</configuration>
......@@ -2,8 +2,8 @@
<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">
<groupId>com.nepxion</groupId>
<artifactId>discovery-springcloud-example-a</artifactId>
<name>Nepxion Discovery Spring Cloud Example A</name>
<artifactId>discovery-springcloud-example</artifactId>
<name>Nepxion Discovery Spring Cloud Example</name>
<packaging>jar</packaging>
<modelVersion>4.0.0</modelVersion>
<version>1.0.0</version>
......
......@@ -20,9 +20,11 @@ import com.nepxion.discovery.plugin.example.impl.DiscoveryConfigAdapter;
@SpringBootApplication
@EnableDiscoveryClient
public class DiscoveryApplication {
public class DiscoveryApplicationA1 {
public static void main(String[] args) {
new SpringApplicationBuilder(DiscoveryApplication.class).web(true).run(args);
System.setProperty("spring.profiles.active", "a1");
new SpringApplicationBuilder(DiscoveryApplicationA1.class).web(true).run(args);
}
@Bean
......
......@@ -20,13 +20,13 @@ import com.nepxion.discovery.plugin.example.impl.DiscoveryConfigAdapter;
@EnableDiscoveryClient
public class DiscoveryApplicationB1 {
public static void main(String[] args) {
System.setProperty("spring.profiles.active", "1");
System.setProperty("spring.profiles.active", "b1");
new SpringApplicationBuilder(DiscoveryApplicationB1.class).web(true).run(args);
}
@Bean
public DiscoveryConfigAdapter discoveryConfigLoader() {
public DiscoveryConfigAdapter discoveryConfigAdapter() {
return new DiscoveryConfigAdapter();
}
}
\ No newline at end of file
......@@ -20,13 +20,13 @@ import com.nepxion.discovery.plugin.example.impl.DiscoveryConfigAdapter;
@EnableDiscoveryClient
public class DiscoveryApplicationB2 {
public static void main(String[] args) {
System.setProperty("spring.profiles.active", "2");
System.setProperty("spring.profiles.active", "b2");
new SpringApplicationBuilder(DiscoveryApplicationB2.class).web(true).run(args);
}
@Bean
public DiscoveryConfigAdapter discoveryConfigLoader() {
public DiscoveryConfigAdapter discoveryConfigAdapter() {
return new DiscoveryConfigAdapter();
}
}
\ No newline at end of file
......@@ -12,13 +12,21 @@ package com.nepxion.discovery.plugin.example;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.context.annotation.Bean;
import com.nepxion.discovery.plugin.example.impl.DiscoveryConfigAdapter;
@SpringBootApplication
@EnableDiscoveryClient
public class DiscoveryApplicationC1 {
public static void main(String[] args) {
System.setProperty("spring.profiles.active", "1");
System.setProperty("spring.profiles.active", "c1");
new SpringApplicationBuilder(DiscoveryApplicationC1.class).web(true).run(args);
}
@Bean
public DiscoveryConfigAdapter discoveryConfigAdapter() {
return new DiscoveryConfigAdapter();
}
}
\ No newline at end of file
......@@ -12,13 +12,21 @@ package com.nepxion.discovery.plugin.example;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.context.annotation.Bean;
import com.nepxion.discovery.plugin.example.impl.DiscoveryConfigAdapter;
@SpringBootApplication
@EnableDiscoveryClient
public class DiscoveryApplicationC2 {
public static void main(String[] args) {
System.setProperty("spring.profiles.active", "2");
System.setProperty("spring.profiles.active", "c2");
new SpringApplicationBuilder(DiscoveryApplicationC2.class).web(true).run(args);
}
@Bean
public DiscoveryConfigAdapter discoveryConfigAdapter() {
return new DiscoveryConfigAdapter();
}
}
\ No newline at end of file
......@@ -12,13 +12,21 @@ package com.nepxion.discovery.plugin.example;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.context.annotation.Bean;
import com.nepxion.discovery.plugin.example.impl.DiscoveryConfigAdapter;
@SpringBootApplication
@EnableDiscoveryClient
public class DiscoveryApplicationC3 {
public static void main(String[] args) {
System.setProperty("spring.profiles.active", "3");
System.setProperty("spring.profiles.active", "c3");
new SpringApplicationBuilder(DiscoveryApplicationC3.class).web(true).run(args);
}
@Bean
public DiscoveryConfigAdapter discoveryConfigAdapter() {
return new DiscoveryConfigAdapter();
}
}
\ No newline at end of file
# Spring cloud config
# Spring cloud config
spring.application.name=discovery-springcloud-example-a
server.port=1100
# Eureka config
......@@ -11,4 +12,4 @@ spring.cloud.consul.discovery.tags=version=1.0
spring.cloud.zookeeper.discovery.metadata.version=1.0
# Admin config
management.port=8100
\ No newline at end of file
management.port=5100
\ No newline at end of file
# Spring cloud config
spring.application.name=discovery-springcloud-example-b
server.port=1200
# Eureka config
......@@ -11,4 +12,4 @@ spring.cloud.consul.discovery.tags=version=1.0
spring.cloud.zookeeper.discovery.metadata.version=1.0
# Admin config
management.port=8200
\ No newline at end of file
management.port=5200
\ No newline at end of file
# Spring cloud config
spring.application.name=discovery-springcloud-example-b
server.port=1201
# Eureka config
......@@ -11,4 +12,4 @@ spring.cloud.consul.discovery.tags=version=1.1
spring.cloud.zookeeper.discovery.metadata.version=1.1
# Admin config
management.port=8201
\ No newline at end of file
management.port=5201
\ No newline at end of file
# Spring cloud config
spring.application.name=discovery-springcloud-example-c
server.port=1300
# Eureka config
......@@ -9,3 +10,6 @@ spring.cloud.consul.discovery.tags=version=1.0
# Zookeeper config
spring.cloud.zookeeper.discovery.metadata.version=1.0
# Admin config
management.port=5300
\ No newline at end of file
# Spring cloud config
spring.application.name=discovery-springcloud-example-c
server.port=1301
# Eureka config
......@@ -9,3 +10,6 @@ spring.cloud.consul.discovery.tags=version=1.1
# Zookeeper config
spring.cloud.zookeeper.discovery.metadata.version=1.1
# Admin config
management.port=5301
\ No newline at end of file
# Spring cloud config
spring.application.name=discovery-springcloud-example-c
server.port=1302
# Eureka config
......@@ -9,3 +10,6 @@ spring.cloud.consul.discovery.tags=version=1.2
# Zookeeper config
spring.cloud.zookeeper.discovery.metadata.version=1.2
# Admin config
management.port=5302
\ No newline at end of file
# Spring cloud config
spring.application.name=discovery-springcloud-example-a
# Eureka config
eureka.client.serviceUrl.defaultZone=http://localhost:9528/eureka/
......
......@@ -22,9 +22,7 @@
<module>discovery-plugin-starter-consul</module>
<module>discovery-plugin-starter-zookeeper</module>
<module>discovery-springcloud-example-eureka</module>
<module>discovery-springcloud-example-a</module>
<module>discovery-springcloud-example-b</module>
<module>discovery-springcloud-example-c</module>
<module>discovery-springcloud-example</module>
</modules>
<properties>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment