This is an automated email from the ASF dual-hosted git repository.
dengliming pushed a commit to branch main
in repository
https://gitbox.apache.org/repos/asf/incubator-shenyu-client-golang.git
The following commit(s) were added to refs/heads/main by this push:
new f27d0ad [feature: add nacos_client_test.go & adjust README] (#24)
f27d0ad is described below
commit f27d0ad55a4fc130995a0486e870e7c343c0d532
Author: Lisandro <[email protected]>
AuthorDate: Mon Jul 4 17:15:17 2022 +0800
[feature: add nacos_client_test.go & adjust README] (#24)
* [feature: add nacos_client_test.go & adjust README]
* [feature: Adjust nacos_client]
* [feature: Adjust nacos_client]
Co-authored-by: lishuo <[email protected]>
---
README.md | 51 ++++++-
README_CN.md | 55 +++++--
example/nacos_client/main.go | 11 +-
example/nacos_client/nacos_client_test.go | 230 ++++++++++++++++++++++++++++++
4 files changed, 327 insertions(+), 20 deletions(-)
diff --git a/README.md b/README.md
index 8064ab0..9cbb877 100644
--- a/README.md
+++ b/README.md
@@ -185,20 +185,57 @@ finish register metadata ,the result is-> true
}
```
-**4.use client to invoke RegisterNacosInstance**
+**4. Get shenyu nacos client**
```go
- client, err := nacos_client.NewNacosClient(ncp)
- if err != nil {
- logger.Fatal("create nacos client error : %+V", err)
-}
+ sdkClient := shenyu_sdk_client.GetFactoryClient(constants.NACOS_CLIENT)
+ result, createResult, err := sdkClient.NewClient(ncp)
+ if !createResult && err != nil {
+ logger.Fatal("Create nacos client error : %+V", err)
+ }
+
+ nc := &nacos_client.ShenYuNacosClient{
+ NacosClient: result.(*naming_client.NamingClient),
+ }
+```
+
- registerResult, err := nacos_client.RegisterNacosInstance(client,
nacosRegisterInstance)
+**5.Use client to invoke RegisterNacosInstance**
+```go
+ registerResult, err := nc.RegisterServiceInstance(nacosRegisterInstance)
if !registerResult && err != nil {
- logger.Fatal("Register nacos Instance error : %+V", err)
+ logger.Fatal("Register nacos Instance error : %+V", err)
+}
+ //do your logic
+```
+
+**6.Use client to invoke DeregisterServiceInstance**
+```go
+//DeregisterServiceInstance start
+ deregisterInstanceParam := vo.DeregisterInstanceParam{
+ Ip: "10.0.0.10",
+ Port: 8848,
+ ServiceName: "demo.go",
+ Ephemeral: true,
+ //Cluster: "cluster-a", // default value is DEFAULT
+ GroupName: "group-a", // default value is DEFAULT_GROUP
+}
+
+ serviceInstance, err :=
nc.DeregisterServiceInstance(deregisterInstanceParam)
+ if !serviceInstance && err != nil {
+ logger.Info("DeregisterServiceInstance result : %+V", serviceInstance)
}
//do your logic
```
+**7.Use client to invoke GetServiceInstanceInfo**
+```go
+ instanceInfo, result, err := nc.GetServiceInstanceInfo(queryData)
+ if result != false && err != nil {
+ logger.Fatal("Register nacos Instance error : %+V", err)
+ }
+ //do your logic
+```
+
## Entire Success log
```go
2022-06-27 10:56:17 [INFO]
[github.com/incubator-shenyu-client-golang/clients/nacos_client/nacos_client.go:92]
RegisterServiceInstance,result:true
diff --git a/README_CN.md b/README_CN.md
index f0ccc88..535c026 100644
--- a/README_CN.md
+++ b/README_CN.md
@@ -183,21 +183,58 @@ metaData := &model.URIRegister{
}
```
-**4.使用nacos客户端调用RegisterNacosInstance方法**
+**4. 获取ShenYu nacos的客户端**
```go
- client, err := nacos_client.NewNacosClient(ncp)
- if err != nil {
- logger.Fatal("create nacos client error : %+V", err)
-}
+ sdkClient := shenyu_sdk_client.GetFactoryClient(constants.NACOS_CLIENT)
+ result, createResult, err := sdkClient.NewClient(ncp)
+ if !createResult && err != nil {
+ logger.Fatal("Create nacos client error : %+V", err)
+ }
+
+ nc := &nacos_client.ShenYuNacosClient{
+ NacosClient: result.(*naming_client.NamingClient),
+ }
+```
+
- registerResult, err := nacos_client.RegisterNacosInstance(client,
nacosRegisterInstance)
+**5.使用客户端调用RegisterNacosInstance方法**
+```go
+ registerResult, err := nc.RegisterServiceInstance(nacosRegisterInstance)
if !registerResult && err != nil {
- logger.Fatal("Register nacos Instance error : %+V", err)
+ logger.Fatal("Register nacos Instance error : %+V", err)
}
- //做你的逻辑处理
+ //do your logic
```
-**5.完整的成功日志**
+**6.使用客户端调用DeregisterServiceInstance方法**
+```go
+//DeregisterServiceInstance start
+ deregisterInstanceParam := vo.DeregisterInstanceParam{
+ Ip: "10.0.0.10",
+ Port: 8848,
+ ServiceName: "demo.go",
+ Ephemeral: true,
+ //Cluster: "cluster-a", // default value is DEFAULT
+ GroupName: "group-a", // default value is DEFAULT_GROUP
+}
+
+ serviceInstance, err :=
nc.DeregisterServiceInstance(deregisterInstanceParam)
+ if !serviceInstance && err != nil {
+ logger.Info("DeregisterServiceInstance result : %+V", serviceInstance)
+}
+ //do your logic
+```
+
+**7.使用客户端调用GetServiceInstanceInfo方法**
+```go
+ instanceInfo, result, err := nc.GetServiceInstanceInfo(queryData)
+ if result != false && err != nil {
+ logger.Fatal("Register nacos Instance error : %+V", err)
+ }
+ //do your logic
+```
+
+**完整的成功日志**
```go
2022-06-27 10:56:17 [INFO]
[github.com/incubator-shenyu-client-golang/clients/nacos_client/nacos_client.go:92]
RegisterServiceInstance,result:true
diff --git a/example/nacos_client/main.go b/example/nacos_client/main.go
index c85af21..d63a9de 100644
--- a/example/nacos_client/main.go
+++ b/example/nacos_client/main.go
@@ -75,6 +75,7 @@ func main() {
Healthy: true, //require user provide
Ephemeral: true, //require user provide
GroupName: "group-a", //require user provide
+ ClusterName: "cluster-a", // default value is DEFAULT
Metadata: map[string]string{"contextPath": "contextPath",
"uriMetadata": string(metaDataStringJson)},
}
@@ -84,11 +85,13 @@ func main() {
}
//RegisterServiceInstance end
+ time.Sleep(time.Second)
+
//GetServiceInstanceInfo start
queryData := vo.SelectInstancesParam{
ServiceName: "demo.go",
- GroupName: "group-a", //default: DEFAULT_GROUP
- //Clusters: []string{"cluster-a"}, // default: DEFAULT
+ GroupName: "group-a", //default: DEFAULT_GROUP
+ Clusters: []string{"cluster-a"}, // default: DEFAULT
HealthyOnly: true,
}
@@ -107,8 +110,8 @@ func main() {
Port: 8848,
ServiceName: "demo.go",
Ephemeral: true,
- //Cluster: "cluster-a", // default value is DEFAULT
- GroupName: "group-a", // default value is DEFAULT_GROUP
+ Cluster: "cluster-a", // default value is DEFAULT
+ GroupName: "group-a", // default value is DEFAULT_GROUP
}
serviceInstance, err :=
nc.DeregisterServiceInstance(deregisterInstanceParam)
diff --git a/example/nacos_client/nacos_client_test.go
b/example/nacos_client/nacos_client_test.go
new file mode 100644
index 0000000..4b4342f
--- /dev/null
+++ b/example/nacos_client/nacos_client_test.go
@@ -0,0 +1,230 @@
+/*
+ * 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 (
+ "encoding/json"
+ "github.com/apache/incubator-shenyu-client-golang/clients/nacos_client"
+ "github.com/apache/incubator-shenyu-client-golang/common/constants"
+
"github.com/apache/incubator-shenyu-client-golang/common/shenyu_sdk_client"
+ "github.com/apache/incubator-shenyu-client-golang/model"
+ "github.com/nacos-group/nacos-sdk-go/clients/naming_client"
+ "github.com/nacos-group/nacos-sdk-go/vo"
+ "github.com/stretchr/testify/assert"
+ "testing"
+ "time"
+)
+
+/**
+ * TestInitNacosClient
+ **/
+func TestInitNacosClient(t *testing.T) {
+ //set nacos env configuration
+ ncp := &nacos_client.NacosClientParam{
+ IpAddr: "console.nacos.io",
+ Port: 80,
+ NamespaceId: "e525eafa-f7d7-4029-83d9-008937f9d468",
+ }
+
+ sdkClient := shenyu_sdk_client.GetFactoryClient(constants.NACOS_CLIENT)
+ client, createResult, err := sdkClient.NewClient(ncp)
+
+ assert.NotNil(t, client)
+ assert.True(t, createResult)
+ assert.Nil(t, err)
+}
+
+/**
+ * TestInitNacosClientAndRegister
+ **/
+func TestInitNacosClientAndRegister(t *testing.T) {
+ //set nacos env configuration
+ ncp := &nacos_client.NacosClientParam{
+ IpAddr: "console.nacos.io",
+ Port: 80,
+ NamespaceId: "e525eafa-f7d7-4029-83d9-008937f9d468",
+ }
+
+ sdkClient := shenyu_sdk_client.GetFactoryClient(constants.NACOS_CLIENT)
+ client, createResult, err := sdkClient.NewClient(ncp)
+
+ assert.NotNil(t, client)
+ assert.True(t, createResult)
+ assert.Nil(t, err)
+
+ nc := &nacos_client.ShenYuNacosClient{
+ NacosClient: client.(*naming_client.NamingClient),
+ }
+
+ //metaData is necessary param, this will be register to shenyu gateway
to use
+ metaData := &model.URIRegister{
+ Protocol: "testMetaDataRegister", //require user provide
+ AppName: "testURLRegister", //require user provide
+ ContextPath: "contextPath", //require user provide
+ RPCType: constants.RPCTYPE_HTTP, //require user provide
+ Host: "127.0.0.1", //require user provide
+ Port: "8080", //require user provide
+ }
+ metaDataStringJson, _ := json.Marshal(metaData)
+
+ //init NacosRegisterInstance
+ nacosRegisterInstance := vo.RegisterInstanceParam{
+ Ip: "10.0.0.10", //require user provide
+ Port: 8848, //require user provide
+ ServiceName: "demo.go", //require user provide
+ Weight: 10, //require user provide
+ Enable: true, //require user provide
+ Healthy: true, //require user provide
+ Ephemeral: true, //require user provide
+ Metadata: map[string]string{"contextPath": "contextPath",
"uriMetadata": string(metaDataStringJson)},
+ }
+
+ instance, err := nc.RegisterServiceInstance(nacosRegisterInstance)
+ assert.Nil(t, err)
+ assert.NotNil(t, instance)
+}
+
+/**
+ * TestRegisterAndGetInstance
+ **/
+func TestRegisterAndGetInstance(t *testing.T) {
+ //set nacos env configuration
+ ncp := &nacos_client.NacosClientParam{
+ IpAddr: "console.nacos.io",
+ Port: 80,
+ NamespaceId: "e525eafa-f7d7-4029-83d9-008937f9d468",
+ }
+
+ sdkClient := shenyu_sdk_client.GetFactoryClient(constants.NACOS_CLIENT)
+ client, createResult, err := sdkClient.NewClient(ncp)
+
+ assert.NotNil(t, client)
+ assert.True(t, createResult)
+ assert.Nil(t, err)
+
+ nc := &nacos_client.ShenYuNacosClient{
+ NacosClient: client.(*naming_client.NamingClient),
+ }
+
+ //metaData is necessary param, this will be register to shenyu gateway
to use
+ metaData := &model.URIRegister{
+ Protocol: "testMetaDataRegister", //require user provide
+ AppName: "testURLRegister", //require user provide
+ ContextPath: "contextPath", //require user provide
+ RPCType: constants.RPCTYPE_HTTP, //require user provide
+ Host: "127.0.0.1", //require user provide
+ Port: "8080", //require user provide
+ }
+ metaDataStringJson, _ := json.Marshal(metaData)
+
+ //init NacosRegisterInstance
+ nacosRegisterInstance := vo.RegisterInstanceParam{
+ Ip: "10.0.0.10", //require user provide
+ Port: 8848, //require user provide
+ ServiceName: "demo.go", //require user provide
+ Weight: 10, //require user provide
+ Enable: true, //require user provide
+ Healthy: true, //require user provide
+ Ephemeral: true, //require user provide
+ GroupName: "group-a", //require user provide
+ Metadata: map[string]string{"contextPath": "contextPath",
"uriMetadata": string(metaDataStringJson)},
+ }
+
+ instance, err := nc.RegisterServiceInstance(nacosRegisterInstance)
+ assert.Nil(t, err)
+ assert.NotNil(t, instance)
+
+ time.Sleep(time.Second)
+
+ queryData := vo.SelectInstancesParam{
+ ServiceName: "demo.go",
+ GroupName: "group-a", //default: DEFAULT_GROUP
+ //Clusters: []string{"cluster-a"}, // default: DEFAULT
+ HealthyOnly: true,
+ }
+
+ instanceInfo, result, err := nc.GetServiceInstanceInfo(queryData)
+ assert.Nil(t, err)
+ assert.True(t, result)
+ assert.NotNil(t, instanceInfo)
+}
+
+/**
+ * TestRegisterAndDeregister
+ **/
+func TestRegisterAndDeregister(t *testing.T) {
+ //set nacos env configuration
+ ncp := &nacos_client.NacosClientParam{
+ IpAddr: "console.nacos.io",
+ Port: 80,
+ NamespaceId: "e525eafa-f7d7-4029-83d9-008937f9d468",
+ }
+
+ sdkClient := shenyu_sdk_client.GetFactoryClient(constants.NACOS_CLIENT)
+ client, createResult, err := sdkClient.NewClient(ncp)
+
+ assert.NotNil(t, client)
+ assert.True(t, createResult)
+ assert.Nil(t, err)
+
+ nc := &nacos_client.ShenYuNacosClient{
+ NacosClient: client.(*naming_client.NamingClient),
+ }
+
+ //metaData is necessary param, this will be register to shenyu gateway
to use
+ metaData := &model.URIRegister{
+ Protocol: "testMetaDataRegister", //require user provide
+ AppName: "testURLRegister", //require user provide
+ ContextPath: "contextPath", //require user provide
+ RPCType: constants.RPCTYPE_HTTP, //require user provide
+ Host: "127.0.0.1", //require user provide
+ Port: "8080", //require user provide
+ }
+ metaDataStringJson, _ := json.Marshal(metaData)
+
+ //init NacosRegisterInstance
+ nacosRegisterInstance := vo.RegisterInstanceParam{
+ Ip: "10.0.0.10", //require user provide
+ Port: 8848, //require user provide
+ ServiceName: "demo.go", //require user provide
+ Weight: 10, //require user provide
+ Enable: true, //require user provide
+ Healthy: true, //require user provide
+ Ephemeral: true, //require user provide
+ GroupName: "group-a", //require user provide
+ Metadata: map[string]string{"contextPath": "contextPath",
"uriMetadata": string(metaDataStringJson)},
+ }
+
+ instance, err := nc.RegisterServiceInstance(nacosRegisterInstance)
+ assert.Nil(t, err)
+ assert.NotNil(t, instance)
+
+ time.Sleep(time.Second)
+ deregisterInstanceParam := vo.DeregisterInstanceParam{
+ Ip: "10.0.0.10",
+ Port: 8848,
+ ServiceName: "demo.go",
+ Ephemeral: true,
+ //Cluster: "cluster-a", // default value is DEFAULT
+ GroupName: "group-a", // default value is DEFAULT_GROUP
+ }
+
+ serviceInstance, err :=
nc.DeregisterServiceInstance(deregisterInstanceParam)
+ assert.Nil(t, err)
+ assert.True(t, serviceInstance)
+}