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 <fangyinch...@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)