Skip to content

Commit

Permalink
Using group and dataId to replace vo.ConfigParam as parameters in New…
Browse files Browse the repository at this point in the history
…NacosDataSource()
  • Loading branch information
louyuting committed Jul 22, 2020
1 parent 20ab897 commit 9a1b59c
Show file tree
Hide file tree
Showing 3 changed files with 32 additions and 31 deletions.
41 changes: 23 additions & 18 deletions ext/datasource/nacos/nacos.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,24 +17,26 @@ var (

type NacosDataSource struct {
datasource.Base
client config_client.IConfigClient
isInitialized util.AtomicBool
propertyConfig vo.ConfigParam
closeChan chan struct{}
client config_client.IConfigClient
isInitialized util.AtomicBool
group string
dataId string
closeChan chan struct{}
}

func NewNacosDataSource(client config_client.IConfigClient, propertyConfig vo.ConfigParam, handlers ...datasource.PropertyHandler) (*NacosDataSource, error) {
func NewNacosDataSource(client config_client.IConfigClient, group, dataId string, handlers ...datasource.PropertyHandler) (*NacosDataSource, error) {
if client == nil {
return nil, errors.New("Nil nacos config client")
}
if len(propertyConfig.Group) == 0 || len(propertyConfig.DataId) == 0 {
return nil, errors.New(fmt.Sprintf("Invalid property config, group: %s, dataId: %s.", propertyConfig.Group, propertyConfig.DataId))
if len(group) == 0 || len(dataId) == 0 {
return nil, errors.New(fmt.Sprintf("Invalid parameters, group: %s, dataId: %s", group, dataId))
}
var ds = &NacosDataSource{
Base: datasource.Base{},
client: client,
propertyConfig: propertyConfig,
closeChan: make(chan struct{}, 1),
Base: datasource.Base{},
client: client,
group: group,
dataId: dataId,
closeChan: make(chan struct{}, 1),
}
for _, h := range handlers {
ds.AddPropertyHandler(h)
Expand All @@ -55,18 +57,21 @@ func (s *NacosDataSource) Initialize() error {
}
err = s.listen(s.client)
if err == nil {
logger.Infof("Nacos data source is successfully initialized, property config: %+v", s.propertyConfig)
logger.Infof("Nacos data source is successfully initialized, group: %s, dataId: %s", s.group, s.dataId)
}
return err
}

func (s *NacosDataSource) ReadSource() ([]byte, error) {
content, err := s.client.GetConfig(s.propertyConfig)
content, err := s.client.GetConfig(vo.ConfigParam{
DataId: s.group,
Group: s.dataId,
})
if err != nil {
return nil, errors.Errorf("Failed to read the nacos data source when initialization, err: %+v", err)
}

logger.Infof("Succeed to read source for property config: %+v, data: %s", s.propertyConfig, content)
logger.Infof("Succeed to read source for group: %s, dataId: %s, data: %s", s.group, s.dataId, content)
return []byte(content), err
}

Expand All @@ -76,10 +81,10 @@ func (s *NacosDataSource) doUpdate(data []byte) error {

func (s *NacosDataSource) listen(client config_client.IConfigClient) (err error) {
listener := vo.ConfigParam{
DataId: s.propertyConfig.DataId,
Group: s.propertyConfig.Group,
DataId: s.dataId,
Group: s.group,
OnChange: func(namespace, group, dataId, data string) {
logger.Infof("Receive listened property. namespace: %s, group: %s, dataId: %s, data: %s.", namespace, group, dataId, data)
logger.Infof("Receive listened property. namespace: %s, group: %s, dataId: %s, data: %s", namespace, group, dataId, data)
err := s.doUpdate([]byte(data))
if err != nil {
logger.Errorf("Fail to update data source, err: %+v", err)
Expand All @@ -96,6 +101,6 @@ func (s *NacosDataSource) listen(client config_client.IConfigClient) (err error)

func (s *NacosDataSource) Close() error {
s.closeChan <- struct{}{}
logger.Infof("The nacos datasource had been closed. property config: %+v", s.propertyConfig)
logger.Infof("The nacos datasource had been closed, group: %s, dataId: %s", s.group, s.dataId)
return nil
}
6 changes: 1 addition & 5 deletions ext/datasource/nacos/nacos_example.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@ import (
"github.com/nacos-group/nacos-sdk-go/clients/nacos_client"
"github.com/nacos-group/nacos-sdk-go/common/constant"
"github.com/nacos-group/nacos-sdk-go/common/http_agent"
"github.com/nacos-group/nacos-sdk-go/vo"
"github.com/stretchr/testify/mock"
)

Expand Down Expand Up @@ -44,10 +43,7 @@ func Example_NacosDatasource_CustomizeClient() {
h := &datasource.MockPropertyHandler{}
h.On("isPropertyConsistent", mock.Anything).Return(true)
h.On("Handle", mock.Anything).Return(nil)
nds, err := NewNacosDataSource(client, vo.ConfigParam{
DataId: "system-rules",
Group: "sentinel-go",
}, h)
nds, err := NewNacosDataSource(client, "sentinel-go", "system-rules", h)
if err != nil {
fmt.Printf("Fail to create nacos data source client, err: %+v", err)
return
Expand Down
16 changes: 8 additions & 8 deletions ext/datasource/nacos/nacos_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -33,10 +33,10 @@ const (
]`
)

var configParam = vo.ConfigParam{
DataId: "system-rules",
Group: "sentinel-go",
}
var (
Group = "sentinel-go"
DataId = "system-rules"
)

type nacosClientMock struct {
mock.Mock
Expand Down Expand Up @@ -66,11 +66,11 @@ func (n *nacosClientMock) SearchConfig(param vo.SearchConfigParm) (*model.Config
return ret.Get(0).(*model.ConfigPage), ret.Error(1)
}

func getNacosDataSource(client config_client.IConfigClient, getConfig vo.ConfigParam) (*NacosDataSource, error) {
func getNacosDataSource(client config_client.IConfigClient) (*NacosDataSource, error) {
mh1 := &datasource.MockPropertyHandler{}
mh1.On("Handle", mock.Anything).Return(nil)
mh1.On("isPropertyConsistent", mock.Anything).Return(false)
nds, err := NewNacosDataSource(client, getConfig, mh1)
nds, err := NewNacosDataSource(client, Group, DataId, mh1)

return nds, err
}
Expand All @@ -80,7 +80,7 @@ func TestNacosDataSource(t *testing.T) {
t.Run("NewNacosDataSource", func(t *testing.T) {
client, err := createConfigClientTest()
assert.Nil(t, err)
nds, err := getNacosDataSource(client, configParam)
nds, err := getNacosDataSource(client)
assert.True(t, nds != nil && err == nil)
})

Expand All @@ -91,7 +91,7 @@ func TestNacosDataSource(t *testing.T) {
nacosClientMock := new(nacosClientMock)
nacosClientMock.On("GetConfig", mock.Anything).Return(TestSystemRules, nil)
nacosClientMock.On("ListenConfig", mock.Anything).Return(nil)
nds, err := getNacosDataSource(nacosClientMock, configParam)
nds, err := getNacosDataSource(nacosClientMock)
assert.True(t, nds != nil && err == nil)
err = nds.Initialize()
assert.True(t, err == nil)
Expand Down

0 comments on commit 9a1b59c

Please sign in to comment.