You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dubbo.apache.org by al...@apache.org on 2021/06/07 07:36:08 UTC

[dubbo] branch master updated: Add test case for ExecutorRepository (#7994)

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 c8d176f  Add test case for ExecutorRepository (#7994)
c8d176f is described below

commit c8d176febcde8e1fc572a7a3cd30c5e0b5687a55
Author: xiaoheng1 <20...@qq.com>
AuthorDate: Mon Jun 7 15:35:58 2021 +0800

    Add test case for ExecutorRepository (#7994)
---
 .../threadpool/manager/ExecutorRepositoryTest.java | 58 ++++++++++++++++++++++
 1 file changed, 58 insertions(+)

diff --git a/dubbo-common/src/test/java/org/apache/dubbo/common/threadpool/manager/ExecutorRepositoryTest.java b/dubbo-common/src/test/java/org/apache/dubbo/common/threadpool/manager/ExecutorRepositoryTest.java
index b19eb37..d0b558e 100644
--- a/dubbo-common/src/test/java/org/apache/dubbo/common/threadpool/manager/ExecutorRepositoryTest.java
+++ b/dubbo-common/src/test/java/org/apache/dubbo/common/threadpool/manager/ExecutorRepositoryTest.java
@@ -22,9 +22,14 @@ import org.apache.dubbo.common.extension.ExtensionLoader;
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.Test;
 
+import java.lang.reflect.Field;
+import java.util.Map;
+import java.util.concurrent.ConcurrentMap;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.ThreadPoolExecutor;
 
+import static org.apache.dubbo.common.constants.CommonConstants.EXECUTOR_SERVICE_COMPONENT_KEY;
+
 public class ExecutorRepositoryTest {
     private ExecutorRepository executorRepository = ExtensionLoader.getExtensionLoader(ExecutorRepository.class).getDefaultExtension();
 
@@ -50,6 +55,59 @@ public class ExecutorRepositoryTest {
     }
 
     @Test
+    public void testGetForProviderSide() throws Exception {
+        URL provider1 = URL.valueOf("dubbo://127.0.0.1:6789?side=provider");
+        URL provider2 = URL.valueOf("dubbo://127.0.0.1:6790?side=provider");
+
+        Field data = executorRepository.getClass().getDeclaredField("data");
+        data.setAccessible(true);
+
+        ExecutorService executor1 = executorRepository.createExecutorIfAbsent(provider1);
+        ExecutorService executor2 = executorRepository.createExecutorIfAbsent(provider2);
+
+        Object o = data.get(executorRepository);
+
+        Assertions.assertTrue(o instanceof Map);
+        ConcurrentMap<String, ConcurrentMap<Integer, ExecutorService>> executorMap =
+                (ConcurrentMap<String, ConcurrentMap<Integer, ExecutorService>>) o;
+
+        ConcurrentMap<Integer, ExecutorService> portExecutorMap = executorMap.get(EXECUTOR_SERVICE_COMPONENT_KEY);
+
+        Assertions.assertNotNull(portExecutorMap.get(provider1.getPort()));
+        Assertions.assertNotNull(portExecutorMap.get(provider2.getPort()));
+
+        executor1.shutdown();
+        executor2.shutdown();
+    }
+
+    @Test
+    public void testGetForConsumerSide() throws Exception {
+        URL consumer1 = URL.valueOf("dubbo://127.0.0.1:6789?side=consumer");
+        URL consumer2 = URL.valueOf("dubbo://127.0.0.1:6790?side=consumer");
+
+        Field data = executorRepository.getClass().getDeclaredField("data");
+        data.setAccessible(true);
+
+        ExecutorService executor1 = executorRepository.createExecutorIfAbsent(consumer1);
+        ExecutorService executor2 = executorRepository.createExecutorIfAbsent(consumer2);
+
+        Object o = data.get(executorRepository);
+
+        Assertions.assertTrue(o instanceof Map);
+        ConcurrentMap<String, ConcurrentMap<Integer, ExecutorService>> executorMap =
+                (ConcurrentMap<String, ConcurrentMap<Integer, ExecutorService>>) o;
+
+        ConcurrentMap<Integer, ExecutorService> portExecutorMap = executorMap.get(EXECUTOR_SERVICE_COMPONENT_KEY);
+
+        Assertions.assertNull(portExecutorMap.get(consumer1.getPort()));
+        Assertions.assertNull(portExecutorMap.get(consumer2.getPort()));
+        Assertions.assertNotNull(portExecutorMap.get(Integer.MAX_VALUE));
+
+        executor1.shutdown();
+        executor2.shutdown();
+    }
+
+    @Test
     public void testUpdateExecutor() {
         URL url = URL.valueOf("dubbo://127.0.0.1:23456?threads=5");
         ThreadPoolExecutor executorService = (ThreadPoolExecutor) executorRepository.createExecutorIfAbsent(url);