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 22bc867  application service discovery support etcd reporter (#1221)
22bc867 is described below

commit 22bc8675307341b9aea4b484d69cd1c714adb896
Author: WilliamLeaves <[email protected]>
AuthorDate: Mon Jun 14 15:34:41 2021 +0800

    application service discovery support etcd reporter (#1221)
    
    * modify map use in nacos service_discovery
    
    * fix map double write bug
    
    * etcd app level service discovery implement
    
    * ange variable name; add more asserts for etcd_report tes
    
    * Update report.go
    
    Co-authored-by: yexiaobo <[email protected]>
    Co-authored-by: Xin.Zh <[email protected]>
---
 metadata/report/delegate/delegate_report.go |  4 ++--
 metadata/report/etcd/report.go              | 20 ++++++++++++++++----
 metadata/report/etcd/report_test.go         | 13 +++++++++++++
 3 files changed, 31 insertions(+), 6 deletions(-)

diff --git a/metadata/report/delegate/delegate_report.go 
b/metadata/report/delegate/delegate_report.go
index cd92fbb..e1495d1 100644
--- a/metadata/report/delegate/delegate_report.go
+++ b/metadata/report/delegate/delegate_report.go
@@ -148,13 +148,13 @@ func NewMetadataReport() (*MetadataReport, error) {
        return bmr, nil
 }
 
-// GetAppMetadata delegate get metadata info
+// PublishAppMetadata delegate publish metadata info
 func (mr *MetadataReport) PublishAppMetadata(identifier 
*identifier.SubscriberMetadataIdentifier, info *common.MetadataInfo) error {
        report := instance.GetMetadataReportInstance()
        return report.PublishAppMetadata(identifier, info)
 }
 
-// PublishAppMetadata delegate publish metadata info
+// GetAppMetadata delegate get metadata info
 func (mr *MetadataReport) GetAppMetadata(identifier 
*identifier.SubscriberMetadataIdentifier) (*common.MetadataInfo, error) {
        report := instance.GetMetadataReportInstance()
        return report.GetAppMetadata(identifier)
diff --git a/metadata/report/etcd/report.go b/metadata/report/etcd/report.go
index 1597130..bec551c 100644
--- a/metadata/report/etcd/report.go
+++ b/metadata/report/etcd/report.go
@@ -18,6 +18,7 @@
 package etcd
 
 import (
+       "encoding/json"
        "strings"
        "time"
 )
@@ -52,14 +53,25 @@ type etcdMetadataReport struct {
 
 // GetAppMetadata get metadata info from etcd
 func (e *etcdMetadataReport) GetAppMetadata(metadataIdentifier 
*identifier.SubscriberMetadataIdentifier) (*common.MetadataInfo, error) {
-       // TODO will implement
-       panic("implement me")
+       key := e.getNodeKey(metadataIdentifier)
+       data, err := e.client.Get(key)
+       if err != nil {
+               return nil, err
+       }
+       
+       info := &common.MetadataInfo{}
+       return info, json.Unmarshal([]byte(data), info)
 }
 
 // PublishAppMetadata publish metadata info to etcd
 func (e *etcdMetadataReport) PublishAppMetadata(metadataIdentifier 
*identifier.SubscriberMetadataIdentifier, info *common.MetadataInfo) error {
-       // TODO will implement
-       panic("implement me")
+       key := e.getNodeKey(metadataIdentifier)
+       value, err := json.Marshal(info)
+       if err == nil {
+               err = e.client.Put(key, string(value))
+       }
+       
+       return err
 }
 
 // StoreProviderMetadata will store the metadata
diff --git a/metadata/report/etcd/report_test.go 
b/metadata/report/etcd/report_test.go
index a459791..d0162eb 100644
--- a/metadata/report/etcd/report_test.go
+++ b/metadata/report/etcd/report_test.go
@@ -94,8 +94,21 @@ func TestEtcdMetadataReport_CRUD(t *testing.T) {
        err = metadataReport.SaveSubscribedData(subMi, string(urls))
        assert.Nil(t, err)
 
+       serviceUrl, _ = 
common.NewURL("dubbo://127.0.0.1:20000/com.ikurento.user.UserProvider?interface=com.ikurento.user.UserProvider&group=&version=2.6.0")
+       metadataInfo := common.NewMetadataInfo(subMi.Application, "", 
map[string]*common.ServiceInfo{
+               "com.ikurento.user.UserProvider": 
common.NewServiceInfoWithURL(serviceUrl),
+       })
        err = metadataReport.RemoveServiceMetadata(serviceMi)
        assert.Nil(t, err)
+       err = metadataReport.PublishAppMetadata(subMi, metadataInfo)
+       assert.Nil(t, err)
+
+       mdInfo, err := metadataReport.GetAppMetadata(subMi)
+       assert.Nil(t, err)
+       assert.Equal(t, metadataInfo.App, mdInfo.App)
+       assert.Equal(t, metadataInfo.Revision, mdInfo.Revision)
+       assert.Equal(t, 1, len(mdInfo.Services))
+       assert.NotNil(t, 
metadataInfo.Services["com.ikurento.user.UserProvider"])
 
        e.Close()
 }

Reply via email to