diff --git a/usergw-service/pom.xml b/usergw-service/pom.xml index ce71062..83b8ba4 100644 --- a/usergw-service/pom.xml +++ b/usergw-service/pom.xml @@ -52,18 +52,18 @@ org.springframework.cloud spring-cloud-starter-gateway - + org.yaml snakeyaml - 1.21 + 1.21 - + - com.alibaba - fastjson - 1.2.58 - + com.alibaba + fastjson + 1.2.58 + cn.ecpark.service @@ -91,7 +91,33 @@ maven-source-plugin + + + org.jacoco + jacoco-maven-plugin + 0.8.4 + + + + prepare-agent + + + + + report + test + + report + + + + + + + + + \ No newline at end of file diff --git a/usergw-service/src/main/java/cn/ecpark/service/usergw/biz/filters/factory/DubboGatewayFilterFactory.java b/usergw-service/src/main/java/cn/ecpark/service/usergw/biz/filters/factory/DubboGatewayFilterFactory.java index d72849c..5d914e1 100644 --- a/usergw-service/src/main/java/cn/ecpark/service/usergw/biz/filters/factory/DubboGatewayFilterFactory.java +++ b/usergw-service/src/main/java/cn/ecpark/service/usergw/biz/filters/factory/DubboGatewayFilterFactory.java @@ -12,7 +12,10 @@ import org.apache.dubbo.rpc.service.GenericService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.cloud.gateway.filter.GatewayFilter; import org.springframework.cloud.gateway.filter.factory.AbstractGatewayFilterFactory; +import org.springframework.cloud.gateway.filter.factory.SetStatusGatewayFilterFactory; import org.springframework.context.ApplicationContext; +import org.springframework.core.Ordered; +import org.springframework.core.annotation.Order; import org.springframework.http.HttpHeaders; import org.springframework.http.server.reactive.ServerHttpRequest; import org.springframework.http.server.reactive.ServerHttpResponse; @@ -65,7 +68,7 @@ public class DubboGatewayFilterFactory extends AbstractGatewayFilterFactory reference = new ReferenceConfig(); reference.setConnections(3); diff --git a/usergw-service/src/main/resources/test-gateway.yaml b/usergw-service/src/main/resources/test-gateway.yaml index 7e9c5b4..3ecb970 100644 --- a/usergw-service/src/main/resources/test-gateway.yaml +++ b/usergw-service/src/main/resources/test-gateway.yaml @@ -48,4 +48,5 @@ dubbo: version: 1.0.0 predicates: - Path=/dubbo/hello + \ No newline at end of file diff --git a/usergw-service/src/main/resources/test-gateway2.yaml b/usergw-service/src/main/resources/test-gateway2.yaml new file mode 100644 index 0000000..f0da5be --- /dev/null +++ b/usergw-service/src/main/resources/test-gateway2.yaml @@ -0,0 +1,63 @@ +default-filters: + - AddResponseHeader=X-Response-Default-Foo, Test-Default-Bar + +restful: + routes: + - id: path_route + uri: http://httpbin.org:80/* + order: 9 + predicates: + - Path=/get + - Header=XX, \d+ + + - id: path_route12; + uri: http://httpbin.org:80/* + order: 9 + predicates: + - Path=/get + - Header=XX, \d+ + + - id: path_route13 + uri: http://httpbin.org:80/* + order: 9 + predicates: + - Path=/get + - Header=XX, \d+ + # - id: redirect_to + # uri: http://localhost/test/** + # order: 11 + # filters: + # - RedirectTo=302, http://httpbin.org:80/get + +dubbo: + routes: + - id: test + order: 10 + application: dubbo-exchange + methods: # 如果没填就从 request拿 意味着所有接口都可以使用 + - name: Say + param-types: + - java.lang.String + group: test + interface: ocean.demo.api.IExchange + version: 1.0.0 + predicates: + - Path=/dubbo/hello + filters: + - SetRequestHeader=params, SetHeader + + - id: test2 + order: 0 + application: dubbo-exchange + methods: # 如果没填就从 request拿 意味着所有接口都可以使用 + - name: Hello + group: test + # registry: zookeeper://127.0.0.1:2181 + interface: ocean.demo.api.IExchange + version: 1.0.0 + predicates: + - Path=/dubbo/hello + filters: + - SetStatus=404 + + \ No newline at end of file diff --git a/usergw-service/src/test/java/cn/ecpark/service/usergw/utils/TestHttp2DubboConfig.java b/usergw-service/src/test/java/cn/ecpark/service/usergw/utils/TestHttp2DubboConfig.java index 0125faf..7d24681 100644 --- a/usergw-service/src/test/java/cn/ecpark/service/usergw/utils/TestHttp2DubboConfig.java +++ b/usergw-service/src/test/java/cn/ecpark/service/usergw/utils/TestHttp2DubboConfig.java @@ -20,7 +20,6 @@ import reactor.netty.http.client.HttpClientResponse; @SpringBootTest(classes= App.class, webEnvironment = WebEnvironment.RANDOM_PORT) @RunWith(SpringRunner.class) @TestPropertySource(locations = {"application.properties"}) - public class TestHttp2DubboConfig { @LocalServerPort diff --git a/usergw-service/src/test/java/cn/ecpark/service/usergw/utils/TestHttp2DubboConfig2.java b/usergw-service/src/test/java/cn/ecpark/service/usergw/utils/TestHttp2DubboConfig2.java new file mode 100644 index 0000000..6cc5996 --- /dev/null +++ b/usergw-service/src/test/java/cn/ecpark/service/usergw/utils/TestHttp2DubboConfig2.java @@ -0,0 +1,58 @@ +package cn.ecpark.service.usergw.utils; + +import org.junit.Assert; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.boot.test.context.SpringBootTest.WebEnvironment; +import org.springframework.boot.web.server.LocalServerPort; +import org.springframework.test.context.TestPropertySource; +import org.springframework.test.context.junit4.SpringRunner; + +import cn.ecpark.service.usergw.App; +import reactor.core.publisher.Mono; +import reactor.netty.http.client.HttpClient; +import reactor.netty.http.client.HttpClient.ResponseReceiver; +import reactor.netty.http.client.HttpClientResponse; + +// TODO: 添加附加Dubbo Service for Test启动进程 +@SpringBootTest(classes = App.class, webEnvironment = WebEnvironment.RANDOM_PORT) +@RunWith(SpringRunner.class) +@TestPropertySource(locations = { "application2.properties" }) +public class TestHttp2DubboConfig2 { + + @LocalServerPort + private int serverPort; + + @Test + public void Test2RequestHttp2DubboSetHeader() { + + // Test Base Url + HttpClient client = HttpClient.create(); + ResponseReceiver receiver; + String content; + // receiver = client.baseUrl("http://localhost:" + serverPort + "/dubbo/hello").headers( + // h -> h.set("method", "Say").add("param-types", "java.lang.String").add("params", "Test-MyHttp2dubbo")) + // .get(); + + // HttpClientResponse resp = receiver.response().block(); + // Assert.assertNotNull(resp); + + // content = receiver.responseContent().asString().blockLast(); + // Assert.assertEquals(resp.status().code(), 200); + // Assert.assertNotNull(content); + // Assert.assertEquals(content, "SetHeader"); + + receiver = client.baseUrl("http://localhost:" + serverPort + "/dubbo/hello") + .headers(h -> h.set("method", "Hello")).get(); + HttpClientResponse response = receiver.response().block(); + + Assert.assertNotNull(response); + Assert.assertEquals(response.status().code(), 404); + + content = receiver.responseContent().asString().blockLast(); + Assert.assertNull(content); + } + + +} \ No newline at end of file diff --git a/usergw-service/src/test/java/cn/ecpark/service/usergw/utils/TestYaml.java b/usergw-service/src/test/java/cn/ecpark/service/usergw/utils/TestYaml.java index 7fac6a2..4e4880b 100644 --- a/usergw-service/src/test/java/cn/ecpark/service/usergw/utils/TestYaml.java +++ b/usergw-service/src/test/java/cn/ecpark/service/usergw/utils/TestYaml.java @@ -8,10 +8,8 @@ import java.util.Map; import org.junit.Assert; import org.junit.Test; -import org.springframework.boot.test.context.TestComponent; import org.yaml.snakeyaml.Yaml; -@TestComponent public class TestYaml { @SuppressWarnings("unchecked") @Test diff --git a/usergw-service/src/test/java/cn/ecpark/service/usergw/utils/application2.properties b/usergw-service/src/test/java/cn/ecpark/service/usergw/utils/application2.properties new file mode 100644 index 0000000..592aa8c --- /dev/null +++ b/usergw-service/src/test/java/cn/ecpark/service/usergw/utils/application2.properties @@ -0,0 +1,15 @@ + +spring.application.name=gateway +dubbo.scan.base-packages=cn.ecpark.service.usergw.impl +dubbo.protocol.name=dubbo +dubbo.protocol.port=20999 +dubbo.registry.address=zookeeper://127.0.0.1:2181 +dubbo.config-center.address=zookeeper://127.0.0.1:2181 +dubbo.metadata-report.address=zookeeper://127.0.0.1:2181 +server.port=8888 + +# logging.level.org.springframework.cloud.gateway=debug +logging.file=logs/log + +yame.config=test-gateway2.yaml +