From a7fb614c13fe18af5fda8c8bebd543a831c0c72c Mon Sep 17 00:00:00 2001 From: Albumen Kevin Date: Mon, 24 May 2021 16:35:36 +0800 Subject: [PATCH] [Github-Actions] Improve Test cases (#7849) * Improve Test cases for Dubbo 3.0, from #7592 #7829 * Fix compile error * move static field recover to final block * Move application config set to ApplicationModel in ReferenceConfigTest --- .github/workflows/build-and-test-3.yml | 4 +- .../dubbo/config/ReferenceConfigTest.java | 10 +- ...blishingServiceDefinitionListenerTest.java | 5 +- dubbo-config/dubbo-config-spring/pom.xml | 11 +++ dubbo-dependencies-bom/pom.xml | 4 +- .../dubbo-metadata-report-redis/pom.xml | 2 +- .../store/redis/RedisMetadataReportTest.java | 70 ++++++++----- .../dubbo/monitor/dubbo/MetricsFilter.java | 2 +- .../monitor/dubbo/MetricsFilterTest.java | 98 ++++++++++++++----- .../multicast/MulticastRegistryTest.java | 7 +- .../dubbo-registry-multiple/pom.xml | 5 - .../transport/netty/ThreadNameTest.java | 24 +++-- 12 files changed, 163 insertions(+), 79 deletions(-) diff --git a/.github/workflows/build-and-test-3.yml b/.github/workflows/build-and-test-3.yml index 4cfa652b0e..a7aa668413 100644 --- a/.github/workflows/build-and-test-3.yml +++ b/.github/workflows/build-and-test-3.yml @@ -71,13 +71,13 @@ jobs: restore-keys: | ${{ runner.os }}-maven- - name: "Test with Maven with Integration Tests" - timeout-minutes: 30 + timeout-minutes: 40 if: ${{ startsWith( matrix.os, 'ubuntu') }} run: ./mvnw --batch-mode -U -e --no-transfer-progress clean test verify -Dmaven.wagon.httpconnectionManager.ttlSeconds=120 -Dmaven.wagon.http.retryHandler.count=5 -DskipTests=false -DskipIntegrationTests=false -Dcheckstyle.skip=false -Drat.skip=false -Dmaven.javadoc.skip=true - name: "Test with Maven without Integration Tests" env: DISABLE_FILE_SYSTEM_TEST: true - timeout-minutes: 30 + timeout-minutes: 50 if: ${{ startsWith( matrix.os, 'windows') }} run: ./mvnw --batch-mode -U -e --no-transfer-progress clean test verify -D"http.keepAlive=false" -D"maven.wagon.http.pool=false" -D"maven.wagon.httpconnectionManager.ttlSeconds=120" -D"maven.wagon.http.retryHandler.count=5" -DskipTests=false -DskipIntegrationTests=true -D"checkstyle.skip=false" -D"rat.skip=false" -D"maven.javadoc.skip=true" - name: "Pack rat file if failure" diff --git a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/ReferenceConfigTest.java b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/ReferenceConfigTest.java index 775596c3fb..3e8ad3acdb 100644 --- a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/ReferenceConfigTest.java +++ b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/ReferenceConfigTest.java @@ -29,6 +29,7 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import static org.apache.dubbo.rpc.Constants.LOCAL_PROTOCOL; +import static org.apache.dubbo.rpc.Constants.SCOPE_REMOTE; public class ReferenceConfigTest { @@ -46,6 +47,7 @@ public class ReferenceConfigTest { public void testInjvm() throws Exception { ApplicationConfig application = new ApplicationConfig(); application.setName("test-protocol-random-port"); + ApplicationModel.getConfigManager().setApplication(application); RegistryConfig registry = new RegistryConfig(); registry.setAddress("multicast://224.5.6.7:1234"); @@ -57,15 +59,13 @@ public class ReferenceConfigTest { demoService = new ServiceConfig(); demoService.setInterface(DemoService.class); demoService.setRef(new DemoServiceImpl()); - demoService.setApplication(application); demoService.setRegistry(registry); demoService.setProtocol(protocol); ReferenceConfig rc = new ReferenceConfig(); - rc.setApplication(application); rc.setRegistry(registry); rc.setInterface(DemoService.class.getName()); - rc.setInjvm(false); + rc.setScope(SCOPE_REMOTE); try { System.setProperty("java.net.preferIPv4Stack", "true"); @@ -86,13 +86,14 @@ public class ReferenceConfigTest { public void testReferenceRetry() { ApplicationConfig application = new ApplicationConfig(); application.setName("test-reference-retry"); + ApplicationModel.getConfigManager().setApplication(application); + RegistryConfig registry = new RegistryConfig(); registry.setAddress("multicast://224.5.6.7:1234"); ProtocolConfig protocol = new ProtocolConfig(); protocol.setName("mockprotocol"); ReferenceConfig rc = new ReferenceConfig(); - rc.setApplication(application); rc.setRegistry(registry); rc.setInterface(DemoService.class.getName()); @@ -110,7 +111,6 @@ public class ReferenceConfigTest { ServiceConfig sc = new ServiceConfig(); sc.setInterface(DemoService.class); sc.setRef(new DemoServiceImpl()); - sc.setApplication(application); sc.setRegistry(registry); sc.setProtocol(protocol); diff --git a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/event/listener/PublishingServiceDefinitionListenerTest.java b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/event/listener/PublishingServiceDefinitionListenerTest.java index 0022aac7bb..ad571f86cd 100644 --- a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/event/listener/PublishingServiceDefinitionListenerTest.java +++ b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/event/listener/PublishingServiceDefinitionListenerTest.java @@ -16,6 +16,7 @@ */ package org.apache.dubbo.config.event.listener; +import org.apache.dubbo.common.utils.NetUtils; import org.apache.dubbo.config.ApplicationConfig; import org.apache.dubbo.config.ProtocolConfig; import org.apache.dubbo.config.RegistryConfig; @@ -34,6 +35,8 @@ import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; +import java.util.Random; + import static org.apache.dubbo.common.constants.CommonConstants.DEFAULT_METADATA_STORAGE_TYPE; import static org.junit.jupiter.api.Assertions.assertEquals; @@ -67,7 +70,7 @@ public class PublishingServiceDefinitionListenerTest { @Test public void testOnServiceConfigExportedEvent() { ProtocolConfig protocolConfig = new ProtocolConfig("dubbo"); - protocolConfig.setPort(-1); + protocolConfig.setPort(NetUtils.getAvailablePort(20880 + new Random().nextInt(10000))); ServiceConfig serviceConfig = new ServiceConfig<>(); serviceConfig.setInterface(EchoService.class); diff --git a/dubbo-config/dubbo-config-spring/pom.xml b/dubbo-config/dubbo-config-spring/pom.xml index b96ab268e9..df9fbfdea2 100644 --- a/dubbo-config/dubbo-config-spring/pom.xml +++ b/dubbo-config/dubbo-config-spring/pom.xml @@ -193,5 +193,16 @@ + + + + maven-surefire-plugin + org.apache.maven.plugins + + 1 + false + + + diff --git a/dubbo-dependencies-bom/pom.xml b/dubbo-dependencies-bom/pom.xml index 5d59d8de3e..60d1491d72 100644 --- a/dubbo-dependencies-bom/pom.xml +++ b/dubbo-dependencies-bom/pom.xml @@ -142,7 +142,7 @@ 2.11.1 2.6 - 0.6 + 0.10.0 1.9.12 @@ -639,7 +639,7 @@ test - com.github.kstyrc + com.github.codemonstur embedded-redis ${embedded_redis_version} test diff --git a/dubbo-metadata/dubbo-metadata-report-redis/pom.xml b/dubbo-metadata/dubbo-metadata-report-redis/pom.xml index a743401840..81d162deff 100644 --- a/dubbo-metadata/dubbo-metadata-report-redis/pom.xml +++ b/dubbo-metadata/dubbo-metadata-report-redis/pom.xml @@ -44,7 +44,7 @@ test - com.github.kstyrc + com.github.codemonstur embedded-redis test diff --git a/dubbo-metadata/dubbo-metadata-report-redis/src/test/java/org/apache/dubbo/metadata/store/redis/RedisMetadataReportTest.java b/dubbo-metadata/dubbo-metadata-report-redis/src/test/java/org/apache/dubbo/metadata/store/redis/RedisMetadataReportTest.java index 900bf3727c..adf6e97e3b 100644 --- a/dubbo-metadata/dubbo-metadata-report-redis/src/test/java/org/apache/dubbo/metadata/store/redis/RedisMetadataReportTest.java +++ b/dubbo-metadata/dubbo-metadata-report-redis/src/test/java/org/apache/dubbo/metadata/store/redis/RedisMetadataReportTest.java @@ -16,7 +16,6 @@ */ package org.apache.dubbo.metadata.store.redis; -import org.apache.commons.lang3.SystemUtils; import org.apache.dubbo.common.URL; import org.apache.dubbo.common.utils.NetUtils; import org.apache.dubbo.metadata.definition.ServiceDefinitionBuilder; @@ -26,6 +25,7 @@ import org.apache.dubbo.metadata.report.identifier.MetadataIdentifier; import org.apache.dubbo.rpc.RpcException; import com.google.gson.Gson; +import org.apache.commons.lang3.SystemUtils; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.BeforeEach; @@ -35,52 +35,70 @@ import redis.clients.jedis.Jedis; import redis.clients.jedis.exceptions.JedisConnectionException; import redis.clients.jedis.exceptions.JedisDataException; import redis.embedded.RedisServer; -import redis.embedded.RedisServerBuilder; import java.io.IOException; import java.util.HashMap; import java.util.Map; +import java.util.Random; import static org.apache.dubbo.common.constants.CommonConstants.CONSUMER_SIDE; import static org.apache.dubbo.common.constants.CommonConstants.PROVIDER_SIDE; import static org.apache.dubbo.metadata.report.support.Constants.SYNC_REPORT_KEY; +import static redis.embedded.RedisServer.newRedisServer; -/** - * 2018/10/9 - */ public class RedisMetadataReportTest { + + private static final String + REDIS_URL_TEMPLATE = "redis://%slocalhost:%d", + REDIS_PASSWORD = "チェリー", + REDIS_URL_AUTH_SECTION = "username:" + REDIS_PASSWORD + "@"; + RedisMetadataReport redisMetadataReport; RedisMetadataReport syncRedisMetadataReport; RedisServer redisServer; URL registryUrl; @BeforeEach - public void constructor(TestInfo testInfo) throws IOException { - int redisPort = NetUtils.getAvailablePort(); - String methodName = testInfo.getTestMethod().get().getName(); - if ("testAuthRedisMetadata".equals(methodName) || ("testWrongAuthRedisMetadata".equals(methodName))) { - String password = "チェリー"; - RedisServerBuilder builder = RedisServer.builder().port(redisPort).setting("requirepass " + password); - if (SystemUtils.IS_OS_WINDOWS) { - // set maxheap to fix Windows error 0x70 while starting redis - builder.setting("maxheap 128mb"); + public void constructor(final TestInfo testInfo) throws IOException { + final boolean usesAuthentication = usesAuthentication(testInfo); + int redisPort = 0; + IOException exception = null; + + for (int i = 0; i < 10; i++) { + try { + redisPort = NetUtils.getAvailablePort(30000 + new Random().nextInt(10000)); + redisServer = newRedisServer() + .port(redisPort) + // set maxheap to fix Windows error 0x70 while starting redis + .settingIf(SystemUtils.IS_OS_WINDOWS, "maxheap 128mb") + .settingIf(usesAuthentication, "requirepass " + REDIS_PASSWORD) + .build(); + this.redisServer.start(); + exception = null; + } catch (IOException e) { + e.printStackTrace(); + exception = e; } - redisServer = builder.build(); - registryUrl = URL.valueOf("redis://username:" + password + "@localhost:" + redisPort); - } else { - RedisServerBuilder builder = RedisServer.builder().port(redisPort); - if (SystemUtils.IS_OS_WINDOWS) { - // set maxheap to fix Windows error 0x70 while starting redis - builder.setting("maxheap 128mb"); + if (exception == null) { + break; } - redisServer = builder.build(); - registryUrl = URL.valueOf("redis://localhost:" + redisPort); } - this.redisServer.start(); + Assertions.assertNull(exception); + registryUrl = newRedisUrl(usesAuthentication, redisPort); redisMetadataReport = (RedisMetadataReport) new RedisMetadataReportFactory().createMetadataReport(registryUrl); - URL asyncRegistryUrl = URL.valueOf("redis://localhost:" + redisPort + "?" + SYNC_REPORT_KEY + "=true"); - syncRedisMetadataReport = (RedisMetadataReport) new RedisMetadataReportFactory().createMetadataReport(registryUrl); + URL syncRegistryUrl = registryUrl.addParameter(SYNC_REPORT_KEY ,"true"); + syncRedisMetadataReport = (RedisMetadataReport) new RedisMetadataReportFactory().createMetadataReport(syncRegistryUrl); + } + + private static boolean usesAuthentication(final TestInfo testInfo) { + final String methodName = testInfo.getTestMethod().get().getName(); + return "testAuthRedisMetadata".equals(methodName) || "testWrongAuthRedisMetadata".equals(methodName); + } + + private static URL newRedisUrl(final boolean usesAuthentication, final int redisPort) { + final String urlAuthSection = usesAuthentication ? REDIS_URL_AUTH_SECTION : ""; + return URL.valueOf(String.format(REDIS_URL_TEMPLATE, urlAuthSection, redisPort)); } @AfterEach diff --git a/dubbo-monitor/dubbo-monitor-default/src/main/java/org/apache/dubbo/monitor/dubbo/MetricsFilter.java b/dubbo-monitor/dubbo-monitor-default/src/main/java/org/apache/dubbo/monitor/dubbo/MetricsFilter.java index abc6aa4d15..a3da9892db 100644 --- a/dubbo-monitor/dubbo-monitor-default/src/main/java/org/apache/dubbo/monitor/dubbo/MetricsFilter.java +++ b/dubbo-monitor/dubbo-monitor-default/src/main/java/org/apache/dubbo/monitor/dubbo/MetricsFilter.java @@ -70,7 +70,7 @@ import static org.apache.dubbo.monitor.Constants.SERVICE; public class MetricsFilter implements Filter { private static final Logger logger = LoggerFactory.getLogger(MetricsFilter.class); - private static volatile AtomicBoolean exported = new AtomicBoolean(false); + protected static volatile AtomicBoolean exported = new AtomicBoolean(false); private Integer port; private String protocolName; 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 b14673480a..29bb5351c7 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 @@ -42,11 +42,15 @@ import org.junit.jupiter.api.Test; import org.mockito.Mockito; import java.util.HashMap; +import java.util.LinkedList; import java.util.List; import java.util.Map; +import java.util.Random; +import java.util.concurrent.Callable; import java.util.function.Function; import static org.apache.dubbo.common.constants.CommonConstants.CONSUMER_SIDE; +import static org.apache.dubbo.common.constants.CommonConstants.METRICS_PORT; import static org.apache.dubbo.common.constants.CommonConstants.PROVIDER; import static org.apache.dubbo.common.constants.CommonConstants.SIDE_KEY; import static org.apache.dubbo.common.constants.CommonConstants.TIMEOUT_KEY; @@ -62,8 +66,9 @@ import static org.mockito.Mockito.doNothing; import static org.mockito.Mockito.mock; public class MetricsFilterTest { + private int port = NetUtils.getAvailablePort(20880 + new Random().nextInt(10000)); - private final Function> invokerFunction = (url)-> { + private final Function> invokerFunction = (url) -> { Invoker serviceInvoker = mock(Invoker.class); given(serviceInvoker.isAvailable()).willReturn(false); @@ -75,7 +80,8 @@ public class MetricsFilterTest { }; private URL getUrl() { - return URL.valueOf("dubbo://" + NetUtils.getLocalHost() + ":20880/org.apache.dubbo.monitor.dubbo.service.DemoService"); + return URL.valueOf("dubbo://" + NetUtils.getLocalHost() + ":" + port + + "/org.apache.dubbo.monitor.dubbo.service.DemoService?" + METRICS_PORT + "=" + port); } private void onInvokeReturns(Invoker invoker, AppResponse response) { @@ -87,16 +93,58 @@ public class MetricsFilterTest { } @Test - public void testConsumerSuccess() throws Exception { + public void testAll() { + List> testcases = new LinkedList<>(); + testcases.add(() -> { + testConsumerSuccess(); + return null; + }); + testcases.add(() -> { + testConsumerTimeout(); + return null; + }); + testcases.add(() -> { + testProviderSuccess(); + return null; + }); + testcases.add(() -> { + testInvokeMetricsService(); + return null; + }); + testcases.add(() -> { + testInvokeMetricsMethodService(); + return null; + }); + + for (Callable testcase : testcases) { + Throwable throwable = null; + for (int i = 0; i < 10; i++) { + try { + port = NetUtils.getAvailablePort(20880 + new Random().nextInt(10000)); + testcase.call(); + throwable = null; + break; + } catch (Throwable t) { + t.printStackTrace(); + throwable = t; + } finally { + MetricsFilter.exported.set(false); + } + } + Assertions.assertNull(throwable); + } + } + + private void testConsumerSuccess() throws Exception { IMetricManager metricManager = MetricManager.getIMetricManager(); metricManager.clear(); MetricsFilter metricsFilter = new MetricsFilter(); Invocation invocation = new RpcInvocation("sayName", DemoService.class.getName(), "", new Class[]{Integer.class}, new Object[0]); - RpcContext.getServiceContext().setRemoteAddress(NetUtils.getLocalHost(), 20880).setLocalAddress(NetUtils.getLocalHost(), 2345); + RpcContext.getServiceContext().setRemoteAddress(NetUtils.getLocalHost(), port).setLocalAddress(NetUtils.getLocalHost(), 2345); URL url = getUrl().addParameter(SIDE_KEY, CONSUMER_SIDE); Invoker invoker = invokerFunction.apply(url); AppResponse response = AppResponseBuilder.create() - .build(); + .build(); onInvokeReturns(invoker, response); for (int i = 0; i < 100; i++) { metricsFilter.invoke(invoker, invocation); @@ -115,13 +163,12 @@ public class MetricsFilterTest { } - @Test - public void testConsumerTimeout() { + private void testConsumerTimeout() { IMetricManager metricManager = MetricManager.getIMetricManager(); metricManager.clear(); MetricsFilter metricsFilter = new MetricsFilter(); Invocation invocation = new RpcInvocation("timeoutException", DemoService.class.getName(), "", null, null); - RpcContext.getServiceContext().setRemoteAddress(NetUtils.getLocalHost(), 20880).setLocalAddress(NetUtils.getLocalHost(), 2345); + RpcContext.getServiceContext().setRemoteAddress(NetUtils.getLocalHost(), port).setLocalAddress(NetUtils.getLocalHost(), 2345); URL url = getUrl().addParameter(SIDE_KEY, CONSUMER_SIDE) .addParameter(TIMEOUT_KEY, 300); Invoker invoker = invokerFunction.apply(url); @@ -147,13 +194,12 @@ public class MetricsFilterTest { } - @Test - public void testProviderSuccess() throws Exception { + private void testProviderSuccess() throws Exception { IMetricManager metricManager = MetricManager.getIMetricManager(); metricManager.clear(); MetricsFilter metricsFilter = new MetricsFilter(); Invocation invocation = new RpcInvocation("sayName", DemoService.class.getName(), "", new Class[0], new Object[0]); - RpcContext.getServiceContext().setRemoteAddress(NetUtils.getLocalHost(), 20880).setLocalAddress(NetUtils.getLocalHost(), 2345); + RpcContext.getServiceContext().setRemoteAddress(NetUtils.getLocalHost(), port).setLocalAddress(NetUtils.getLocalHost(), 2345); URL url = getUrl().addParameter(SIDE_KEY, PROVIDER) .addParameter(TIMEOUT_KEY, 300); Invoker invoker = invokerFunction.apply(url); @@ -176,13 +222,12 @@ public class MetricsFilterTest { Assertions.assertEquals(100, dubboMethod.getMethodCountPerCategory(0).get("success").get(timestamp)); } - @Test - public void testInvokeMetricsService() { + private void testInvokeMetricsService() { IMetricManager metricManager = MetricManager.getIMetricManager(); metricManager.clear(); MetricsFilter metricsFilter = new MetricsFilter(); Invocation invocation = new RpcInvocation("sayName", DemoService.class.getName(), "", new Class[0], new Object[0]); - RpcContext.getServiceContext().setRemoteAddress(NetUtils.getLocalHost(), 20880).setLocalAddress(NetUtils.getLocalHost(), 2345); + RpcContext.getServiceContext().setRemoteAddress(NetUtils.getLocalHost(), port).setLocalAddress(NetUtils.getLocalHost(), 2345); URL url = getUrl().addParameter(SIDE_KEY, PROVIDER) .addParameter(TIMEOUT_KEY, 300); Invoker serviceInvoker = invokerFunction.apply(url); @@ -199,7 +244,7 @@ public class MetricsFilterTest { } } Protocol protocol = new DubboProtocol(); - url = URL.valueOf("dubbo://" + NetUtils.getLocalAddress().getHostName() + ":20880/" + MetricsService.class.getName()); + url = URL.valueOf("dubbo://" + NetUtils.getLocalAddress().getHostName() + ":" + port + "/" + MetricsService.class.getName()); Invoker invoker = protocol.refer(MetricsService.class, url); invocation = new RpcInvocation("getMetricsByGroup", DemoService.class.getName(), "", new Class[]{String.class}, new Object[]{DUBBO_GROUP}); try { @@ -225,14 +270,13 @@ public class MetricsFilterTest { Assertions.assertEquals(50.0 / 100.0, metricMap.get("success_rate")); } - @Test - public void testInvokeMetricsMethodService() { + private void testInvokeMetricsMethodService() { IMetricManager metricManager = MetricManager.getIMetricManager(); metricManager.clear(); MetricsFilter metricsFilter = new MetricsFilter(); Invocation sayNameInvocation = new RpcInvocation("sayName", DemoService.class.getName(), "", new Class[0], new Object[0]); Invocation echoInvocation = new RpcInvocation("echo", DemoService.class.getName(), "", new Class[]{Integer.class}, new Integer[]{1}); - RpcContext.getServiceContext().setRemoteAddress(NetUtils.getLocalHost(), 20880).setLocalAddress(NetUtils.getLocalHost(), 2345); + RpcContext.getServiceContext().setRemoteAddress(NetUtils.getLocalHost(), port).setLocalAddress(NetUtils.getLocalHost(), 2345); URL url = getUrl().addParameter(SIDE_KEY, PROVIDER) .addParameter(TIMEOUT_KEY, 300); Invoker serviceInvoker = invokerFunction.apply(url); @@ -256,7 +300,7 @@ public class MetricsFilterTest { } Protocol protocol = new DubboProtocol(); - url = URL.valueOf("dubbo://" + NetUtils.getLocalAddress().getHostName() + ":20880/" + MetricsService.class.getName()); + url = URL.valueOf("dubbo://" + NetUtils.getLocalAddress().getHostName() + ":" + port + "/" + MetricsService.class.getName()); Invoker invoker = protocol.refer(MetricsService.class, url); Invocation invocation = new RpcInvocation("getMetricsByGroup", DemoService.class.getName(), "", new Class[]{String.class}, new Object[]{DUBBO_GROUP}); try { @@ -282,23 +326,23 @@ public class MetricsFilterTest { } Assertions.assertEquals(50.0, - methodMetricMap.get("org.apache.dubbo.monitor.dubbo.service.DemoService.void sayName()").get("success_bucket_count")); + methodMetricMap.get("org.apache.dubbo.monitor.dubbo.service.DemoService.void sayName()").get("success_bucket_count")); Assertions.assertEquals(50.0, - methodMetricMap.get("org.apache.dubbo.monitor.dubbo.service.DemoService.void echo(Integer)").get("success_bucket_count")); + methodMetricMap.get("org.apache.dubbo.monitor.dubbo.service.DemoService.void echo(Integer)").get("success_bucket_count")); Assertions.assertEquals(50.0, - methodMetricMap.get("org.apache.dubbo.monitor.dubbo.service.DemoService.void sayName()").get("timeoutError_bucket_count")); + methodMetricMap.get("org.apache.dubbo.monitor.dubbo.service.DemoService.void sayName()").get("timeoutError_bucket_count")); Assertions.assertEquals(50.0, - methodMetricMap.get("org.apache.dubbo.monitor.dubbo.service.DemoService.void echo(Integer)").get("timeoutError_bucket_count")); + methodMetricMap.get("org.apache.dubbo.monitor.dubbo.service.DemoService.void echo(Integer)").get("timeoutError_bucket_count")); Assertions.assertEquals(100.0 / 15, - methodMetricMap.get("org.apache.dubbo.monitor.dubbo.service.DemoService.void sayName()").get("qps")); + methodMetricMap.get("org.apache.dubbo.monitor.dubbo.service.DemoService.void sayName()").get("qps")); Assertions.assertEquals(100.0 / 15, - methodMetricMap.get("org.apache.dubbo.monitor.dubbo.service.DemoService.void echo(Integer)").get("qps")); + methodMetricMap.get("org.apache.dubbo.monitor.dubbo.service.DemoService.void echo(Integer)").get("qps")); Assertions.assertEquals(50.0 / 100.0, - methodMetricMap.get("org.apache.dubbo.monitor.dubbo.service.DemoService.void sayName()").get("success_rate")); + 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")); + methodMetricMap.get("org.apache.dubbo.monitor.dubbo.service.DemoService.void echo(Integer)").get("success_rate")); } } diff --git a/dubbo-registry/dubbo-registry-multicast/src/test/java/org/apache/dubbo/registry/multicast/MulticastRegistryTest.java b/dubbo-registry/dubbo-registry-multicast/src/test/java/org/apache/dubbo/registry/multicast/MulticastRegistryTest.java index 598f34a422..32e71d0555 100644 --- a/dubbo-registry/dubbo-registry-multicast/src/test/java/org/apache/dubbo/registry/multicast/MulticastRegistryTest.java +++ b/dubbo-registry/dubbo-registry-multicast/src/test/java/org/apache/dubbo/registry/multicast/MulticastRegistryTest.java @@ -29,6 +29,7 @@ import java.net.MulticastSocket; import java.net.UnknownHostException; import java.util.List; import java.util.Map; +import java.util.Random; import java.util.Set; import static org.apache.dubbo.common.constants.RegistryConstants.EMPTY_PROTOCOL; @@ -84,7 +85,7 @@ public class MulticastRegistryTest { */ @Test public void testGetCustomPort() { - int port = NetUtils.getAvailablePort(); + int port = NetUtils.getAvailablePort(20880 + new Random().nextInt(10000)); URL customPortUrl = URL.valueOf("multicast://239.239.239.239:" + port); MulticastRegistry multicastRegistry = new MulticastRegistry(customPortUrl); assertThat(multicastRegistry.getUrl().getPort(), is(port)); @@ -186,7 +187,7 @@ public class MulticastRegistryTest { */ @Test public void testAvailability() { - int port = NetUtils.getAvailablePort(); + int port = NetUtils.getAvailablePort(20880 + new Random().nextInt(10000)); MulticastRegistry registry = new MulticastRegistry(URL.valueOf("multicast://224.5.6.8:" + port)); assertTrue(registry.isAvailable()); } @@ -224,7 +225,7 @@ public class MulticastRegistryTest { */ @Test public void testCustomedPort() { - int port = NetUtils.getAvailablePort(); + int port = NetUtils.getAvailablePort(20880 + new Random().nextInt(10000)); MulticastRegistry multicastRegistry = new MulticastRegistry(URL.valueOf("multicast://224.5.6.7:" + port)); try { MulticastSocket multicastSocket = multicastRegistry.getMulticastSocket(); diff --git a/dubbo-registry/dubbo-registry-multiple/pom.xml b/dubbo-registry/dubbo-registry-multiple/pom.xml index e4c5165a63..5a8c0050e9 100644 --- a/dubbo-registry/dubbo-registry-multiple/pom.xml +++ b/dubbo-registry/dubbo-registry-multiple/pom.xml @@ -46,11 +46,6 @@ curator-test test - - com.github.kstyrc - embedded-redis - test - org.apache.commons commons-lang3 diff --git a/dubbo-remoting/dubbo-remoting-netty/src/test/java/org/apache/dubbo/remoting/transport/netty/ThreadNameTest.java b/dubbo-remoting/dubbo-remoting-netty/src/test/java/org/apache/dubbo/remoting/transport/netty/ThreadNameTest.java index 001b56ad2a..ef3b23a8d6 100644 --- a/dubbo-remoting/dubbo-remoting-netty/src/test/java/org/apache/dubbo/remoting/transport/netty/ThreadNameTest.java +++ b/dubbo-remoting/dubbo-remoting-netty/src/test/java/org/apache/dubbo/remoting/transport/netty/ThreadNameTest.java @@ -27,6 +27,10 @@ import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; +import java.util.Random; +import java.util.concurrent.CountDownLatch; +import java.util.concurrent.TimeUnit; + public class ThreadNameTest { private NettyServer server; @@ -41,15 +45,17 @@ public class ThreadNameTest { private static String serverRegex = "DubboServerHandler\\-localhost:(\\d+)\\-thread\\-(\\d+)"; private static String clientRegex = "DubboClientHandler\\-localhost:(\\d+)\\-thread\\-(\\d+)"; + private final CountDownLatch serverLatch = new CountDownLatch(1); + private final CountDownLatch clientLatch = new CountDownLatch(1); + @BeforeEach public void before() throws Exception { - int port = NetUtils.getAvailablePort(); + int port = NetUtils.getAvailablePort(20880 + new Random().nextInt(10000)); serverURL = URL.valueOf("telnet://localhost?side=provider").setPort(port); clientURL = URL.valueOf("telnet://localhost?side=consumer").setPort(port); - serverHandler = new ThreadNameVerifyHandler(serverRegex, false); - clientHandler = new ThreadNameVerifyHandler(clientRegex, true); - + serverHandler = new ThreadNameVerifyHandler(serverRegex, false, serverLatch); + clientHandler = new ThreadNameVerifyHandler(clientRegex, true, clientLatch); server = new NettyServer(serverURL, serverHandler); client = new NettyClient(clientURL, clientHandler); } @@ -70,7 +76,8 @@ public class ThreadNameTest { @Test public void testThreadName() throws Exception { client.send("hello"); - Thread.sleep(1000L * 5L); + serverLatch.await(30, TimeUnit.SECONDS); + clientLatch.await(30, TimeUnit.SECONDS); if (!serverHandler.isSuccess() || !clientHandler.isSuccess()) { Assertions.fail(); } @@ -81,10 +88,12 @@ public class ThreadNameTest { private String message; private boolean success; private boolean client; + private CountDownLatch latch; - ThreadNameVerifyHandler(String msg, boolean client) { + ThreadNameVerifyHandler(String msg, boolean client, CountDownLatch latch) { message = msg; this.client = client; + this.latch = latch; } public boolean isSuccess() { @@ -95,6 +104,9 @@ public class ThreadNameTest { if (!success) { success = Thread.currentThread().getName().matches(message); } + if(success) { + latch.countDown(); + } } private void output(String method) {