You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dubbo.apache.org by fa...@apache.org on 2020/07/26 08:28:54 UTC
[dubbo-go] 04/04: Mrg: merge develop
This is an automated email from the ASF dual-hosted git repository.
fangyc pushed a commit to branch refact-seri
in repository https://gitbox.apache.org/repos/asf/dubbo-go.git
commit 14564b90bdff5bd7c71710cf4b3d40b3bc2a89e1
Merge: 9b260cf 053aab5
Author: fangyincheng <fa...@sina.com>
AuthorDate: Sun Jul 26 16:26:13 2020 +0800
Mrg: merge develop
.gitignore | 10 +-
CHANGE.md | 50 ++
NOTICE | 2 +-
README.md | 36 +-
README_CN.md | 35 +-
before_ut.bat | 5 +-
before_ut.sh | 9 +-
cluster/cluster_impl/available_cluster.go | 1 +
cluster/cluster_impl/base_cluster_invoker_test.go | 15 +-
cluster/cluster_impl/broadcast_cluster.go | 1 +
cluster/cluster_impl/broadcast_cluster_invoker.go | 1 +
cluster/cluster_impl/failback_cluster.go | 1 +
cluster/cluster_impl/failback_cluster_invoker.go | 52 +-
cluster/cluster_impl/failfast_cluster.go | 1 +
cluster/cluster_impl/failfast_cluster_invoker.go | 1 +
cluster/cluster_impl/failover_cluster.go | 1 +
cluster/cluster_impl/failover_cluster_invoker.go | 8 +-
cluster/cluster_impl/failover_cluster_test.go | 15 +
cluster/cluster_impl/failsafe_cluster.go | 1 +
cluster/cluster_impl/failsafe_cluster_invoker.go | 1 +
cluster/cluster_impl/forking_cluster.go | 1 +
cluster/cluster_impl/forking_cluster_invoker.go | 2 +-
cluster/cluster_impl/mock_cluster.go | 1 +
cluster/cluster_impl/registry_aware_cluster.go | 1 +
.../cluster_impl/registry_aware_cluster_invoker.go | 1 +
cluster/directory/base_directory.go | 14 -
cluster/loadbalance/consistent_hash.go | 5 +-
cluster/loadbalance/consistent_hash_test.go | 33 +-
cluster/loadbalance/least_active.go | 1 +
cluster/loadbalance/random_test.go | 22 +-
cluster/loadbalance/round_robin.go | 7 +-
cluster/router/chain/chain_test.go | 88 +--
cluster/router/condition/app_router_test.go | 45 +-
cluster/router/condition/factory_test.go | 113 ++--
cluster/router/condition/file.go | 8 +-
cluster/router/condition/router.go | 4 +-
.../healthcheck/default_health_check_test.go | 65 +-
cluster/router/healthcheck/factory_test.go | 9 +
.../router/healthcheck/health_check_route_test.go | 40 +-
cluster/router/tag/factory_test.go | 10 +-
cluster/router/tag/file_test.go | 18 +-
cluster/router/tag/tag_router.go | 8 +
cluster/router/tag/tag_router_test.go | 59 +-
common/constant/default.go | 9 +
common/constant/env.go | 1 +
common/constant/key.go | 37 +-
common/extension/event_dispatcher.go | 77 +++
common/extension/event_dispatcher_test.go | 111 ++++
common/extension/metadata_report_factory.go | 8 +-
common/extension/metadata_service.go | 47 ++
common/extension/metadata_service_proxy_factory.go | 48 ++
common/extension/service_discovery.go | 19 +-
...discovery.go => service_instance_customizer.go} | 39 +-
...ery.go => service_instance_selector_factory.go} | 25 +-
.../extension/service_name_mapping.go | 16 +-
.../observer/dispatcher/direct_event_dispatcher.go | 69 ++
.../dispatcher/direct_event_dispatcher_test.go | 77 +++
.../observer/dispatcher/mock_event_dispatcher.go | 58 ++
common/observer/event.go | 68 ++
.../observer/event_dispatcher.go | 19 +-
{registry => common/observer}/event_listener.go | 17 +-
common/observer/listenable.go | 142 ++++
.../observer/listenable_test.go | 52 +-
common/proxy/proxy.go | 18 +-
common/rpc_service.go | 17 +-
common/url.go | 27 +-
config/application_config.go | 3 +-
config/base_config.go | 142 ++--
config/base_config_test.go | 424 ++++--------
config/config_loader.go | 111 +++-
config/config_loader_test.go | 77 ++-
config/config_utils.go | 54 +-
config/config_utils_test.go | 20 +
config/consumer_config.go | 8 +-
config/graceful_shutdown_config_test.go | 2 +-
config/graceful_shutdown_signal_darwin.go | 2 +-
config/graceful_shutdown_signal_linux.go | 2 +-
config/graceful_shutdown_signal_windows.go | 2 +-
config/instance/metadata_report.go | 29 +-
config/instance/metadata_report_test.go | 85 +++
config/metadata_report_config.go | 39 +-
config/metadata_report_config_test.go | 7 +-
config/method_config.go | 4 +-
config/provider_config.go | 37 +-
config/reference_config.go | 6 +-
config/reference_config_test.go | 67 +-
config/registry_config_test.go | 4 +-
config/remote_config.go | 58 ++
...{config_utils_test.go => remote_config_test.go} | 25 +-
config/router_config.go | 12 +-
config/router_config_test.go | 5 +-
config/service_config.go | 72 ++-
config/service_config_test.go | 144 ++---
...g_utils_test.go => service_discovery_config.go} | 33 +-
config_center/apollo/factory.go | 1 +
config_center/apollo/listener.go | 2 +-
config_center/mock_dynamic_config.go | 8 +-
config_center/nacos/client.go | 95 ++-
config_center/nacos/client_test.go | 4 +-
config_center/nacos/impl.go | 30 +-
config_center/nacos/impl_test.go | 30 +-
config_center/nacos/listener.go | 4 +-
config_center/parser/configuration_parser.go | 17 +-
config_center/zookeeper/listener.go | 2 +-
filter/filter.go | 2 +-
filter/filter_impl/access_log_filter.go | 12 +-
filter/filter_impl/access_log_filter_test.go | 4 +-
filter/filter_impl/active_filter_test.go | 4 +-
filter/filter_impl/echo_filter.go | 2 +-
filter/filter_impl/echo_filter_test.go | 2 +-
filter/filter_impl/execute_limit_filter.go | 2 +-
filter/filter_impl/execute_limit_filter_test.go | 6 +-
filter/filter_impl/generic_filter.go | 2 +-
filter/filter_impl/generic_filter_test.go | 6 +-
filter/filter_impl/generic_service_filter.go | 12 +-
filter/filter_impl/generic_service_filter_test.go | 10 +-
.../filter_impl/graceful_shutdown_filter_test.go | 2 +-
filter/filter_impl/hystrix_filter.go | 16 +-
filter/filter_impl/hystrix_filter_test.go | 14 +-
filter/filter_impl/metrics_filter_test.go | 2 +-
.../{token_filter.go => seata_filter.go} | 44 +-
.../{echo_filter_test.go => seata_filter_test.go} | 28 +-
filter/filter_impl/token_filter.go | 4 +-
filter/filter_impl/token_filter_test.go | 8 +-
.../tps/tps_limit_fix_window_strategy.go | 2 +-
.../tps/tps_limit_fix_window_strategy_test.go | 2 +-
.../tps/tps_limit_sliding_window_strategy_test.go | 2 +-
filter/filter_impl/tps/tps_limit_strategy_mock.go | 3 +
...s_limit_thread_safe_fix_window_strategy_test.go | 2 +-
.../tps/tps_limiter_method_service_test.go | 8 +-
filter/filter_impl/tps_limit_filter_test.go | 6 +-
filter/filter_impl/tracing_filter_test.go | 7 +-
go.mod | 22 +-
go.sum | 51 +-
metadata/definition/definition.go | 96 +++
metadata/definition/definition_test.go | 52 ++
metadata/{report_factory.go => definition/mock.go} | 30 +-
metadata/identifier/base_metadata_identifier.go | 42 +-
.../identifier/base_metadata_identifier_test.go | 26 +-
metadata/identifier/metadata_identifier.go | 10 +-
.../identifier/metadata_identifier_test.go | 29 +-
metadata/identifier/service_metadata_identifier.go | 28 +-
.../identifier/service_metadata_identifier_test.go | 30 +-
.../identifier/subscribe_metadata_identifier.go | 12 +-
.../subscribe_metadata_identifier_test.go | 31 +-
.../dynamic/service_name_mapping.go | 31 +-
.../dynamic/service_name_mapping_test.go | 4 +-
.../memory/service_name_mapping.go | 25 +-
metadata/{ => mapping}/service_name_mapping.go | 2 +-
metadata/report.go | 35 -
metadata/report/consul/report.go | 125 ++++
metadata/report/consul/report_test.go | 165 +++++
metadata/report/delegate/delegate_report.go | 287 +++++++++
metadata/report/delegate/delegate_report_test.go | 123 ++++
metadata/report/etcd/report.go | 142 ++++
metadata/report/etcd/report_test.go | 133 ++++
metadata/{ => report/factory}/report_factory.go | 13 +-
metadata/report/nacos/report.go | 187 ++++++
metadata/report/nacos/report_test.go | 116 ++++
metadata/report/report.go | 60 ++
metadata/report/zookeeper/report.go | 133 ++++
metadata/report/zookeeper/report_test.go | 166 +++++
metadata/service.go | 40 --
metadata/service/exporter/configurable/exporter.go | 106 +++
.../service/exporter/configurable/exporter_test.go | 122 ++++
metadata/{ => service/exporter}/exporter.go | 9 +-
.../inmemory/metadata_service_proxy_factory.go | 97 +++
.../metadata_service_proxy_factory_test.go | 100 +++
metadata/service/inmemory/service.go | 249 +++++++
metadata/service/inmemory/service_proxy.go | 139 ++++
metadata/service/inmemory/service_proxy_test.go | 82 +++
metadata/service/inmemory/service_test.go | 95 +++
.../remote/metadata_service_proxy_factory.go} | 16 +-
metadata/service/remote/service.go | 208 ++++++
metadata/service/remote/service_proxy.go | 162 +++++
metadata/service/remote/service_proxy_test.go | 135 ++++
metadata/service/remote/service_test.go | 143 +++++
metadata/service/service.go | 135 ++++
protocol/dubbo/dubbo_invoker_test.go | 2 +-
protocol/dubbo/dubbo_protocol_test.go | 10 +-
protocol/grpc/common_test.go | 2 +-
protocol/grpc/grpc_exporter.go | 2 +-
protocol/grpc/grpc_invoker.go | 12 +-
protocol/grpc/grpc_invoker_test.go | 10 +-
protocol/grpc/grpc_protocol_test.go | 8 +-
protocol/invocation/rpcinvocation.go | 2 +
protocol/jsonrpc/http.go | 2 +-
protocol/jsonrpc/http_test.go | 16 +-
protocol/jsonrpc/json.go | 14 +-
protocol/jsonrpc/json_test.go | 8 +-
protocol/jsonrpc/jsonrpc_invoker_test.go | 2 +-
protocol/jsonrpc/jsonrpc_protocol_test.go | 4 +-
protocol/protocolwrapper/mock_protocol_filter.go | 2 +-
.../protocolwrapper/protocol_filter_wrapper.go | 12 +-
.../protocol_filter_wrapper_test.go | 4 +-
protocol/rest/client/client_impl/resty_client.go | 2 +-
.../rest/config/reader/rest_config_reader_test.go | 4 +-
protocol/rest/config/rest_config.go | 28 +-
protocol/rest/rest_exporter.go | 3 +
protocol/rest/rest_invoker.go | 5 +
protocol/rest/rest_invoker_test.go | 16 +-
protocol/rest/rest_protocol.go | 9 +
protocol/rest/rest_protocol_test.go | 16 +-
protocol/rpc_status.go | 4 +-
protocol/rpc_status_test.go | 20 +-
registry/base_configuration_listener.go | 7 +-
registry/base_registry.go | 136 +++-
registry/consul/registry.go | 22 +-
registry/consul/registry_test.go | 2 +-
registry/consul/utils_test.go | 55 +-
registry/directory/directory.go | 16 +-
registry/directory/directory_test.go | 8 +-
registry/etcdv3/registry.go | 9 +
registry/etcdv3/service_discovery.go | 322 ++++++++++
registry/etcdv3/service_discovery_test.go | 80 +++
registry/event.go | 47 +-
.../customizable_service_instance_listener.go | 73 +++
.../customizable_service_instance_listener_test.go | 73 ++-
.../event_publishing_service_deiscovery_test.go | 190 ++++++
.../event/event_publishing_service_discovery.go | 157 +++++
.../event/log_event_listener.go | 43 +-
.../event/log_event_listener_test.go | 14 +-
.../metadata_service_url_params_customizer.go | 105 +++
.../metadata_service_url_params_customizer_test.go | 124 ++++
.../event/protocol_ports_metadata_customizer.go | 106 +++
.../event/service_config_exported_event.go | 24 +-
registry/event/service_discovery_event.go | 103 +++
registry/event/service_instance_event.go | 87 +++
registry/event/service_name_mapping_listener.go | 89 +++
registry/event/service_revision_customizer.go | 137 ++++
registry/event_listener.go | 45 +-
registry/kubernetes/registry.go | 9 +
registry/mock_registry.go | 13 +-
registry/nacos/registry.go | 99 ++-
registry/nacos/service_discovery.go | 89 ++-
registry/nacos/service_discovery_test.go | 81 ++-
registry/protocol/protocol_test.go | 9 +-
registry/registry.go | 17 +-
registry/service_discovery.go | 2 +
registry/service_instance.go | 18 +-
.../random/random_service_instance_selector.go | 36 +-
.../random_service_instance_selector_test.go | 57 +-
.../instance/service_instance_selector.go | 11 +-
.../servicediscovery/service_discovery_registry.go | 713 +++++++++++++++++++++
.../service_discovery_registry_test.go | 246 +++++++
.../rest/rest_subscribed_urls_synthesizer.go | 65 ++
.../rest/rest_subscribed_urls_synthesizer_test.go | 75 +++
.../synthesizer/subscribed_urls_synthesizer.go | 15 +-
.../subscribed_urls_synthesizer_factory.go | 21 +-
registry/zookeeper/listener.go | 43 +-
registry/zookeeper/registry.go | 67 +-
registry/zookeeper/registry_test.go | 58 ++
registry/zookeeper/service_discovery.go | 351 ++++++++++
registry/zookeeper/service_discovery_test.go | 197 ++++++
.../consul/test_agent.go | 50 +-
.../consul/test_agent_test.go | 14 +-
remoting/etcdv3/client.go | 71 +-
remoting/etcdv3/client_test.go | 8 +-
remoting/etcdv3/facade.go | 6 +-
remoting/etcdv3/listener.go | 6 +-
remoting/kubernetes/client_test.go | 15 +-
remoting/kubernetes/facade_test.go | 1 +
remoting/listener.go | 2 +
.../base_registry.go => remoting/nacos/builder.go | 66 +-
.../nacos/builder_test.go | 29 +-
remoting/zookeeper/client.go | 194 +++---
remoting/zookeeper/client_test.go | 32 +-
.../curator_discovery/service_discovery.go | 279 ++++++++
.../curator_discovery/service_instance.go | 20 +-
remoting/zookeeper/facade.go | 16 +-
remoting/zookeeper/facade_test.go | 2 +-
remoting/zookeeper/listener.go | 55 +-
remoting/zookeeper/listener_test.go | 10 +-
273 files changed, 11086 insertions(+), 2102 deletions(-)
diff --cc .gitignore
index 568e9f2,fabff68..8158b49
--- a/.gitignore
+++ b/.gitignore
@@@ -30,5 -27,10 +27,12 @@@ logs
remoting/zookeeper/zookeeper-4unittest/
config_center/zookeeper/zookeeper-4unittest/
registry/zookeeper/zookeeper-4unittest/
+ metadata/report/zookeeper/zookeeper-4unittest/
registry/consul/agent*
++metadata/report/consul/agent*
++remoting/consul/agent*
config_center/apollo/mockDubbog.properties.json
+
+ # vim stuff
+ *~
+ .*.sw?
diff --cc common/constant/key.go
index 06b37cf,cd23dd0..c3fe0e7
--- a/common/constant/key.go
+++ b/common/constant/key.go
@@@ -22,27 -22,30 +22,31 @@@ const
)
const (
- PORT_KEY = "port"
- GROUP_KEY = "group"
- VERSION_KEY = "version"
- INTERFACE_KEY = "interface"
- PATH_KEY = "path"
- PROTOCOL_KEY = "protocol"
- SERVICE_KEY = "service"
- METHODS_KEY = "methods"
- TIMEOUT_KEY = "timeout"
- CATEGORY_KEY = "category"
- CHECK_KEY = "check"
- ENABLED_KEY = "enabled"
- SIDE_KEY = "side"
- OVERRIDE_PROVIDERS_KEY = "providerAddresses"
- BEAN_NAME_KEY = "bean.name"
- GENERIC_KEY = "generic"
- CLASSIFIER_KEY = "classifier"
- TOKEN_KEY = "token"
- LOCAL_ADDR = "local-addr"
- REMOTE_ADDR = "remote-addr"
- PATH_SEPARATOR = "/"
- DUBBO_KEY = "dubbo"
- RELEASE_KEY = "release"
- ANYHOST_KEY = "anyhost"
+ GROUP_KEY = "group"
+ VERSION_KEY = "version"
+ INTERFACE_KEY = "interface"
+ PATH_KEY = "path"
+ SERVICE_KEY = "service"
+ METHODS_KEY = "methods"
+ TIMEOUT_KEY = "timeout"
+ CATEGORY_KEY = "category"
+ CHECK_KEY = "check"
+ ENABLED_KEY = "enabled"
+ SIDE_KEY = "side"
+ OVERRIDE_PROVIDERS_KEY = "providerAddresses"
+ BEAN_NAME_KEY = "bean.name"
+ GENERIC_KEY = "generic"
+ CLASSIFIER_KEY = "classifier"
+ TOKEN_KEY = "token"
+ LOCAL_ADDR = "local-addr"
+ REMOTE_ADDR = "remote-addr"
+ DEFAULT_REMOTING_TIMEOUT = 3000
+ RELEASE_KEY = "release"
+ ANYHOST_KEY = "anyhost"
++ PORT_KEY = "port"
++ PROTOCOL_KEY = "protocol"
++ PATH_SEPARATOR = "/"
++ DUBBO_KEY = "dubbo"
)
const (
@@@ -77,7 -80,11 +81,12 @@@ const
EXECUTE_REJECTED_EXECUTION_HANDLER_KEY = "execute.limit.rejected.handler"
PROVIDER_SHUTDOWN_FILTER = "pshutdown"
CONSUMER_SHUTDOWN_FILTER = "cshutdown"
+ SERIALIZATION_KEY = "serialization"
+ PID_KEY = "pid"
+ SYNC_REPORT_KEY = "sync.report"
+ RETRY_PERIOD_KEY = "retry.period"
+ RETRY_TIMES_KEY = "retry.times"
+ CYCLE_REPORT_KEY = "cycle.report"
)
const (
diff --cc common/url.go
index 5a3e69f,807d0ed..7c2c39c
--- a/common/url.go
+++ b/common/url.go
@@@ -656,28 -658,21 +662,47 @@@ func mergeNormalParam(mergedUrl *URL, r
return methodConfigMergeFcn
}
+// doesn't encode url reserve character, url.QueryEscape will do this work
+// reference: https://github.com/golang/go.git, src/net/url/url.go, Encode method
+func ParamsUnescapeEncode(params url.Values) string {
+ if params == nil {
+ return ""
+ }
+ var buf strings.Builder
+ keys := make([]string, len(params))
+ for k := range params {
+ keys = append(keys, k)
+ }
+ sort.Strings(keys)
+ for _, k := range keys {
+ vs := params[k]
+ for _, v := range vs {
+ if buf.Len() > 0 {
+ buf.WriteByte('&')
+ }
+ buf.WriteString(k)
+ buf.WriteByte('=')
+ buf.WriteString(v)
+ }
+ }
+ return buf.String()
+}
++
+ // URLSlice will be used to sort URL instance
+ // Instances will be order by URL.String()
+ type URLSlice []URL
+
+ // nolint
+ func (s URLSlice) Len() int {
+ return len(s)
+ }
+
+ // nolint
+ func (s URLSlice) Less(i, j int) bool {
+ return s[i].String() < s[j].String()
+ }
+
+ // nolint
+ func (s URLSlice) Swap(i, j int) {
+ s[i], s[j] = s[j], s[i]
+ }
diff --cc go.mod
index 7e4b8d9,a16b906..44f73d3
--- a/go.mod
+++ b/go.mod
@@@ -29,19 -26,14 +26,15 @@@ require
github.com/grpc-ecosystem/grpc-opentracing v0.0.0-20180507213350-8e809c8a8645
github.com/hashicorp/consul v1.5.3
github.com/hashicorp/consul/api v1.1.0
- github.com/jehiah/go-strftime v0.0.0-20171201141054-1d33003b3869 // indirect
+ github.com/hashicorp/vault v0.10.3
github.com/jinzhu/copier v0.0.0-20190625015134-976e0346caa8
- github.com/jonboulle/clockwork v0.1.0 // indirect
github.com/juju/loggo v0.0.0-20190526231331-6e530bcce5d8 // indirect
github.com/juju/testing v0.0.0-20191001232224-ce9dec17d28b // indirect
- github.com/lestrrat/go-envload v0.0.0-20180220120943-6ed08b54a570 // indirect
- github.com/lestrrat/go-file-rotatelogs v0.0.0-20180223000712-d3151e2a480f // indirect
- github.com/lestrrat/go-strftime v0.0.0-20180220042222-ba3bf9c1d042 // indirect
github.com/magiconair/properties v1.8.1
+ github.com/matttproud/golang_protobuf_extensions v1.0.1
github.com/mitchellh/mapstructure v1.1.2
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd
- github.com/nacos-group/nacos-sdk-go v0.0.0-20191128082542-fe1b325b125c
+ github.com/nacos-group/nacos-sdk-go v0.3.3-0.20200617023039-50c7537d6a5f
github.com/opentracing/opentracing-go v1.1.0
github.com/pkg/errors v0.9.1
github.com/prometheus/client_golang v1.1.0
diff --cc metadata/service/exporter/configurable/exporter_test.go
index 0000000,9fdbd76..b85e0ac
mode 000000,100644..100644
--- a/metadata/service/exporter/configurable/exporter_test.go
+++ b/metadata/service/exporter/configurable/exporter_test.go
@@@ -1,0 -1,122 +1,122 @@@
+ /*
+ * 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 configurable
+
+ import (
++ "github.com/apache/dubbo-go/remoting/getty"
+ "testing"
+ )
+
+ import (
+ "github.com/stretchr/testify/assert"
+ )
+
+ import (
+ _ "github.com/apache/dubbo-go/common/proxy/proxy_factory"
+ "github.com/apache/dubbo-go/config"
+ _ "github.com/apache/dubbo-go/filter/filter_impl"
+ "github.com/apache/dubbo-go/metadata/service/inmemory"
- "github.com/apache/dubbo-go/protocol/dubbo"
+ _ "github.com/apache/dubbo-go/protocol/dubbo"
+ )
+
+ func TestConfigurableExporter(t *testing.T) {
- dubbo.SetServerConfig(dubbo.ServerConfig{
++ getty.SetServerConfig(getty.ServerConfig{
+ SessionNumber: 700,
+ SessionTimeout: "20s",
- GettySessionParam: dubbo.GettySessionParam{
++ GettySessionParam: getty.GettySessionParam{
+ CompressEncoding: false,
+ TcpNoDelay: true,
+ TcpKeepAlive: true,
+ KeepAlivePeriod: "120s",
+ TcpRBufSize: 262144,
+ TcpWBufSize: 65536,
+ PkgWQSize: 512,
+ TcpReadTimeout: "1s",
+ TcpWriteTimeout: "5s",
+ WaitTimeout: "1s",
+ MaxMsgLen: 10240000000,
+ SessionName: "server",
+ }})
+ mockInitProviderWithSingleRegistry()
+ metadataService, _ := inmemory.NewMetadataService()
+ exported := NewMetadataServiceExporter(metadataService)
+ assert.Equal(t, false, exported.IsExported())
+ assert.NoError(t, exported.Export())
+ assert.Equal(t, true, exported.IsExported())
+ assert.Regexp(t, "dubbo://:20000/MetadataService*", exported.GetExportedURLs()[0].String())
+ exported.Unexport()
+ assert.Equal(t, false, exported.IsExported())
+ }
+
+ // mockInitProviderWithSingleRegistry will init a mocked providerConfig
+ func mockInitProviderWithSingleRegistry() {
+ providerConfig := &config.ProviderConfig{
+
+ BaseConfig: config.BaseConfig{
+ ApplicationConfig: &config.ApplicationConfig{
+ Organization: "dubbo_org",
+ Name: "dubbo",
+ Module: "module",
+ Version: "1.0.0",
+ Owner: "dubbo",
+ Environment: "test"},
+ },
+
+ Registry: &config.RegistryConfig{
+ Address: "mock://127.0.0.1:2181",
+ Username: "user1",
+ Password: "pwd1",
+ },
+ Registries: map[string]*config.RegistryConfig{},
+
+ Services: map[string]*config.ServiceConfig{
+ "MockService": {
+ InterfaceName: "com.MockService",
+ Protocol: "mock",
+ Cluster: "failover",
+ Loadbalance: "random",
+ Retries: "3",
+ Group: "huadong_idc",
+ Version: "1.0.0",
+ Methods: []*config.MethodConfig{
+ {
+ Name: "GetUser",
+ Retries: "2",
+ LoadBalance: "random",
+ Weight: 200,
+ },
+ {
+ Name: "GetUser1",
+ Retries: "2",
+ LoadBalance: "random",
+ Weight: 200,
+ },
+ },
+ },
+ },
+ Protocols: map[string]*config.ProtocolConfig{
+ "mock": {
+ Name: "mock",
+ Ip: "127.0.0.1",
+ Port: "20000",
+ },
+ },
+ }
+ providerConfig.Services["MockService"].InitExported()
+ config.SetProviderConfig(*providerConfig)
+ }
diff --cc protocol/dubbo/dubbo_invoker_test.go
index 9585461,c0640d5..3c68b63
--- a/protocol/dubbo/dubbo_invoker_test.go
+++ b/protocol/dubbo/dubbo_invoker_test.go
@@@ -35,17 -32,21 +35,17 @@@ import
import (
"github.com/apache/dubbo-go/common"
"github.com/apache/dubbo-go/common/constant"
+ "github.com/apache/dubbo-go/common/proxy/proxy_factory"
+ "github.com/apache/dubbo-go/protocol"
"github.com/apache/dubbo-go/protocol/invocation"
+ "github.com/apache/dubbo-go/remoting"
+ "github.com/apache/dubbo-go/remoting/getty"
)
- func TestDubboInvoker_Invoke(t *testing.T) {
+ func TestDubboInvokerInvoke(t *testing.T) {
proto, url := InitTest(t)
- c := &Client{
- pendingResponses: new(sync.Map),
- conf: *clientConf,
- opts: Options{
- ConnectTimeout: 3 * time.Second,
- RequestTimeout: 6 * time.Second,
- },
- }
- c.pool = newGettyRPCClientConnPool(c, clientConf.PoolSize, time.Duration(int(time.Second)*clientConf.PoolTTL))
+ c := getExchangeClient(url)
invoker := NewDubboInvoker(url, c)
user := &User{}
diff --cc protocol/dubbo/dubbo_protocol_test.go
index 07b890f,6f3892b..352d980
--- a/protocol/dubbo/dubbo_protocol_test.go
+++ b/protocol/dubbo/dubbo_protocol_test.go
@@@ -81,20 -36,23 +81,12 @@@ func TestDubboProtocol_Export(t *testin
"application=BDTService&category=providers&default.timeout=10000&dubbo=dubbo-provider-golang-1.0.0&" +
"environment=dev&interface=com.ikurento.user.UserProvider&ip=192.168.56.1&methods=GetUser%2C&" +
"module=dubbogo+user-info+server&org=ikurento.com&owner=ZX&pid=1447&revision=0.0.1&" +
- "side=provider&timeout=3000×tamp=1556509797245"
-)
-
-func TestDubboProtocolExport(t *testing.T) {
- // Export
- proto := GetProtocol()
- srvConf = &ServerConfig{}
- url, err := common.NewURL(mockCommonUrl)
- assert.NoError(t, err)
- exporter := proto.Export(protocol.NewBaseInvoker(url))
-
- // make sure url
- eq := exporter.GetInvoker().GetUrl().URLEqual(url)
- assert.True(t, eq)
-
- // second service: the same path and the different version
- url2, err := common.NewURL(mockCommonUrl, common.WithParamsValue(constant.VERSION_KEY, "v1.1"))
+ "side=provider&timeout=3000×tamp=1556509797245")
- assert.NoError(t, err)
- exporter := proto.Export(protocol.NewBaseInvoker(url))
-
- // make sure url
- eq := exporter.GetInvoker().GetUrl().URLEqual(url)
- assert.True(t, eq)
-
- // second service: the same path and the different version
+ url2, err := common.NewURL("dubbo://127.0.0.1:20095/com.ikurento.user.UserProvider?anyhost=true&"+
+ "application=BDTService&category=providers&default.timeout=10000&dubbo=dubbo-provider-golang-1.0.0&"+
+ "environment=dev&interface=com.ikurento.user.UserProvider&ip=192.168.56.1&methods=GetUser%2C&"+
+ "module=dubbogo+user-info+server&org=ikurento.com&owner=ZX&pid=1447&revision=0.0.1&"+
+ "side=provider&timeout=3000×tamp=1556509797245", common.WithParamsValue(constant.VERSION_KEY, "v1.1"))
assert.NoError(t, err)
exporter2 := proto.Export(protocol.NewBaseInvoker(url2))
// make sure url
@@@ -104,7 -62,7 +96,7 @@@
// make sure exporterMap after 'Unexport'
_, ok := proto.(*DubboProtocol).ExporterMap().Load(url.ServiceKey())
assert.True(t, ok)
-- exporter.Unexport()
++ exporter2.Unexport()
_, ok = proto.(*DubboProtocol).ExporterMap().Load(url.ServiceKey())
assert.False(t, ok)