This is an automated email from the ASF dual-hosted git repository.

albumenj pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/dubbo.git


The following commit(s) were added to refs/heads/master by this push:
     new b5a5d74  Fix DubboProtocol is not directly used externally (#7924)
b5a5d74 is described below

commit b5a5d74f3518c115f6006094e37435cc215cc930
Author: xiaoheng1 <[email protected]>
AuthorDate: Tue Jun 1 22:53:29 2021 +0800

    Fix DubboProtocol is not directly used externally (#7924)
    
    * fix #7923 Fix DubboProtocol is not directly used externally
    
    * add cleanup when destroy
    
    * bugfix
    
    * add invoker.destroy
---
 .../dubbo/monitor/dubbo/DubboMonitorFactoryTest.java    | 17 +++++++++++++++--
 .../apache/dubbo/monitor/dubbo/MetricsFilterTest.java   |  8 ++++++--
 .../rpc/protocol/dubbo/DubboInvokerAvailableTest.java   |  2 +-
 3 files changed, 22 insertions(+), 5 deletions(-)

diff --git 
a/dubbo-monitor/dubbo-monitor-default/src/test/java/org/apache/dubbo/monitor/dubbo/DubboMonitorFactoryTest.java
 
b/dubbo-monitor/dubbo-monitor-default/src/test/java/org/apache/dubbo/monitor/dubbo/DubboMonitorFactoryTest.java
index a51c7e7..dab941d 100644
--- 
a/dubbo-monitor/dubbo-monitor-default/src/test/java/org/apache/dubbo/monitor/dubbo/DubboMonitorFactoryTest.java
+++ 
b/dubbo-monitor/dubbo-monitor-default/src/test/java/org/apache/dubbo/monitor/dubbo/DubboMonitorFactoryTest.java
@@ -19,14 +19,18 @@ package org.apache.dubbo.monitor.dubbo;
 import org.apache.dubbo.common.URL;
 import org.apache.dubbo.monitor.Monitor;
 import org.apache.dubbo.rpc.Invoker;
+import org.apache.dubbo.rpc.ProtocolServer;
 import org.apache.dubbo.rpc.ProxyFactory;
-import org.apache.dubbo.rpc.protocol.dubbo.DubboProtocol;
 
+import org.apache.dubbo.rpc.protocol.dubbo.DubboProtocol;
+import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 import org.mockito.ArgumentCaptor;
 import org.mockito.Mock;
 
+import java.util.List;
+
 import static 
org.apache.dubbo.common.constants.CommonConstants.REFERENCE_FILTER_KEY;
 import static org.hamcrest.CoreMatchers.containsString;
 import static org.hamcrest.CoreMatchers.nullValue;
@@ -45,10 +49,19 @@ public class DubboMonitorFactoryTest {
     public void setUp() throws Exception {
         initMocks(this);
         this.dubboMonitorFactory = new DubboMonitorFactory();
-        this.dubboMonitorFactory.setProtocol(new DubboProtocol());
+        this.dubboMonitorFactory.setProtocol(DubboProtocol.getDubboProtocol());
         this.dubboMonitorFactory.setProxyFactory(proxyFactory);
     }
 
+    @AfterEach
+    public void tearDownAfterClass() {
+        DubboProtocol.getDubboProtocol().destroy();
+        List<ProtocolServer> servers = 
DubboProtocol.getDubboProtocol().getServers();
+        for (ProtocolServer server : servers) {
+            server.close();
+        }
+    }
+
     @Test
     public void testCreateMonitor() {
         URL urlWithoutPath = URL.valueOf("http://10.10.10.11";);
diff --git 
a/dubbo-monitor/dubbo-monitor-default/src/test/java/org/apache/dubbo/monitor/dubbo/MetricsFilterTest.java
 
b/dubbo-monitor/dubbo-monitor-default/src/test/java/org/apache/dubbo/monitor/dubbo/MetricsFilterTest.java
index ada0e6f..97b67a1 100644
--- 
a/dubbo-monitor/dubbo-monitor-default/src/test/java/org/apache/dubbo/monitor/dubbo/MetricsFilterTest.java
+++ 
b/dubbo-monitor/dubbo-monitor-default/src/test/java/org/apache/dubbo/monitor/dubbo/MetricsFilterTest.java
@@ -266,7 +266,7 @@ public class MetricsFilterTest {
                 //ignore
             }
         }
-        Protocol protocol = new DubboProtocol();
+        Protocol protocol = DubboProtocol.getDubboProtocol();
         URL metricUrl = URL.valueOf("dubbo://" + url.getHost() + ":" + 
url.getPort() + "/" + MetricsService.class.getName() + "?" + METRICS_PORT + "=" 
+ port);
         Invoker<MetricsService> invoker = protocol.refer(MetricsService.class, 
metricUrl);
         invocation = new RpcInvocation("getMetricsByGroup", 
DemoService.class.getName(), "", new Class<?>[]{String.class}, new 
Object[]{DUBBO_GROUP});
@@ -291,6 +291,8 @@ public class MetricsFilterTest {
         Assertions.assertEquals(100.0, metricMap.get("bucket_count"));
         Assertions.assertEquals(100.0 / 5, metricMap.get("qps"));
         Assertions.assertEquals(50.0 / 100.0, metricMap.get("success_rate"));
+
+        invoker.destroy();
     }
 
     public void testInvokeMetricsMethodService() {
@@ -320,7 +322,7 @@ public class MetricsFilterTest {
             }
         }
 
-        Protocol protocol = new DubboProtocol();
+        Protocol protocol = DubboProtocol.getDubboProtocol();
         URL metricUrl = URL.valueOf("dubbo://" + url.getHost() + ":" + 
url.getPort() + "/" + MetricsService.class.getName() + "?" + METRICS_PORT + "=" 
+ port);
         Invoker<MetricsService> invoker = protocol.refer(MetricsService.class, 
metricUrl);
         Invocation invocation = new RpcInvocation("getMetricsByGroup", 
DemoService.class.getName(), "", new Class<?>[]{String.class}, new 
Object[]{DUBBO_GROUP});
@@ -365,5 +367,7 @@ public class MetricsFilterTest {
                 
methodMetricMap.get("org.apache.dubbo.monitor.dubbo.service.DemoService.void 
sayName()").get("success_rate"));
         Assertions.assertEquals(50.0 / 100.0,
                 
methodMetricMap.get("org.apache.dubbo.monitor.dubbo.service.DemoService.void 
echo(Integer)").get("success_rate"));
+
+        invoker.destroy();
     }
 }
diff --git 
a/dubbo-rpc/dubbo-rpc-dubbo/src/test/java/org/apache/dubbo/rpc/protocol/dubbo/DubboInvokerAvailableTest.java
 
b/dubbo-rpc/dubbo-rpc-dubbo/src/test/java/org/apache/dubbo/rpc/protocol/dubbo/DubboInvokerAvailableTest.java
index dd296cc..4f8dcb2 100644
--- 
a/dubbo-rpc/dubbo-rpc-dubbo/src/test/java/org/apache/dubbo/rpc/protocol/dubbo/DubboInvokerAvailableTest.java
+++ 
b/dubbo-rpc/dubbo-rpc-dubbo/src/test/java/org/apache/dubbo/rpc/protocol/dubbo/DubboInvokerAvailableTest.java
@@ -53,7 +53,7 @@ public class DubboInvokerAvailableTest {
 
     @BeforeEach
     public void setUp() throws Exception {
-        protocol = new DubboProtocol();
+        protocol = DubboProtocol.getDubboProtocol();
     }
 
     @AfterAll

Reply via email to