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/10 14:44:59 UTC
[dubbo-go-samples] branch config-enhance updated: Feat: Update
generic/default structure to support multiple protocols (#238)
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 d62fe3f Feat: Update generic/default structure to support multiple protocols (#238)
d62fe3f is described below
commit d62fe3fa323e960802f6b8558296ec247c2676db
Author: XavierNiu <a...@nxw.name>
AuthorDate: Fri Sep 10 22:43:38 2021 +0800
Feat: Update generic/default structure to support multiple protocols (#238)
* rft: generic invocation samples
* go fmt
* fix(generic): integrated tests support multiple protocols
* fix(codestyle): go fmt
* fix(license): add apache license
* fix(bash): update start_integrate_test.sh structure
* fix(codestyle): 3-block styles
Co-authored-by: niuxuewei.xavier <ni...@bytedance.com>
---
context/dubbo/go-client/cmd/client.go | 2 +
context/dubbo/go-server/cmd/server.go | 1 +
generic/default/go-client/cmd/client.go | 188 ++++++++++-----------
generic/default/go-client/conf/dubbogo.yml | 12 --
generic/default/go-server/conf/dubbogo.yml | 9 +-
generic/default/go-server/pkg/init.go | 32 ++++
generic/default/go-server/pkg/user.go | 140 +--------------
.../go-server/pkg/{user.go => user_provider.go} | 40 +----
.../pkg/{user.go => user_provider_triple.go} | 65 ++-----
generic/default/go-server/pkg/user_response.go | 26 +++
.../generic/default/tests/integration/main_test.go | 33 ++--
.../default/tests/integration/userprovider_test.go | 18 +-
rpc/grpc/protobuf/helloworld.pb.go | 10 +-
.../pb/dubbogo-grpc/protobuf/grpc/helloworld.pb.go | 8 +-
.../protobuf/grpc/helloworld_grpc.pb.go | 3 +
start_integrate_test.sh | 16 +-
16 files changed, 224 insertions(+), 379 deletions(-)
diff --git a/context/dubbo/go-client/cmd/client.go b/context/dubbo/go-client/cmd/client.go
index 3b2bacb..ede8b29 100644
--- a/context/dubbo/go-client/cmd/client.go
+++ b/context/dubbo/go-client/cmd/client.go
@@ -26,7 +26,9 @@ import (
"dubbo.apache.org/dubbo-go/v3/common/constant"
"dubbo.apache.org/dubbo-go/v3/config"
_ "dubbo.apache.org/dubbo-go/v3/imports"
+
hessian "github.com/apache/dubbo-go-hessian2"
+
"github.com/dubbogo/gost/log"
)
diff --git a/context/dubbo/go-server/cmd/server.go b/context/dubbo/go-server/cmd/server.go
index b251a95..9f1feaf 100644
--- a/context/dubbo/go-server/cmd/server.go
+++ b/context/dubbo/go-server/cmd/server.go
@@ -31,6 +31,7 @@ import (
"dubbo.apache.org/dubbo-go/v3/common/logger"
"dubbo.apache.org/dubbo-go/v3/config"
_ "dubbo.apache.org/dubbo-go/v3/imports"
+
hessian "github.com/apache/dubbo-go-hessian2"
gxlog "github.com/dubbogo/gost/log"
diff --git a/generic/default/go-client/cmd/client.go b/generic/default/go-client/cmd/client.go
index 1af7b8c..5c62f2b 100644
--- a/generic/default/go-client/cmd/client.go
+++ b/generic/default/go-client/cmd/client.go
@@ -46,73 +46,33 @@ import (
)
var (
- appName = "dubbo.io"
- referenceConfig config.ReferenceConfig
+ appName = "dubbo.io"
)
-func init() {
- registryConfig := &config.RegistryConfig{
- Protocol: "zookeeper",
- Address: "127.0.0.1:2181",
- }
-
- referenceConfig = config.ReferenceConfig{
- InterfaceName: "org.apache.dubbo.UserProvider",
- Cluster: "failover",
- Registry: []string{"zk"},
- Protocol: dubbo.DUBBO,
- Generic: "true",
- }
-
- rootConfig := config.NewRootConfig(config.WithRootRegistryConfig("zk", registryConfig))
- _ = rootConfig.Init()
- _ = referenceConfig.Init(rootConfig)
- referenceConfig.GenericLoad(appName)
-}
-
// export DUBBO_GO_CONFIG_PATH= PATH_TO_SAMPLES/generic/default/go-client/conf/dubbogo.yml
func main() {
+ // register POJOs
hessian.RegisterPOJO(&pkg.User{})
- callGetUser()
- //callGetOneUser()
- callGetUsers()
- callGetUsersMap()
- callQueryUser()
- callQueryUsers()
- //callQueryAll()
+ // generic invocation samples using hessian serialization on Dubbo protocol
+ dubboRefConf := newRefConf("org.apache.dubbo.samples.UserProvider", dubbo.DUBBO)
- initSignal()
-}
+ callGetUser(dubboRefConf)
+ //callGetOneUser(dubboRefConf)
+ callGetUsers(dubboRefConf)
+ callGetUsersMap(dubboRefConf)
+ callQueryUser(dubboRefConf)
+ callQueryUsers(dubboRefConf)
+ //callQueryAll(dubboRefConf)
-func initSignal() {
- signals := make(chan os.Signal, 1)
- // It is not possible to block SIGKILL or syscall.SIGSTOP
- signal.Notify(signals, os.Interrupt, os.Kill, syscall.SIGHUP,
- syscall.SIGQUIT, syscall.SIGTERM, syscall.SIGINT)
- for {
- sig := <-signals
- logger.Infof("get signal %s", sig.String())
- switch sig {
- case syscall.SIGHUP:
- // reload()
- default:
- time.AfterFunc(10*time.Second, func() {
- logger.Warnf("app exit now by force...")
- os.Exit(1)
- })
+ // generic invocation samples using hessian serialization on Triple protocol
+ //tripleRefConf := newRefConf("org.apache.dubbo.samples.UserProviderTriple", tpconst.TRIPLE)
- // The program exits normally or timeout forcibly exits.
- fmt.Println("app exit now...")
- return
- }
- }
+ initSignal()
}
-func callGetUser() {
- logger.Infof("Call GetUser")
- logger.Infof("Start to generic invoke")
- resp, err := referenceConfig.GetRPCService().(*generic.GenericService).Invoke(
+func callGetUser(refConf config.ReferenceConfig) {
+ resp, err := refConf.GetRPCService().(*generic.GenericService).Invoke(
context.TODO(),
[]interface{}{
"GetUser1",
@@ -123,9 +83,9 @@ func callGetUser() {
if err != nil {
panic(err)
}
- logger.Infof("\n\nGetUser1(userId string) res: %+v\n", resp)
+ logger.Infof("GetUser1(userId string) res: %+v", resp)
- resp, err = referenceConfig.GetRPCService().(*generic.GenericService).Invoke(
+ resp, err = refConf.GetRPCService().(*generic.GenericService).Invoke(
context.TODO(),
[]interface{}{
"GetUser2",
@@ -136,9 +96,9 @@ func callGetUser() {
if err != nil {
panic(err)
}
- logger.Infof("\n\nGetUser2(userId string, name string) res: %+v\n", resp)
+ logger.Infof("GetUser2(userId string, name string) res: %+v", resp)
- resp, err = referenceConfig.GetRPCService().(*generic.GenericService).Invoke(
+ resp, err = refConf.GetRPCService().(*generic.GenericService).Invoke(
context.TODO(),
[]interface{}{
"GetUser3",
@@ -149,9 +109,9 @@ func callGetUser() {
if err != nil {
panic(err)
}
- logger.Infof("\n\nGetUser3(userCode int) res: %+v\n", resp)
+ logger.Infof("GetUser3(userCode int) res: %+v", resp)
- resp, err = referenceConfig.GetRPCService().(*generic.GenericService).Invoke(
+ resp, err = refConf.GetRPCService().(*generic.GenericService).Invoke(
context.TODO(),
[]interface{}{
"GetUser4",
@@ -162,15 +122,11 @@ func callGetUser() {
if err != nil {
panic(err)
}
- logger.Infof("\n\nGetUser4(userCode int, name string) res: %+v\n", resp)
-
- logger.Infof("success!")
+ logger.Infof("GetUser4(userCode int, name string) res: %+v", resp)
}
-func callGetOneUser() {
- logger.Infof("Call GetOneUser")
- logger.Infof("Start to generic invoke")
- resp, err := referenceConfig.GetRPCService().(*generic.GenericService).Invoke(
+func callGetOneUser(refConf config.ReferenceConfig) {
+ resp, err := refConf.GetRPCService().(*generic.GenericService).Invoke(
context.TODO(),
[]interface{}{
"GetOneUser",
@@ -183,14 +139,11 @@ func callGetOneUser() {
if err != nil {
panic(err)
}
- logger.Infof("\n\nGetOneUser() res: %+v\n", resp)
- logger.Infof("success!")
+ logger.Infof("GetOneUser() res: %+v", resp)
}
-func callGetUsers() {
- logger.Infof("Call GetUsers")
- logger.Infof("Start to generic invoke")
- resp, err := referenceConfig.GetRPCService().(*generic.GenericService).Invoke(
+func callGetUsers(refConf config.ReferenceConfig) {
+ resp, err := refConf.GetRPCService().(*generic.GenericService).Invoke(
context.TODO(),
[]interface{}{
"GetUsers",
@@ -205,14 +158,11 @@ func callGetUsers() {
if err != nil {
panic(err)
}
- logger.Infof("\n\nGetUsers1(userIdList []*string) res: %+v\n", resp)
- logger.Infof("success!")
+ logger.Infof("GetUsers1(userIdList []*string) res: %+v", resp)
}
-func callGetUsersMap() {
- logger.Infof("Call GetUsersMap")
- logger.Infof("Start to generic invoke")
- resp, err := referenceConfig.GetRPCService().(*generic.GenericService).Invoke(
+func callGetUsersMap(refConf config.ReferenceConfig) {
+ resp, err := refConf.GetRPCService().(*generic.GenericService).Invoke(
context.TODO(),
[]interface{}{
"GetUsersMap",
@@ -227,14 +177,11 @@ func callGetUsersMap() {
if err != nil {
panic(err)
}
- logger.Infof("\n\nGetUserMap(userIdList []*string) res: %+v\n", resp)
- logger.Infof("success!")
+ logger.Infof("GetUserMap(userIdList []*string) res: %+v", resp)
}
-func callQueryUser() {
- logger.Infof("Call QueryUser")
- logger.Infof("Start to generic invoke")
- resp, err := referenceConfig.GetRPCService().(*generic.GenericService).Invoke(
+func callQueryUser(refConf config.ReferenceConfig) {
+ resp, err := refConf.GetRPCService().(*generic.GenericService).Invoke(
context.TODO(),
[]interface{}{
"queryUser",
@@ -258,14 +205,11 @@ func callQueryUser() {
if err != nil {
panic(err)
}
- logger.Infof("\n\nqueryUser(user *User) res: %+v\n", resp)
- logger.Infof("success!")
+ logger.Infof("queryUser(user *User) res: %+v", resp)
}
-func callQueryUsers() {
- logger.Infof("Call QueryUsers")
- logger.Infof("Start to generic invoke")
- var resp, err = referenceConfig.GetRPCService().(*generic.GenericService).Invoke(
+func callQueryUsers(refConf config.ReferenceConfig) {
+ var resp, err = refConf.GetRPCService().(*generic.GenericService).Invoke(
context.TODO(),
[]interface{}{
"queryUsers",
@@ -293,14 +237,11 @@ func callQueryUsers() {
if err != nil {
panic(err)
}
- logger.Infof("\n\nqueryUsers(users []*User) res: %+v\n", resp)
- logger.Infof("success!")
+ logger.Infof("queryUsers(users []*User) res: %+v", resp)
}
-func callQueryAll() {
- logger.Infof("Call queryAll")
- logger.Infof("Start to generic invoke")
- resp, err := referenceConfig.GetRPCService().(*generic.GenericService).Invoke(
+func callQueryAll(refConf config.ReferenceConfig) {
+ resp, err := refConf.GetRPCService().(*generic.GenericService).Invoke(
context.TODO(),
[]interface{}{
"queryAll",
@@ -313,6 +254,51 @@ func callQueryAll() {
if err != nil {
panic(err)
}
- logger.Infof("\n\nqueryAll() res: %+v\n", resp)
- logger.Infof("success!")
+ logger.Infof("queryAll() res: %+v", resp)
+}
+
+func newRefConf(iface, protocol string) config.ReferenceConfig {
+ registryConfig := &config.RegistryConfig{
+ Protocol: "zookeeper",
+ Address: "127.0.0.1:2181",
+ }
+
+ refConf := config.ReferenceConfig{
+ InterfaceName: iface,
+ Cluster: "failover",
+ Registry: []string{"zk"},
+ Protocol: protocol,
+ Generic: "true",
+ }
+
+ rootConfig := config.NewRootConfig(config.WithRootRegistryConfig("zk", registryConfig))
+ _ = rootConfig.Init()
+ _ = refConf.Init(rootConfig)
+ refConf.GenericLoad(appName)
+
+ return refConf
+}
+
+func initSignal() {
+ signals := make(chan os.Signal, 1)
+ // It is not possible to block SIGKILL or syscall.SIGSTOP
+ signal.Notify(signals, os.Interrupt, os.Kill, syscall.SIGHUP,
+ syscall.SIGQUIT, syscall.SIGTERM, syscall.SIGINT)
+ for {
+ sig := <-signals
+ logger.Infof("get signal %s", sig.String())
+ switch sig {
+ case syscall.SIGHUP:
+ // reload()
+ default:
+ time.AfterFunc(10*time.Second, func() {
+ logger.Warnf("app exit now by force...")
+ os.Exit(1)
+ })
+
+ // The program exits normally or timeout forcibly exits.
+ fmt.Println("app exit now...")
+ return
+ }
+ }
}
diff --git a/generic/default/go-client/conf/dubbogo.yml b/generic/default/go-client/conf/dubbogo.yml
deleted file mode 100644
index 771c75b..0000000
--- a/generic/default/go-client/conf/dubbogo.yml
+++ /dev/null
@@ -1,12 +0,0 @@
-dubbo:
- registries:
- zk:
- protocol: zookeeper
- timeout: 3s
- address: 127.0.0.1:2181
- consumer:
- registry: zk
- references:
- UserProvider:
- protocol: dubbo
- interface: org.apache.dubbo.UserProvider # must be compatible with grpc or dubbo-java
\ No newline at end of file
diff --git a/generic/default/go-server/conf/dubbogo.yml b/generic/default/go-server/conf/dubbogo.yml
index aa70d6a..9fb8757 100644
--- a/generic/default/go-server/conf/dubbogo.yml
+++ b/generic/default/go-server/conf/dubbogo.yml
@@ -8,9 +8,16 @@ dubbo:
dubbo:
name: dubbo
port: 20000
+ triple:
+ name: tri
+ port: 20001
provider:
registry: zk
services:
UserProvider:
protocol: dubbo
- interface: org.apache.dubbo.UserProvider
\ No newline at end of file
+ interface: org.apache.dubbo.samples.UserProvider
+ UserProviderTriple:
+ protocol: triple
+ serialization: hessian2
+ interface: org.apache.dubbo.samples.UserProviderTriple
\ No newline at end of file
diff --git a/generic/default/go-server/pkg/init.go b/generic/default/go-server/pkg/init.go
new file mode 100644
index 0000000..4287334
--- /dev/null
+++ b/generic/default/go-server/pkg/init.go
@@ -0,0 +1,32 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package pkg
+
+import (
+ "dubbo.apache.org/dubbo-go/v3/config"
+
+ hessian "github.com/apache/dubbo-go-hessian2"
+)
+
+func init() {
+ config.SetProviderService(new(UserProvider))
+ config.SetProviderService(new(UserProviderTriple))
+ // ------for hessian2------
+ hessian.RegisterPOJO(&User{})
+ hessian.RegisterPOJO(&UserResponse{})
+}
diff --git a/generic/default/go-server/pkg/user.go b/generic/default/go-server/pkg/user.go
index 89684af..184f548 100644
--- a/generic/default/go-server/pkg/user.go
+++ b/generic/default/go-server/pkg/user.go
@@ -18,25 +18,14 @@
package pkg
import (
- "context"
- "strconv"
"time"
)
-import (
- "dubbo.apache.org/dubbo-go/v3/common/logger"
- "dubbo.apache.org/dubbo-go/v3/config"
-
- hessian "github.com/apache/dubbo-go-hessian2"
-)
-
-func init() {
- config.SetProviderService(new(UserProvider))
- // ------for hessian2------
- hessian.RegisterPOJO(&User{})
- hessian.RegisterPOJO(&UserResponse{})
-
- initUserMap()
+var userMap = map[string]*User{
+ "001": {"001", "other-zhangsan", 23, time.Date(1998, 1, 2, 3, 4, 5, 0, time.Local)},
+ "002": {"002", "other-lisi", 25, time.Date(1996, 1, 2, 3, 4, 5, 0, time.Local)},
+ "003": {"003", "other-lily", 28, time.Date(1993, 1, 2, 3, 4, 5, 0, time.Local)},
+ "004": {"004", "other-lisa", 36, time.Date(1985, 1, 2, 3, 4, 5, 0, time.Local)},
}
type User struct {
@@ -46,125 +35,6 @@ type User struct {
Time time.Time
}
-type UserResponse struct {
- Users []*User
-}
-
-type UserProvider struct {
-}
-
-var userMap = make(map[string]*User)
-
-func initUserMap() {
- userMap["001"] = &User{"001", "other-zhangsan", 23, time.Date(1998, 1, 2, 3, 4, 5, 0, time.Local)}
- userMap["002"] = &User{"002", "other-lisi", 25, time.Date(1996, 1, 2, 3, 4, 5, 0, time.Local)}
- userMap["003"] = &User{"003", "other-lily", 28, time.Date(1993, 1, 2, 3, 4, 5, 0, time.Local)}
- userMap["004"] = &User{"004", "other-lisa", 36, time.Date(1985, 1, 2, 3, 4, 5, 0, time.Local)}
-}
-
-func (u *UserProvider) GetUser1(_ context.Context, userID string) (*User, error) {
- logger.Infof("req:%#v", userID)
- rsp := User{userID, "Joe", 48, time.Now()}
- logger.Infof("rsp:%#v", rsp)
- return &rsp, nil
-}
-
-func (u *UserProvider) GetUser2(_ context.Context, userID string, name string) (*User, error) {
- logger.Infof("req:%#v, %#v", userID, name)
- rsp := User{userID, name, 48, time.Now()}
- logger.Infof("rsp:%#v", rsp)
- return &rsp, nil
-}
-
-func (u *UserProvider) GetUser3(_ context.Context, userCode int) (*User, error) {
- logger.Infof("req:%#v", userCode)
- rsp := User{strconv.Itoa(userCode), "Alex Stocks", 18, time.Now()}
- logger.Infof("rsp:%#v", rsp)
- return &rsp, nil
-}
-
-func (u *UserProvider) GetUser4(_ context.Context, userCode int, name string) (*User, error) {
- logger.Infof("req:%#v, %#v", userCode, name)
- rsp := User{strconv.Itoa(userCode), name, 18, time.Now()}
- logger.Infof("rsp:%#v", rsp)
- return &rsp, nil
-}
-
-func (u *UserProvider) GetOneUser(_ context.Context) (*User, error) {
- return &User{
- ID: "1000",
- Name: "xavierniu",
- Age: 24,
- Time: time.Now(),
- }, nil
-}
-
-func (u *UserProvider) GetUsers(_ context.Context, userIdList []string) (*UserResponse, error) {
- logger.Infof("req:%#v", userIdList)
- var users []*User
- for _, i := range userIdList {
- users = append(users, userMap[i])
- }
- return &UserResponse{
- Users: users,
- }, nil
-}
-
-func (u *UserProvider) GetUsersMap(_ context.Context, userIdList []string) (map[string]*User, error) {
- logger.Infof("req:%#v", userIdList)
- var users = make(map[string]*User)
- for _, i := range userIdList {
- users[i] = userMap[i]
- }
- return users, nil
-}
-
-func (u *UserProvider) QueryUser(_ context.Context, user *User) (*User, error) {
- logger.Infof("req1:%#v", user)
- rsp := User{user.ID, user.Name, user.Age, time.Now()}
- logger.Infof("rsp1:%#v", rsp)
- return &rsp, nil
-}
-
-func (u *UserProvider) QueryUsers(_ context.Context, users []*User) (*UserResponse, error) {
- return &UserResponse{
- Users: users,
- }, nil
-}
-
-func (u *UserProvider) QueryAll(_ context.Context) (*UserResponse, error) {
- users := []*User{
- {
- ID: "001",
- Name: "Joe",
- Age: 18,
- Time: time.Now(),
- },
- {
- ID: "002",
- Name: "Wen",
- Age: 20,
- Time: time.Now(),
- },
- }
-
- return &UserResponse{
- Users: users,
- }, nil
-}
-
-func (u *UserProvider) MethodMapper() map[string]string {
- return map[string]string{
- "QueryUser": "queryUser",
- "QueryUsers": "queryUsers",
- "QueryAll": "queryAll",
- }
-}
-
func (u *User) JavaClassName() string {
return "org.apache.dubbo.User"
}
-
-func (u *UserResponse) JavaClassName() string {
- return "org.apache.dubbo.UserResponse"
-}
diff --git a/generic/default/go-server/pkg/user.go b/generic/default/go-server/pkg/user_provider.go
similarity index 77%
copy from generic/default/go-server/pkg/user.go
copy to generic/default/go-server/pkg/user_provider.go
index 89684af..97c28f4 100644
--- a/generic/default/go-server/pkg/user.go
+++ b/generic/default/go-server/pkg/user_provider.go
@@ -25,43 +25,11 @@ import (
import (
"dubbo.apache.org/dubbo-go/v3/common/logger"
- "dubbo.apache.org/dubbo-go/v3/config"
-
- hessian "github.com/apache/dubbo-go-hessian2"
)
-func init() {
- config.SetProviderService(new(UserProvider))
- // ------for hessian2------
- hessian.RegisterPOJO(&User{})
- hessian.RegisterPOJO(&UserResponse{})
-
- initUserMap()
-}
-
-type User struct {
- ID string
- Name string
- Age int32
- Time time.Time
-}
-
-type UserResponse struct {
- Users []*User
-}
-
type UserProvider struct {
}
-var userMap = make(map[string]*User)
-
-func initUserMap() {
- userMap["001"] = &User{"001", "other-zhangsan", 23, time.Date(1998, 1, 2, 3, 4, 5, 0, time.Local)}
- userMap["002"] = &User{"002", "other-lisi", 25, time.Date(1996, 1, 2, 3, 4, 5, 0, time.Local)}
- userMap["003"] = &User{"003", "other-lily", 28, time.Date(1993, 1, 2, 3, 4, 5, 0, time.Local)}
- userMap["004"] = &User{"004", "other-lisa", 36, time.Date(1985, 1, 2, 3, 4, 5, 0, time.Local)}
-}
-
func (u *UserProvider) GetUser1(_ context.Context, userID string) (*User, error) {
logger.Infof("req:%#v", userID)
rsp := User{userID, "Joe", 48, time.Now()}
@@ -161,10 +129,6 @@ func (u *UserProvider) MethodMapper() map[string]string {
}
}
-func (u *User) JavaClassName() string {
- return "org.apache.dubbo.User"
-}
-
-func (u *UserResponse) JavaClassName() string {
- return "org.apache.dubbo.UserResponse"
+func (u *UserProvider) Reference() string {
+ return "UserProvider"
}
diff --git a/generic/default/go-server/pkg/user.go b/generic/default/go-server/pkg/user_provider_triple.go
similarity index 55%
copy from generic/default/go-server/pkg/user.go
copy to generic/default/go-server/pkg/user_provider_triple.go
index 89684af..57356f2 100644
--- a/generic/default/go-server/pkg/user.go
+++ b/generic/default/go-server/pkg/user_provider_triple.go
@@ -25,72 +25,39 @@ import (
import (
"dubbo.apache.org/dubbo-go/v3/common/logger"
- "dubbo.apache.org/dubbo-go/v3/config"
-
- hessian "github.com/apache/dubbo-go-hessian2"
)
-func init() {
- config.SetProviderService(new(UserProvider))
- // ------for hessian2------
- hessian.RegisterPOJO(&User{})
- hessian.RegisterPOJO(&UserResponse{})
-
- initUserMap()
-}
-
-type User struct {
- ID string
- Name string
- Age int32
- Time time.Time
-}
-
-type UserResponse struct {
- Users []*User
-}
-
-type UserProvider struct {
-}
-
-var userMap = make(map[string]*User)
+type UserProviderTriple struct{}
-func initUserMap() {
- userMap["001"] = &User{"001", "other-zhangsan", 23, time.Date(1998, 1, 2, 3, 4, 5, 0, time.Local)}
- userMap["002"] = &User{"002", "other-lisi", 25, time.Date(1996, 1, 2, 3, 4, 5, 0, time.Local)}
- userMap["003"] = &User{"003", "other-lily", 28, time.Date(1993, 1, 2, 3, 4, 5, 0, time.Local)}
- userMap["004"] = &User{"004", "other-lisa", 36, time.Date(1985, 1, 2, 3, 4, 5, 0, time.Local)}
-}
-
-func (u *UserProvider) GetUser1(_ context.Context, userID string) (*User, error) {
+func (u *UserProviderTriple) GetUser1(_ context.Context, userID string) (*User, error) {
logger.Infof("req:%#v", userID)
rsp := User{userID, "Joe", 48, time.Now()}
logger.Infof("rsp:%#v", rsp)
return &rsp, nil
}
-func (u *UserProvider) GetUser2(_ context.Context, userID string, name string) (*User, error) {
+func (u *UserProviderTriple) GetUser2(_ context.Context, userID string, name string) (*User, error) {
logger.Infof("req:%#v, %#v", userID, name)
rsp := User{userID, name, 48, time.Now()}
logger.Infof("rsp:%#v", rsp)
return &rsp, nil
}
-func (u *UserProvider) GetUser3(_ context.Context, userCode int) (*User, error) {
+func (u *UserProviderTriple) GetUser3(_ context.Context, userCode int) (*User, error) {
logger.Infof("req:%#v", userCode)
rsp := User{strconv.Itoa(userCode), "Alex Stocks", 18, time.Now()}
logger.Infof("rsp:%#v", rsp)
return &rsp, nil
}
-func (u *UserProvider) GetUser4(_ context.Context, userCode int, name string) (*User, error) {
+func (u *UserProviderTriple) GetUser4(_ context.Context, userCode int, name string) (*User, error) {
logger.Infof("req:%#v, %#v", userCode, name)
rsp := User{strconv.Itoa(userCode), name, 18, time.Now()}
logger.Infof("rsp:%#v", rsp)
return &rsp, nil
}
-func (u *UserProvider) GetOneUser(_ context.Context) (*User, error) {
+func (u *UserProviderTriple) GetOneUser(_ context.Context) (*User, error) {
return &User{
ID: "1000",
Name: "xavierniu",
@@ -99,7 +66,7 @@ func (u *UserProvider) GetOneUser(_ context.Context) (*User, error) {
}, nil
}
-func (u *UserProvider) GetUsers(_ context.Context, userIdList []string) (*UserResponse, error) {
+func (u *UserProviderTriple) GetUsers(_ context.Context, userIdList []string) (*UserResponse, error) {
logger.Infof("req:%#v", userIdList)
var users []*User
for _, i := range userIdList {
@@ -110,7 +77,7 @@ func (u *UserProvider) GetUsers(_ context.Context, userIdList []string) (*UserRe
}, nil
}
-func (u *UserProvider) GetUsersMap(_ context.Context, userIdList []string) (map[string]*User, error) {
+func (u *UserProviderTriple) GetUsersMap(_ context.Context, userIdList []string) (map[string]*User, error) {
logger.Infof("req:%#v", userIdList)
var users = make(map[string]*User)
for _, i := range userIdList {
@@ -119,20 +86,20 @@ func (u *UserProvider) GetUsersMap(_ context.Context, userIdList []string) (map[
return users, nil
}
-func (u *UserProvider) QueryUser(_ context.Context, user *User) (*User, error) {
+func (u *UserProviderTriple) QueryUser(_ context.Context, user *User) (*User, error) {
logger.Infof("req1:%#v", user)
rsp := User{user.ID, user.Name, user.Age, time.Now()}
logger.Infof("rsp1:%#v", rsp)
return &rsp, nil
}
-func (u *UserProvider) QueryUsers(_ context.Context, users []*User) (*UserResponse, error) {
+func (u *UserProviderTriple) QueryUsers(_ context.Context, users []*User) (*UserResponse, error) {
return &UserResponse{
Users: users,
}, nil
}
-func (u *UserProvider) QueryAll(_ context.Context) (*UserResponse, error) {
+func (u *UserProviderTriple) QueryAll(_ context.Context) (*UserResponse, error) {
users := []*User{
{
ID: "001",
@@ -153,7 +120,7 @@ func (u *UserProvider) QueryAll(_ context.Context) (*UserResponse, error) {
}, nil
}
-func (u *UserProvider) MethodMapper() map[string]string {
+func (u *UserProviderTriple) MethodMapper() map[string]string {
return map[string]string{
"QueryUser": "queryUser",
"QueryUsers": "queryUsers",
@@ -161,10 +128,6 @@ func (u *UserProvider) MethodMapper() map[string]string {
}
}
-func (u *User) JavaClassName() string {
- return "org.apache.dubbo.User"
-}
-
-func (u *UserResponse) JavaClassName() string {
- return "org.apache.dubbo.UserResponse"
+func (u *UserProviderTriple) Reference() string {
+ return "UserProviderTriple"
}
diff --git a/generic/default/go-server/pkg/user_response.go b/generic/default/go-server/pkg/user_response.go
new file mode 100644
index 0000000..1288e8f
--- /dev/null
+++ b/generic/default/go-server/pkg/user_response.go
@@ -0,0 +1,26 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package pkg
+
+type UserResponse struct {
+ Users []*User
+}
+
+func (u *UserResponse) JavaClassName() string {
+ return "org.apache.dubbo.UserResponse"
+}
diff --git a/integrate_test/generic/default/tests/integration/main_test.go b/integrate_test/generic/default/tests/integration/main_test.go
index fcf47c7..1eea008 100644
--- a/integrate_test/generic/default/tests/integration/main_test.go
+++ b/integrate_test/generic/default/tests/integration/main_test.go
@@ -41,34 +41,37 @@ import (
)
var (
- appName = "dubbo.io"
- referenceConfig config.ReferenceConfig
+ appName = "dubbo.io"
+ dubboRefConf config.ReferenceConfig
+ //tripleRefConf config.ReferenceConfig
)
-func init() {
+func TestMain(m *testing.M) {
+ hessian.RegisterPOJO(&pkg.User{})
+
+ dubboRefConf = newRefConf("org.apache.dubbo.samples.UserProvider", dubbo.DUBBO)
+
+ os.Exit(m.Run())
+}
+
+func newRefConf(iface, protocol string) config.ReferenceConfig {
registryConfig := &config.RegistryConfig{
Protocol: "zookeeper",
Address: "127.0.0.1:2181",
}
- referenceConfig = config.ReferenceConfig{
- InterfaceName: "org.apache.dubbo.UserProvider",
+ refConf := config.ReferenceConfig{
+ InterfaceName: iface,
Cluster: "failover",
Registry: []string{"zk"},
- Protocol: dubbo.DUBBO,
+ Protocol: protocol,
Generic: "true",
}
rootConfig := config.NewRootConfig(config.WithRootRegistryConfig("zk", registryConfig))
_ = rootConfig.Init()
- _ = referenceConfig.Init(rootConfig)
- referenceConfig.GenericLoad(appName)
-}
-
-func TestMain(m *testing.M) {
- hessian.RegisterPOJO(&pkg.User{})
- config.SetProviderService(&pkg.User{})
- config.Load()
+ _ = refConf.Init(rootConfig)
+ refConf.GenericLoad(appName)
- os.Exit(m.Run())
+ return refConf
}
diff --git a/integrate_test/generic/default/tests/integration/userprovider_test.go b/integrate_test/generic/default/tests/integration/userprovider_test.go
index ad7104d..e64a10d 100644
--- a/integrate_test/generic/default/tests/integration/userprovider_test.go
+++ b/integrate_test/generic/default/tests/integration/userprovider_test.go
@@ -31,12 +31,8 @@ import (
"github.com/stretchr/testify/assert"
)
-//import (
-// pkg "github.com/apache/dubbo-go-samples/generic/default/go-server/pkg"
-//)
-
func TestGetUser1(t *testing.T) {
- o, err := referenceConfig.GetRPCService().(*generic.GenericService).Invoke(
+ o, err := dubboRefConf.GetRPCService().(*generic.GenericService).Invoke(
context.TODO(),
[]interface{}{
"GetUser1",
@@ -53,7 +49,7 @@ func TestGetUser1(t *testing.T) {
}
func TestGetUser2(t *testing.T) {
- o, err := referenceConfig.GetRPCService().(*generic.GenericService).Invoke(
+ o, err := dubboRefConf.GetRPCService().(*generic.GenericService).Invoke(
context.TODO(),
[]interface{}{
"GetUser2",
@@ -70,7 +66,7 @@ func TestGetUser2(t *testing.T) {
}
func TestGetUser3(t *testing.T) {
- o, err := referenceConfig.GetRPCService().(*generic.GenericService).Invoke(
+ o, err := dubboRefConf.GetRPCService().(*generic.GenericService).Invoke(
context.TODO(),
[]interface{}{
"GetUser3",
@@ -87,7 +83,7 @@ func TestGetUser3(t *testing.T) {
}
func TestGetUser4(t *testing.T) {
- o, err := referenceConfig.GetRPCService().(*generic.GenericService).Invoke(
+ o, err := dubboRefConf.GetRPCService().(*generic.GenericService).Invoke(
context.TODO(),
[]interface{}{
"GetUser4",
@@ -104,7 +100,7 @@ func TestGetUser4(t *testing.T) {
}
func TestGetOneUser(t *testing.T) {
- o, err := referenceConfig.GetRPCService().(*generic.GenericService).Invoke(
+ o, err := dubboRefConf.GetRPCService().(*generic.GenericService).Invoke(
context.TODO(),
[]interface{}{
"GetOneUser",
@@ -121,7 +117,7 @@ func TestGetOneUser(t *testing.T) {
}
func TestGetUsers(t *testing.T) {
- o, err := referenceConfig.GetRPCService().(*generic.GenericService).Invoke(
+ o, err := dubboRefConf.GetRPCService().(*generic.GenericService).Invoke(
context.TODO(),
[]interface{}{
"GetUsers",
@@ -143,7 +139,7 @@ func TestGetUsers(t *testing.T) {
}
func TestQueryUser(t *testing.T) {
- o, err := referenceConfig.GetRPCService().(*generic.GenericService).Invoke(
+ o, err := dubboRefConf.GetRPCService().(*generic.GenericService).Invoke(
context.TODO(),
[]interface{}{
"queryUser",
diff --git a/rpc/grpc/protobuf/helloworld.pb.go b/rpc/grpc/protobuf/helloworld.pb.go
index dbda83d..70566cf 100644
--- a/rpc/grpc/protobuf/helloworld.pb.go
+++ b/rpc/grpc/protobuf/helloworld.pb.go
@@ -23,16 +23,18 @@ package protobuf
import (
context "context"
fmt "fmt"
- proto "github.com/golang/protobuf/proto"
- grpc "google.golang.org/grpc"
- codes "google.golang.org/grpc/codes"
- status "google.golang.org/grpc/status"
math "math"
)
import (
"dubbo.apache.org/dubbo-go/v3/protocol"
"dubbo.apache.org/dubbo-go/v3/protocol/invocation"
+
+ proto "github.com/golang/protobuf/proto"
+
+ grpc "google.golang.org/grpc"
+ codes "google.golang.org/grpc/codes"
+ status "google.golang.org/grpc/status"
)
// Reference imports to suppress errors if they are not otherwise used.
diff --git a/rpc/triple/pb/dubbogo-grpc/protobuf/grpc/helloworld.pb.go b/rpc/triple/pb/dubbogo-grpc/protobuf/grpc/helloworld.pb.go
index 5ad7aef..bfe203f 100644
--- a/rpc/triple/pb/dubbogo-grpc/protobuf/grpc/helloworld.pb.go
+++ b/rpc/triple/pb/dubbogo-grpc/protobuf/grpc/helloworld.pb.go
@@ -40,12 +40,16 @@
package grpc
import (
- protoreflect "google.golang.org/protobuf/reflect/protoreflect"
- protoimpl "google.golang.org/protobuf/runtime/protoimpl"
reflect "reflect"
sync "sync"
)
+import (
+ protoreflect "google.golang.org/protobuf/reflect/protoreflect"
+
+ protoimpl "google.golang.org/protobuf/runtime/protoimpl"
+)
+
const (
// Verify that this generated code is sufficiently up-to-date.
_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
diff --git a/rpc/triple/pb/dubbogo-grpc/protobuf/grpc/helloworld_grpc.pb.go b/rpc/triple/pb/dubbogo-grpc/protobuf/grpc/helloworld_grpc.pb.go
index 3e53189..0901b0d 100644
--- a/rpc/triple/pb/dubbogo-grpc/protobuf/grpc/helloworld_grpc.pb.go
+++ b/rpc/triple/pb/dubbogo-grpc/protobuf/grpc/helloworld_grpc.pb.go
@@ -21,6 +21,9 @@ package grpc
import (
context "context"
+)
+
+import (
grpc "google.golang.org/grpc"
codes "google.golang.org/grpc/codes"
status "google.golang.org/grpc/status"
diff --git a/start_integrate_test.sh b/start_integrate_test.sh
index 530772c..f418828 100755
--- a/start_integrate_test.sh
+++ b/start_integrate_test.sh
@@ -86,18 +86,13 @@
#array+=("router/uniform-router/file/go-server")
#array+=("router/uniform-router/file/go-server2")
+# ungrouped
+array=("helloworld")
+array+=("direct")
+
# context
array+=("context/dubbo")
-# generic
-array+=("generic/default")
-
-# helloworld
-array+=("helloworld")
-
-# direct
-array+=("direct")
-
# config-api
array+=("config-api/rpc/triple")
array+=("config-api/configcenter/nacos")
@@ -107,6 +102,9 @@ array+=("config-api/configcenter/zookeeper")
array+=("registry/zookeeper")
array+=("registry/nacos")
+# generic
+array+=("generic/default")
+
# rpc
array+=("rpc/dubbo")
array+=("rpc/triple/codec-extension")