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/08/02 04:18:35 UTC
[dubbo-go] branch 3.0 updated: remove zk test (#1357)
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 0376b53 remove zk test (#1357)
0376b53 is described below
commit 0376b53e551441805c2f379bd9077aeed2b250b6
Author: YuDong Tang <58...@qq.com>
AuthorDate: Mon Aug 2 12:18:31 2021 +0800
remove zk test (#1357)
---
config_center/zookeeper/impl_test.go | 232 ----------------------
config_center/zookeeper/listener_test.go | 101 ----------
metadata/report/zookeeper/report_test.go | 203 -------------------
registry/zookeeper/listener_test.go | 46 -----
registry/zookeeper/registry_test.go | 185 ------------------
registry/zookeeper/service_discovery_test.go | 279 ---------------------------
remoting/zookeeper/facade_test.go | 125 ------------
remoting/zookeeper/listener_test.go | 104 ----------
8 files changed, 1275 deletions(-)
diff --git a/config_center/zookeeper/impl_test.go b/config_center/zookeeper/impl_test.go
deleted file mode 100644
index 6d33c5a..0000000
--- a/config_center/zookeeper/impl_test.go
+++ /dev/null
@@ -1,232 +0,0 @@
-/*
- * 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 zookeeper
-
-import (
- "fmt"
- "path"
- "strconv"
- "sync"
- "testing"
-)
-
-import (
- "github.com/dubbogo/go-zookeeper/zk"
- gxset "github.com/dubbogo/gost/container/set"
- "github.com/stretchr/testify/assert"
-)
-
-import (
- "dubbo.apache.org/dubbo-go/v3/common"
- "dubbo.apache.org/dubbo-go/v3/common/constant"
- "dubbo.apache.org/dubbo-go/v3/config_center"
- "dubbo.apache.org/dubbo-go/v3/config_center/parser"
-)
-
-const (
- dubboPropertyFileName = "dubbo.properties"
-)
-
-func initZkData(group string, t *testing.T) (*zk.TestCluster, *zookeeperDynamicConfiguration) {
- ts, err := zk.StartTestCluster(1, nil, nil, zk.WithRetryTimes(20))
- assert.NoError(t, err)
- assert.NotNil(t, ts.Servers[0])
- urlString := "registry://127.0.0.1:" + strconv.Itoa(ts.Servers[0].Port)
- regurl, err := common.NewURL(urlString)
- assert.NoError(t, err)
- regurl.AddParam(constant.REGISTRY_TIMEOUT_KEY, "15s")
- zkFactory := &zookeeperDynamicConfigurationFactory{}
- reg, err := zkFactory.GetDynamicConfiguration(regurl)
- zreg, ok := reg.(*zookeeperDynamicConfiguration)
- assert.True(t, ok)
- assert.NoError(t, err)
- assert.True(t, zreg.IsAvailable())
- assert.Equal(t, zreg.GetURL(), regurl)
- assert.True(t, zreg.RestartCallBack())
- zreg.SetParser(&parser.DefaultConfigurationParser{})
-
- data := `
- dubbo.consumer.request_timeout=5s
- dubbo.consumer.connect_timeout=5s
- dubbo.application.organization=ikurento.com
- dubbo.application.name=BDTService
- dubbo.application.module=dubbogo user-info server
- dubbo.application.version=0.0.1
- dubbo.application.owner=ZX
- dubbo.application.environment=dev
- dubbo.registries.hangzhouzk.protocol=zookeeper
- dubbo.registries.hangzhouzk.timeout=3s
- dubbo.registries.hangzhouzk.address=127.0.0.1:2181
- dubbo.registries.shanghaizk.protocol=zookeeper
- dubbo.registries.shanghaizk.timeout=3s
- dubbo.registries.shanghaizk.address=127.0.0.1:2182
- dubbo.service.com.ikurento.user.UserProvider.protocol=dubbo
- dubbo.service.com.ikurento.user.UserProvider.interface=com.ikurento.user.UserProvider
- dubbo.service.com.ikurento.user.UserProvider.loadbalance=random
- dubbo.service.com.ikurento.user.UserProvider.warmup=100
- dubbo.service.com.ikurento.user.UserProvider.cluster=failover
-`
- if group != "" {
- err = zreg.client.Create(path.Join(zreg.rootPath, group, dubboPropertyFileName))
- assert.NoError(t, err)
-
- _, err = zreg.client.Conn.Set(path.Join(zreg.rootPath, group, dubboPropertyFileName), []byte(data), 0)
- assert.NoError(t, err)
- } else {
- err = zreg.client.Create(path.Join(zreg.rootPath, dubboPropertyFileName))
- assert.NoError(t, err)
-
- _, err = zreg.client.Conn.Set(path.Join(zreg.rootPath, dubboPropertyFileName), []byte(data), 0)
- assert.NoError(t, err)
- }
-
- return ts, zreg
-}
-
-func TestGetConfig(t *testing.T) {
- ts, reg := initZkData("dubbo", t)
- defer func() {
- reg.client.Close()
- err := ts.Stop()
- assert.NoError(t, err)
- }()
- configs, err := reg.GetProperties(dubboPropertyFileName, config_center.WithGroup("dubbo"))
- assert.NoError(t, err)
- m, err := reg.Parser().Parse(configs)
- assert.NoError(t, err)
- assert.Equal(t, "5s", m["dubbo.consumer.request_timeout"])
- configs, err = reg.GetProperties(dubboPropertyFileName)
- assert.Error(t, err)
- assert.Equal(t, "", configs)
- configs, err = reg.GetInternalProperty(dubboPropertyFileName)
- assert.Error(t, err)
- assert.Equal(t, "", configs)
- configs, err = reg.GetRule(dubboPropertyFileName)
- assert.Error(t, err)
- assert.Equal(t, "", configs)
-}
-
-func TestAddListener(t *testing.T) {
- ts, reg := initZkData("", t)
- defer func() {
- reg.client.Close()
- err := ts.Stop()
- assert.NoError(t, err)
- }()
- listener := &mockDataListener{}
- reg.AddListener(dubboPropertyFileName, listener)
-
- listener.wg.Add(1)
- data := `
- dubbo.consumer.request_timeout=3s
- dubbo.consumer.connect_timeout=5s
- dubbo.application.organization=ikurento.com
- dubbo.application.name=BDTService
- dubbo.application.module=dubbogo user-info server
- dubbo.application.version=0.0.1
- dubbo.application.owner=ZX
- dubbo.application.environment=dev
- dubbo.registries.hangzhouzk.protocol=zookeeper
- dubbo.registries.hangzhouzk.timeout=3s
- dubbo.registries.hangzhouzk.address=127.0.0.1:2181
- dubbo.registries.shanghaizk.protocol=zookeeper
- dubbo.registries.shanghaizk.timeout=3s
- dubbo.registries.shanghaizk.address=127.0.0.1:2182
- dubbo.service.com.ikurento.user.UserProvider.protocol=dubbo
- dubbo.service.com.ikurento.user.UserProvider.interface=com.ikurento.user.UserProvider
- dubbo.service.com.ikurento.user.UserProvider.loadbalance=random
- dubbo.service.com.ikurento.user.UserProvider.warmup=100
- dubbo.service.com.ikurento.user.UserProvider.cluster=failover
-`
- _, err := reg.client.Conn.Set(path.Join(reg.rootPath, dubboPropertyFileName), []byte(data), 1)
- assert.NoError(t, err)
- listener.wg.Wait()
- assert.Equal(t, dubboPropertyFileName, listener.event)
-}
-
-func TestRemoveListener(t *testing.T) {
- ts, reg := initZkData("", t)
- defer func() {
- reg.client.Close()
- err := ts.Stop()
- assert.NoError(t, err)
- }()
- listener := &mockDataListener{}
- reg.AddListener(dubboPropertyFileName, listener)
- listener.wg.Add(1)
- data := `
- dubbo.consumer.request_timeout=3s
- dubbo.consumer.connect_timeout=5s
- dubbo.application.organization=ikurento.com
- dubbo.application.name=BDTService
- dubbo.application.module=dubbogo user-info server
- dubbo.application.version=0.0.1
- dubbo.application.owner=ZX
- dubbo.application.environment=dev
- dubbo.registries.hangzhouzk.protocol=zookeeper
- dubbo.registries.hangzhouzk.timeout=3s
- dubbo.registries.hangzhouzk.address=127.0.0.1:2181
- dubbo.registries.shanghaizk.protocol=zookeeper
- dubbo.registries.shanghaizk.timeout=3s
- dubbo.registries.shanghaizk.address=127.0.0.1:2182
- dubbo.service.com.ikurento.user.UserProvider.protocol=dubbo
- dubbo.service.com.ikurento.user.UserProvider.interface=com.ikurento.user.UserProvider
- dubbo.service.com.ikurento.user.UserProvider.loadbalance=random
- dubbo.service.com.ikurento.user.UserProvider.warmup=100
- dubbo.service.com.ikurento.user.UserProvider.cluster=failover
-`
- reg.RemoveListener(dubboPropertyFileName, listener)
- listener.wg.Done()
- _, err := reg.client.Conn.Set(path.Join(reg.rootPath, dubboPropertyFileName), []byte(data), 1)
- assert.NoError(t, err)
- listener.wg.Wait()
- assert.Equal(t, "", listener.event)
-}
-
-func TestZookeeperDynamicConfigurationPublishConfig(t *testing.T) {
- value := "Test Data"
- customGroup := "Custom Group"
- key := "myKey"
- ts, reg := initZkData(config_center.DEFAULT_GROUP, t)
- defer func() {
- reg.client.Close()
- err := ts.Stop()
- assert.NoError(t, err)
- }()
- err := reg.PublishConfig(key, customGroup, value)
- assert.Nil(t, err)
- result, err := reg.GetInternalProperty("myKey", config_center.WithGroup(customGroup))
- assert.Nil(t, err)
- assert.Equal(t, value, result)
-
- var keys *gxset.HashSet
- keys, err = reg.GetConfigKeysByGroup(customGroup)
- assert.Nil(t, err)
- assert.Equal(t, 1, keys.Size())
- assert.True(t, keys.Contains(key))
-}
-
-type mockDataListener struct {
- wg sync.WaitGroup
- event string
-}
-
-func (l *mockDataListener) Process(configType *config_center.ConfigChangeEvent) {
- fmt.Println("process!!!!!")
- l.wg.Done()
- l.event = configType.Key
-}
diff --git a/config_center/zookeeper/listener_test.go b/config_center/zookeeper/listener_test.go
deleted file mode 100644
index 56c2e1e..0000000
--- a/config_center/zookeeper/listener_test.go
+++ /dev/null
@@ -1,101 +0,0 @@
-/*
- * 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 zookeeper
-
-import (
- "path"
- "strconv"
- "testing"
-)
-
-import (
- "github.com/dubbogo/go-zookeeper/zk"
- "github.com/stretchr/testify/assert"
-)
-
-import (
- "dubbo.apache.org/dubbo-go/v3/common"
- "dubbo.apache.org/dubbo-go/v3/common/constant"
- "dubbo.apache.org/dubbo-go/v3/config_center/parser"
-)
-
-func initZkDynamicConfiguration(t *testing.T) (*zk.TestCluster, *zookeeperDynamicConfiguration) {
- ts, err := zk.StartTestCluster(1, nil, nil, zk.WithRetryTimes(20))
- assert.NoError(t, err)
- assert.NotNil(t, ts.Servers[0])
- urlString := "registry://127.0.0.1:" + strconv.Itoa(ts.Servers[0].Port)
- regurl, err := common.NewURL(urlString)
- assert.NoError(t, err)
- regurl.AddParam(constant.REGISTRY_TIMEOUT_KEY, "15s")
- zkFactory := &zookeeperDynamicConfigurationFactory{}
- reg, err := zkFactory.GetDynamicConfiguration(regurl)
- zreg, ok := reg.(*zookeeperDynamicConfiguration)
- assert.True(t, ok)
- assert.NoError(t, err)
- assert.True(t, zreg.IsAvailable())
- assert.Equal(t, zreg.GetURL(), regurl)
- assert.True(t, zreg.RestartCallBack())
- zreg.SetParser(&parser.DefaultConfigurationParser{})
-
- data := `
- dubbo.application.name=dubbogo
-`
- err = zreg.client.Create(path.Join(zreg.rootPath, dubboPropertyFileName))
- assert.NoError(t, err)
- _, err = zreg.client.Conn.Set(path.Join(zreg.rootPath, dubboPropertyFileName), []byte(data), 0)
- assert.NoError(t, err)
-
- return ts, zreg
-}
-
-func TestZookeeperDynamicConfigurationPathToKey(t *testing.T) {
- ts, reg := initZkDynamicConfiguration(t)
- defer func() {
- err := ts.Stop()
- assert.NoError(t, err)
- }()
- listener := &mockDataListener{}
- key := path.Join("dubbogoDemo" + constant.CONFIGURATORS_SUFFIX)
- reg.AddListener(key, listener)
- listener.wg.Add(1)
-
- data := `
-scope: application
-key: dubbogoDemo
-enabled: true
-configs:
- - addresses: [0.0.0.0:20880]
- side: provider
- parameters:
- weight: 60
- - addresses: [0.0.0.0:20881]
- side: provider
- parameters:
- weight: 40
-`
- zkPath := path.Join(reg.rootPath, "dubbo", key)
- exists, _, err := reg.client.Conn.Exists(zkPath)
- assert.NoError(t, err)
- if !exists {
- err = reg.client.Create(zkPath)
- assert.NoError(t, err)
- }
- _, err = reg.client.SetContent(zkPath, []byte(data), 0)
- assert.NoError(t, err)
- listener.wg.Wait()
- assert.Equal(t, key, listener.event)
-}
diff --git a/metadata/report/zookeeper/report_test.go b/metadata/report/zookeeper/report_test.go
deleted file mode 100644
index 8d718db..0000000
--- a/metadata/report/zookeeper/report_test.go
+++ /dev/null
@@ -1,203 +0,0 @@
-/*
- * 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 zookeeper
-
-import (
- "encoding/json"
- "net/url"
- "strconv"
- "testing"
-)
-
-import (
- "github.com/dubbogo/go-zookeeper/zk"
- "github.com/stretchr/testify/assert"
-)
-
-import (
- "dubbo.apache.org/dubbo-go/v3/common"
- "dubbo.apache.org/dubbo-go/v3/common/constant"
- "dubbo.apache.org/dubbo-go/v3/common/extension"
- "dubbo.apache.org/dubbo-go/v3/metadata/identifier"
- "dubbo.apache.org/dubbo-go/v3/metadata/report"
-)
-
-func newProviderRegistryUrl(host string, port int) *common.URL {
- return common.NewURLWithOptions(
- common.WithIp(host),
- common.WithPort(strconv.Itoa(port)),
- common.WithParams(url.Values{}),
- common.WithParamsValue(constant.ROLE_KEY, strconv.Itoa(common.PROVIDER)),
- )
-}
-
-func newBaseMetadataIdentifier(side string) *identifier.BaseMetadataIdentifier {
- return &identifier.BaseMetadataIdentifier{
- ServiceInterface: "org.apache.HelloWorld",
- Version: "1.0.0",
- Group: "group",
- Side: side,
- }
-}
-
-func newMetadataIdentifier(side string) *identifier.MetadataIdentifier {
- return &identifier.MetadataIdentifier{
- Application: "application",
- BaseMetadataIdentifier: *newBaseMetadataIdentifier(side),
- }
-}
-
-func newServiceMetadataIdentifier(side string) *identifier.ServiceMetadataIdentifier {
- return &identifier.ServiceMetadataIdentifier{
- Revision: "1.0",
- Protocol: "dubbo",
- BaseMetadataIdentifier: *newBaseMetadataIdentifier(side),
- }
-}
-
-func newSubscribeMetadataIdentifier() *identifier.SubscriberMetadataIdentifier {
- return &identifier.SubscriberMetadataIdentifier{
- Revision: "1.0",
- BaseApplicationMetadataIdentifier: identifier.BaseApplicationMetadataIdentifier{Application: "provider"},
- }
-}
-
-type zookeeperMetadataReportTestSuite struct {
- t *testing.T
- m report.MetadataReport
-}
-
-func newZookeeperMetadataReportTestSuite(t *testing.T, m report.MetadataReport) *zookeeperMetadataReportTestSuite {
- return &zookeeperMetadataReportTestSuite{t: t, m: m}
-}
-
-func (suite *zookeeperMetadataReportTestSuite) testStoreProviderMetadata() {
- providerMi := newMetadataIdentifier("provider")
- providerMeta := "provider"
- err := suite.m.StoreProviderMetadata(providerMi, providerMeta)
- assert.NoError(suite.t, err)
-}
-
-func (suite *zookeeperMetadataReportTestSuite) testStoreConsumerMetadata() {
- consumerMi := newMetadataIdentifier("consumer")
- consumerMeta := "consumer"
- err := suite.m.StoreProviderMetadata(consumerMi, consumerMeta)
- assert.NoError(suite.t, err)
-}
-
-func (suite *zookeeperMetadataReportTestSuite) testSaveServiceMetadata(url *common.URL) {
- serviceMi := newServiceMetadataIdentifier("provider")
- err := suite.m.SaveServiceMetadata(serviceMi, url)
- assert.NoError(suite.t, err)
-}
-
-func (suite *zookeeperMetadataReportTestSuite) testRemoveServiceMetadata() {
- serviceMi := newServiceMetadataIdentifier("provider")
- err := suite.m.RemoveServiceMetadata(serviceMi)
- assert.NoError(suite.t, err)
-}
-
-func (suite *zookeeperMetadataReportTestSuite) testGetExportedURLs() {
- serviceMi := newServiceMetadataIdentifier("provider")
- urls, err := suite.m.GetExportedURLs(serviceMi)
- assert.Equal(suite.t, 1, len(urls))
- assert.NoError(suite.t, err)
-}
-
-func (suite *zookeeperMetadataReportTestSuite) testSaveSubscribedData(url *common.URL) {
- subscribeMi := newSubscribeMetadataIdentifier()
- urls := []string{url.String()}
- bytes, _ := json.Marshal(urls)
- err := suite.m.SaveSubscribedData(subscribeMi, string(bytes))
- assert.Nil(suite.t, err)
-}
-
-func (suite *zookeeperMetadataReportTestSuite) testGetSubscribedURLs() {
- subscribeMi := newSubscribeMetadataIdentifier()
- urls, err := suite.m.GetSubscribedURLs(subscribeMi)
- assert.Equal(suite.t, 1, len(urls))
- assert.NoError(suite.t, err)
-}
-
-func (suite *zookeeperMetadataReportTestSuite) testGetServiceDefinition() {
- providerMi := newMetadataIdentifier("provider")
- providerMeta, err := suite.m.GetServiceDefinition(providerMi)
- assert.Equal(suite.t, "provider", providerMeta)
- assert.NoError(suite.t, err)
-}
-
-func (suite *zookeeperMetadataReportTestSuite) testPublishAppMetadata() {
- subscribeMi := newSubscribeMetadataIdentifier()
- info := common.NewMetadataInfWithApp(subscribeMi.Application)
- err := suite.m.PublishAppMetadata(subscribeMi, info)
- assert.NoError(suite.t, err)
-}
-
-func (suite *zookeeperMetadataReportTestSuite) testGetAppMetadata() {
- subscribeMi := newSubscribeMetadataIdentifier()
- info, err := suite.m.GetAppMetadata(subscribeMi)
- assert.NoError(suite.t, err)
- assert.Equal(suite.t, "provider", info.App)
-}
-
-func testInterfaceMetadata(t *testing.T) {
- testCluster, err := zk.StartTestCluster(1, nil, nil, zk.WithRetryTimes(20))
- assert.NoError(t, err)
- defer func() {
- err := testCluster.Stop()
- assert.Nil(t, err)
- }()
-
- providerRegistryUrl := newProviderRegistryUrl("127.0.0.1", testCluster.Servers[0].Port)
- mf := extension.GetMetadataReportFactory("zookeeper")
- m := mf.CreateMetadataReport(providerRegistryUrl)
-
- suite := newZookeeperMetadataReportTestSuite(t, m)
- suite.testStoreProviderMetadata()
- suite.testStoreConsumerMetadata()
- suite.testSaveServiceMetadata(providerRegistryUrl)
- suite.testGetExportedURLs()
- suite.testRemoveServiceMetadata()
- suite.testSaveSubscribedData(providerRegistryUrl)
- suite.testGetSubscribedURLs()
- suite.testGetServiceDefinition()
-}
-
-func testAppMetadata(t *testing.T) {
- testCluster, err := zk.StartTestCluster(1, nil, nil, zk.WithRetryTimes(20))
- assert.NoError(t, err)
- defer func() {
- err := testCluster.Stop()
- assert.Nil(t, err)
- }()
-
- providerRegistryUrl := newProviderRegistryUrl("127.0.0.1", testCluster.Servers[0].Port)
- mf := extension.GetMetadataReportFactory("zookeeper")
- m := mf.CreateMetadataReport(providerRegistryUrl)
-
- suite := newZookeeperMetadataReportTestSuite(t, m)
- suite.testPublishAppMetadata()
- suite.testGetAppMetadata()
-}
-
-// TestZookeeperMetadataReport is dependent on zookeeper-*-fatjar.jar,
-// please execute `make -f ../../../Makefile prepare` before running unittest.
-func TestZookeeperMetadataReport(t *testing.T) {
- t.Run("testInterfaceMetadata", testInterfaceMetadata)
- t.Run("testAppMetadata", testAppMetadata)
-}
diff --git a/registry/zookeeper/listener_test.go b/registry/zookeeper/listener_test.go
deleted file mode 100644
index 43862e0..0000000
--- a/registry/zookeeper/listener_test.go
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * 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 zookeeper
-
-import (
- "testing"
-)
-
-import (
- "github.com/stretchr/testify/assert"
-)
-
-import (
- "dubbo.apache.org/dubbo-go/v3/common"
- "dubbo.apache.org/dubbo-go/v3/config_center"
- "dubbo.apache.org/dubbo-go/v3/remoting"
-)
-
-// Test_DataChange test data change event of zk listenerg
-func Test_DataChange(t *testing.T) {
- listener := NewRegistryDataListener()
- url, _ := common.NewURL("jsonrpc%3A%2F%2F127.0.0.1%3A20001%2Fcom.ikurento.user.UserProvider%3Fanyhost%3Dtrue%26app.version%3D0.0.1%26application%3DBDTService%26category%3Dproviders%26cluster%3Dfailover%26dubbo%3Ddubbo-provider-golang-1.3.0%26environment%3Ddev%26group%3D%26interface%3Dcom.ikurento.user.UserProvider%26ip%3D10.32.20.124%26loadbalance%3Drandom%26methods.GetUser.loadbalance%3Drandom%26methods.GetUser.retries%3D1%26methods.GetUser.weight%3D0%26module%3Ddubbogo%2Buser-info%2Bs [...]
- listener.SubscribeURL(url, &MockConfigurationListener{})
- int := listener.DataChange(remoting.Event{Path: "/dubbo/com.ikurento.user.UserProvider/providers/jsonrpc%3A%2F%2F127.0.0.1%3A20001%2Fcom.ikurento.user.UserProvider%3Fanyhost%3Dtrue%26app.version%3D0.0.1%26application%3DBDTService%26category%3Dproviders%26cluster%3Dfailover%26dubbo%3Ddubbo-provider-golang-1.3.0%26environment%3Ddev%26group%3D%26interface%3Dcom.ikurento.user.UserProvider%26ip%3D10.32.20.124%26loadbalance%3Drandom%26methods.GetUser.loadbalance%3Drandom%26methods.GetUser.ret [...]
- assert.Equal(t, true, int)
-}
-
-type MockConfigurationListener struct{}
-
-func (*MockConfigurationListener) Process(configType *config_center.ConfigChangeEvent) {
-}
diff --git a/registry/zookeeper/registry_test.go b/registry/zookeeper/registry_test.go
deleted file mode 100644
index 4e1c198..0000000
--- a/registry/zookeeper/registry_test.go
+++ /dev/null
@@ -1,185 +0,0 @@
-/*
- * 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 zookeeper
-
-import (
- "strconv"
- "testing"
- "time"
-)
-
-import (
- gxzookeeper "github.com/dubbogo/gost/database/kv/zk"
- "github.com/stretchr/testify/assert"
-)
-
-import (
- "dubbo.apache.org/dubbo-go/v3/common"
- "dubbo.apache.org/dubbo-go/v3/common/constant"
-)
-
-func Test_Register(t *testing.T) {
- regURL, _ := common.NewURL("registry://127.0.0.1:1111", common.WithParamsValue(constant.ROLE_KEY, strconv.Itoa(common.PROVIDER)))
- url, _ := common.NewURL("dubbo://127.0.0.1:20000/com.ikurento.user.UserProvider", common.WithParamsValue(constant.CLUSTER_KEY, "mock"), common.WithParamsValue("serviceid", "soa.mock"), common.WithMethods([]string{"GetUser", "AddUser"}))
-
- ts, reg, err := newMockZkRegistry(regURL)
- assert.NoError(t, err)
- defer func() {
- _ = ts.Stop()
- }()
- err = reg.Register(url)
- children, _ := reg.client.GetChildren("/dubbo/com.ikurento.user.UserProvider/providers")
- assert.Regexp(t, ".*dubbo%3A%2F%2F127.0.0.1%3A20000%2Fcom.ikurento.user.UserProvider%3Fanyhost%3Dtrue%26cluster%3Dmock%26.*.serviceid%3Dsoa.mock", children)
- assert.NoError(t, err)
-}
-
-func Test_UnRegister(t *testing.T) {
- // register
- regURL, _ := common.NewURL("registry://127.0.0.1:1111", common.WithParamsValue(constant.ROLE_KEY, strconv.Itoa(common.PROVIDER)))
- url, _ := common.NewURL("dubbo://127.0.0.1:20000/com.ikurento.user.UserProvider", common.WithParamsValue(constant.CLUSTER_KEY, "mock"), common.WithParamsValue("serviceid", "soa.mock"), common.WithMethods([]string{"GetUser", "AddUser"}))
-
- ts, reg, _ := newMockZkRegistry(regURL)
- defer func() {
- _ = ts.Stop()
- }()
- err := reg.Register(url)
- assert.NoError(t, err)
- children, _ := reg.client.GetChildren("/dubbo/com.ikurento.user.UserProvider/providers")
- assert.Regexp(t, ".*dubbo%3A%2F%2F127.0.0.1%3A20000%2Fcom.ikurento.user.UserProvider%3Fanyhost%3Dtrue%26cluster%3Dmock%26.*.serviceid%3Dsoa.mock", children)
- assert.NoError(t, err)
-
- err = reg.UnRegister(url)
- assert.NoError(t, err)
- children, err = reg.client.GetChildren("/dubbo/com.ikurento.user.UserProvider/providers")
- assert.Equal(t, 0, len(children))
- assert.Error(t, err)
- assert.True(t, reg.IsAvailable())
-
- err = reg.Register(url)
- children, _ = reg.client.GetChildren("/dubbo/com.ikurento.user.UserProvider/providers")
- assert.Regexp(t, ".*dubbo%3A%2F%2F127.0.0.1%3A20000%2Fcom.ikurento.user.UserProvider%3Fanyhost%3Dtrue%26cluster%3Dmock%26.*.serviceid%3Dsoa.mock", children)
- assert.NoError(t, err)
-}
-
-func Test_Subscribe(t *testing.T) {
- regURL, _ := common.NewURL("registry://127.0.0.1:1111", common.WithParamsValue(constant.ROLE_KEY, strconv.Itoa(common.PROVIDER)))
- url, _ := common.NewURL("dubbo://127.0.0.1:20000/com.ikurento.user.UserProvider", common.WithParamsValue(constant.CLUSTER_KEY, "mock"), common.WithMethods([]string{"GetUser", "AddUser"}))
- ts, reg, _ := newMockZkRegistry(regURL)
-
- // provider register
- err := reg.Register(url)
- assert.NoError(t, err)
-
- if err != nil {
- return
- }
-
- // consumer register
- regURL.SetParam(constant.ROLE_KEY, strconv.Itoa(common.CONSUMER))
- _, reg2, _ := newMockZkRegistry(regURL, gxzookeeper.WithTestCluster(ts))
-
- err = reg2.Register(url)
- assert.Nil(t, err)
- listener, _ := reg2.DoSubscribe(url)
-
- serviceEvent, _ := listener.Next()
- assert.NoError(t, err)
- if err != nil {
- return
- }
- assert.Regexp(t, ".*ServiceEvent{Action{add}.*", serviceEvent.String())
- defer func() {
- _ = ts.Stop()
- }()
-}
-
-func Test_UnSubscribe(t *testing.T) {
- regURL, _ := common.NewURL("registry://127.0.0.1:1111", common.WithParamsValue(constant.ROLE_KEY, strconv.Itoa(common.PROVIDER)))
- url, _ := common.NewURL("dubbo://127.0.0.1:20000/com.ikurento.user.UserProvider", common.WithParamsValue(constant.CLUSTER_KEY, "mock"), common.WithMethods([]string{"GetUser", "AddUser"}))
- ts, reg, _ := newMockZkRegistry(regURL)
-
- // provider register
- err := reg.Register(url)
- assert.NoError(t, err)
-
- if err != nil {
- return
- }
-
- // consumer register
- regURL.SetParam(constant.ROLE_KEY, strconv.Itoa(common.CONSUMER))
- _, reg2, _ := newMockZkRegistry(regURL, gxzookeeper.WithTestCluster(ts))
-
- err = reg2.Register(url)
- assert.Nil(t, err)
- listener, _ := reg2.DoSubscribe(url)
-
- serviceEvent, _ := listener.Next()
- assert.NoError(t, err)
- if err != nil {
- return
- }
- assert.Regexp(t, ".*ServiceEvent{Action{add}.*", serviceEvent.String())
-
- err = reg2.UnSubscribe(url, nil)
- assert.Nil(t, err)
- assert.Nil(t, reg2.listener)
- defer func() {
- _ = ts.Stop()
- }()
-}
-
-func Test_ConsumerDestroy(t *testing.T) {
- regURL, _ := common.NewURL("registry://127.0.0.1:1111", common.WithParamsValue(constant.ROLE_KEY, strconv.Itoa(common.CONSUMER)))
- url, _ := common.NewURL("dubbo://127.0.0.1:20000/com.ikurento.user.UserProvider", common.WithParamsValue(constant.CLUSTER_KEY, "mock"), common.WithMethods([]string{"GetUser", "AddUser"}))
-
- ts, reg, err := newMockZkRegistry(regURL)
- defer func() {
- _ = ts.Stop()
- }()
-
- assert.NoError(t, err)
- err = reg.Register(url)
- assert.NoError(t, err)
- _, err = reg.DoSubscribe(url)
- assert.NoError(t, err)
-
- // listener.Close()
- time.Sleep(1e9)
- reg.Destroy()
- assert.Equal(t, false, reg.IsAvailable())
-}
-
-func Test_ProviderDestroy(t *testing.T) {
- regURL, _ := common.NewURL("registry://127.0.0.1:1111", common.WithParamsValue(constant.ROLE_KEY, strconv.Itoa(common.PROVIDER)))
- url, _ := common.NewURL("dubbo://127.0.0.1:20000/com.ikurento.user.UserProvider", common.WithParamsValue(constant.CLUSTER_KEY, "mock"), common.WithMethods([]string{"GetUser", "AddUser"}))
-
- ts, reg, err := newMockZkRegistry(regURL)
- defer func() {
- _ = ts.Stop()
- }()
-
- assert.NoError(t, err)
- err = reg.Register(url)
- assert.Nil(t, err)
-
- // listener.Close()
- time.Sleep(1e9)
- reg.Destroy()
- assert.Equal(t, false, reg.IsAvailable())
-}
diff --git a/registry/zookeeper/service_discovery_test.go b/registry/zookeeper/service_discovery_test.go
deleted file mode 100644
index 512031b..0000000
--- a/registry/zookeeper/service_discovery_test.go
+++ /dev/null
@@ -1,279 +0,0 @@
-/*
- * 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 zookeeper
-
-import (
- "context"
- "strconv"
- "sync"
- "testing"
-)
-
-import (
- "github.com/dubbogo/go-zookeeper/zk"
- gxset "github.com/dubbogo/gost/container/set"
- "github.com/stretchr/testify/assert"
-)
-
-import (
- "dubbo.apache.org/dubbo-go/v3/common"
- "dubbo.apache.org/dubbo-go/v3/common/constant"
- "dubbo.apache.org/dubbo-go/v3/common/extension"
- "dubbo.apache.org/dubbo-go/v3/common/observer"
- "dubbo.apache.org/dubbo-go/v3/common/observer/dispatcher"
- "dubbo.apache.org/dubbo-go/v3/config"
- "dubbo.apache.org/dubbo-go/v3/metadata/mapping"
- "dubbo.apache.org/dubbo-go/v3/protocol"
- "dubbo.apache.org/dubbo-go/v3/registry"
- "dubbo.apache.org/dubbo-go/v3/registry/event"
-)
-
-const testName = "test"
-
-func prepareData(t *testing.T) *zk.TestCluster {
- var err error
- tc, err := zk.StartTestCluster(1, nil, nil)
- assert.NoError(t, err)
- assert.NotNil(t, tc.Servers[0])
- address := "127.0.0.1:" + strconv.Itoa(tc.Servers[0].Port)
- //address := "127.0.0.1:2181"
-
- config.GetBaseConfig().ServiceDiscoveries[testName] = &config.ServiceDiscoveryConfig{
- Protocol: "zookeeper",
- RemoteRef: "test",
- }
-
- config.GetBaseConfig().Remotes[testName] = &config.RemoteConfig{
- Address: address,
- TimeoutStr: "10s",
- }
- return tc
-}
-
-func TestNewZookeeperServiceDiscovery(t *testing.T) {
- name := "zookeeper1"
- _, err := newZookeeperServiceDiscovery(name)
-
- // the ServiceDiscoveryConfig not found
- // err: could not init the instance because the config is invalid
- assert.NotNil(t, err)
-
- sdc := &config.ServiceDiscoveryConfig{
- Protocol: "zookeeper",
- RemoteRef: "mock",
- }
- config.GetBaseConfig().ServiceDiscoveries[name] = sdc
- _, err = newZookeeperServiceDiscovery(name)
-
- // RemoteConfig not found
- // err: could not find the remote config for name: mock
- assert.NotNil(t, err)
-}
-
-func TestZookeeperServiceDiscovery_CURDAndListener(t *testing.T) {
- tc := prepareData(t)
- defer func() {
- _ = tc.Stop()
- }()
- t.Run("testCURDZookeeperServiceDiscovery", testCURDZookeeperServiceDiscovery)
- t.Run("testAddListenerZookeeperServiceDiscovery", testAddListenerZookeeperServiceDiscovery)
-}
-
-func testCURDZookeeperServiceDiscovery(t *testing.T) {
- prepareData(t)
- extension.SetEventDispatcher("mock", func() observer.EventDispatcher {
- return dispatcher.NewMockEventDispatcher()
- })
- extension.SetGlobalServiceNameMapping(func() mapping.ServiceNameMapping {
- return mapping.NewMockServiceNameMapping()
- })
-
- extension.SetProtocol("mock", func() protocol.Protocol {
- return &mockProtocol{}
- })
-
- sd, err := newZookeeperServiceDiscovery(testName)
- assert.Nil(t, err)
- defer func() {
- _ = sd.Destroy()
- }()
- ins := ®istry.DefaultServiceInstance{
- ID: "testID",
- ServiceName: testName,
- Host: "127.0.0.1",
- Port: 2233,
- Enable: true,
- Healthy: true,
- Metadata: nil,
- }
- ins.Metadata = map[string]string{"t1": "test1", constant.METADATA_SERVICE_URL_PARAMS_PROPERTY_NAME: `{"protocol":"mock","timeout":"10000","version":"1.0.0","dubbo":"2.0.2","release":"2.7.6","port":"2233"}`}
- err = sd.Register(ins)
-
- assert.Nil(t, err)
-
- testsPager := sd.GetHealthyInstancesByPage(testName, 0, 1, true)
- assert.Equal(t, 1, testsPager.GetDataSize())
- assert.Equal(t, 1, testsPager.GetTotalPages())
- test := testsPager.GetData()[0].(registry.ServiceInstance)
- assert.Equal(t, "127.0.0.1:2233", test.GetID())
- assert.Equal(t, "test1", test.GetMetadata()["t1"])
-
- ins = ®istry.DefaultServiceInstance{
- ID: "testID",
- ServiceName: testName,
- Host: "127.0.0.1",
- Port: 2233,
- Enable: true,
- Healthy: true,
- }
- ins.Metadata = map[string]string{"t1": "test12", constant.METADATA_SERVICE_URL_PARAMS_PROPERTY_NAME: `{"protocol":"mock","timeout":"10000","version":"1.0.0","dubbo":"2.0.2","release":"2.7.6","port":"2233"}`}
-
- err = sd.Update(ins)
-
- assert.Nil(t, err)
-
- testsPager = sd.GetInstancesByPage(testName, 0, 1)
- assert.Equal(t, 1, testsPager.GetDataSize())
- test = testsPager.GetData()[0].(registry.ServiceInstance)
- assert.Equal(t, "test12", test.GetMetadata()["t1"])
-
- testsMap := sd.GetRequestInstances([]string{testName}, 0, 1)
- assert.Equal(t, 1, len(testsMap))
- assert.Equal(t, 1, testsMap[testName].GetDataSize())
- test = testsMap[testName].GetData()[0].(registry.ServiceInstance)
- assert.Equal(t, "test12", test.GetMetadata()["t1"])
-
- names := sd.GetServices()
- assert.Equal(t, 1, names.Size())
- assert.Equal(t, testName, names.Values()[0])
-
- err = sd.Unregister(®istry.DefaultServiceInstance{
- ID: "testID",
- ServiceName: testName,
- Host: "127.0.0.1",
- Port: 2233,
- Enable: true,
- Healthy: true,
- Metadata: nil,
- })
- assert.Nil(t, err)
-}
-
-func testAddListenerZookeeperServiceDiscovery(t *testing.T) {
- sd, err := newZookeeperServiceDiscovery(testName)
- assert.Nil(t, err)
- defer func() {
- _ = sd.Destroy()
- }()
-
- ins := ®istry.DefaultServiceInstance{
- ID: "testID",
- ServiceName: testName,
- Host: "127.0.0.1",
- Port: 2233,
- Enable: true,
- Healthy: true,
- Metadata: nil,
- }
- ins.Metadata = map[string]string{"t1": "test12", constant.METADATA_SERVICE_URL_PARAMS_PROPERTY_NAME: `{"protocol":"mock","timeout":"10000","version":"1.0.0","dubbo":"2.0.2","release":"2.7.6","port":"2233"}`}
- err = sd.Register(ins)
-
- assert.Nil(t, err)
- wg := &sync.WaitGroup{}
- wg.Add(1)
- tn := &testNotify{
- wg: wg,
- t: t,
- }
- hs := gxset.NewSet()
- hs.Add(testName)
-
- sicl := event.NewServiceInstancesChangedListener(hs)
- sicl.AddListenerAndNotify(testName, tn)
- extension.SetAndInitGlobalDispatcher("direct")
- extension.GetGlobalDispatcher().AddEventListener(sicl)
- err = sd.AddListener(sicl)
- assert.NoError(t, err)
-
- ins = ®istry.DefaultServiceInstance{
- ID: "testID",
- ServiceName: testName,
- Host: "127.0.0.1",
- Port: 2233,
- Enable: true,
- Healthy: true,
- Metadata: nil,
- }
- ins.Metadata = map[string]string{"t1": "test12", constant.METADATA_SERVICE_URL_PARAMS_PROPERTY_NAME: `{"protocol":"mock","timeout":"10000","version":"1.0.0","dubbo":"2.0.2","release":"2.7.6","port":"2233"}`}
- err = sd.Update(ins)
- assert.NoError(t, err)
- tn.wg.Wait()
-}
-
-type testNotify struct {
- wg *sync.WaitGroup
- t *testing.T
-}
-
-func (tn *testNotify) Notify(e *registry.ServiceEvent) {
- assert.Equal(tn.t, "2233", e.Service.Port)
- tn.wg.Done()
-}
-func (tn *testNotify) NotifyAll([]*registry.ServiceEvent, func()) {
-
-}
-
-type mockProtocol struct{}
-
-func (m mockProtocol) Export(protocol.Invoker) protocol.Exporter {
- panic("implement me")
-}
-
-func (m mockProtocol) Refer(*common.URL) protocol.Invoker {
- return &mockInvoker{}
-}
-
-func (m mockProtocol) Destroy() {
- panic("implement me")
-}
-
-type mockInvoker struct{}
-
-func (m *mockInvoker) GetURL() *common.URL {
- panic("implement me")
-}
-
-func (m *mockInvoker) IsAvailable() bool {
- panic("implement me")
-}
-
-func (m *mockInvoker) Destroy() {
- panic("implement me")
-}
-
-func (m *mockInvoker) Invoke(context.Context, protocol.Invocation) protocol.Result {
- // for getMetadataInfo and ServiceInstancesChangedListenerImpl onEvent
- serviceInfo := &common.ServiceInfo{ServiceKey: "test", MatchKey: "test"}
- services := make(map[string]*common.ServiceInfo)
- services["test"] = serviceInfo
- return &protocol.RPCResult{
- Rest: &common.MetadataInfo{
- Services: services,
- },
- }
-}
diff --git a/remoting/zookeeper/facade_test.go b/remoting/zookeeper/facade_test.go
deleted file mode 100644
index 84e7e14..0000000
--- a/remoting/zookeeper/facade_test.go
+++ /dev/null
@@ -1,125 +0,0 @@
-/*
- * 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 zookeeper
-
-import (
- "sync"
- "testing"
- "time"
-)
-
-import (
- "github.com/dubbogo/go-zookeeper/zk"
- gxzookeeper "github.com/dubbogo/gost/database/kv/zk"
- "github.com/stretchr/testify/assert"
-)
-
-import (
- "dubbo.apache.org/dubbo-go/v3/common"
-)
-
-type mockFacade struct {
- client *gxzookeeper.ZookeeperClient
- cltLock sync.Mutex
- wg sync.WaitGroup
- URL *common.URL
- done chan struct{}
-}
-
-func verifyEventStateOrder(t *testing.T, c <-chan zk.Event, expectedStates []zk.State, source string) {
- for _, state := range expectedStates {
- for {
- event, ok := <-c
- if !ok {
- t.Fatalf("unexpected channel close for %s", source)
- }
- if event.Type != zk.EventSession {
- continue
- }
-
- if event.State != state {
- t.Fatalf("mismatched state order from %s, expected %v, received %v", source, state, event.State)
- }
- break
- }
- }
-}
-
-func newMockFacade(client *gxzookeeper.ZookeeperClient, url *common.URL) ZkClientFacade {
- mock := &mockFacade{
- client: client,
- URL: url,
- }
-
- mock.wg.Add(1)
- return mock
-}
-
-func (r *mockFacade) ZkClient() *gxzookeeper.ZookeeperClient {
- return r.client
-}
-
-func (r *mockFacade) SetZkClient(client *gxzookeeper.ZookeeperClient) {
- r.client = client
-}
-
-func (r *mockFacade) ZkClientLock() *sync.Mutex {
- return &r.cltLock
-}
-
-func (r *mockFacade) WaitGroup() *sync.WaitGroup {
- return &r.wg
-}
-
-func (r *mockFacade) Done() chan struct{} {
- return r.done
-}
-
-func (r *mockFacade) GetURL() *common.URL {
- return r.URL
-}
-
-func (r *mockFacade) Destroy() {
- close(r.done)
- r.wg.Wait()
-}
-
-func (r *mockFacade) RestartCallBack() bool {
- return true
-}
-
-func (r *mockFacade) IsAvailable() bool {
- return true
-}
-
-func Test_Facade(t *testing.T) {
- ts, z, event, err := gxzookeeper.NewMockZookeeperClient("test", 15*time.Second)
- assert.NoError(t, err)
- defer func() {
- if err := ts.Stop(); err != nil {
- t.Errorf("tc.Stop() = error: %v", err)
- }
- }()
- url, _ := common.NewURL("mock://127.0.0.1")
- mock := newMockFacade(z, url)
- go HandleClientRestart(mock)
- states := []zk.State{zk.StateConnecting, zk.StateConnected, zk.StateHasSession}
- verifyEventStateOrder(t, event, states, "event channel")
- z.Close()
- verifyEventStateOrder(t, event, []zk.State{zk.StateDisconnected}, "event channel")
-}
diff --git a/remoting/zookeeper/listener_test.go b/remoting/zookeeper/listener_test.go
index 6e185ee..9e30846 100644
--- a/remoting/zookeeper/listener_test.go
+++ b/remoting/zookeeper/listener_test.go
@@ -19,117 +19,13 @@ package zookeeper
import (
"net/url"
- "sync"
"testing"
- "time"
)
import (
- "github.com/dubbogo/go-zookeeper/zk"
- gxzookeeper "github.com/dubbogo/gost/database/kv/zk"
"github.com/stretchr/testify/assert"
)
-import (
- "dubbo.apache.org/dubbo-go/v3/common/logger"
- "dubbo.apache.org/dubbo-go/v3/remoting"
-)
-
-var dubboPropertiesPath = "/dubbo/dubbo.properties"
-
-func initZkData(t *testing.T) (*zk.TestCluster, *gxzookeeper.ZookeeperClient, <-chan zk.Event) {
- ts, client, event, err := gxzookeeper.NewMockZookeeperClient("test", 15*time.Second)
- assert.NoError(t, err)
-
- data := `
- dubbo.consumer.request_timeout=5s
- dubbo.consumer.connect_timeout=5s
- dubbo.application.organization=ikurento.com
- dubbo.application.name=BDTService
- dubbo.application.module=dubbogo user-info server
- dubbo.application.version=0.0.1
- dubbo.application.owner=ZX
- dubbo.application.environment=dev
- dubbo.registries.hangzhouzk.protocol=zookeeper
- dubbo.registries.hangzhouzk.timeout=3s
- dubbo.registries.hangzhouzk.address=127.0.0.1:2181
- dubbo.registries.shanghaizk.protocol=zookeeper
- dubbo.registries.shanghaizk.timeout=3s
- dubbo.registries.shanghaizk.address=127.0.0.1:2182
- dubbo.service.com.ikurento.user.UserProvider.protocol=dubbo
- dubbo.service.com.ikurento.user.UserProvider.interface=com.ikurento.user.UserProvider
- dubbo.service.com.ikurento.user.UserProvider.loadbalance=random
- dubbo.service.com.ikurento.user.UserProvider.warmup=100
- dubbo.service.com.ikurento.user.UserProvider.cluster=failover
-`
-
- err = client.Create(dubboPropertiesPath)
- assert.NoError(t, err)
-
- _, err = client.Conn.Set(dubboPropertiesPath, []byte(data), 0)
- assert.NoError(t, err)
-
- return ts, client, event
-}
-
-func TestListener(t *testing.T) {
- changedData := `
- dubbo.consumer.request_timeout=3s
- dubbo.consumer.connect_timeout=5s
- dubbo.application.organization=ikurento.com
- dubbo.application.name=BDTService
- dubbo.application.module=dubbogo user-info server
- dubbo.application.version=0.0.1
- dubbo.application.owner=ZX
- dubbo.application.environment=dev
- dubbo.registries.hangzhouzk.protocol=zookeeper
- dubbo.registries.hangzhouzk.timeout=3s
- dubbo.registries.hangzhouzk.address=127.0.0.1:2181
- dubbo.registries.shanghaizk.protocol=zookeeper
- dubbo.registries.shanghaizk.timeout=3s
- dubbo.registries.shanghaizk.address=127.0.0.1:2182
- dubbo.service.com.ikurento.user.UserProvider.protocol=dubbo
- dubbo.service.com.ikurento.user.UserProvider.interface=com.ikurento.user.UserProvider
- dubbo.service.com.ikurento.user.UserProvider.loadbalance=random
- dubbo.service.com.ikurento.user.UserProvider.warmup=100
- dubbo.service.com.ikurento.user.UserProvider.cluster=failover
-`
- var wait sync.WaitGroup
- ts, client, _ := initZkData(t)
- defer func() {
- if err := ts.Stop(); err != nil {
- t.Errorf("ts.Stop() = error: %v", err)
- }
- }()
- client.Wait.Add(1)
- wait.Add(1)
- go client.GetEventHandler().HandleZkEvent(client)
- listener := NewZkEventListener(client)
- dataListener := &mockDataListener{client: client, changedData: changedData, wait: &wait}
- listener.ListenServiceEvent(nil, "/dubbo", dataListener)
- time.Sleep(1 * time.Second)
- _, err := client.Conn.Set(dubboPropertiesPath, []byte(changedData), 1)
- assert.NoError(t, err)
- wait.Wait()
- assert.Equal(t, changedData, dataListener.eventList[1].Content)
-}
-
-type mockDataListener struct {
- eventList []remoting.Event
- client *gxzookeeper.ZookeeperClient
- changedData string
- wait *sync.WaitGroup
-}
-
-func (m *mockDataListener) DataChange(eventType remoting.Event) bool {
- logger.Info(eventType)
- m.eventList = append(m.eventList, eventType)
- if eventType.Content == m.changedData {
- m.wait.Done()
- }
- return true
-}
-
func TestZkPath(t *testing.T) {
zkPath := "io.grpc.examples.helloworld.GreeterGrpc$IGreeter"
zkPath = url.QueryEscape(zkPath)