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