[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
This commit is contained in:
Albumen Kevin 2021-05-24 16:35:36 +08:00 committed by GitHub
parent 845003f500
commit a7fb614c13
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
12 changed files with 163 additions and 79 deletions

View File

@ -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"

View File

@ -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>();
demoService.setInterface(DemoService.class);
demoService.setRef(new DemoServiceImpl());
demoService.setApplication(application);
demoService.setRegistry(registry);
demoService.setProtocol(protocol);
ReferenceConfig<DemoService> rc = new ReferenceConfig<DemoService>();
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<DemoService> rc = new ReferenceConfig<DemoService>();
rc.setApplication(application);
rc.setRegistry(registry);
rc.setInterface(DemoService.class.getName());
@ -110,7 +111,6 @@ public class ReferenceConfigTest {
ServiceConfig<DemoService> sc = new ServiceConfig<DemoService>();
sc.setInterface(DemoService.class);
sc.setRef(new DemoServiceImpl());
sc.setApplication(application);
sc.setRegistry(registry);
sc.setProtocol(protocol);

View File

@ -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<EchoService> serviceConfig = new ServiceConfig<>();
serviceConfig.setInterface(EchoService.class);

View File

@ -193,5 +193,16 @@
</includes>
</testResource>
</testResources>
<plugins>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<groupId>org.apache.maven.plugins</groupId>
<configuration>
<forkCount>1</forkCount>
<reuseForks>false</reuseForks>
</configuration>
</plugin>
</plugins>
</build>
</project>

View File

@ -142,7 +142,7 @@
<log4j2_version>2.11.1</log4j2_version>
<commons_io_version>2.6</commons_io_version>
<embedded_redis_version>0.6</embedded_redis_version>
<embedded_redis_version>0.10.0</embedded_redis_version>
<!-- Eureka -->
<eureka.version>1.9.12</eureka.version>
@ -639,7 +639,7 @@
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.github.kstyrc</groupId>
<groupId>com.github.codemonstur</groupId>
<artifactId>embedded-redis</artifactId>
<version>${embedded_redis_version}</version>
<scope>test</scope>

View File

@ -44,7 +44,7 @@
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.github.kstyrc</groupId>
<groupId>com.github.codemonstur</groupId>
<artifactId>embedded-redis</artifactId>
<scope>test</scope>
</dependency>

View File

@ -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

View File

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

View File

@ -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<URL, Invoker<DemoService>> invokerFunction = (url)-> {
private final Function<URL, Invoker<DemoService>> invokerFunction = (url) -> {
Invoker<DemoService> 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<DemoService> invoker, AppResponse response) {
@ -87,16 +93,58 @@ public class MetricsFilterTest {
}
@Test
public void testConsumerSuccess() throws Exception {
public void testAll() {
List<Callable<Void>> 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<Void> 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<DemoService> 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<DemoService> 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<DemoService> 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<DemoService> 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<MetricsService> 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<DemoService> 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<MetricsService> 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"));
}
}

View File

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

View File

@ -46,11 +46,6 @@
<artifactId>curator-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.github.kstyrc</groupId>
<artifactId>embedded-redis</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>

View File

@ -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) {