You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dubbo.apache.org by zh...@apache.org on 2021/09/04 15:58:11 UTC

[dubbo-go-samples] 06/08: Tst: Add parameterless call test for generic invocation (#197)

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

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

commit b6b7f39d9468885bcc7690ed27f8df385b38ef4c
Author: XavierNiu <a...@nxw.name>
AuthorDate: Wed Aug 18 21:31:24 2021 +0800

    Tst: Add parameterless call test for generic invocation (#197)
    
    * add new test for generic invocation
    
    * update dubbo-go version
    
    * update go.mod
    
    * update go.mod
    
    * fix conversion bug
    
    * fix typo
    
    * fix conversion bugs
    
    * generic invocation sample for call without params
    
    * go fmt
    
    * remove useless type
    
    * use hessian.Object
---
 generic/default/go-client/cmd/client.go              | 20 ++++++++++++++++++++
 generic/default/go-server/pkg/user.go                |  9 +++++++++
 .../go-server/tests/integration/userprovider_test.go | 18 ++++++++++++++++++
 3 files changed, 47 insertions(+)

diff --git a/generic/default/go-client/cmd/client.go b/generic/default/go-client/cmd/client.go
index 7af8c21..8cbf7b4 100644
--- a/generic/default/go-client/cmd/client.go
+++ b/generic/default/go-client/cmd/client.go
@@ -67,6 +67,9 @@ func main() {
 	callQueryUser()
 	gxlog.CInfo("\n\ncall queryUsers")
 	callQueryUsers()
+	gxlog.CInfo("\n\ncall callGetOneUser")
+	callGetOneUser()
+
 	initSignal()
 }
 
@@ -170,3 +173,20 @@ func callQueryUsers() {
 	gxlog.CInfo("res: %+v\n", resp)
 	gxlog.CInfo("success!")
 }
+
+func callGetOneUser() {
+	gxlog.CInfo("\n\n\nstart to generic invoke")
+	resp, err := referenceConfig.GetRPCService().(*config.GenericService).Invoke(
+		context.TODO(),
+		[]interface{}{
+			"GetOneUser",
+			[]hessian.Object{},
+			[]hessian.Object{},
+		},
+	)
+	if err != nil {
+		panic(err)
+	}
+	gxlog.CInfo("res: %+v\n", resp)
+	gxlog.CInfo("success!")
+}
diff --git a/generic/default/go-server/pkg/user.go b/generic/default/go-server/pkg/user.go
index 26e3c5c..88cdc43 100644
--- a/generic/default/go-server/pkg/user.go
+++ b/generic/default/go-server/pkg/user.go
@@ -71,6 +71,15 @@ func (u *UserProvider) QueryUsers(_ context.Context, users []*User) (*UserRespon
 	}, nil
 }
 
+func (u *UserProvider) GetOneUser(_ context.Context) (*User, error) {
+	return &User{
+		ID:   "1000",
+		Name: "xavierniu",
+		Age:  24,
+		Time: time.Now(),
+	}, nil
+}
+
 func (u *UserProvider) MethodMapper() map[string]string {
 	return map[string]string{
 		"QueryUser": "queryUser",
diff --git a/generic/default/go-server/tests/integration/userprovider_test.go b/generic/default/go-server/tests/integration/userprovider_test.go
index 58c8a29..0a67352 100644
--- a/generic/default/go-server/tests/integration/userprovider_test.go
+++ b/generic/default/go-server/tests/integration/userprovider_test.go
@@ -110,3 +110,21 @@ func TestQueryUsers(t *testing.T) {
 	assert.Equal(t, int32(24), users[1].(map[interface{}]interface{})["age"])
 	assert.Equal(t, "3212", users[1].(map[interface{}]interface{})["iD"])
 }
+
+func TestGetOneUser(t *testing.T) {
+	o, err := referenceConfig.GetRPCService().(*config.GenericService).Invoke(
+		context.TODO(),
+		[]interface{}{
+			"GetOneUser",
+			[]hessian.Object{},
+			[]hessian.Object{},
+		},
+	)
+
+	assert.Nil(t, err)
+	resp, ok := o.(map[interface{}]interface{})
+	assert.True(t, ok)
+	assert.Equal(t, "xavierniu", resp["name"])
+	assert.Equal(t, int32(24), resp["age"])
+	assert.Equal(t, "1000", resp["iD"])
+}