From dc8819a9eb4614ba141f3690a7c8375d897793c0 Mon Sep 17 00:00:00 2001
From: "vito.he" <hxmhlt@163.com>
Date: Thu, 12 Sep 2019 14:47:12 +0800
Subject: [PATCH] Add:reference & service protocol default

---
 config/provider_config_test.go                | 16 +++-
 config/reference_config.go                    |  2 +-
 config/service_config.go                      |  2 +-
 .../consumer_config_withoutProtocol.yml       | 77 +++++++++++++++++++
 .../provider_config_withoutProtocol.yml       | 76 ++++++++++++++++++
 5 files changed, 170 insertions(+), 3 deletions(-)
 create mode 100644 config/testdata/consumer_config_withoutProtocol.yml
 create mode 100644 config/testdata/provider_config_withoutProtocol.yml

diff --git a/config/provider_config_test.go b/config/provider_config_test.go
index e3db22217..db4b5f990 100644
--- a/config/provider_config_test.go
+++ b/config/provider_config_test.go
@@ -9,7 +9,7 @@ import (
 	"github.com/stretchr/testify/assert"
 )
 
-func TestProviderInit(t *testing.T) {
+func TestConsumerInit(t *testing.T) {
 	conPath, err := filepath.Abs("./testdata/consumer_config_with_configcenter.yml")
 	assert.NoError(t, err)
 	assert.NoError(t, ConsumerInit(conPath))
@@ -17,3 +17,17 @@ func TestProviderInit(t *testing.T) {
 	assert.Equal(t, "dubbo.properties", consumerConfig.ConfigCenterConfig.ConfigFile)
 	assert.Equal(t, "100ms", consumerConfig.Connect_Timeout)
 }
+
+func TestConsumerInitWithDefaultProtocol(t *testing.T) {
+	conPath, err := filepath.Abs("./testdata/consumer_config_withoutProtocol.yml")
+	assert.NoError(t, err)
+	assert.NoError(t, ConsumerInit(conPath))
+	assert.Equal(t, "dubbo", consumerConfig.References["UserProvider"].Protocol)
+}
+
+func TestProviderInitWithDefaultProtocol(t *testing.T) {
+	conPath, err := filepath.Abs("./testdata/provider_config_withoutProtocol.yml")
+	assert.NoError(t, err)
+	assert.NoError(t, ProviderInit(conPath))
+	assert.Equal(t, "dubbo", providerConfig.Services["UserProvider"].Protocol)
+}
diff --git a/config/reference_config.go b/config/reference_config.go
index 4b063bc60..fb854a14d 100644
--- a/config/reference_config.go
+++ b/config/reference_config.go
@@ -47,7 +47,7 @@ type ReferenceConfig struct {
 	Check         *bool             `yaml:"check"  json:"check,omitempty" property:"check"`
 	Url           string            `yaml:"url"  json:"url,omitempty" property:"url"`
 	Filter        string            `yaml:"filter" json:"filter,omitempty" property:"filter"`
-	Protocol      string            `yaml:"protocol"  json:"protocol,omitempty" property:"protocol"`
+	Protocol      string            `default:"dubbo"  yaml:"protocol"  json:"protocol,omitempty" property:"protocol"`
 	Registry      string            `yaml:"registry"  json:"registry,omitempty"  property:"registry"`
 	Cluster       string            `yaml:"cluster"  json:"cluster,omitempty" property:"cluster"`
 	Loadbalance   string            `yaml:"loadbalance"  json:"loadbalance,omitempty" property:"loadbalance"`
diff --git a/config/service_config.go b/config/service_config.go
index 85af4d048..c41509917 100644
--- a/config/service_config.go
+++ b/config/service_config.go
@@ -46,7 +46,7 @@ type ServiceConfig struct {
 	context       context.Context
 	id            string
 	Filter        string            `yaml:"filter" json:"filter,omitempty" property:"filter"`
-	Protocol      string            `required:"true"  yaml:"protocol"  json:"protocol,omitempty" property:"protocol"` //multi protocol support, split by ','
+	Protocol      string            `default:"dubbo"  required:"true"  yaml:"protocol"  json:"protocol,omitempty" property:"protocol"` //multi protocol support, split by ','
 	InterfaceName string            `required:"true"  yaml:"interface"  json:"interface,omitempty" property:"interface"`
 	Registry      string            `yaml:"registry"  json:"registry,omitempty"  property:"registry"`
 	Cluster       string            `default:"failover" yaml:"cluster"  json:"cluster,omitempty" property:"cluster"`
diff --git a/config/testdata/consumer_config_withoutProtocol.yml b/config/testdata/consumer_config_withoutProtocol.yml
new file mode 100644
index 000000000..a051afbf1
--- /dev/null
+++ b/config/testdata/consumer_config_withoutProtocol.yml
@@ -0,0 +1,77 @@
+# dubbo client yaml configure file
+
+filter: ""
+
+# client
+request_timeout : "100ms"
+# connect timeout
+connect_timeout : "100ms"
+check: true
+# application config
+application_config:
+  organization : "ikurento.com"
+  name  : "BDTService"
+  module : "dubbogo user-info client"
+  version : "0.0.1"
+  owner : "ZX"
+  environment : "dev"
+
+registries :
+
+  "hangzhouzk":
+    protocol: "zookeeper"
+    timeout	: "3s"
+    address: "127.0.0.1:2181"
+    username: ""
+    password: ""
+  "shanghaizk":
+    protocol: "zookeeper"
+    timeout	: "3s"
+    address: "127.0.0.1:2182"
+    username: ""
+    password: ""
+
+references:
+  "UserProvider":
+    registry: "hangzhouzk,shanghaizk"
+    filter: ""
+    version: "1.0"
+    group: "as"
+    interface : "com.ikurento.user.UserProvider"
+    url: "dubbo://127.0.0.1:20000/UserProvider"
+    cluster: "failover"
+    methods :
+      - name: "GetUser"
+        retries: 3
+    params:
+      "serviceid":
+        "soa.com.ikurento.user.UserProvider"
+      "forks": 5
+
+protocol_conf:
+  dubbo:
+    reconnect_interval: 0
+    connection_number: 2
+    heartbeat_period: "5s"
+    session_timeout: "20s"
+    pool_size: 64
+    pool_ttl: 600
+    # gr_pool_size is recommended to be set to [cpu core number] * 100
+    gr_pool_size: 1200
+    # queue_len is recommended to be set to 64 or 128
+    queue_len: 64
+    # queue_number is recommended to be set to gr_pool_size / 20
+    queue_number: 60
+    getty_session_param:
+      compress_encoding: false
+      tcp_no_delay: true
+      tcp_keep_alive: true
+      keep_alive_period: "120s"
+      tcp_r_buf_size: 262144
+      tcp_w_buf_size: 65536
+      pkg_wq_size: 512
+      tcp_read_timeout: "1s"
+      tcp_write_timeout: "5s"
+      wait_timeout: "1s"
+      max_msg_len: 1024
+      session_name: "client"
diff --git a/config/testdata/provider_config_withoutProtocol.yml b/config/testdata/provider_config_withoutProtocol.yml
new file mode 100644
index 000000000..07349f826
--- /dev/null
+++ b/config/testdata/provider_config_withoutProtocol.yml
@@ -0,0 +1,76 @@
+# dubbo server yaml configure file
+
+filter: ""
+# application config
+application_config:
+  organization : "ikurento.com"
+  name : "BDTService"
+  module : "dubbogo user-info server"
+  version : "0.0.1"
+  owner : "ZX"
+  environment : "dev"
+
+registries :
+  "hangzhouzk":
+    protocol: "zookeeper"
+    timeout	: "3s"
+    address: "127.0.0.1:2181"
+    username: ""
+    password: ""
+  "shanghaizk":
+    protocol: "zookeeper"
+    timeout	: "3s"
+    address: "127.0.0.1:2182"
+    username: ""
+    password: ""
+
+
+services:
+  "UserProvider":
+    registry: "hangzhouzk,shanghaizk"
+    filter: ""
+    # equivalent to interface of dubbo.xml
+    interface : "com.ikurento.user.UserProvider"
+    loadbalance: "random"
+    version: "1.0"
+    group: "as"
+    warmup: "100"
+    cluster: "failover"
+    methods:
+      - name: "GetUser"
+        retries: 1
+        loadbalance: "random"
+
+protocols:
+    "dubbo":
+      name: "dubbo"
+      # while using dubbo protocol, ip cannot is 127.0.0.1, because client of java-dubbo will get 'connection refuse'
+      ip : "127.0.0.1"
+      port : 20000
+  #-   name: "jsonrpc"
+  #    ip: "127.0.0.1"
+  #    port: 20001
+
+protocol_conf:
+  dubbo:
+    session_number: 700
+    session_timeout: "20s"
+    # gr_pool_size is recommended to be set to [cpu core number] * 10
+    gr_pool_size: 120
+    # queue_len is recommended to be set to 64 or 128
+    queue_len: 64
+    # queue_number is recommended to be set to gr_pool_size / 20
+    queue_number: 6
+    getty_session_param:
+      compress_encoding: false
+      tcp_no_delay: true
+      tcp_keep_alive: true
+      keep_alive_period: "120s"
+      tcp_r_buf_size: 262144
+      tcp_w_buf_size: 65536
+      pkg_wq_size: 512
+      tcp_read_timeout: "1s"
+      tcp_write_timeout: "5s"
+      wait_timeout: "1s"
+      max_msg_len: 1024
+      session_name: "server"
-- 
GitLab