You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dubbo.apache.org by al...@apache.org on 2021/06/15 02:30:00 UTC
[dubbo-go-samples] branch 3.0 updated: Tst: add router to
integration and fix hessian2 sample (#124)
This is an automated email from the ASF dual-hosted git repository.
alexstocks pushed a commit to branch 3.0
in repository https://gitbox.apache.org/repos/asf/dubbo-go-samples.git
The following commit(s) were added to refs/heads/3.0 by this push:
new f7fa507 Tst: add router to integration and fix hessian2 sample (#124)
f7fa507 is described below
commit f7fa507a0aafc4962bef5c3ba5b9e2235a276731
Author: EnableAsync <43...@users.noreply.github.com>
AuthorDate: Tue Jun 15 10:29:52 2021 +0800
Tst: add router to integration and fix hessian2 sample (#124)
* Fix: fix general/dubbo3/hessian2/go-server and registry/nacos config
Fix: fix general-dubbo3-hessian2-go goland config
Fix: fix registry-nacos-go
* Tst: add router/uniform-router/file/go-server2
* Tst: add group and context
Co-authored-by: rai <rai>
---
.run/{ => general}/general-dubbo-go-client.run.xml | 0
.run/{ => general}/general-dubbo-go-server.run.xml | 0
.../general-dubbo3-hessian2-go-client.run.xml | 28 ++++++++++++++++++++++
.../general-dubbo3-hessian2-go-server.run.xml} | 10 ++++----
.run/{ => general}/general-rest-go-client.run.xml | 0
.run/{ => general}/general-rest-go-server.run.xml | 0
.run/group-go-client.run.xml | 2 +-
.run/group-go-server-group-a.run.xml | 2 +-
.run/group-go-server-group-b.run.xml | 2 +-
.../registry-nacos-go-client.run.xml} | 8 +++----
.run/registry/registry-nacos-go-server.run.xml | 15 ++++++++++++
build/Makefile | 6 +++++
docker/README_zh.md | 2 +-
general/dubbo3/hessian2/go-client/conf/client.yml | 2 +-
general/dubbo3/hessian2/go-client/pkg/hello.go | 2 +-
general/dubbo3/hessian2/go-server/conf/server.yml | 2 +-
general/dubbo3/hessian2/go-server/pkg/greeter.go | 2 +-
group/README.md | 5 +++-
group/README_zh.md | 5 +++-
group/go-server-group-a/conf/client.yml | 5 ++--
.../tests/integration/main_test.go | 12 +++++-----
.../tests/integration/userprovider_test.go | 4 ++--
group/go-server-group-b/conf/client.yml | 5 ++--
.../tests/integration/main_test.go | 12 +++++-----
.../tests/integration/userprovider_test.go | 5 ++--
integrate_test.sh | 2 +-
.../file/go-server/conf/dest_rule.yml | 11 +++++++++
.../file/go-server/conf/virtual_service.yml | 22 +++++++++++++++++
.../file/go-server/tests/integration/main_test.go | 3 +++
.../tests/integration/userprovider_test.go | 6 ++++-
.../file/go-server2/conf/dest_rule.yml | 11 +++++++++
.../file/go-server2/conf/virtual_service.yml | 22 +++++++++++++++++
.../file/go-server2/tests/integration/main_test.go | 3 +++
start_integrate_test.sh | 19 ++++++++++++++-
34 files changed, 192 insertions(+), 43 deletions(-)
diff --git a/.run/general-dubbo-go-client.run.xml b/.run/general/general-dubbo-go-client.run.xml
similarity index 100%
copy from .run/general-dubbo-go-client.run.xml
copy to .run/general/general-dubbo-go-client.run.xml
diff --git a/.run/general-dubbo-go-server.run.xml b/.run/general/general-dubbo-go-server.run.xml
similarity index 100%
copy from .run/general-dubbo-go-server.run.xml
copy to .run/general/general-dubbo-go-server.run.xml
diff --git a/.run/general/general-dubbo3-hessian2-go-client.run.xml b/.run/general/general-dubbo3-hessian2-go-client.run.xml
new file mode 100644
index 0000000..72e0626
--- /dev/null
+++ b/.run/general/general-dubbo3-hessian2-go-client.run.xml
@@ -0,0 +1,28 @@
+<component name="ProjectRunConfigurationManager">
+ <configuration default="false" name="general-dubbo3-hessian2-go-client" type="GoApplicationRunConfiguration" factoryName="Go Application" folderName="general">
+ <module name="dubbo-go-samples" />
+ <working_directory value="$PROJECT_DIR$" />
+ <envs>
+ <env name="CONF_CONSUMER_FILE_PATH" value="$PROJECT_DIR$/general/dubbo3/hessian2/go-client/conf/client.yml" />
+ <env name="APP_LOG_CONF_FILE" value="$PROJECT_DIR$/general/general/dubbo3/hessian2/go-client/conf/log.yml" />
+ </envs>
+ <kind value="PACKAGE" />
+ <filePath value="$PROJECT_DIR$/|$PROJECT_DIR$/general/dubbo3/hessian2/go-server/cmd" />
+ <package value="github.com/apache/dubbo-go-samples/general/dubbo3/hessian2/go-server/cmd" />
+ <directory value="$PROJECT_DIR$/" />
+ <method v="2" />
+ </configuration>
+ <configuration default="false" name="general-dubbo3-hessian2-go-client" type="GoApplicationRunConfiguration" factoryName="Go Application" folderName="general">
+ <module name="dubbo-go-samples" />
+ <working_directory value="$PROJECT_DIR$" />
+ <envs>
+ <env name="CONF_CONSUMER_FILE_PATH" value="$PROJECT_DIR$/general/dubbo3/hessian2/go-client/conf/client.yml" />
+ <env name="APP_LOG_CONF_FILE" value="$PROJECT_DIR$/general/general/dubbo3/hessian2/go-client/conf/log.yml" />
+ </envs>
+ <kind value="PACKAGE" />
+ <filePath value="$PROJECT_DIR$/|$PROJECT_DIR$/general/dubbo3/hessian2/go-client/cmd" />
+ <package value="github.com/apache/dubbo-go-samples/general/dubbo3/hessian2/go-client/cmd" />
+ <directory value="$PROJECT_DIR$/" />
+ <method v="2" />
+ </configuration>
+</component>
\ No newline at end of file
diff --git a/.run/general-dubbo-go-server.run.xml b/.run/general/general-dubbo3-hessian2-go-server.run.xml
similarity index 54%
rename from .run/general-dubbo-go-server.run.xml
rename to .run/general/general-dubbo3-hessian2-go-server.run.xml
index d464b91..e3a48d3 100644
--- a/.run/general-dubbo-go-server.run.xml
+++ b/.run/general/general-dubbo3-hessian2-go-server.run.xml
@@ -1,14 +1,14 @@
<component name="ProjectRunConfigurationManager">
- <configuration default="false" name="general-dubbo-go-server" type="GoApplicationRunConfiguration" factoryName="Go Application" folderName="general">
+ <configuration default="false" name="general-dubbo3-hessian2-go-server" type="GoApplicationRunConfiguration" factoryName="Go Application" folderName="general">
<module name="dubbo-go-samples" />
<working_directory value="$PROJECT_DIR$" />
<envs>
- <env name="APP_LOG_CONF_FILE" value="$PROJECT_DIR$/general/dubbo/go-server/conf/log.yml" />
- <env name="CONF_PROVIDER_FILE_PATH" value="$PROJECT_DIR$/general/dubbo/go-server/conf/server.yml" />
+ <env name="APP_LOG_CONF_FILE" value="$PROJECT_DIR$/general/dubbo3/hessian2/go-server/conf/log.yml" />
+ <env name="CONF_PROVIDER_FILE_PATH" value="$PROJECT_DIR$/general/dubbo3/hessian2/go-server/conf/server.yml" />
</envs>
<kind value="PACKAGE" />
- <filePath value="$PROJECT_DIR$/general/grpc/unary/go-server/app/server.go" />
- <package value="github.com/apache/dubbo-go-samples/general/dubbo/go-server/cmd" />
+ <filePath value="$PROJECT_DIR$/general/dubbo3/hessian2/go-server/cmd/server.go" />
+ <package value="github.com/apache/dubbo-go-samples/general/dubbo3/hessian2/go-server/cmd" />
<directory value="$PROJECT_DIR$" />
<method v="2" />
</configuration>
diff --git a/.run/general-rest-go-client.run.xml b/.run/general/general-rest-go-client.run.xml
similarity index 100%
rename from .run/general-rest-go-client.run.xml
rename to .run/general/general-rest-go-client.run.xml
diff --git a/.run/general-rest-go-server.run.xml b/.run/general/general-rest-go-server.run.xml
similarity index 100%
rename from .run/general-rest-go-server.run.xml
rename to .run/general/general-rest-go-server.run.xml
diff --git a/.run/group-go-client.run.xml b/.run/group-go-client.run.xml
index 917b7dd..5fdbcb5 100644
--- a/.run/group-go-client.run.xml
+++ b/.run/group-go-client.run.xml
@@ -1,5 +1,5 @@
<component name="ProjectRunConfigurationManager">
- <configuration default="false" name="group-go-client" type="GoApplicationRunConfiguration" factoryName="Go Application">
+ <configuration default="false" name="group-go-client" type="GoApplicationRunConfiguration" factoryName="Go Application" folderName="group">
<module name="dubbo-go-samples" />
<working_directory value="$PROJECT_DIR$" />
<envs>
diff --git a/.run/group-go-server-group-a.run.xml b/.run/group-go-server-group-a.run.xml
index 6bfb6ea..a26044b 100644
--- a/.run/group-go-server-group-a.run.xml
+++ b/.run/group-go-server-group-a.run.xml
@@ -1,5 +1,5 @@
<component name="ProjectRunConfigurationManager">
- <configuration default="false" name="group-go-server-group-a" type="GoApplicationRunConfiguration" factoryName="Go Application">
+ <configuration default="false" name="group-go-server-group-a" type="GoApplicationRunConfiguration" factoryName="Go Application" folderName="group">
<module name="dubbo-go-samples" />
<working_directory value="$PROJECT_DIR$" />
<envs>
diff --git a/.run/group-go-server-group-b.run.xml b/.run/group-go-server-group-b.run.xml
index 4bf2722..6d41199 100644
--- a/.run/group-go-server-group-b.run.xml
+++ b/.run/group-go-server-group-b.run.xml
@@ -1,5 +1,5 @@
<component name="ProjectRunConfigurationManager">
- <configuration default="false" name="group-go-server-group-b" type="GoApplicationRunConfiguration" factoryName="Go Application">
+ <configuration default="false" name="group-go-server-group-b" type="GoApplicationRunConfiguration" factoryName="Go Application" folderName="group">
<module name="dubbo-go-samples" />
<working_directory value="$PROJECT_DIR$" />
<envs>
diff --git a/.run/general-dubbo-go-client.run.xml b/.run/registry/registry-nacos-go-client.run.xml
similarity index 50%
rename from .run/general-dubbo-go-client.run.xml
rename to .run/registry/registry-nacos-go-client.run.xml
index e04219c..a3f4886 100644
--- a/.run/general-dubbo-go-client.run.xml
+++ b/.run/registry/registry-nacos-go-client.run.xml
@@ -1,14 +1,14 @@
<component name="ProjectRunConfigurationManager">
- <configuration default="false" name="general-dubbo-go-client" type="GoApplicationRunConfiguration" factoryName="Go Application" folderName="general">
+ <configuration default="false" name="registry-nacos-go-client" type="GoApplicationRunConfiguration" factoryName="Go Application" folderName="registry">
<module name="dubbo-go-samples" />
<working_directory value="$PROJECT_DIR$" />
<envs>
- <env name="CONF_CONSUMER_FILE_PATH" value="$PROJECT_DIR$/general/dubbo/go-client/conf/client.yml" />
- <env name="APP_LOG_CONF_FILE" value="$PROJECT_DIR$/general/general/dubbo/go-client/conf/log.yml" />
+ <env name="CONF_CONSUMER_FILE_PATH" value="$PROJECT_DIR$/registry/nacos/go-client/conf/client.yml" />
+ <env name="APP_LOG_CONF_FILE" value="$PROJECT_DIR$/general/registry/nacos/go-client/conf/log.yml" />
</envs>
<kind value="PACKAGE" />
<filePath value="$PROJECT_DIR$/general/grpc/unary/go-client/app/client.go" />
- <package value="github.com/apache/dubbo-go-samples/general/dubbo/go-client/cmd" />
+ <package value="github.com/apache/dubbo-go-samples/registry/nacos/go-client/cmd" />
<directory value="$PROJECT_DIR$" />
<method v="2" />
</configuration>
diff --git a/.run/registry/registry-nacos-go-server.run.xml b/.run/registry/registry-nacos-go-server.run.xml
new file mode 100644
index 0000000..80a04bf
--- /dev/null
+++ b/.run/registry/registry-nacos-go-server.run.xml
@@ -0,0 +1,15 @@
+<component name="ProjectRunConfigurationManager">
+ <configuration default="false" name="registry-nacos-go-server" type="GoApplicationRunConfiguration" factoryName="Go Application" folderName="registry">
+ <module name="dubbo-go-samples" />
+ <working_directory value="$PROJECT_DIR$" />
+ <envs>
+ <env name="APP_LOG_CONF_FILE" value="$PROJECT_DIR$/registry/nacos/go-server/conf/log.yml" />
+ <env name="CONF_PROVIDER_FILE_PATH" value="$PROJECT_DIR$/registry/nacos/go-server/conf/server.yml" />
+ </envs>
+ <kind value="PACKAGE" />
+ <filePath value="$PROJECT_DIR$/general/registry/nacos/go-server/cmd/server.go" />
+ <package value="github.com/apache/dubbo-go-samples/registry/nacos/go-server/cmd" />
+ <directory value="$PROJECT_DIR$" />
+ <method v="2" />
+ </configuration>
+</component>
\ No newline at end of file
diff --git a/build/Makefile b/build/Makefile
index 0d76a56..124ab7c 100644
--- a/build/Makefile
+++ b/build/Makefile
@@ -86,6 +86,8 @@ config:
@-test -f $(PROJECT_DIR)/conf/server.yml && cat $(PROJECT_DIR)/conf/server.yml | sed "s#\$$HOST_IP#$(DOCKER_HOST_IP)#g" > $(OUT_DIR)/conf/server.yml && echo " > $(OUT_DIR)/conf/server.yml"
@-test -f $(PROJECT_DIR)/conf/client.yml && cat $(PROJECT_DIR)/conf/client.yml | sed "s#\$$HOST_IP#$(DOCKER_HOST_IP)#g" > $(OUT_DIR)/conf/client.yml && echo " > $(OUT_DIR)/conf/client.yml"
@-test -f $(PROJECT_DIR)/conf/router_config.yml && cat $(PROJECT_DIR)/conf/router_config.yml | sed "s#\$$HOST_IP#$(DOCKER_HOST_IP)#g" > $(OUT_DIR)/conf/router_config.yml && echo " > $(OUT_DIR)/conf/router_config.yml"
+ @-test -f $(PROJECT_DIR)/conf/virtual_service.yml && cat $(PROJECT_DIR)/conf/virtual_service.yml | sed "s#\$$HOST_IP#$(DOCKER_HOST_IP)#g" > $(OUT_DIR)/conf/virtual_service.yml && echo " > $(OUT_DIR)/conf/virtual_service.yml"
+ @-test -f $(PROJECT_DIR)/conf/dest_rule.yml && cat $(PROJECT_DIR)/conf/dest_rule.yml | sed "s#\$$HOST_IP#$(DOCKER_HOST_IP)#g" > $(OUT_DIR)/conf/dest_rule.yml && echo " > $(OUT_DIR)/conf/dest_rule.yml"
## docker-health-check: check services health on docker
.PHONY: docker-health-check
@@ -130,6 +132,8 @@ print-server-log:
.PHONY: run
run: export CONF_CONSUMER_FILE_PATH ?= $(OUT_DIR)/conf/client.yml
run: export CONF_ROUTER_FILE_PATH ?= $(OUT_DIR)/conf/router_config.yml
+run: export CONF_DEST_RULE_FILE_PATH ?= $(OUT_DIR)/conf/dest_rule.yml
+run: export CONF_VIRTUAL_SERVICE_FILE_PATH ?= $(OUT_DIR)/conf/virtual_service.yml
run: build
$(info > Running application $(PROJECT_NAME), output is redirected to $(LOG_FILE))
@-$(OUT_DIR)/$(PROJECT_NAME)$(EXT_NAME) 2>&1 | tee $(LOG_FILE)
@@ -145,6 +149,8 @@ stop:
.PHONY: integration
integration: export CONF_CONSUMER_FILE_PATH ?= $(OUT_DIR)/conf/client.yml
integration: export CONF_ROUTER_FILE_PATH ?= $(OUT_DIR)/conf/router_config.yml
+integration: export CONF_DEST_RULE_FILE_PATH ?= $(OUT_DIR)/conf/dest_rule.yml
+integration: export CONF_VIRTUAL_SERVICE_FILE_PATH ?= $(OUT_DIR)/conf/virtual_service.yml
integration:
$(info > Running integration test for application $(PROJECT_NAME))
@go clean -testcache
diff --git a/docker/README_zh.md b/docker/README_zh.md
index 35bc4e5..54c1dbd 100644
--- a/docker/README_zh.md
+++ b/docker/README_zh.md
@@ -32,7 +32,7 @@ docker run -e DUBBO_IP_TO_REGISTRY=127.0.0.1 -p 20000:20000 --link zkserver:zk
- 首先开启了zookeeper docker,用于注册服务
-- 之后需要设置t ip_to_registry 环境变量. \
+- 之后需要设置 DUBBO_IP_TO_REGISTRY 环境变量. \
docker桥接网络模型需要明确指定主机ip用于网络通信。Dubbo框架在运行参数中提供了两个系统属性,能够指定Ip和port进行注册,然后其他服务通过注册好的信息访问当前服务。
diff --git a/general/dubbo3/hessian2/go-client/conf/client.yml b/general/dubbo3/hessian2/go-client/conf/client.yml
index 8f0ec72..c9761ef 100644
--- a/general/dubbo3/hessian2/go-client/conf/client.yml
+++ b/general/dubbo3/hessian2/go-client/conf/client.yml
@@ -29,4 +29,4 @@ references:
registry: "demoZk"
protocol: "tri"
serialization: "hessian2"
- interface: "com.apache.dubbo.sample.basic.IGreeter"
\ No newline at end of file
+ interface: "org.apache.dubbo.UserProvider"
\ No newline at end of file
diff --git a/general/dubbo3/hessian2/go-client/pkg/hello.go b/general/dubbo3/hessian2/go-client/pkg/hello.go
index eac055e..742fa65 100644
--- a/general/dubbo3/hessian2/go-client/pkg/hello.go
+++ b/general/dubbo3/hessian2/go-client/pkg/hello.go
@@ -36,5 +36,5 @@ func (u *UserProvider) Reference() string {
}
func (User) JavaClassName() string {
- return "com.apache.dubbo.sample.basic.User"
+ return "org.apache.dubbo.User"
}
diff --git a/general/dubbo3/hessian2/go-server/conf/server.yml b/general/dubbo3/hessian2/go-server/conf/server.yml
index d00171d..efa157b 100644
--- a/general/dubbo3/hessian2/go-server/conf/server.yml
+++ b/general/dubbo3/hessian2/go-server/conf/server.yml
@@ -21,7 +21,7 @@ services:
registry: "demoZK"
protocol: "tri" # tri is dubbo-go3.0 protocol
serialization: "hessian2" # hessian is serialization type
- interface: "com.apache.dubbo.sample.basic.IGreeter"
+ interface: "org.apache.dubbo.UserProvider"
# protocol config
protocols:
diff --git a/general/dubbo3/hessian2/go-server/pkg/greeter.go b/general/dubbo3/hessian2/go-server/pkg/greeter.go
index 8e1f7f6..e6aef5e 100644
--- a/general/dubbo3/hessian2/go-server/pkg/greeter.go
+++ b/general/dubbo3/hessian2/go-server/pkg/greeter.go
@@ -53,5 +53,5 @@ func (u UserProvider) Reference() string {
}
func (u User) JavaClassName() string {
- return "com.apache.dubbo.sample.basic.User"
+ return "org.apache.dubbo.User"
}
diff --git a/group/README.md b/group/README.md
index a5c01d9..85ca7ec 100644
--- a/group/README.md
+++ b/group/README.md
@@ -30,4 +30,7 @@ references:
# ...
group: "GroupA"
# ...
-```
\ No newline at end of file
+```
+
+### 3. How to run the sample
+dubbo-go checks if all servers under consumer references are alive, so needs to start all types of group servers under consumer references
\ No newline at end of file
diff --git a/group/README_zh.md b/group/README_zh.md
index 3ce2ad4..c3ce7fb 100644
--- a/group/README_zh.md
+++ b/group/README_zh.md
@@ -30,4 +30,7 @@ references:
# ...
group: "GroupA"
# ...
-```
\ No newline at end of file
+```
+
+### 3. 使用说明
+dubbo-go 会检查消费者 references 下的所有服务器是否存活,需要启动消费者 references 下所有类型的 group 服务器
\ No newline at end of file
diff --git a/group/go-server-group-a/conf/client.yml b/group/go-server-group-a/conf/client.yml
index 11ae382..9f45019 100644
--- a/group/go-server-group-a/conf/client.yml
+++ b/group/go-server-group-a/conf/client.yml
@@ -9,7 +9,7 @@ connect_timeout: "3s"
# application config
application:
organization: "dubbo.io"
- name: "UserInfoTest"
+ name: "UserInfoClient"
module: "dubbo-go user-info client"
version: "0.0.1"
environment: "dev"
@@ -25,9 +25,10 @@ registries:
# reference config
references:
- "UserProvider":
+ "UserProviderGroupA":
registry: "demoZk"
protocol: "dubbo"
+ group: "GroupA"
interface: "org.apache.dubbo.UserProvider"
cluster: "failover"
methods:
diff --git a/group/go-server-group-a/tests/integration/main_test.go b/group/go-server-group-a/tests/integration/main_test.go
index 537f610..e4041f5 100644
--- a/group/go-server-group-a/tests/integration/main_test.go
+++ b/group/go-server-group-a/tests/integration/main_test.go
@@ -27,8 +27,8 @@ import (
)
import (
- hessian "github.com/apache/dubbo-go-hessian2"
"dubbo.apache.org/dubbo-go/v3/config"
+ hessian "github.com/apache/dubbo-go-hessian2"
_ "dubbo.apache.org/dubbo-go/v3/cluster/cluster_impl"
_ "dubbo.apache.org/dubbo-go/v3/cluster/loadbalance"
@@ -40,10 +40,10 @@ import (
_ "dubbo.apache.org/dubbo-go/v3/registry/zookeeper"
)
-var userProvider = new(UserProvider)
+var userProviderA = new(UserProviderGroupA)
func TestMain(m *testing.M) {
- config.SetConsumerService(userProvider)
+ config.SetConsumerService(userProviderA)
hessian.RegisterPOJO(&User{})
config.Load()
time.Sleep(3 * time.Second)
@@ -58,12 +58,12 @@ type User struct {
Time time.Time
}
-type UserProvider struct {
+type UserProviderGroupA struct {
GetUser func(ctx context.Context, req []interface{}, rsp *User) error
}
-func (u *UserProvider) Reference() string {
- return "UserProvider"
+func (u *UserProviderGroupA) Reference() string {
+ return "UserProviderGroupA"
}
func (User) JavaClassName() string {
diff --git a/group/go-server-group-a/tests/integration/userprovider_test.go b/group/go-server-group-a/tests/integration/userprovider_test.go
index dc29d9a..b0a1658 100644
--- a/group/go-server-group-a/tests/integration/userprovider_test.go
+++ b/group/go-server-group-a/tests/integration/userprovider_test.go
@@ -29,10 +29,10 @@ import (
func TestGetUser(t *testing.T) {
user := &User{}
- err := userProvider.GetUser(context.TODO(), []interface{}{"A001"}, user)
+ err := userProviderA.GetUser(context.TODO(), []interface{}{"A001"}, user)
assert.Nil(t, err)
assert.Equal(t, "A001", user.ID)
- assert.Equal(t, "Alex Stocks", user.Name)
+ assert.Equal(t, "Alex Stocks In Group A", user.Name)
assert.Equal(t, int32(18), user.Age)
assert.NotNil(t, user.Time)
}
diff --git a/group/go-server-group-b/conf/client.yml b/group/go-server-group-b/conf/client.yml
index 11ae382..c826213 100644
--- a/group/go-server-group-b/conf/client.yml
+++ b/group/go-server-group-b/conf/client.yml
@@ -9,7 +9,7 @@ connect_timeout: "3s"
# application config
application:
organization: "dubbo.io"
- name: "UserInfoTest"
+ name: "UserInfoClient"
module: "dubbo-go user-info client"
version: "0.0.1"
environment: "dev"
@@ -25,9 +25,10 @@ registries:
# reference config
references:
- "UserProvider":
+ "UserProviderGroupB":
registry: "demoZk"
protocol: "dubbo"
+ group: "GroupB"
interface: "org.apache.dubbo.UserProvider"
cluster: "failover"
methods:
diff --git a/group/go-server-group-b/tests/integration/main_test.go b/group/go-server-group-b/tests/integration/main_test.go
index 537f610..df3a5c6 100644
--- a/group/go-server-group-b/tests/integration/main_test.go
+++ b/group/go-server-group-b/tests/integration/main_test.go
@@ -27,8 +27,8 @@ import (
)
import (
- hessian "github.com/apache/dubbo-go-hessian2"
"dubbo.apache.org/dubbo-go/v3/config"
+ hessian "github.com/apache/dubbo-go-hessian2"
_ "dubbo.apache.org/dubbo-go/v3/cluster/cluster_impl"
_ "dubbo.apache.org/dubbo-go/v3/cluster/loadbalance"
@@ -40,10 +40,10 @@ import (
_ "dubbo.apache.org/dubbo-go/v3/registry/zookeeper"
)
-var userProvider = new(UserProvider)
+var userProviderB = new(UserProviderGroupB)
func TestMain(m *testing.M) {
- config.SetConsumerService(userProvider)
+ config.SetConsumerService(userProviderB)
hessian.RegisterPOJO(&User{})
config.Load()
time.Sleep(3 * time.Second)
@@ -58,12 +58,12 @@ type User struct {
Time time.Time
}
-type UserProvider struct {
+type UserProviderGroupB struct {
GetUser func(ctx context.Context, req []interface{}, rsp *User) error
}
-func (u *UserProvider) Reference() string {
- return "UserProvider"
+func (u *UserProviderGroupB) Reference() string {
+ return "UserProviderGroupB"
}
func (User) JavaClassName() string {
diff --git a/group/go-server-group-b/tests/integration/userprovider_test.go b/group/go-server-group-b/tests/integration/userprovider_test.go
index 7183e64..d9c06a1 100644
--- a/group/go-server-group-b/tests/integration/userprovider_test.go
+++ b/group/go-server-group-b/tests/integration/userprovider_test.go
@@ -23,17 +23,16 @@ import (
"context"
"testing"
)
-
import (
"github.com/stretchr/testify/assert"
)
func TestGetUser(t *testing.T) {
user := &User{}
- err := userProvider.GetUser(context.TODO(), []interface{}{"A001"}, user)
+ err := userProviderB.GetUser(context.TODO(), []interface{}{"A001"}, user)
assert.Nil(t, err)
assert.Equal(t, "A001", user.ID)
- assert.Equal(t, "Alex Stocks", user.Name)
+ assert.Equal(t, "Alex Stocks In Group B", user.Name)
assert.Equal(t, int32(18), user.Age)
assert.NotNil(t, user.Time)
}
diff --git a/integrate_test.sh b/integrate_test.sh
index 73e801b..8ae516c 100755
--- a/integrate_test.sh
+++ b/integrate_test.sh
@@ -15,7 +15,7 @@
# limitations under the License.
if [ -z "$1" ]; then
- echo 'Provide test directory please, like : ./integrate_test.sh $(pwd)/helloworld/go-server .'
+ echo "Provide test directory please, like : ./integrate_test.sh $(pwd)/helloworld/go-server ."
exit
fi
diff --git a/router/uniform-router/file/go-server/conf/dest_rule.yml b/router/uniform-router/file/go-server/conf/dest_rule.yml
new file mode 100644
index 0000000..4702fe5
--- /dev/null
+++ b/router/uniform-router/file/go-server/conf/dest_rule.yml
@@ -0,0 +1,11 @@
+apiVersion: service.dubbo.apache.org/v1alpha1
+kind: DestinationRule
+metadata: { name: demo-route }
+spec:
+ host: demo
+ subsets:
+ - name: all
+ labels: { ut: CENTER } # 服务端url存在 `ut:CENTER` 的键值参数
+ - name: center
+ labels: { ut: other } # 服务端url存在 `ut:other` 的键值参数
+ - name: other
\ No newline at end of file
diff --git a/router/uniform-router/file/go-server/conf/virtual_service.yml b/router/uniform-router/file/go-server/conf/virtual_service.yml
new file mode 100644
index 0000000..dbd687a
--- /dev/null
+++ b/router/uniform-router/file/go-server/conf/virtual_service.yml
@@ -0,0 +1,22 @@
+apiVersion: service.dubbo.apache.org/v1alpha1
+kind: VirtualService
+metadata: {name: demo-route}
+spec:
+ dubbo:
+ # 使用正则表达式匹配service名,只有个满足该service名的请求才能路由。
+ # 就此例子来说,不满足service名的请求会直接找不到provider
+ - services:
+ - { regex: org.apache.dubbo.UserProvider* }
+ routedetail:
+ # 匹配规则,如果(sourceLabel)客户端url满足存在参数 `trafficLabel: xxx` 的才能匹配成功
+ - match:
+ - sourceLabels: {trafficLabel: xxx}
+ name: other-condition
+ route: # 一旦匹配上述match规则,将选择dest_rule.yml里定义的名为other的子集
+ - destination: {host: demo, subset: other}
+ - name: center-match
+ # 没有match,兜底逻辑,一定会被匹配到。
+ route: # 将选择dest_rule.yml里定义的名为center的子集
+ - destination: {host: demo, subset: center}
+
+ hosts: [demo] # 匹配dest_rule.yml里面的host
diff --git a/router/uniform-router/file/go-server/tests/integration/main_test.go b/router/uniform-router/file/go-server/tests/integration/main_test.go
index a796532..77d9f57 100644
--- a/router/uniform-router/file/go-server/tests/integration/main_test.go
+++ b/router/uniform-router/file/go-server/tests/integration/main_test.go
@@ -24,6 +24,8 @@ import (
_ "dubbo.apache.org/dubbo-go/v3/cluster/cluster_impl"
_ "dubbo.apache.org/dubbo-go/v3/cluster/loadbalance"
+ "dubbo.apache.org/dubbo-go/v3/cluster/router/v3router"
+ "dubbo.apache.org/dubbo-go/v3/common/extension"
_ "dubbo.apache.org/dubbo-go/v3/common/proxy/proxy_factory"
"dubbo.apache.org/dubbo-go/v3/config"
_ "dubbo.apache.org/dubbo-go/v3/filter/filter_impl"
@@ -42,6 +44,7 @@ import (
var userProvider = new(UserProvider)
func TestMain(m *testing.M) {
+ extension.SetRouterFactory("uniform", v3router.NewUniformRouterFactory)
config.SetConsumerService(userProvider)
hessian.RegisterPOJO(&User{})
config.Load()
diff --git a/router/uniform-router/file/go-server/tests/integration/userprovider_test.go b/router/uniform-router/file/go-server/tests/integration/userprovider_test.go
index 5b455d5..09b09c3 100644
--- a/router/uniform-router/file/go-server/tests/integration/userprovider_test.go
+++ b/router/uniform-router/file/go-server/tests/integration/userprovider_test.go
@@ -30,5 +30,9 @@ import (
func TestGetUser(t *testing.T) {
user := &User{}
err := userProvider.GetUser(context.TODO(), []interface{}{"A001"}, user)
- assert.NotNil(t, err)
+ assert.Nil(t, err)
+ assert.Equal(t, "A001", user.Id)
+ assert.Equal(t, "Alex Stocks", user.Name)
+ assert.Equal(t, int32(18), user.Age)
+ assert.NotNil(t, user.Time)
}
diff --git a/router/uniform-router/file/go-server2/conf/dest_rule.yml b/router/uniform-router/file/go-server2/conf/dest_rule.yml
new file mode 100644
index 0000000..4702fe5
--- /dev/null
+++ b/router/uniform-router/file/go-server2/conf/dest_rule.yml
@@ -0,0 +1,11 @@
+apiVersion: service.dubbo.apache.org/v1alpha1
+kind: DestinationRule
+metadata: { name: demo-route }
+spec:
+ host: demo
+ subsets:
+ - name: all
+ labels: { ut: CENTER } # 服务端url存在 `ut:CENTER` 的键值参数
+ - name: center
+ labels: { ut: other } # 服务端url存在 `ut:other` 的键值参数
+ - name: other
\ No newline at end of file
diff --git a/router/uniform-router/file/go-server2/conf/virtual_service.yml b/router/uniform-router/file/go-server2/conf/virtual_service.yml
new file mode 100644
index 0000000..dbd687a
--- /dev/null
+++ b/router/uniform-router/file/go-server2/conf/virtual_service.yml
@@ -0,0 +1,22 @@
+apiVersion: service.dubbo.apache.org/v1alpha1
+kind: VirtualService
+metadata: {name: demo-route}
+spec:
+ dubbo:
+ # 使用正则表达式匹配service名,只有个满足该service名的请求才能路由。
+ # 就此例子来说,不满足service名的请求会直接找不到provider
+ - services:
+ - { regex: org.apache.dubbo.UserProvider* }
+ routedetail:
+ # 匹配规则,如果(sourceLabel)客户端url满足存在参数 `trafficLabel: xxx` 的才能匹配成功
+ - match:
+ - sourceLabels: {trafficLabel: xxx}
+ name: other-condition
+ route: # 一旦匹配上述match规则,将选择dest_rule.yml里定义的名为other的子集
+ - destination: {host: demo, subset: other}
+ - name: center-match
+ # 没有match,兜底逻辑,一定会被匹配到。
+ route: # 将选择dest_rule.yml里定义的名为center的子集
+ - destination: {host: demo, subset: center}
+
+ hosts: [demo] # 匹配dest_rule.yml里面的host
diff --git a/router/uniform-router/file/go-server2/tests/integration/main_test.go b/router/uniform-router/file/go-server2/tests/integration/main_test.go
index a796532..77d9f57 100644
--- a/router/uniform-router/file/go-server2/tests/integration/main_test.go
+++ b/router/uniform-router/file/go-server2/tests/integration/main_test.go
@@ -24,6 +24,8 @@ import (
_ "dubbo.apache.org/dubbo-go/v3/cluster/cluster_impl"
_ "dubbo.apache.org/dubbo-go/v3/cluster/loadbalance"
+ "dubbo.apache.org/dubbo-go/v3/cluster/router/v3router"
+ "dubbo.apache.org/dubbo-go/v3/common/extension"
_ "dubbo.apache.org/dubbo-go/v3/common/proxy/proxy_factory"
"dubbo.apache.org/dubbo-go/v3/config"
_ "dubbo.apache.org/dubbo-go/v3/filter/filter_impl"
@@ -42,6 +44,7 @@ import (
var userProvider = new(UserProvider)
func TestMain(m *testing.M) {
+ extension.SetRouterFactory("uniform", v3router.NewUniformRouterFactory)
config.SetConsumerService(userProvider)
hessian.RegisterPOJO(&User{})
config.Load()
diff --git a/start_integrate_test.sh b/start_integrate_test.sh
index 58a562b..a720d0d 100755
--- a/start_integrate_test.sh
+++ b/start_integrate_test.sh
@@ -22,6 +22,9 @@ array+=("configcenter/apollo/go-server")
array+=("configcenter/nacos/go-server")
array+=("configcenter/zookeeper/go-server")
+# context
+array+=("context/go-server")
+
# direct
array+=("direct/go-server")
@@ -30,12 +33,21 @@ array+=("filter/custom/go-server")
array+=("filter/tpslimit/go-server")
array+=("filter/sentinel/go-server")
+# general
array+=("general/dubbo/go-server")
+
+array+=("general/dubbo3/hessian2/go-server")
+array+=("general/grpc/go-server")
array+=("general/dubbo3/codec-extension/go-server")
array+=("general/dubbo3/msgpack/go-server")
+
array+=("generic/go-server")
+# group
+array+=("group/go-server-group-a")
+array+=("group/go-server-group-b")
+
# hello world
array+=("helloworld/go-server")
@@ -47,16 +59,21 @@ array+=("metric/go-server")
array+=("registry/zookeeper/go-server")
array+=("registry/etcd/go-server")
+array+=("registry/nacos/go-server")
# registry/servicediscovery/zookeeper
array+=("registry/servicediscovery/zookeeper/go-server")
array+=("registry/servicediscovery/nacos/go-server")
+# router
+array+=("router/uniform-router/file/go-server")
+array+=("router/uniform-router/file/go-server2")
+
for((i=0;i<${#array[*]};i++))
do
- ./integrate_test.sh ${array[i]}
+ ./integrate_test.sh "${array[i]}"
result=$?
if [ $result -gt 0 ]; then
exit $result