From 249d867d07c40b7e2a5371a110978899b49123f7 Mon Sep 17 00:00:00 2001 From: Joe Zou <yixian.zou@gmail.com> Date: Tue, 17 Dec 2019 23:34:01 +0800 Subject: [PATCH] add test case for async call --- common/proxy/proxy.go | 4 ++++ config/reference_config.go | 4 ++-- config/reference_config_test.go | 37 +++++++++++++++++++++++++++++++++ 3 files changed, 43 insertions(+), 2 deletions(-) diff --git a/common/proxy/proxy.go b/common/proxy/proxy.go index 1c079f6bc..d13646dba 100644 --- a/common/proxy/proxy.go +++ b/common/proxy/proxy.go @@ -181,3 +181,7 @@ func (p *Proxy) Implement(v common.RPCService) { func (p *Proxy) Get() common.RPCService { return p.rpc } + +func (p *Proxy) GetCallback() interface{} { + return p.callBack +} diff --git a/config/reference_config.go b/config/reference_config.go index eec2c0fcd..6b34f5535 100644 --- a/config/reference_config.go +++ b/config/reference_config.go @@ -142,10 +142,10 @@ func (refconfig *ReferenceConfig) Refer() { //create proxy if refconfig.Async { - refconfig.pxy = extension.GetProxyFactory(consumerConfig.ProxyFactory).GetProxy(refconfig.invoker, url) - } else { callback := GetCallback(refconfig.id) refconfig.pxy = extension.GetProxyFactory(consumerConfig.ProxyFactory).GetAsyncProxy(refconfig.invoker, callback, url) + } else { + refconfig.pxy = extension.GetProxyFactory(consumerConfig.ProxyFactory).GetProxy(refconfig.invoker, url) } } diff --git a/config/reference_config_test.go b/config/reference_config_test.go index a81dbf06c..a7af925ca 100644 --- a/config/reference_config_test.go +++ b/config/reference_config_test.go @@ -81,6 +81,7 @@ func doInitConsumer() { }, References: map[string]*ReferenceConfig{ "MockService": { + id: "MockProvider", Params: map[string]string{ "serviceid": "soa.mock", "forks": "5", @@ -110,6 +111,26 @@ func doInitConsumer() { } } +var mockProvider = new(MockProvider) + +type MockProvider struct { +} + +func (m *MockProvider) Reference() string { + return "MockProvider" +} + +func (m *MockProvider) CallBack(res common.CallbackResponse) { +} + +func doInitConsumerAsync() { + doInitConsumer() + SetConsumerService(mockProvider) + for _, v := range consumerConfig.References { + v.Async = true + } +} + func doInitConsumerWithSingleRegistry() { consumerConfig = &ConsumerConfig{ ApplicationConfig: &ApplicationConfig{ @@ -181,6 +202,22 @@ func Test_Refer(t *testing.T) { } consumerConfig = nil } + +func Test_ReferAsync(t *testing.T) { + doInitConsumerAsync() + extension.SetProtocol("registry", GetProtocol) + extension.SetCluster("registryAware", cluster_impl.NewRegistryAwareCluster) + + for _, reference := range consumerConfig.References { + reference.Refer() + assert.Equal(t, "soa.mock", reference.Params["serviceid"]) + assert.NotNil(t, reference.invoker) + assert.NotNil(t, reference.pxy) + assert.NotNil(t, reference.pxy.GetCallback()) + } + consumerConfig = nil +} + func Test_ReferP2P(t *testing.T) { doInitConsumer() extension.SetProtocol("dubbo", GetProtocol) -- GitLab