[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:
parent
845003f500
commit
a7fb614c13
|
|
@ -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"
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
||||
|
|
|
|||
|
|
@ -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"));
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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) {
|
||||
|
|
|
|||
Loading…
Reference in New Issue