From 2aa483a91fc1a4f5690c443c9efa2592713daa51 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=AB=98=E8=BE=9B=E6=A0=BC?= <xg.gao@tianrang-inc.com> Date: Mon, 19 Aug 2019 18:33:23 +0800 Subject: [PATCH] consul test --- registry/consul/listener_test.go | 26 +++++++ registry/consul/registry_test.go | 50 ++++++++++++++ .../consul/{consul_test.go => utils_test.go} | 67 +++++++++++-------- registry/nacos/registry.go | 2 +- 4 files changed, 117 insertions(+), 28 deletions(-) create mode 100644 registry/consul/listener_test.go create mode 100644 registry/consul/registry_test.go rename registry/consul/{consul_test.go => utils_test.go} (75%) diff --git a/registry/consul/listener_test.go b/registry/consul/listener_test.go new file mode 100644 index 000000000..b00034455 --- /dev/null +++ b/registry/consul/listener_test.go @@ -0,0 +1,26 @@ +/* + * 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 consul + +import "github.com/stretchr/testify/assert" + +func (suite *ConsulRegistryTestSuite) testListener() { + event, err := suite.listener.Next() + assert.NoError(suite.t, err) + assert.True(suite.t, suite.providerUrl.URLEqual(event.Service)) +} diff --git a/registry/consul/registry_test.go b/registry/consul/registry_test.go new file mode 100644 index 000000000..9bc0051aa --- /dev/null +++ b/registry/consul/registry_test.go @@ -0,0 +1,50 @@ +/* + * 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 consul + +import "github.com/stretchr/testify/assert" + +func (suite *ConsulRegistryTestSuite) testNewProviderRegistry() { + providerRegistryUrl := newProviderRegistryUrl(registryHost, registryPort) + providerRegistry, err := newConsulRegistry(providerRegistryUrl) + assert.NoError(suite.t, err) + suite.providerRegistry = providerRegistry +} + +func (suite *ConsulRegistryTestSuite) testSubscribe() { + server := newServer(providerHost, providerPort) + suite.server = server + providerUrl := newProviderUrl(providerHost, providerPort, service, protocol) + suite.providerUrl = providerUrl + err := suite.providerRegistry.Register(providerUrl) + assert.NoError(suite.t, err) +} + +func (suite *ConsulRegistryTestSuite) testNewConsumerRegistry() { + consumerRegistryUrl := newConsumerRegistryUrl(registryHost, registryPort) + consumerRegistry, err := newConsulRegistry(consumerRegistryUrl) + assert.NoError(suite.t, err) + suite.consumerRegistry = consumerRegistry +} + +func (suite *ConsulRegistryTestSuite) testRegister() { + consumerUrl := newConsumerUrl(consumerHost, consumerPort, service, protocol) + listener, err := suite.consumerRegistry.Subscribe(consumerUrl) + assert.NoError(suite.t, err) + suite.listener = listener +} diff --git a/registry/consul/consul_test.go b/registry/consul/utils_test.go similarity index 75% rename from registry/consul/consul_test.go rename to registry/consul/utils_test.go index 2c9a8c99f..ce6e5fc77 100644 --- a/registry/consul/consul_test.go +++ b/registry/consul/utils_test.go @@ -31,8 +31,11 @@ import ( import ( "github.com/apache/dubbo-go/common" "github.com/apache/dubbo-go/common/constant" + "github.com/apache/dubbo-go/registry" +) + +import ( "github.com/hashicorp/consul/agent" - "github.com/stretchr/testify/assert" ) var ( @@ -130,38 +133,48 @@ func (server *Server) close() { server.wg.Wait() } -func TestSomething(t *testing.T) { - providerRegistryUrl := newProviderRegistryUrl(registryHost, registryPort) - consumerRegistryUrl := newConsumerRegistryUrl(registryHost, registryPort) - providerUrl := newProviderUrl(providerHost, providerPort, service, protocol) - consumerUrl := newConsumerUrl(consumerHost, consumerPort, service, protocol) +type ConsulRegistryTestSuite struct { + t *testing.T + dataDir string + consulAgent *agent.TestAgent + providerRegistry registry.Registry + consumerRegistry registry.Registry + listener registry.Listener + providerUrl common.URL + server *Server +} +func newConsulRegistryTestSuite(t *testing.T) *ConsulRegistryTestSuite { dataDir, _ := ioutil.TempDir("./", "agent") - defer os.RemoveAll(dataDir) - hcl := ` ports { http = ` + strconv.Itoa(registryPort) + ` } data_dir = "` + dataDir + `" ` - consulServer := &agent.TestAgent{Name: t.Name(), DataDir: dataDir, HCL: hcl} - consulServer.Start(t) - defer consulServer.Shutdown() - - providerRegistry, err := newConsulRegistry(providerRegistryUrl) - assert.NoError(t, err) - consumerRegistry, err := newConsulRegistry(consumerRegistryUrl) - assert.NoError(t, err) - - server := newServer(providerHost, providerPort) - defer server.close() - err = providerRegistry.Register(providerUrl) - assert.NoError(t, err) - - listener, err := consumerRegistry.Subscribe(consumerUrl) - assert.NoError(t, err) - event, err := listener.Next() - assert.NoError(t, err) - assert.True(t, providerUrl.URLEqual(event.Service)) + consulAgent := &agent.TestAgent{Name: t.Name(), DataDir: dataDir, HCL: hcl} + consulAgent.Start(t) + + suite := &ConsulRegistryTestSuite{ + t: t, + dataDir: dataDir, + consulAgent: consulAgent, + } + return suite +} + +func (suite *ConsulRegistryTestSuite) close() { + suite.server.close() + suite.consulAgent.Shutdown() + os.RemoveAll(suite.dataDir) +} + +func TestConsulRegistry(t *testing.T) { + suite := newConsulRegistryTestSuite(t) + defer suite.close() + suite.testNewProviderRegistry() + suite.testSubscribe() + suite.testNewConsumerRegistry() + suite.testRegister() + suite.testListener() } diff --git a/registry/nacos/registry.go b/registry/nacos/registry.go index f10e230bc..bf86ead7a 100644 --- a/registry/nacos/registry.go +++ b/registry/nacos/registry.go @@ -120,7 +120,7 @@ func appendParam(target *bytes.Buffer, url common.URL, key string) { func createRegisterParam(url common.URL, serviceName string) vo.RegisterInstanceParam { category := getCategory(url) params := make(map[string]string, len(url.Params)+3) - for k, _ := range url.Params { + for k := range url.Params { params[k] = url.Params.Get(k) } params[constant.NACOS_CATEGORY_KEY] = category -- GitLab