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/12/10 18:35:42 UTC

[dubbo-go] branch 3.0 updated: support set nacos ContextPath (#1656)

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.git


The following commit(s) were added to refs/heads/3.0 by this push:
     new d411e11  support set nacos ContextPath (#1656)
d411e11 is described below

commit d411e1160840817307173ac810042bf514c0919e
Author: binbin.zhang <bb...@163.com>
AuthorDate: Sat Dec 11 02:35:31 2021 +0800

    support set nacos ContextPath (#1656)
---
 remoting/nacos/builder.go      | 13 ++++++++--
 remoting/nacos/builder_test.go | 58 +++++++++++++++++++++++++++---------------
 2 files changed, 49 insertions(+), 22 deletions(-)

diff --git a/remoting/nacos/builder.go b/remoting/nacos/builder.go
index 6b846c0..204b986 100644
--- a/remoting/nacos/builder.go
+++ b/remoting/nacos/builder.go
@@ -69,8 +69,17 @@ func GetNacosConfig(url *common.URL) ([]nacosConstant.ServerConfig, nacosConstan
 			return []nacosConstant.ServerConfig{}, nacosConstant.ClientConfig{},
 				perrors.WithMessagef(err, "split [%s] ", addr)
 		}
-		port, _ := strconv.Atoi(portStr)
-		serverConfigs = append(serverConfigs, nacosConstant.ServerConfig{IpAddr: ip, Port: uint64(port)})
+		portContextPath := strings.Split(portStr, constant.PathSeparator)
+		port, err := strconv.Atoi(portContextPath[0])
+		if err != nil {
+			return []nacosConstant.ServerConfig{}, nacosConstant.ClientConfig{},
+				perrors.WithMessagef(err, "port [%s] ", portContextPath[0])
+		}
+		var contextPath string
+		if len(portContextPath) > 1 {
+			contextPath = constant.PathSeparator + strings.Join(portContextPath[1:], constant.PathSeparator)
+		}
+		serverConfigs = append(serverConfigs, nacosConstant.ServerConfig{IpAddr: ip, Port: uint64(port), ContextPath: contextPath})
 	}
 
 	timeout := url.GetParamDuration(constant.TimeoutKey, constant.DefaultRegTimeout)
diff --git a/remoting/nacos/builder_test.go b/remoting/nacos/builder_test.go
index a057e18..83a1006 100644
--- a/remoting/nacos/builder_test.go
+++ b/remoting/nacos/builder_test.go
@@ -34,26 +34,44 @@ import (
 )
 
 func TestNewNacosClient(t *testing.T) {
-	rc := &config.RemoteConfig{}
-	rc.Protocol = "nacos"
-	rc.Username = "nacos"
-	client, err := NewNacosClient(rc)
-
-	// address is nil
-	assert.Nil(t, client)
-	assert.NotNil(t, err)
-
-	rc.Address = "console.nacos.io:80:123"
-	client, err = NewNacosClient(rc)
-	// invalid address
-	assert.Nil(t, client)
-	assert.NotNil(t, err)
-
-	rc.Address = "console.nacos.io:80"
-	rc.Timeout = "10s"
-	client, err = NewNacosClient(rc)
-	assert.NotNil(t, client)
-	assert.Nil(t, err)
+	t.Run("AddressIsNil", func(t *testing.T) {
+		rc := &config.RemoteConfig{}
+		rc.Protocol = "nacos"
+		rc.Username = "nacos"
+		client, err := NewNacosClient(rc)
+
+		// address is nil
+		assert.Nil(t, client)
+		assert.NotNil(t, err)
+	})
+
+	t.Run("InvalidAddress", func(t *testing.T) {
+		rc := &config.RemoteConfig{}
+		rc.Address = "console.nacos.io:80:123"
+		client, err := NewNacosClient(rc)
+		// invalid address
+		assert.Nil(t, client)
+		assert.NotNil(t, err)
+	})
+
+	t.Run("Normal", func(t *testing.T) {
+		rc := &config.RemoteConfig{}
+		rc.Address = "console.nacos.io:80"
+		rc.Protocol = "nacos"
+		rc.Timeout = "10s"
+		client, err := NewNacosClient(rc)
+		assert.NotNil(t, client)
+		assert.Nil(t, err)
+	})
+
+	t.Run("NormalHasContextPath", func(t *testing.T) {
+		rc := &config.RemoteConfig{}
+		rc.Address = "console.nacos.io:80/nacos"
+		rc.Protocol = "nacos"
+		client, err := NewNacosClient(rc)
+		assert.NotNil(t, client)
+		assert.Nil(t, err)
+	})
 }
 
 func TestGetNacosConfig(t *testing.T) {