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/09/09 06:46:32 UTC

[dubbo-go-samples] branch config-enhance updated: config enhance rpc dubbo integrate test (#232)

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

alexstocks pushed a commit to branch config-enhance
in repository https://gitbox.apache.org/repos/asf/dubbo-go-samples.git


The following commit(s) were added to refs/heads/config-enhance by this push:
     new 021231d  config enhance rpc dubbo integrate test (#232)
021231d is described below

commit 021231dfe539e787a8c3c5d783891cea3ee0e3e9
Author: sunrui1225 <sr...@163.com>
AuthorDate: Thu Sep 9 14:46:26 2021 +0800

    config enhance rpc dubbo integrate test (#232)
    
    * config enhance rpc dubbo integrate test
    
    * config enhance rpc dubbo   use defined type instead of []interface{}
    
    * config enhance rpc dubbo integrate test update
    
    * update README.md
---
 README.md                                          |  2 +-
 README_zh.md                                       |  2 +-
 .../rpc/dubbo/tests/integration/main_test.go       | 12 ++--
 .../dubbo/tests/integration/userprovider_test.go   | 48 ++++++++-------
 rpc/dubbo/go-client/cmd/client.go                  | 26 ++++-----
 rpc/dubbo/go-client/pkg/user.go                    | 68 +++++++++++-----------
 rpc/dubbo/go-server/pkg/user.go                    | 10 ++--
 rpc/dubbo/go-server/pkg/user_provider.go           | 19 +++---
 start_integrate_test.sh                            |  2 +
 9 files changed, 90 insertions(+), 99 deletions(-)

diff --git a/README.md b/README.md
index e2c9bd7..16500ee 100644
--- a/README.md
+++ b/README.md
@@ -9,7 +9,7 @@
 * configcenter: uses of different config centers, including zookeeper, apollo and nacos at present.
 * direct: A direct invocation example.
 * filter: Some examples of different filter, including custom_filter and tpslimit
-* general: A general example
+* rpc: dubbo directory display dubbo protocol communication
 * generic: A generic invocation example
 * helloworld: A 101 example
 * multi_registry: A multi-registry example
diff --git a/README_zh.md b/README_zh.md
index 2106d2e..6b93199 100644
--- a/README_zh.md
+++ b/README_zh.md
@@ -9,7 +9,7 @@
 * configcenter: 使用不同的配置中心,目前支持三种:zookeeper、apollo、和 nacos
 * direct: 直连模式
 * filter: 使用和扩展不同的 filter,目前包含了 custom_filter 和 tpslimit
-* general: 通用例子,展示 zookeeper 注册中心的使用以及不同的配置项
+* rpc: dubbo下展示dubbo协议通信调用
 * generic: 泛化调用
 * helloworld: 入门例子
 * multi_registry: 多注册
diff --git a/integrate_test/rpc/dubbo/tests/integration/main_test.go b/integrate_test/rpc/dubbo/tests/integration/main_test.go
index 96ea76b..033bfdd 100644
--- a/integrate_test/rpc/dubbo/tests/integration/main_test.go
+++ b/integrate_test/rpc/dubbo/tests/integration/main_test.go
@@ -1,5 +1,3 @@
-// +build integration
-
 /*
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
@@ -119,12 +117,12 @@ func (User) JavaClassName() string {
 }
 
 type UserProvider struct {
-	GetUsers  func(req []interface{}) ([]interface{}, error)
-	GetErr    func(ctx context.Context, req []interface{}, rsp *User) error
-	GetUser   func(ctx context.Context, req []interface{}, rsp *User) error
+	GetUsers  func(req []string) ([]*User, error)
+	GetErr    func(ctx context.Context, req *User) (*User, error)
+	GetUser   func(ctx context.Context, req *User) (*User, error)
 	GetUser0  func(id string, name string) (User, error)
-	GetUser1  func(ctx context.Context, req []interface{}, rsp *User) error
-	GetUser2  func(ctx context.Context, req []interface{}, rsp *User) error `dubbo:"getUser"`
+	GetUser1  func(ctx context.Context, req *User) (*User, error)
+	GetUser2  func(ctx context.Context, req int32) (*User, error) `dubbo:"getUser"`
 	GetUser3  func() error
 	GetGender func(i int32) (Gender, error)
 	Echo      func(ctx context.Context, req interface{}) (interface{}, error) // Echo represent EchoFilter will be used
diff --git a/integrate_test/rpc/dubbo/tests/integration/userprovider_test.go b/integrate_test/rpc/dubbo/tests/integration/userprovider_test.go
index 3fe5d8d..0013006 100644
--- a/integrate_test/rpc/dubbo/tests/integration/userprovider_test.go
+++ b/integrate_test/rpc/dubbo/tests/integration/userprovider_test.go
@@ -1,5 +1,3 @@
-// +build integration
-
 /*
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
@@ -35,10 +33,11 @@ import (
 )
 
 func TestGetUserA000(t *testing.T) {
-	user := &User{}
-	err := userProvider.GetUser(context.TODO(), []interface{}{"A000"}, user)
+	reqUser := &User{}
+	reqUser.ID = "000"
+	user, err := userProvider.GetUser(context.TODO(), reqUser)
 	assert.Nil(t, err)
-	assert.Equal(t, "0", user.ID)
+	assert.Equal(t, "000", user.ID)
 	assert.Equal(t, "Alex Stocks", user.Name)
 	assert.Equal(t, int32(31), user.Age)
 	assert.Equal(t, Gender(pkg.MAN), user.Sex)
@@ -46,8 +45,9 @@ func TestGetUserA000(t *testing.T) {
 }
 
 func TestGetUserA001(t *testing.T) {
-	user := &User{}
-	err := userProvider.GetUser(context.TODO(), []interface{}{"A001"}, user)
+	reqUser := &User{}
+	reqUser.ID = "001"
+	user, err := userProvider.GetUser(context.TODO(), reqUser)
 	assert.Nil(t, err)
 	assert.Equal(t, "001", user.ID)
 	assert.Equal(t, "ZhangSheng", user.Name)
@@ -57,8 +57,9 @@ func TestGetUserA001(t *testing.T) {
 }
 
 func TestGetUserA002(t *testing.T) {
-	user := &User{}
-	err := userProvider.GetUser(context.TODO(), []interface{}{"A002"}, user)
+	reqUser := &User{}
+	reqUser.ID = "002"
+	user, err := userProvider.GetUser(context.TODO(), reqUser)
 	assert.Nil(t, err)
 	assert.Equal(t, "002", user.ID)
 	assert.Equal(t, "Lily", user.Name)
@@ -68,8 +69,9 @@ func TestGetUserA002(t *testing.T) {
 }
 
 func TestGetUserA003(t *testing.T) {
-	user := &User{}
-	err := userProvider.GetUser(context.TODO(), []interface{}{"A003"}, user)
+	reqUser := &User{}
+	reqUser.ID = "003"
+	user, err := userProvider.GetUser(context.TODO(), reqUser)
 	assert.Nil(t, err)
 	assert.Equal(t, "113", user.ID)
 	assert.Equal(t, "Moorse", user.Name)
@@ -79,37 +81,33 @@ func TestGetUserA003(t *testing.T) {
 }
 
 func TestGetUser0(t *testing.T) {
-	user, err := userProvider.GetUser0("A003", "Moorse")
+	user, err := userProvider.GetUser0("003", "Moorse")
 	assert.Nil(t, err)
 	assert.NotNil(t, user)
 
-	user, err = userProvider.GetUser0("A003", "MOORSE")
+	user, err = userProvider.GetUser0("003", "MOORSE")
 	assert.NotNil(t, err)
 }
 
 func TestGetUser2(t *testing.T) {
-	user := &User{}
-	err := userProvider.GetUser2(context.TODO(), []interface{}{int32(64)}, user)
+	user, err := userProvider.GetUser2(context.TODO(), int32(64))
 	assert.Nil(t, err)
 	assert.Equal(t, "64", user.ID)
 }
 
-func TestGetUser3(t *testing.T) {
-	err := userProvider.GetUser3()
-	assert.Nil(t, err)
-}
-
 func TestGetErr(t *testing.T) {
-	user := &User{}
-	err := userProvider.GetErr(context.TODO(), []interface{}{"A003"}, user)
+	reqUser := &User{}
+	reqUser.ID = "003"
+	_, err := userProvider.GetErr(context.TODO(), reqUser)
 	assert.IsType(t, &java_exception.Throwable{}, err)
 }
 
 func TestGetUsers(t *testing.T) {
-	users, err := userProvider.GetUsers([]interface{}{[]interface{}{"A002", "A003"}})
+	reqUsers := []string{"002", "003"}
+	users, err := userProvider.GetUsers(reqUsers)
 	assert.Nil(t, err)
-	assert.Equal(t, "Lily", users[0].(*User).Name)
-	assert.Equal(t, "Moorse", users[1].(*User).Name)
+	assert.Equal(t, "Lily", users[0].Name)
+	assert.Equal(t, "Moorse", users[1].Name)
 }
 
 func TestGetGender(t *testing.T) {
diff --git a/rpc/dubbo/go-client/cmd/client.go b/rpc/dubbo/go-client/cmd/client.go
index 95709b9..99ae57a 100644
--- a/rpc/dubbo/go-client/cmd/client.go
+++ b/rpc/dubbo/go-client/cmd/client.go
@@ -63,8 +63,9 @@ func test() {
 	logger.Info("res: %v\n", res)
 
 	logger.Info("\n\n\nstart to test dubbo")
-	user := &pkg.User{}
-	user, err = userProvider.GetUser(context.TODO(), []interface{}{"A003"})
+	reqUser := &pkg.User{}
+	reqUser.ID = "003"
+	user, err := userProvider.GetUser(context.TODO(), reqUser)
 	if err != nil {
 		panic(err)
 	}
@@ -79,14 +80,14 @@ func test() {
 	}
 
 	logger.Info("\n\n\nstart to test dubbo - GetUser0")
-	ret, err := userProvider.GetUser0("A003", "Moorse")
+	ret, err := userProvider.GetUser0("003", "Moorse")
 	if err != nil {
 		panic(err)
 	}
 	logger.Info("response result: %v", ret)
 
 	logger.Info("\n\n\nstart to test dubbo - GetUsers")
-	ret1, err := userProvider.GetUsers([]interface{}{[]interface{}{"A002", "A003"}})
+	ret1, err := userProvider.GetUsers([]string{"002", "003"})
 	if err != nil {
 		panic(err)
 	}
@@ -95,30 +96,23 @@ func test() {
 	logger.Info("\n\n\nstart to test dubbo - getUser")
 	user = &pkg.User{}
 	var i int32 = 1
-	user, err = userProvider.GetUser2(context.TODO(), []interface{}{i})
-	if err != nil {
-		panic(err)
-	}
-	logger.Info("response result: %v", user)
-
-	logger.Info("\n\n\nstart to test dubbo - getUser - overload")
-	user = &pkg.User{}
-	user, err = userProvider.GetUser2(context.TODO(), []interface{}{i, "overload"})
+	user, err = userProvider.GetUser2(context.TODO(), i)
 	if err != nil {
 		panic(err)
 	}
 	logger.Info("response result: %v", user)
 
 	logger.Info("\n\n\nstart to test dubbo - getErr")
-	user = &pkg.User{}
-	user, err = userProvider.GetErr(context.TODO(), []interface{}{"A003"})
+	reqUser.ID = "003"
+	user, err = userProvider.GetErr(context.TODO(), reqUser)
 	if err == nil {
 		panic("err is nil")
 	}
 	logger.Info("getErr - error: %v", err)
 
 	logger.Info("\n\n\nstart to test dubbo illegal method")
-	user, err = userProvider.GetUser1(context.TODO(), []interface{}{"A003"})
+	reqUser.ID = "003"
+	user, err = userProvider.GetUser1(context.TODO(), reqUser)
 	if err == nil {
 		panic("err is nil")
 	}
diff --git a/rpc/dubbo/go-client/pkg/user.go b/rpc/dubbo/go-client/pkg/user.go
index 12624ac..4405eaa 100644
--- a/rpc/dubbo/go-client/pkg/user.go
+++ b/rpc/dubbo/go-client/pkg/user.go
@@ -88,16 +88,16 @@ func (User) JavaClassName() string {
 }
 
 type UserProvider struct {
-	GetUsers func(req []interface{}) ([]interface{}, error)
-	GetErr   func(ctx context.Context, req []interface{}) (*User, error)
+	GetUsers func(req []string) ([]*User, error)
+	GetErr   func(ctx context.Context, req *User) (*User, error)
 
-	GetUser func(ctx context.Context, req []interface{}) (*User, error)
+	GetUser func(ctx context.Context, req *User) (*User, error)
 
 	GetUserNew func(ctx context.Context, req1, req2 *User) (*User, error)
 
 	GetUser0  func(id string, name string) (User, error)
-	GetUser1  func(ctx context.Context, req []interface{}) (*User, error)
-	GetUser2  func(ctx context.Context, req []interface{}) (*User, error) `dubbo:"getUser"`
+	GetUser1  func(ctx context.Context, req *User) (*User, error)
+	GetUser2  func(ctx context.Context, req int32) (*User, error) `dubbo:"getUser"`
 	GetUser3  func() error
 	GetGender func(i int32) (Gender, error)
 	Echo      func(ctx context.Context, req interface{}) (interface{}, error) // Echo represent EchoFilter will be used
@@ -107,32 +107,32 @@ func (u *UserProvider) Reference() string {
 	return "UserProvider"
 }
 
-type UserProvider1 struct {
-	GetUsers func(req []interface{}) ([]interface{}, error)
-	GetErr   func(ctx context.Context, req []interface{}) (*User, error)
-	GetUser  func(ctx context.Context, req []interface{}) (*User, error)
-	GetUser0 func(id string, name string) (User, error)
-	GetUser1 func(ctx context.Context, req []interface{}) (*User, error)
-	GetUser2 func(ctx context.Context, req []interface{}) (*User, error) `dubbo:"getUser"`
-	GetUser3 func() error
-	Echo     func(ctx context.Context, req interface{}) (interface{}, error) // Echo represent EchoFilter will be used
-}
-
-func (u *UserProvider1) Reference() string {
-	return "UserProvider1"
-}
-
-type UserProvider2 struct {
-	GetUsers func(req []interface{}) ([]interface{}, error)
-	GetErr   func(ctx context.Context, req []interface{}) (*User, error)
-	GetUser  func(ctx context.Context, req []interface{}) (*User, error)
-	GetUser0 func(id string, name string) (User, error)
-	GetUser1 func(ctx context.Context, req []interface{}) (*User, error)
-	GetUser2 func(ctx context.Context, req []interface{}) (*User, error) `dubbo:"getUser"`
-	GetUser3 func() error
-	Echo     func(ctx context.Context, req interface{}) (interface{}, error) // Echo represent EchoFilter will be used
-}
-
-func (u *UserProvider2) Reference() string {
-	return "UserProvider2"
-}
+//type UserProvider1 struct {
+//	GetUsers func(req []interface{}) ([]interface{}, error)
+//	GetErr   func(ctx context.Context, req []interface{}) (*User, error)
+//	GetUser  func(ctx context.Context, req []interface{}) (*User, error)
+//	GetUser0 func(id string, name string) (User, error)
+//	GetUser1 func(ctx context.Context, req []interface{}) (*User, error)
+//	GetUser2 func(ctx context.Context, req []interface{}) (*User, error) `dubbo:"getUser"`
+//	GetUser3 func() error
+//	Echo     func(ctx context.Context, req interface{}) (interface{}, error) // Echo represent EchoFilter will be used
+//}
+//
+//func (u *UserProvider1) Reference() string {
+//	return "UserProvider1"
+//}
+//
+//type UserProvider2 struct {
+//	GetUsers func(req []interface{}) ([]interface{}, error)
+//	GetErr   func(ctx context.Context, req []interface{}) (*User, error)
+//	GetUser  func(ctx context.Context, req []interface{}) (*User, error)
+//	GetUser0 func(id string, name string) (User, error)
+//	GetUser1 func(ctx context.Context, req []interface{}) (*User, error)
+//	GetUser2 func(ctx context.Context, req []interface{}) (*User, error) `dubbo:"getUser"`
+//	GetUser3 func() error
+//	Echo     func(ctx context.Context, req interface{}) (interface{}, error) // Echo represent EchoFilter will be used
+//}
+//
+//func (u *UserProvider2) Reference() string {
+//	return "UserProvider2"
+//}
diff --git a/rpc/dubbo/go-server/pkg/user.go b/rpc/dubbo/go-server/pkg/user.go
index 06e6b2f..ef10b59 100644
--- a/rpc/dubbo/go-server/pkg/user.go
+++ b/rpc/dubbo/go-server/pkg/user.go
@@ -79,7 +79,7 @@ type (
 
 var (
 	DefaultUser = User{
-		ID: "0", Name: "Alex Stocks", Age: 31,
+		ID: "000", Name: "Alex Stocks", Age: 31,
 		Sex: Gender(MAN),
 	}
 
@@ -87,10 +87,10 @@ var (
 )
 
 func init() {
-	userMap["A000"] = DefaultUser
-	userMap["A001"] = User{ID: "001", Name: "ZhangSheng", Age: 18, Sex: Gender(MAN)}
-	userMap["A002"] = User{ID: "002", Name: "Lily", Age: 20, Sex: Gender(WOMAN)}
-	userMap["A003"] = User{ID: "113", Name: "Moorse", Age: 30, Sex: Gender(WOMAN)}
+	userMap["000"] = DefaultUser
+	userMap["001"] = User{ID: "001", Name: "ZhangSheng", Age: 18, Sex: Gender(MAN)}
+	userMap["002"] = User{ID: "002", Name: "Lily", Age: 20, Sex: Gender(WOMAN)}
+	userMap["003"] = User{ID: "113", Name: "Moorse", Age: 30, Sex: Gender(WOMAN)}
 	for k, v := range userMap {
 		v.Time = time.Now()
 		userMap[k] = v
diff --git a/rpc/dubbo/go-server/pkg/user_provider.go b/rpc/dubbo/go-server/pkg/user_provider.go
index f65a581..a3a8a48 100644
--- a/rpc/dubbo/go-server/pkg/user_provider.go
+++ b/rpc/dubbo/go-server/pkg/user_provider.go
@@ -49,14 +49,14 @@ func (u *UserProvider) getUser(userID string) (*User, error) {
 	return nil, fmt.Errorf("invalid user id:%s", userID)
 }
 
-func (u *UserProvider) GetUser(ctx context.Context, req []interface{}) (*User, error) {
+func (u *UserProvider) GetUser(ctx context.Context, req *User) (*User, error) {
 	var (
 		err  error
 		user *User
 	)
 
 	gxlog.CInfo("req:%#v", req)
-	user, err = u.getUser(req[0].(string))
+	user, err = u.getUser(req.ID)
 	if err == nil {
 		gxlog.CInfo("rsp:%#v", user)
 	}
@@ -77,12 +77,12 @@ func (u *UserProvider) GetUser0(id string, name string) (User, error) {
 	return *user, err
 }
 
-func (u *UserProvider) GetUser2(ctx context.Context, req []interface{}) (*User, error) {
+func (u *UserProvider) GetUser2(ctx context.Context, req int32) (*User, error) {
 	var err error
 
 	gxlog.CInfo("req:%#v", req)
 	user := &User{}
-	user.ID = strconv.Itoa(int(req[0].(int32)))
+	user.ID = strconv.Itoa(int(req))
 	return user, err
 }
 
@@ -90,27 +90,26 @@ func (u *UserProvider) GetUser3() error {
 	return nil
 }
 
-func (u *UserProvider) GetErr(ctx context.Context, req []interface{}) (*User, error) {
+func (u *UserProvider) GetErr(ctx context.Context, req *User) (*User, error) {
 	return nil, java_exception.NewThrowable("exception")
 }
 
-func (u *UserProvider) GetUsers(req []interface{}) ([]interface{}, error) {
+func (u *UserProvider) GetUsers(req []string) ([]*User, error) {
 	var err error
 
 	gxlog.CInfo("req:%s", req)
-	t := req[0].([]interface{})
-	user, err := u.getUser(t[0].(string))
+	user, err := u.getUser(req[0])
 	if err != nil {
 		return nil, err
 	}
 	gxlog.CInfo("user:%v", user)
-	user1, err := u.getUser(t[1].(string))
+	user1, err := u.getUser(req[1])
 	if err != nil {
 		return nil, err
 	}
 	gxlog.CInfo("user1:%v", user1)
 
-	return []interface{}{user, user1}, err
+	return []*User{user, user1}, err
 }
 
 func (s *UserProvider) GetGender(i int32) (hessian.JavaEnum, error) {
diff --git a/start_integrate_test.sh b/start_integrate_test.sh
index 6dec14f..f5d25dd 100755
--- a/start_integrate_test.sh
+++ b/start_integrate_test.sh
@@ -110,6 +110,8 @@ array+=("rpc/triple/codec-extension")
 array+=("rpc/triple/hessian2")
 array+=("rpc/triple/pb/dubbogo-grpc")
 array+=("rpc/grpc")
+# dubbo
+array+=("rpc/dubbo")
 
 
 DOCKER_DIR=$(pwd)/integrate_test/dockercompose