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);