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/14 07:18:56 UTC

[dubbo-go-samples] branch 3.0 updated: Ftr/3.0msgpack and triple codec extension samples (#138)

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 da8780a  Ftr/3.0msgpack and triple codec extension samples (#138)
da8780a is described below

commit da8780ae1e31cf377a2aa642cd527b77bfb93a9c
Author: Laurence <45...@users.noreply.github.com>
AuthorDate: Mon Jun 14 15:18:46 2021 +0800

    Ftr/3.0msgpack and triple codec extension samples (#138)
    
    * fix: updata go get dubbo-gen script
    
    * fix
    
    * fix: add etcd test
    
    * fix: add msgpack sample
    
    * fix
    
    * fix
    
    * fix: fix conflict
    
    * fix: add test
    
    * Fix: split import block
    
    * fix: delete unused block
---
 .run/triple-codec-extension-client.run.xml         | 15 ++++
 .run/triple-codec-extension-server.run.xml         | 15 ++++
 .run/triple-msgpack-client.run.xml                 | 15 ++++
 .run/triple-msgpack-server.run.xml                 | 15 ++++
 .../dubbo3/codec-extension/go-client/cmd/client.go | 64 +++++++++++++++++
 .../codec-extension/go-client/codec/codec.go       | 29 ++++++++
 .../codec-extension/go-client/conf/client.yml      | 33 +++++++++
 .../dubbo3/codec-extension/go-client}/conf/log.yml |  3 +-
 .../go-client/pkg/hello.go}                        | 25 +------
 .../dubbo3/codec-extension/go-server/cmd/server.go | 83 ++++++++++++++++++++++
 .../codec-extension/go-server/codec/codec.go       | 25 +++++++
 .../codec-extension/go-server/conf/client.yml      | 32 +++++++++
 .../dubbo3/codec-extension}/go-server/conf/log.yml |  3 +-
 .../codec-extension/go-server/conf/server.yml      | 30 ++++++++
 .../go-server/docker/docker-compose.yml            |  9 +++
 .../go-server/pkg/greeter.go                       | 20 ++----
 .../go-server/tests/integration/codec.go           | 25 +++++++
 .../go-server/tests/integration/main_test.go}      | 45 ++++++------
 .../tests/integration/userprovider_test.go}        | 45 ++++--------
 general/dubbo3/hessian2/go-server/pkg/greeter.go   |  4 +-
 general/dubbo3/msgpack/go-client/cmd/client.go     | 63 ++++++++++++++++
 general/dubbo3/msgpack/go-client/conf/client.yml   | 33 +++++++++
 .../dubbo3/msgpack/go-client}/conf/log.yml         |  3 +-
 .../greeter.go => msgpack/go-client/pkg/hello.go}  | 25 +------
 general/dubbo3/msgpack/go-server/cmd/server.go     | 82 +++++++++++++++++++++
 general/dubbo3/msgpack/go-server/conf/client.yml   | 32 +++++++++
 .../dubbo3/msgpack}/go-server/conf/log.yml         |  3 +-
 general/dubbo3/msgpack/go-server/conf/server.yml   | 30 ++++++++
 .../msgpack/go-server/docker/docker-compose.yml    |  9 +++
 .../{hessian2 => msgpack}/go-server/pkg/greeter.go | 22 ++----
 .../go-server/tests/integration/main_test.go}      | 45 ++++++------
 .../tests/integration/userprovider_test.go}        | 45 ++++--------
 go.mod                                             |  2 +-
 go.sum                                             |  3 +-
 start_integrate_test.sh                            |  5 +-
 tengine/go-server/conf/log.yml                     |  3 +-
 36 files changed, 742 insertions(+), 198 deletions(-)

diff --git a/.run/triple-codec-extension-client.run.xml b/.run/triple-codec-extension-client.run.xml
new file mode 100644
index 0000000..55591d0
--- /dev/null
+++ b/.run/triple-codec-extension-client.run.xml
@@ -0,0 +1,15 @@
+<component name="ProjectRunConfigurationManager">
+  <configuration default="false" name="triple-codec-extension-client" type="GoApplicationRunConfiguration" factoryName="Go Application" folderName="triple">
+    <module name="dubbo-go-samples" />
+    <working_directory value="$PROJECT_DIR$" />
+    <envs>
+      <env name="APP_LOG_CONF_FILE" value="$PROJECT_DIR$/general/dubbo3/codec-extension/go-client/conf/log.yml" />
+      <env name="CONF_CONSUMER_FILE_PATH" value="$PROJECT_DIR$/general/dubbo3/codec-extension/go-client/conf/client.yml" />
+    </envs>
+    <kind value="PACKAGE" />
+    <filePath value="$PROJECT_DIR$" />
+    <package value="github.com/apache/dubbo-go-samples/general/dubbo3/codec-extension/go-client/cmd" />
+    <directory value="github.com/apache/dubbo-go-samples/general/dubbo3/pb/dubbogo-grpc/server/dubbogo-server/cmd" />
+    <method v="2" />
+  </configuration>
+</component>
\ No newline at end of file
diff --git a/.run/triple-codec-extension-server.run.xml b/.run/triple-codec-extension-server.run.xml
new file mode 100644
index 0000000..6b68920
--- /dev/null
+++ b/.run/triple-codec-extension-server.run.xml
@@ -0,0 +1,15 @@
+<component name="ProjectRunConfigurationManager">
+  <configuration default="false" name="triple-codec-extension-server" type="GoApplicationRunConfiguration" factoryName="Go Application" folderName="triple">
+    <module name="dubbo-go-samples" />
+    <working_directory value="$PROJECT_DIR$" />
+    <envs>
+      <env name="APP_LOG_CONF_FILE" value="$PROJECT_DIR$/general/dubbo3/codec-extension/go-server/conf/log.yml" />
+      <env name="CONF_PROVIDER_FILE_PATH" value="$PROJECT_DIR$/general/dubbo3/codec-extension/go-server/conf/server.yml" />
+    </envs>
+    <kind value="PACKAGE" />
+    <filePath value="$PROJECT_DIR$" />
+    <package value="github.com/apache/dubbo-go-samples/general/dubbo3/codec-extension/go-server/cmd" />
+    <directory value="github.com/apache/dubbo-go-samples/general/dubbo3/pb/dubbogo-grpc/server/dubbogo-server/cmd" />
+    <method v="2" />
+  </configuration>
+</component>
\ No newline at end of file
diff --git a/.run/triple-msgpack-client.run.xml b/.run/triple-msgpack-client.run.xml
new file mode 100644
index 0000000..d265e2f
--- /dev/null
+++ b/.run/triple-msgpack-client.run.xml
@@ -0,0 +1,15 @@
+<component name="ProjectRunConfigurationManager">
+  <configuration default="false" name="triple-msgpack-client" type="GoApplicationRunConfiguration" factoryName="Go Application" folderName="triple">
+    <module name="dubbo-go-samples" />
+    <working_directory value="$PROJECT_DIR$" />
+    <envs>
+      <env name="APP_LOG_CONF_FILE" value="$PROJECT_DIR$/general/dubbo3/msgpack/go-client/conf/log.yml" />
+      <env name="CONF_CONSUMER_FILE_PATH" value="$PROJECT_DIR$/general/dubbo3/msgpack/go-client/conf/client.yml" />
+    </envs>
+    <kind value="PACKAGE" />
+    <filePath value="$PROJECT_DIR$" />
+    <package value="github.com/apache/dubbo-go-samples/general/dubbo3/msgpack/go-client/cmd" />
+    <directory value="github.com/apache/dubbo-go-samples/general/dubbo3/pb/dubbogo-grpc/server/dubbogo-server/cmd" />
+    <method v="2" />
+  </configuration>
+</component>
\ No newline at end of file
diff --git a/.run/triple-msgpack-server.run.xml b/.run/triple-msgpack-server.run.xml
new file mode 100644
index 0000000..8ef6570
--- /dev/null
+++ b/.run/triple-msgpack-server.run.xml
@@ -0,0 +1,15 @@
+<component name="ProjectRunConfigurationManager">
+  <configuration default="false" name="triple-msgpack-server" type="GoApplicationRunConfiguration" factoryName="Go Application" folderName="triple">
+    <module name="dubbo-go-samples" />
+    <working_directory value="$PROJECT_DIR$" />
+    <envs>
+      <env name="APP_LOG_CONF_FILE" value="$PROJECT_DIR$/general/dubbo3/msgpack/go-server/conf/log.yml" />
+      <env name="CONF_PROVIDER_FILE_PATH" value="$PROJECT_DIR$/general/dubbo3/msgpack/go-server/conf/server.yml" />
+    </envs>
+    <kind value="PACKAGE" />
+    <filePath value="$PROJECT_DIR$" />
+    <package value="github.com/apache/dubbo-go-samples/general/dubbo3/msgpack/go-server/cmd" />
+    <directory value="github.com/apache/dubbo-go-samples/general/dubbo3/pb/dubbogo-grpc/server/dubbogo-server/cmd" />
+    <method v="2" />
+  </configuration>
+</component>
\ No newline at end of file
diff --git a/general/dubbo3/codec-extension/go-client/cmd/client.go b/general/dubbo3/codec-extension/go-client/cmd/client.go
new file mode 100644
index 0000000..2d9c42f
--- /dev/null
+++ b/general/dubbo3/codec-extension/go-client/cmd/client.go
@@ -0,0 +1,64 @@
+/*
+ * 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 main
+
+import (
+	"context"
+	"os"
+	"time"
+)
+
+import (
+	_ "dubbo.apache.org/dubbo-go/v3/cluster/cluster_impl"
+	_ "dubbo.apache.org/dubbo-go/v3/cluster/loadbalance"
+	_ "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"
+	_ "dubbo.apache.org/dubbo-go/v3/protocol/dubbo3"
+	_ "dubbo.apache.org/dubbo-go/v3/protocol/grpc"
+	_ "dubbo.apache.org/dubbo-go/v3/registry/protocol"
+	_ "dubbo.apache.org/dubbo-go/v3/registry/zookeeper"
+	"github.com/dubbogo/gost/log"
+)
+
+import (
+	_ "github.com/apache/dubbo-go-samples/general/dubbo3/codec-extension/go-client/codec"
+	"github.com/apache/dubbo-go-samples/general/dubbo3/codec-extension/go-client/pkg"
+)
+
+var userProvider = new(pkg.UserProvider)
+
+func init() {
+	config.SetConsumerService(userProvider)
+}
+
+// need to setup environment variable "CONF_CONSUMER_FILE_PATH" to "conf/client.yml" before run
+func main() {
+	config.Load()
+	time.Sleep(3 * time.Second)
+
+	gxlog.CInfo("\n\n\nstart to test dubbo")
+	user := &pkg.User{}
+	err := userProvider.GetUser(context.TODO(), &pkg.User{Name: "laurence"}, user)
+	if err != nil {
+		gxlog.CError("error: %v\n", err)
+		os.Exit(1)
+		return
+	}
+	gxlog.CInfo("response result: %v\n", user)
+}
diff --git a/general/dubbo3/codec-extension/go-client/codec/codec.go b/general/dubbo3/codec-extension/go-client/codec/codec.go
new file mode 100644
index 0000000..34b1b24
--- /dev/null
+++ b/general/dubbo3/codec-extension/go-client/codec/codec.go
@@ -0,0 +1,29 @@
+package codec
+
+import (
+	"encoding/json"
+)
+
+import (
+	triCommon "github.com/dubbogo/triple/pkg/common"
+)
+
+
+func init() {
+	triCommon.SetTripleCodec("json", NewJSONCodec)
+}
+
+func NewJSONCodec() triCommon.Codec {
+	return &JSONCodec{}
+}
+
+type JSONCodec struct {
+}
+
+func (j *JSONCodec) Marshal(v interface{}) ([]byte, error) {
+	return json.Marshal(v)
+}
+
+func (j *JSONCodec) Unmarshal(data []byte, v interface{}) error {
+	return json.Unmarshal(data, v)
+}
diff --git a/general/dubbo3/codec-extension/go-client/conf/client.yml b/general/dubbo3/codec-extension/go-client/conf/client.yml
new file mode 100644
index 0000000..d4c14a2
--- /dev/null
+++ b/general/dubbo3/codec-extension/go-client/conf/client.yml
@@ -0,0 +1,33 @@
+# dubbo client yaml configure file
+
+check: true
+# client
+request_timeout: "3s"
+# connect timeout
+connect_timeout: "3s"
+
+# application config
+application:
+  organization: "dubbo.io"
+  name: "UserProvider"
+  module: "dubbo-go3.0 client"
+  version: "0.0.1"
+  environment: "dev"
+
+# registry config
+registries:
+  "demoZk":
+    protocol: "zookeeper"
+    timeout: "3s"
+    address: "127.0.0.1:2181"
+    username: ""
+    password: ""
+
+# reference config
+references:
+  "UserProvider":
+    registry: "demoZk"
+    protocol: "tri"
+    serialization: "json"
+#    url: "dubbo://127.0.0.1:20000" # target server ip:port
+    interface: "com.apache.dubbo.sample.basic.IGreeter"
diff --git a/tengine/go-server/conf/log.yml b/general/dubbo3/codec-extension/go-client/conf/log.yml
similarity index 96%
copy from tengine/go-server/conf/log.yml
copy to general/dubbo3/codec-extension/go-client/conf/log.yml
index a75bccb..8c3f700 100644
--- a/tengine/go-server/conf/log.yml
+++ b/general/dubbo3/codec-extension/go-client/conf/log.yml
@@ -1,5 +1,4 @@
-
-level: "error"
+level: "info"
 development: true
 disableCaller: false
 disableStacktrace: false
diff --git a/general/dubbo3/hessian2/go-server/pkg/greeter.go b/general/dubbo3/codec-extension/go-client/pkg/hello.go
similarity index 67%
copy from general/dubbo3/hessian2/go-server/pkg/greeter.go
copy to general/dubbo3/codec-extension/go-client/pkg/hello.go
index c6d39de..da5c377 100644
--- a/general/dubbo3/hessian2/go-server/pkg/greeter.go
+++ b/general/dubbo3/codec-extension/go-client/pkg/hello.go
@@ -20,38 +20,17 @@ package pkg
 import (
 	"context"
 )
-import (
-	"github.com/dubbogo/gost/log"
-)
-import (
-	hessian "github.com/apache/dubbo-go-hessian2"
-)
-
-func init() {
-	// ------for hessian2------
-	hessian.RegisterPOJO(&User{})
-}
 
 type User struct {
-	Id   string
+	ID   string
 	Name string
 	Age  int32
 }
 
 type UserProvider struct {
-}
-
-func (u *UserProvider) GetUser(ctx context.Context, req []interface{}) (*User, error) {
-	gxlog.CInfo("req:%#v", req)
-	rsp := User{"A001", "Alex Stocks", 18}
-	gxlog.CInfo("rsp:%#v", rsp)
-	return &rsp, nil
+	GetUser func(ctx context.Context, req *User, rsp *User) error
 }
 
 func (u *UserProvider) Reference() string {
 	return "UserProvider"
 }
-
-func (u User) JavaClassName() string {
-	return "com.apache.dubbo.sample.basic.User"
-}
diff --git a/general/dubbo3/codec-extension/go-server/cmd/server.go b/general/dubbo3/codec-extension/go-server/cmd/server.go
new file mode 100644
index 0000000..8e485a3
--- /dev/null
+++ b/general/dubbo3/codec-extension/go-server/cmd/server.go
@@ -0,0 +1,83 @@
+/*
+* 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 main
+
+import (
+	"fmt"
+	"os"
+	"os/signal"
+	"syscall"
+	"time"
+)
+
+import (
+	_ "dubbo.apache.org/dubbo-go/v3/cluster/cluster_impl"
+	_ "dubbo.apache.org/dubbo-go/v3/cluster/loadbalance"
+	"dubbo.apache.org/dubbo-go/v3/common/logger"
+	_ "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"
+	_ "dubbo.apache.org/dubbo-go/v3/protocol/dubbo3"
+	_ "dubbo.apache.org/dubbo-go/v3/registry/nacos"
+	_ "dubbo.apache.org/dubbo-go/v3/registry/protocol"
+	_ "dubbo.apache.org/dubbo-go/v3/registry/zookeeper"
+	_ "github.com/dubbogo/triple/pkg/triple"
+)
+
+import (
+	_ "github.com/apache/dubbo-go-samples/general/dubbo3/codec-extension/go-client/codec"
+	"github.com/apache/dubbo-go-samples/general/dubbo3/codec-extension/go-server/pkg"
+)
+
+var (
+	survivalTimeout = int(3 * time.Second)
+)
+
+func init() {
+	config.SetProviderService(new(pkg.UserProvider))
+}
+
+// need to setup environment variable "CONF_PROVIDER_FILE_PATH" to "conf/server.yml" before run
+func main() {
+	config.Load()
+	initSignal()
+}
+
+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.Sleep(time.Second * 5)
+			time.AfterFunc(time.Duration(survivalTimeout), func() {
+				logger.Warnf("app exit now by force...")
+				os.Exit(1)
+			})
+
+			// The program exits normally or timeout forcibly exits.
+			fmt.Println("provider app exit now...")
+			return
+		}
+	}
+}
diff --git a/general/dubbo3/codec-extension/go-server/codec/codec.go b/general/dubbo3/codec-extension/go-server/codec/codec.go
new file mode 100644
index 0000000..b4d42e6
--- /dev/null
+++ b/general/dubbo3/codec-extension/go-server/codec/codec.go
@@ -0,0 +1,25 @@
+package codec
+
+import (
+	"encoding/json"
+	triCommon "github.com/dubbogo/triple/pkg/common"
+)
+
+func init() {
+	triCommon.SetTripleCodec("json", NewJSONCodec)
+}
+
+func NewJSONCodec() triCommon.Codec {
+	return &JSONCodec{}
+}
+
+type JSONCodec struct {
+}
+
+func (j *JSONCodec) Marshal(v interface{}) ([]byte, error) {
+	return json.Marshal(v)
+}
+
+func (j *JSONCodec) Unmarshal(data []byte, v interface{}) error {
+	return json.Unmarshal(data, v)
+}
diff --git a/general/dubbo3/codec-extension/go-server/conf/client.yml b/general/dubbo3/codec-extension/go-server/conf/client.yml
new file mode 100644
index 0000000..137d8b2
--- /dev/null
+++ b/general/dubbo3/codec-extension/go-server/conf/client.yml
@@ -0,0 +1,32 @@
+# dubbo client yaml configure file
+
+check: true
+# client
+request_timeout: "3s"
+# connect timeout
+connect_timeout: "3s"
+
+# application config
+application:
+  organization: "dubbo.io"
+  name: "UserProvider"
+  module: "dubbo-go3.0 client"
+  version: "0.0.1"
+  environment: "dev"
+
+# registry config
+registries:
+  "demoZk":
+    protocol: "zookeeper"
+    timeout: "3s"
+    address: "127.0.0.1:2181"
+    username: ""
+    password: ""
+
+# reference config
+references:
+  "UserProvider":
+    registry: "demoZk"
+    protocol: "tri"
+    serialization: "json"
+    interface: "com.apache.dubbo.sample.basic.IGreeter"
diff --git a/tengine/go-server/conf/log.yml b/general/dubbo3/codec-extension/go-server/conf/log.yml
similarity index 96%
copy from tengine/go-server/conf/log.yml
copy to general/dubbo3/codec-extension/go-server/conf/log.yml
index a75bccb..8c3f700 100644
--- a/tengine/go-server/conf/log.yml
+++ b/general/dubbo3/codec-extension/go-server/conf/log.yml
@@ -1,5 +1,4 @@
-
-level: "error"
+level: "info"
 development: true
 disableCaller: false
 disableStacktrace: false
diff --git a/general/dubbo3/codec-extension/go-server/conf/server.yml b/general/dubbo3/codec-extension/go-server/conf/server.yml
new file mode 100644
index 0000000..4e8d051
--- /dev/null
+++ b/general/dubbo3/codec-extension/go-server/conf/server.yml
@@ -0,0 +1,30 @@
+# dubbo server yaml configure file
+
+# application config
+application:
+  organization: "dubbo.io"
+  name: "UserProvider"
+  module: "dubbo-go3.0 greeter server"
+  version: "0.0.1"
+  environment: "dev"
+
+# registry config
+registries:
+  "demoZK":
+    protocol: "zookeeper"
+    timeout: "3s"
+    address: "127.0.0.1:2181"
+
+# service config
+services:
+  "UserProvider":
+    registry: "demoZK"
+    protocol: "tri" # tri is dubbo-go3.0 protocol
+    serialization: "json" # json is user defined serialization type
+    interface: "com.apache.dubbo.sample.basic.IGreeter"
+
+# protocol config
+protocols:
+  "tri":
+    name: "tri"
+    port: 20001
diff --git a/general/dubbo3/codec-extension/go-server/docker/docker-compose.yml b/general/dubbo3/codec-extension/go-server/docker/docker-compose.yml
new file mode 100644
index 0000000..8724179
--- /dev/null
+++ b/general/dubbo3/codec-extension/go-server/docker/docker-compose.yml
@@ -0,0 +1,9 @@
+version: '3'
+
+services:
+  zookeeper:
+    image: zookeeper
+    ports:
+      - 2181:2181
+    restart: on-failure
+
diff --git a/general/dubbo3/hessian2/go-server/pkg/greeter.go b/general/dubbo3/codec-extension/go-server/pkg/greeter.go
similarity index 73%
copy from general/dubbo3/hessian2/go-server/pkg/greeter.go
copy to general/dubbo3/codec-extension/go-server/pkg/greeter.go
index c6d39de..0013c02 100644
--- a/general/dubbo3/hessian2/go-server/pkg/greeter.go
+++ b/general/dubbo3/codec-extension/go-server/pkg/greeter.go
@@ -23,17 +23,9 @@ import (
 import (
 	"github.com/dubbogo/gost/log"
 )
-import (
-	hessian "github.com/apache/dubbo-go-hessian2"
-)
-
-func init() {
-	// ------for hessian2------
-	hessian.RegisterPOJO(&User{})
-}
 
 type User struct {
-	Id   string
+	ID   string
 	Name string
 	Age  int32
 }
@@ -41,9 +33,9 @@ type User struct {
 type UserProvider struct {
 }
 
-func (u *UserProvider) GetUser(ctx context.Context, req []interface{}) (*User, error) {
-	gxlog.CInfo("req:%#v", req)
-	rsp := User{"A001", "Alex Stocks", 18}
+func (u *UserProvider) GetUser(ctx context.Context,user *User) (*User, error) {
+	gxlog.CInfo("req:%#v", user)
+	rsp := User{"12345", "Hello " + user.Name, 18}
 	gxlog.CInfo("rsp:%#v", rsp)
 	return &rsp, nil
 }
@@ -51,7 +43,3 @@ func (u *UserProvider) GetUser(ctx context.Context, req []interface{}) (*User, e
 func (u *UserProvider) Reference() string {
 	return "UserProvider"
 }
-
-func (u User) JavaClassName() string {
-	return "com.apache.dubbo.sample.basic.User"
-}
diff --git a/general/dubbo3/codec-extension/go-server/tests/integration/codec.go b/general/dubbo3/codec-extension/go-server/tests/integration/codec.go
new file mode 100644
index 0000000..2e99237
--- /dev/null
+++ b/general/dubbo3/codec-extension/go-server/tests/integration/codec.go
@@ -0,0 +1,25 @@
+package integration
+
+import (
+	"encoding/json"
+	triCommon "github.com/dubbogo/triple/pkg/common"
+)
+
+func init() {
+	triCommon.SetTripleCodec("json", NewJSONCodec)
+}
+
+func NewJSONCodec() triCommon.Codec {
+	return &JSONCodec{}
+}
+
+type JSONCodec struct {
+}
+
+func (j *JSONCodec) Marshal(v interface{}) ([]byte, error) {
+	return json.Marshal(v)
+}
+
+func (j *JSONCodec) Unmarshal(data []byte, v interface{}) error {
+	return json.Unmarshal(data, v)
+}
diff --git a/general/dubbo3/hessian2/go-server/pkg/greeter.go b/general/dubbo3/codec-extension/go-server/tests/integration/main_test.go
similarity index 55%
copy from general/dubbo3/hessian2/go-server/pkg/greeter.go
copy to general/dubbo3/codec-extension/go-server/tests/integration/main_test.go
index c6d39de..3ea2fe6 100644
--- a/general/dubbo3/hessian2/go-server/pkg/greeter.go
+++ b/general/dubbo3/codec-extension/go-server/tests/integration/main_test.go
@@ -1,3 +1,5 @@
+// +build integration
+
 /*
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
@@ -15,43 +17,46 @@
  * limitations under the License.
  */
 
-package pkg
+package integration
 
 import (
 	"context"
+	"os"
+	"testing"
+	"time"
 )
+
 import (
-	"github.com/dubbogo/gost/log"
-)
-import (
-	hessian "github.com/apache/dubbo-go-hessian2"
+	_ "dubbo.apache.org/dubbo-go/v3/cluster/cluster_impl"
+	_ "dubbo.apache.org/dubbo-go/v3/cluster/loadbalance"
+	_ "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"
+	_ "dubbo.apache.org/dubbo-go/v3/metadata/service/inmemory"
+	_ "dubbo.apache.org/dubbo-go/v3/protocol/dubbo3"
+	_ "dubbo.apache.org/dubbo-go/v3/registry/protocol"
+	_ "dubbo.apache.org/dubbo-go/v3/registry/zookeeper"
 )
 
-func init() {
-	// ------for hessian2------
-	hessian.RegisterPOJO(&User{})
+var userProvider = new(UserProvider)
+
+func TestMain(m *testing.M) {
+	config.SetConsumerService(userProvider)
+	config.Load()
+	time.Sleep(3 * time.Second)
+	os.Exit(m.Run())
 }
 
 type User struct {
-	Id   string
+	ID   string
 	Name string
 	Age  int32
 }
 
 type UserProvider struct {
-}
-
-func (u *UserProvider) GetUser(ctx context.Context, req []interface{}) (*User, error) {
-	gxlog.CInfo("req:%#v", req)
-	rsp := User{"A001", "Alex Stocks", 18}
-	gxlog.CInfo("rsp:%#v", rsp)
-	return &rsp, nil
+	GetUser func(ctx context.Context, req *User, rsp *User) error
 }
 
 func (u *UserProvider) Reference() string {
 	return "UserProvider"
 }
-
-func (u User) JavaClassName() string {
-	return "com.apache.dubbo.sample.basic.User"
-}
diff --git a/general/dubbo3/hessian2/go-server/pkg/greeter.go b/general/dubbo3/codec-extension/go-server/tests/integration/userprovider_test.go
similarity index 57%
copy from general/dubbo3/hessian2/go-server/pkg/greeter.go
copy to general/dubbo3/codec-extension/go-server/tests/integration/userprovider_test.go
index c6d39de..7a08d19 100644
--- a/general/dubbo3/hessian2/go-server/pkg/greeter.go
+++ b/general/dubbo3/codec-extension/go-server/tests/integration/userprovider_test.go
@@ -1,3 +1,5 @@
+// +build integration
+
 /*
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
@@ -15,43 +17,22 @@
  * limitations under the License.
  */
 
-package pkg
+package integration
 
 import (
 	"context"
+	"testing"
 )
+
 import (
-	"github.com/dubbogo/gost/log"
-)
-import (
-	hessian "github.com/apache/dubbo-go-hessian2"
+	"github.com/stretchr/testify/assert"
 )
 
-func init() {
-	// ------for hessian2------
-	hessian.RegisterPOJO(&User{})
-}
-
-type User struct {
-	Id   string
-	Name string
-	Age  int32
-}
-
-type UserProvider struct {
-}
-
-func (u *UserProvider) GetUser(ctx context.Context, req []interface{}) (*User, error) {
-	gxlog.CInfo("req:%#v", req)
-	rsp := User{"A001", "Alex Stocks", 18}
-	gxlog.CInfo("rsp:%#v", rsp)
-	return &rsp, nil
-}
-
-func (u *UserProvider) Reference() string {
-	return "UserProvider"
-}
-
-func (u User) JavaClassName() string {
-	return "com.apache.dubbo.sample.basic.User"
+func TestGetUser(t *testing.T) {
+	user := &User{}
+	err := userProvider.GetUser(context.TODO(), &User{Name: "laurence"}, user)
+	assert.Nil(t, err)
+	assert.Equal(t, "12345", user.ID)
+	assert.Equal(t, "Hello laurence", user.Name)
+	assert.Equal(t, int32(18), user.Age)
 }
diff --git a/general/dubbo3/hessian2/go-server/pkg/greeter.go b/general/dubbo3/hessian2/go-server/pkg/greeter.go
index c6d39de..8e1f7f6 100644
--- a/general/dubbo3/hessian2/go-server/pkg/greeter.go
+++ b/general/dubbo3/hessian2/go-server/pkg/greeter.go
@@ -41,14 +41,14 @@ type User struct {
 type UserProvider struct {
 }
 
-func (u *UserProvider) GetUser(ctx context.Context, req []interface{}) (*User, error) {
+func (u UserProvider) GetUser(ctx context.Context, req []interface{}) (*User, error) {
 	gxlog.CInfo("req:%#v", req)
 	rsp := User{"A001", "Alex Stocks", 18}
 	gxlog.CInfo("rsp:%#v", rsp)
 	return &rsp, nil
 }
 
-func (u *UserProvider) Reference() string {
+func (u UserProvider) Reference() string {
 	return "UserProvider"
 }
 
diff --git a/general/dubbo3/msgpack/go-client/cmd/client.go b/general/dubbo3/msgpack/go-client/cmd/client.go
new file mode 100644
index 0000000..cb0c755
--- /dev/null
+++ b/general/dubbo3/msgpack/go-client/cmd/client.go
@@ -0,0 +1,63 @@
+/*
+ * 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 main
+
+import (
+	"context"
+	"os"
+	"time"
+)
+
+import (
+	_ "dubbo.apache.org/dubbo-go/v3/cluster/cluster_impl"
+	_ "dubbo.apache.org/dubbo-go/v3/cluster/loadbalance"
+	_ "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"
+	_ "dubbo.apache.org/dubbo-go/v3/protocol/dubbo3"
+	_ "dubbo.apache.org/dubbo-go/v3/protocol/grpc"
+	_ "dubbo.apache.org/dubbo-go/v3/registry/protocol"
+	_ "dubbo.apache.org/dubbo-go/v3/registry/zookeeper"
+	"github.com/dubbogo/gost/log"
+)
+
+import (
+	"github.com/apache/dubbo-go-samples/general/dubbo3/msgpack/go-client/pkg"
+)
+
+var userProvider = new(pkg.UserProvider)
+
+func init() {
+	config.SetConsumerService(userProvider)
+}
+
+// need to setup environment variable "CONF_CONSUMER_FILE_PATH" to "conf/client.yml" before run
+func main() {
+	config.Load()
+	time.Sleep(3 * time.Second)
+
+	gxlog.CInfo("\n\n\nstart to test dubbo")
+	user := &pkg.User{}
+	err := userProvider.GetUser(context.TODO(), &pkg.User{Name: "laurence"}, user)
+	if err != nil {
+		gxlog.CError("error: %v\n", err)
+		os.Exit(1)
+		return
+	}
+	gxlog.CInfo("response result: %v\n", user)
+}
diff --git a/general/dubbo3/msgpack/go-client/conf/client.yml b/general/dubbo3/msgpack/go-client/conf/client.yml
new file mode 100644
index 0000000..2a1082a
--- /dev/null
+++ b/general/dubbo3/msgpack/go-client/conf/client.yml
@@ -0,0 +1,33 @@
+# dubbo client yaml configure file
+
+check: true
+# client
+request_timeout: "3s"
+# connect timeout
+connect_timeout: "3s"
+
+# application config
+application:
+  organization: "dubbo.io"
+  name: "UserProvider"
+  module: "dubbo-go3.0 client"
+  version: "0.0.1"
+  environment: "dev"
+
+# registry config
+registries:
+  "demoZk":
+    protocol: "zookeeper"
+    timeout: "3s"
+    address: "127.0.0.1:2181"
+    username: ""
+    password: ""
+
+# reference config
+references:
+  "UserProvider":
+    registry: "demoZk"
+    protocol: "tri"
+    serialization: "msgpack"
+#    url: "dubbo://127.0.0.1:20000" # target server ip:port
+    interface: "com.apache.dubbo.sample.basic.IGreeter"
\ No newline at end of file
diff --git a/tengine/go-server/conf/log.yml b/general/dubbo3/msgpack/go-client/conf/log.yml
similarity index 96%
copy from tengine/go-server/conf/log.yml
copy to general/dubbo3/msgpack/go-client/conf/log.yml
index a75bccb..8c3f700 100644
--- a/tengine/go-server/conf/log.yml
+++ b/general/dubbo3/msgpack/go-client/conf/log.yml
@@ -1,5 +1,4 @@
-
-level: "error"
+level: "info"
 development: true
 disableCaller: false
 disableStacktrace: false
diff --git a/general/dubbo3/hessian2/go-server/pkg/greeter.go b/general/dubbo3/msgpack/go-client/pkg/hello.go
similarity index 67%
copy from general/dubbo3/hessian2/go-server/pkg/greeter.go
copy to general/dubbo3/msgpack/go-client/pkg/hello.go
index c6d39de..da5c377 100644
--- a/general/dubbo3/hessian2/go-server/pkg/greeter.go
+++ b/general/dubbo3/msgpack/go-client/pkg/hello.go
@@ -20,38 +20,17 @@ package pkg
 import (
 	"context"
 )
-import (
-	"github.com/dubbogo/gost/log"
-)
-import (
-	hessian "github.com/apache/dubbo-go-hessian2"
-)
-
-func init() {
-	// ------for hessian2------
-	hessian.RegisterPOJO(&User{})
-}
 
 type User struct {
-	Id   string
+	ID   string
 	Name string
 	Age  int32
 }
 
 type UserProvider struct {
-}
-
-func (u *UserProvider) GetUser(ctx context.Context, req []interface{}) (*User, error) {
-	gxlog.CInfo("req:%#v", req)
-	rsp := User{"A001", "Alex Stocks", 18}
-	gxlog.CInfo("rsp:%#v", rsp)
-	return &rsp, nil
+	GetUser func(ctx context.Context, req *User, rsp *User) error
 }
 
 func (u *UserProvider) Reference() string {
 	return "UserProvider"
 }
-
-func (u User) JavaClassName() string {
-	return "com.apache.dubbo.sample.basic.User"
-}
diff --git a/general/dubbo3/msgpack/go-server/cmd/server.go b/general/dubbo3/msgpack/go-server/cmd/server.go
new file mode 100644
index 0000000..c31f0aa
--- /dev/null
+++ b/general/dubbo3/msgpack/go-server/cmd/server.go
@@ -0,0 +1,82 @@
+/*
+* 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 main
+
+import (
+	"fmt"
+	"os"
+	"os/signal"
+	"syscall"
+	"time"
+)
+
+import (
+	_ "dubbo.apache.org/dubbo-go/v3/cluster/cluster_impl"
+	_ "dubbo.apache.org/dubbo-go/v3/cluster/loadbalance"
+	"dubbo.apache.org/dubbo-go/v3/common/logger"
+	_ "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"
+	_ "dubbo.apache.org/dubbo-go/v3/protocol/dubbo3"
+	_ "dubbo.apache.org/dubbo-go/v3/registry/nacos"
+	_ "dubbo.apache.org/dubbo-go/v3/registry/protocol"
+	_ "dubbo.apache.org/dubbo-go/v3/registry/zookeeper"
+	_ "github.com/dubbogo/triple/pkg/triple"
+)
+
+import (
+	"github.com/apache/dubbo-go-samples/general/dubbo3/msgpack/go-server/pkg"
+)
+
+var (
+	survivalTimeout = int(3 * time.Second)
+)
+
+func init() {
+	config.SetProviderService(new(pkg.UserProvider))
+}
+
+// need to setup environment variable "CONF_PROVIDER_FILE_PATH" to "conf/server.yml" before run
+func main() {
+	config.Load()
+	initSignal()
+}
+
+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.Sleep(time.Second * 5)
+			time.AfterFunc(time.Duration(survivalTimeout), func() {
+				logger.Warnf("app exit now by force...")
+				os.Exit(1)
+			})
+
+			// The program exits normally or timeout forcibly exits.
+			fmt.Println("provider app exit now...")
+			return
+		}
+	}
+}
diff --git a/general/dubbo3/msgpack/go-server/conf/client.yml b/general/dubbo3/msgpack/go-server/conf/client.yml
new file mode 100644
index 0000000..144bc66
--- /dev/null
+++ b/general/dubbo3/msgpack/go-server/conf/client.yml
@@ -0,0 +1,32 @@
+# dubbo client yaml configure file
+
+check: true
+# client
+request_timeout: "3s"
+# connect timeout
+connect_timeout: "3s"
+
+# application config
+application:
+  organization: "dubbo.io"
+  name: "UserProvider"
+  module: "dubbo-go3.0 client"
+  version: "0.0.1"
+  environment: "dev"
+
+# registry config
+registries:
+  "demoZk":
+    protocol: "zookeeper"
+    timeout: "3s"
+    address: "127.0.0.1:2181"
+    username: ""
+    password: ""
+
+# reference config
+references:
+  "UserProvider":
+    registry: "demoZk"
+    protocol: "tri"
+    serialization: "msgpack"
+    interface: "com.apache.dubbo.sample.basic.IGreeter"
diff --git a/tengine/go-server/conf/log.yml b/general/dubbo3/msgpack/go-server/conf/log.yml
similarity index 96%
copy from tengine/go-server/conf/log.yml
copy to general/dubbo3/msgpack/go-server/conf/log.yml
index a75bccb..8c3f700 100644
--- a/tengine/go-server/conf/log.yml
+++ b/general/dubbo3/msgpack/go-server/conf/log.yml
@@ -1,5 +1,4 @@
-
-level: "error"
+level: "info"
 development: true
 disableCaller: false
 disableStacktrace: false
diff --git a/general/dubbo3/msgpack/go-server/conf/server.yml b/general/dubbo3/msgpack/go-server/conf/server.yml
new file mode 100644
index 0000000..8ae95f6
--- /dev/null
+++ b/general/dubbo3/msgpack/go-server/conf/server.yml
@@ -0,0 +1,30 @@
+# dubbo server yaml configure file
+
+# application config
+application:
+  organization: "dubbo.io"
+  name: "UserProvider"
+  module: "dubbo-go3.0 greeter server"
+  version: "0.0.1"
+  environment: "dev"
+
+# registry config
+registries:
+  "demoZK":
+    protocol: "zookeeper"
+    timeout: "3s"
+    address: "127.0.0.1:2181"
+
+# service config
+services:
+  "UserProvider":
+    registry: "demoZK"
+    protocol: "tri" # tri is dubbo-go3.0 protocol
+    serialization: "msgpack" # msgpack is serialization type
+    interface: "com.apache.dubbo.sample.basic.IGreeter"
+
+# protocol config
+protocols:
+  "tri":
+    name: "tri"
+    port: 20001
\ No newline at end of file
diff --git a/general/dubbo3/msgpack/go-server/docker/docker-compose.yml b/general/dubbo3/msgpack/go-server/docker/docker-compose.yml
new file mode 100644
index 0000000..8724179
--- /dev/null
+++ b/general/dubbo3/msgpack/go-server/docker/docker-compose.yml
@@ -0,0 +1,9 @@
+version: '3'
+
+services:
+  zookeeper:
+    image: zookeeper
+    ports:
+      - 2181:2181
+    restart: on-failure
+
diff --git a/general/dubbo3/hessian2/go-server/pkg/greeter.go b/general/dubbo3/msgpack/go-server/pkg/greeter.go
similarity index 70%
copy from general/dubbo3/hessian2/go-server/pkg/greeter.go
copy to general/dubbo3/msgpack/go-server/pkg/greeter.go
index c6d39de..5a48831 100644
--- a/general/dubbo3/hessian2/go-server/pkg/greeter.go
+++ b/general/dubbo3/msgpack/go-server/pkg/greeter.go
@@ -23,17 +23,9 @@ import (
 import (
 	"github.com/dubbogo/gost/log"
 )
-import (
-	hessian "github.com/apache/dubbo-go-hessian2"
-)
-
-func init() {
-	// ------for hessian2------
-	hessian.RegisterPOJO(&User{})
-}
 
 type User struct {
-	Id   string
+	ID   string
 	Name string
 	Age  int32
 }
@@ -41,17 +33,13 @@ type User struct {
 type UserProvider struct {
 }
 
-func (u *UserProvider) GetUser(ctx context.Context, req []interface{}) (*User, error) {
-	gxlog.CInfo("req:%#v", req)
-	rsp := User{"A001", "Alex Stocks", 18}
+func (u UserProvider) GetUser(ctx context.Context,user *User) (*User, error) {
+	gxlog.CInfo("req:%#v", user)
+	rsp := User{"12345", "Hello " + user.Name, 18}
 	gxlog.CInfo("rsp:%#v", rsp)
 	return &rsp, nil
 }
 
-func (u *UserProvider) Reference() string {
+func (u UserProvider) Reference() string {
 	return "UserProvider"
 }
-
-func (u User) JavaClassName() string {
-	return "com.apache.dubbo.sample.basic.User"
-}
diff --git a/general/dubbo3/hessian2/go-server/pkg/greeter.go b/general/dubbo3/msgpack/go-server/tests/integration/main_test.go
similarity index 55%
copy from general/dubbo3/hessian2/go-server/pkg/greeter.go
copy to general/dubbo3/msgpack/go-server/tests/integration/main_test.go
index c6d39de..3ea2fe6 100644
--- a/general/dubbo3/hessian2/go-server/pkg/greeter.go
+++ b/general/dubbo3/msgpack/go-server/tests/integration/main_test.go
@@ -1,3 +1,5 @@
+// +build integration
+
 /*
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
@@ -15,43 +17,46 @@
  * limitations under the License.
  */
 
-package pkg
+package integration
 
 import (
 	"context"
+	"os"
+	"testing"
+	"time"
 )
+
 import (
-	"github.com/dubbogo/gost/log"
-)
-import (
-	hessian "github.com/apache/dubbo-go-hessian2"
+	_ "dubbo.apache.org/dubbo-go/v3/cluster/cluster_impl"
+	_ "dubbo.apache.org/dubbo-go/v3/cluster/loadbalance"
+	_ "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"
+	_ "dubbo.apache.org/dubbo-go/v3/metadata/service/inmemory"
+	_ "dubbo.apache.org/dubbo-go/v3/protocol/dubbo3"
+	_ "dubbo.apache.org/dubbo-go/v3/registry/protocol"
+	_ "dubbo.apache.org/dubbo-go/v3/registry/zookeeper"
 )
 
-func init() {
-	// ------for hessian2------
-	hessian.RegisterPOJO(&User{})
+var userProvider = new(UserProvider)
+
+func TestMain(m *testing.M) {
+	config.SetConsumerService(userProvider)
+	config.Load()
+	time.Sleep(3 * time.Second)
+	os.Exit(m.Run())
 }
 
 type User struct {
-	Id   string
+	ID   string
 	Name string
 	Age  int32
 }
 
 type UserProvider struct {
-}
-
-func (u *UserProvider) GetUser(ctx context.Context, req []interface{}) (*User, error) {
-	gxlog.CInfo("req:%#v", req)
-	rsp := User{"A001", "Alex Stocks", 18}
-	gxlog.CInfo("rsp:%#v", rsp)
-	return &rsp, nil
+	GetUser func(ctx context.Context, req *User, rsp *User) error
 }
 
 func (u *UserProvider) Reference() string {
 	return "UserProvider"
 }
-
-func (u User) JavaClassName() string {
-	return "com.apache.dubbo.sample.basic.User"
-}
diff --git a/general/dubbo3/hessian2/go-server/pkg/greeter.go b/general/dubbo3/msgpack/go-server/tests/integration/userprovider_test.go
similarity index 57%
copy from general/dubbo3/hessian2/go-server/pkg/greeter.go
copy to general/dubbo3/msgpack/go-server/tests/integration/userprovider_test.go
index c6d39de..7a08d19 100644
--- a/general/dubbo3/hessian2/go-server/pkg/greeter.go
+++ b/general/dubbo3/msgpack/go-server/tests/integration/userprovider_test.go
@@ -1,3 +1,5 @@
+// +build integration
+
 /*
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements.  See the NOTICE file distributed with
@@ -15,43 +17,22 @@
  * limitations under the License.
  */
 
-package pkg
+package integration
 
 import (
 	"context"
+	"testing"
 )
+
 import (
-	"github.com/dubbogo/gost/log"
-)
-import (
-	hessian "github.com/apache/dubbo-go-hessian2"
+	"github.com/stretchr/testify/assert"
 )
 
-func init() {
-	// ------for hessian2------
-	hessian.RegisterPOJO(&User{})
-}
-
-type User struct {
-	Id   string
-	Name string
-	Age  int32
-}
-
-type UserProvider struct {
-}
-
-func (u *UserProvider) GetUser(ctx context.Context, req []interface{}) (*User, error) {
-	gxlog.CInfo("req:%#v", req)
-	rsp := User{"A001", "Alex Stocks", 18}
-	gxlog.CInfo("rsp:%#v", rsp)
-	return &rsp, nil
-}
-
-func (u *UserProvider) Reference() string {
-	return "UserProvider"
-}
-
-func (u User) JavaClassName() string {
-	return "com.apache.dubbo.sample.basic.User"
+func TestGetUser(t *testing.T) {
+	user := &User{}
+	err := userProvider.GetUser(context.TODO(), &User{Name: "laurence"}, user)
+	assert.Nil(t, err)
+	assert.Equal(t, "12345", user.ID)
+	assert.Equal(t, "Hello laurence", user.Name)
+	assert.Equal(t, int32(18), user.Age)
 }
diff --git a/go.mod b/go.mod
index e046c1b..10fa3a5 100644
--- a/go.mod
+++ b/go.mod
@@ -21,7 +21,7 @@ require (
 	github.com/uber/jaeger-client-go v2.22.1+incompatible
 	github.com/uber/jaeger-lib v2.2.0+incompatible // indirect
 	golang.org/x/net v0.0.0-20201224014010-6772e930b67b
-	google.golang.org/grpc v1.36.0
+	google.golang.org/grpc v1.38.0
 	google.golang.org/protobuf v1.26.0
 )
 
diff --git a/go.sum b/go.sum
index 050c667..cbd7774 100644
--- a/go.sum
+++ b/go.sum
@@ -1117,8 +1117,9 @@ google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8
 google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk=
 google.golang.org/grpc v1.32.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak=
 google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0=
-google.golang.org/grpc v1.36.0 h1:o1bcQ6imQMIOpdrO3SWf2z5RV72WbDwdXuK0MDlc8As=
 google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU=
+google.golang.org/grpc v1.38.0 h1:/9BgsAsa5nWe26HqOlvlgJnqBuktYOLCgjCPqsa56W0=
+google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM=
 google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=
 google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0=
 google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM=
diff --git a/start_integrate_test.sh b/start_integrate_test.sh
index 82333ad..58a562b 100755
--- a/start_integrate_test.sh
+++ b/start_integrate_test.sh
@@ -31,6 +31,8 @@ array+=("filter/tpslimit/go-server")
 array+=("filter/sentinel/go-server")
 
 array+=("general/dubbo/go-server")
+array+=("general/dubbo3/codec-extension/go-server")
+array+=("general/dubbo3/msgpack/go-server")
 
 array+=("generic/go-server")
 
@@ -51,6 +53,7 @@ array+=("registry/servicediscovery/zookeeper/go-server")
 array+=("registry/servicediscovery/nacos/go-server")
 
 
+
 for((i=0;i<${#array[*]};i++))
 do
 	./integrate_test.sh ${array[i]}
@@ -58,4 +61,4 @@ do
 	if [ $result -gt 0 ]; then
     exit $result
 	fi
-done
\ No newline at end of file
+done
diff --git a/tengine/go-server/conf/log.yml b/tengine/go-server/conf/log.yml
index a75bccb..8c3f700 100644
--- a/tengine/go-server/conf/log.yml
+++ b/tengine/go-server/conf/log.yml
@@ -1,5 +1,4 @@
-
-level: "error"
+level: "info"
 development: true
 disableCaller: false
 disableStacktrace: false