This is an automated email from the ASF dual-hosted git repository.
zrlw pushed a commit to branch 3.3
in repository https://gitbox.apache.org/repos/asf/dubbo.git
The following commit(s) were added to refs/heads/3.3 by this push:
new a828eb4f72 Remove dubbo-test in
dubbo-metrics,dubbo-registry,dubbo-serialization (#15218)
a828eb4f72 is described below
commit a828eb4f72c53db44a69e629e0ae1e3a5b47d970
Author: stellar <[email protected]>
AuthorDate: Mon Jun 23 15:41:42 2025 +0800
Remove dubbo-test in dubbo-metrics,dubbo-registry,dubbo-serialization
(#15218)
---
.../event/SimpleMetricsEventMulticasterTest.java | 6 ++
.../dubbo/metrics/model/ApplicationMetricTest.java | 7 ++
.../metrics/model/sample/ErrorCodeSampleTest.java | 6 ++
.../dubbo/monitor/support/MonitorFilterTest.java | 8 ++
.../collector/RegistryMetricsCollectorTest.java | 12 +--
.../metrics/collector/RegistryMetricsTest.java | 9 ++-
dubbo-metrics/pom.xml | 8 --
.../nacos/NacosServiceDiscoveryFactoryTest.java | 6 ++
.../registry/nacos/NacosServiceDiscoveryTest.java | 1 +
.../registry/zookeeper/ZookeeperRegistryTest.java | 60 +++++++-------
.../zookeeper/ZookeeperServiceDiscoveryTest.java | 94 +++++++++++++++++++++-
.../zookeeper/util/CuratorFrameworkUtilsTest.java | 46 ++++++++++-
dubbo-registry/pom.xml | 9 ---
.../Curator5ZookeeperClientManagerTest.java | 4 +-
dubbo-serialization/pom.xml | 8 --
15 files changed, 213 insertions(+), 71 deletions(-)
diff --git
a/dubbo-metrics/dubbo-metrics-api/src/test/java/org/apache/dubbo/metrics/event/SimpleMetricsEventMulticasterTest.java
b/dubbo-metrics/dubbo-metrics-api/src/test/java/org/apache/dubbo/metrics/event/SimpleMetricsEventMulticasterTest.java
index b101d944e4..5e9315b0b5 100644
---
a/dubbo-metrics/dubbo-metrics-api/src/test/java/org/apache/dubbo/metrics/event/SimpleMetricsEventMulticasterTest.java
+++
b/dubbo-metrics/dubbo-metrics-api/src/test/java/org/apache/dubbo/metrics/event/SimpleMetricsEventMulticasterTest.java
@@ -22,6 +22,7 @@ import
org.apache.dubbo.metrics.listener.AbstractMetricsListener;
import org.apache.dubbo.metrics.listener.MetricsLifeListener;
import org.apache.dubbo.rpc.model.ApplicationModel;
+import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
@@ -55,6 +56,11 @@ public class SimpleMetricsEventMulticasterTest {
requestEvent = new TimeCounterEvent(applicationModel, null) {};
}
+ @AfterEach
+ public void destroy() {
+ ApplicationModel.defaultModel().destroy();
+ }
+
@Test
void testPublishFinishEvent() {
diff --git
a/dubbo-metrics/dubbo-metrics-api/src/test/java/org/apache/dubbo/metrics/model/ApplicationMetricTest.java
b/dubbo-metrics/dubbo-metrics-api/src/test/java/org/apache/dubbo/metrics/model/ApplicationMetricTest.java
index ec2a71597f..17ab698662 100644
---
a/dubbo-metrics/dubbo-metrics-api/src/test/java/org/apache/dubbo/metrics/model/ApplicationMetricTest.java
+++
b/dubbo-metrics/dubbo-metrics-api/src/test/java/org/apache/dubbo/metrics/model/ApplicationMetricTest.java
@@ -21,6 +21,7 @@ import org.apache.dubbo.rpc.model.ApplicationModel;
import java.util.Map;
+import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
@@ -101,4 +102,10 @@ class ApplicationMetricTest {
@Test
void testHashCode() {}
+
+ @AfterEach
+ public void destroy() {
+ ApplicationModel applicationModel = ApplicationModel.defaultModel();
+ applicationModel.destroy();
+ }
}
diff --git
a/dubbo-metrics/dubbo-metrics-default/src/test/java/org/apache/dubbo/metrics/metrics/model/sample/ErrorCodeSampleTest.java
b/dubbo-metrics/dubbo-metrics-default/src/test/java/org/apache/dubbo/metrics/metrics/model/sample/ErrorCodeSampleTest.java
index d571214f92..efb94f783b 100644
---
a/dubbo-metrics/dubbo-metrics-default/src/test/java/org/apache/dubbo/metrics/metrics/model/sample/ErrorCodeSampleTest.java
+++
b/dubbo-metrics/dubbo-metrics-default/src/test/java/org/apache/dubbo/metrics/metrics/model/sample/ErrorCodeSampleTest.java
@@ -30,6 +30,7 @@ import org.apache.dubbo.rpc.model.FrameworkModel;
import java.util.List;
import java.util.concurrent.atomic.AtomicLong;
+import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Test;
public class ErrorCodeSampleTest {
@@ -70,4 +71,9 @@ public class ErrorCodeSampleTest {
System.out.println(samples);
}
+
+ @AfterEach
+ public void tearDown() {
+ FrameworkModel.defaultModel().destroy();
+ }
}
diff --git
a/dubbo-metrics/dubbo-metrics-default/src/test/java/org/apache/dubbo/monitor/support/MonitorFilterTest.java
b/dubbo-metrics/dubbo-metrics-default/src/test/java/org/apache/dubbo/monitor/support/MonitorFilterTest.java
index d32f565872..de8f3dd17d 100644
---
a/dubbo-metrics/dubbo-metrics-default/src/test/java/org/apache/dubbo/monitor/support/MonitorFilterTest.java
+++
b/dubbo-metrics/dubbo-metrics-default/src/test/java/org/apache/dubbo/monitor/support/MonitorFilterTest.java
@@ -28,10 +28,12 @@ import org.apache.dubbo.rpc.Result;
import org.apache.dubbo.rpc.RpcContext;
import org.apache.dubbo.rpc.RpcException;
import org.apache.dubbo.rpc.RpcInvocation;
+import org.apache.dubbo.rpc.model.ApplicationModel;
import java.util.Arrays;
import java.util.List;
+import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import org.mockito.Mockito;
@@ -240,4 +242,10 @@ class MonitorFilterTest {
Throwable rpcException = new RpcException();
monitorFilter.onError(rpcException, serviceInvoker, invocation);
}
+
+ @AfterEach
+ public void destroy() {
+ ApplicationModel applicationModel = ApplicationModel.defaultModel();
+ applicationModel.destroy();
+ }
}
diff --git
a/dubbo-metrics/dubbo-metrics-registry/src/test/java/org/apache/dubbo/metrics/registry/metrics/collector/RegistryMetricsCollectorTest.java
b/dubbo-metrics/dubbo-metrics-registry/src/test/java/org/apache/dubbo/metrics/registry/metrics/collector/RegistryMetricsCollectorTest.java
index 442b9a7142..d6a759b600 100644
---
a/dubbo-metrics/dubbo-metrics-registry/src/test/java/org/apache/dubbo/metrics/registry/metrics/collector/RegistryMetricsCollectorTest.java
+++
b/dubbo-metrics/dubbo-metrics-registry/src/test/java/org/apache/dubbo/metrics/registry/metrics/collector/RegistryMetricsCollectorTest.java
@@ -30,6 +30,7 @@ import org.apache.dubbo.metrics.registry.event.RegistryEvent;
import org.apache.dubbo.rpc.model.ApplicationModel;
import org.apache.dubbo.rpc.model.FrameworkModel;
+import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
@@ -37,7 +38,6 @@ import java.util.Map;
import java.util.Objects;
import java.util.stream.Collectors;
-import com.google.common.collect.Lists;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeEach;
@@ -75,8 +75,9 @@ class RegistryMetricsCollectorTest {
@Test
void testRegisterMetrics() {
-
- RegistryEvent registryEvent =
RegistryEvent.toRegisterEvent(applicationModel, Lists.newArrayList("reg1"));
+ List<String> registryClusterNames = new ArrayList<>();
+ registryClusterNames.add("reg1");
+ RegistryEvent registryEvent =
RegistryEvent.toRegisterEvent(applicationModel, registryClusterNames);
MetricsEventBus.post(registryEvent, () -> {
List<MetricSample> metricSamples = collector.collect();
// push success +1 -> other default 0 = APP_LEVEL_KEYS.size()
@@ -94,7 +95,7 @@ class RegistryMetricsCollectorTest {
Assertions.assertEquals(APP_LEVEL_KEYS.size() +
REGISTER_LEVEL_KEYS.size() + 5, metricSamples.size());
long c1 = registryEvent.getTimePair().calc();
- registryEvent = RegistryEvent.toRegisterEvent(applicationModel,
Lists.newArrayList("reg1"));
+ registryEvent = RegistryEvent.toRegisterEvent(applicationModel,
registryClusterNames);
TimePair lastTimePair = registryEvent.getTimePair();
MetricsEventBus.post(
registryEvent,
@@ -145,7 +146,8 @@ class RegistryMetricsCollectorTest {
void testServicePushMetrics() {
String serviceName = "demo.gameService";
- List<String> rcNames = Lists.newArrayList("demo1");
+ List<String> rcNames = new ArrayList<>();
+ rcNames.add("demo1");
RegistryEvent registryEvent =
RegistryEvent.toRsEvent(applicationModel, serviceName, 2, rcNames);
MetricsEventBus.post(registryEvent, () -> {
diff --git
a/dubbo-metrics/dubbo-metrics-registry/src/test/java/org/apache/dubbo/metrics/registry/metrics/collector/RegistryMetricsTest.java
b/dubbo-metrics/dubbo-metrics-registry/src/test/java/org/apache/dubbo/metrics/registry/metrics/collector/RegistryMetricsTest.java
index db06191028..353e694c14 100644
---
a/dubbo-metrics/dubbo-metrics-registry/src/test/java/org/apache/dubbo/metrics/registry/metrics/collector/RegistryMetricsTest.java
+++
b/dubbo-metrics/dubbo-metrics-registry/src/test/java/org/apache/dubbo/metrics/registry/metrics/collector/RegistryMetricsTest.java
@@ -28,6 +28,7 @@ import org.apache.dubbo.metrics.registry.event.RegistryEvent;
import org.apache.dubbo.rpc.model.ApplicationModel;
import org.apache.dubbo.rpc.model.FrameworkModel;
+import java.util.ArrayList;
import java.util.List;
import java.util.NoSuchElementException;
import java.util.Optional;
@@ -37,7 +38,6 @@ import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.ScheduledFuture;
import java.util.concurrent.TimeUnit;
-import com.google.common.collect.Lists;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
@@ -292,13 +292,16 @@ public class RegistryMetricsTest {
}
RegistryEvent registerEvent() {
- RegistryEvent event = RegistryEvent.toRegisterEvent(applicationModel,
Lists.newArrayList("reg1"));
+ List<String> registryClusterNames = new ArrayList<>();
+ registryClusterNames.add("reg1");
+ RegistryEvent event = RegistryEvent.toRegisterEvent(applicationModel,
registryClusterNames);
event.setAvailable(true);
return event;
}
RegistryEvent rsEvent() {
- List<String> rcNames = Lists.newArrayList("demo1");
+ List<String> rcNames = new ArrayList<>();
+ rcNames.add("demo1");
RegistryEvent event = RegistryEvent.toRsEvent(applicationModel,
"TestServiceInterface1", 1, rcNames);
event.setAvailable(true);
return event;
diff --git a/dubbo-metrics/pom.xml b/dubbo-metrics/pom.xml
index 2c2692f3f9..7176e2e182 100644
--- a/dubbo-metrics/pom.xml
+++ b/dubbo-metrics/pom.xml
@@ -42,12 +42,4 @@
<skip_maven_deploy>false</skip_maven_deploy>
</properties>
- <dependencies>
- <dependency>
- <groupId>org.apache.dubbo</groupId>
- <artifactId>dubbo-test-check</artifactId>
- <version>${project.parent.version}</version>
- <scope>test</scope>
- </dependency>
- </dependencies>
</project>
diff --git
a/dubbo-registry/dubbo-registry-nacos/src/test/java/org/apache/dubbo/registry/nacos/NacosServiceDiscoveryFactoryTest.java
b/dubbo-registry/dubbo-registry-nacos/src/test/java/org/apache/dubbo/registry/nacos/NacosServiceDiscoveryFactoryTest.java
index 271d829113..b70e46ef3b 100644
---
a/dubbo-registry/dubbo-registry-nacos/src/test/java/org/apache/dubbo/registry/nacos/NacosServiceDiscoveryFactoryTest.java
+++
b/dubbo-registry/dubbo-registry-nacos/src/test/java/org/apache/dubbo/registry/nacos/NacosServiceDiscoveryFactoryTest.java
@@ -21,6 +21,7 @@ import org.apache.dubbo.config.ApplicationConfig;
import org.apache.dubbo.registry.client.ServiceDiscovery;
import org.apache.dubbo.rpc.model.ApplicationModel;
+import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
@@ -49,4 +50,9 @@ class NacosServiceDiscoveryFactoryTest {
Assertions.assertTrue(discovery instanceof NacosServiceDiscovery);
}
+
+ @AfterEach
+ public void tearDown() {
+ ApplicationModel.defaultModel().destroy();
+ }
}
diff --git
a/dubbo-registry/dubbo-registry-nacos/src/test/java/org/apache/dubbo/registry/nacos/NacosServiceDiscoveryTest.java
b/dubbo-registry/dubbo-registry-nacos/src/test/java/org/apache/dubbo/registry/nacos/NacosServiceDiscoveryTest.java
index 97b8a3e540..e04e688766 100644
---
a/dubbo-registry/dubbo-registry-nacos/src/test/java/org/apache/dubbo/registry/nacos/NacosServiceDiscoveryTest.java
+++
b/dubbo-registry/dubbo-registry-nacos/src/test/java/org/apache/dubbo/registry/nacos/NacosServiceDiscoveryTest.java
@@ -130,6 +130,7 @@ class NacosServiceDiscoveryTest {
@AfterEach
public void destroy() throws Exception {
+ ApplicationModel.defaultModel().destroy();
nacosServiceDiscovery.destroy();
}
diff --git
a/dubbo-registry/dubbo-registry-zookeeper/src/test/java/org/apache/dubbo/registry/zookeeper/ZookeeperRegistryTest.java
b/dubbo-registry/dubbo-registry-zookeeper/src/test/java/org/apache/dubbo/registry/zookeeper/ZookeeperRegistryTest.java
index 6ca5962185..b11dbd8936 100644
---
a/dubbo-registry/dubbo-registry-zookeeper/src/test/java/org/apache/dubbo/registry/zookeeper/ZookeeperRegistryTest.java
+++
b/dubbo-registry/dubbo-registry-zookeeper/src/test/java/org/apache/dubbo/registry/zookeeper/ZookeeperRegistryTest.java
@@ -17,10 +17,9 @@
package org.apache.dubbo.registry.zookeeper;
import org.apache.dubbo.common.URL;
-import org.apache.dubbo.common.status.Status;
import org.apache.dubbo.registry.NotifyListener;
-import org.apache.dubbo.registry.Registry;
-import org.apache.dubbo.registry.status.RegistryStatusChecker;
+import org.apache.dubbo.remoting.zookeeper.curator5.ZookeeperClient;
+import org.apache.dubbo.remoting.zookeeper.curator5.ZookeeperClientManager;
import org.apache.dubbo.rpc.RpcException;
import org.apache.dubbo.rpc.model.ApplicationModel;
@@ -29,39 +28,51 @@ import java.util.Map;
import java.util.Set;
import java.util.concurrent.CountDownLatch;
+import com.google.common.collect.Lists;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
import static org.hamcrest.CoreMatchers.is;
-import static org.hamcrest.CoreMatchers.not;
-import static org.hamcrest.CoreMatchers.nullValue;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.containsString;
import static org.junit.jupiter.api.Assertions.fail;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyBoolean;
+import static org.mockito.Mockito.doAnswer;
+import static org.mockito.Mockito.doThrow;
import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
class ZookeeperRegistryTest {
private static String zookeeperConnectionAddress1;
private ZookeeperRegistry zookeeperRegistry;
private String service = "org.apache.dubbo.test.injvmServie";
- private URL serviceUrl = URL.valueOf("zookeeper://zookeeper/" + service +
"?notify=false&methods=test1,test2");
+ private String url = "zookeeper://zookeeper/" + service +
"?notify=false&methods=test1,test2";
+ private URL serviceUrl = URL.valueOf(url);
private URL anyUrl = URL.valueOf("zookeeper://zookeeper/*");
private URL registryUrl;
private ZookeeperRegistryFactory zookeeperRegistryFactory;
private NotifyListener listener;
+ // mock object
+ private static ZookeeperClientManager mockZookeeperClientManager;
+ private static ZookeeperClient mockZookeeperClient;
+
@BeforeAll
public static void beforeAll() {
- zookeeperConnectionAddress1 =
System.getProperty("zookeeper.connection.address.1");
+ zookeeperConnectionAddress1 = "zookeeper://localhost:" + "2181";
}
@BeforeEach
public void setUp() throws Exception {
+ mockZookeeperClientManager = mock(ZookeeperClientManager.class);
+ mockZookeeperClient = mock(ZookeeperClient.class);
this.registryUrl = URL.valueOf(zookeeperConnectionAddress1);
zookeeperRegistryFactory = new
ZookeeperRegistryFactory(ApplicationModel.defaultModel());
+
zookeeperRegistryFactory.setZookeeperTransporter(mockZookeeperClientManager);
+
when(mockZookeeperClientManager.connect(registryUrl)).thenReturn(mockZookeeperClient);
this.zookeeperRegistry = (ZookeeperRegistry)
zookeeperRegistryFactory.createRegistry(registryUrl);
}
@@ -105,6 +116,7 @@ class ZookeeperRegistryTest {
@Test
void testAvailable() {
zookeeperRegistry.register(serviceUrl);
+ when(mockZookeeperClient.isConnected()).thenReturn(true);
assertThat(zookeeperRegistry.isAvailable(), is(true));
zookeeperRegistry.destroy();
@@ -113,6 +125,7 @@ class ZookeeperRegistryTest {
@Test
void testLookup() {
+
when(mockZookeeperClient.getChildren(any())).thenReturn(Lists.newArrayList(url));
List<URL> lookup = zookeeperRegistry.lookup(serviceUrl);
assertThat(lookup.size(), is(1));
@@ -134,36 +147,21 @@ class ZookeeperRegistryTest {
@Test
void testLookupWithException() {
URL errorUrl = URL.valueOf("multicast://0.0.0.0/");
+ when(mockZookeeperClient.getChildren(any())).thenThrow(new
IllegalStateException());
Assertions.assertThrows(RpcException.class, () ->
zookeeperRegistry.lookup(errorUrl));
}
- @Disabled
- @Test
- /*
- This UT is unstable, consider remove it later.
- @see https://github.com/apache/dubbo/issues/1787
- */
- public void testStatusChecker() {
- RegistryStatusChecker registryStatusChecker = new
RegistryStatusChecker(ApplicationModel.defaultModel());
- Status status = registryStatusChecker.check();
- assertThat(status.getLevel(), is(Status.Level.UNKNOWN));
-
- Registry registry = zookeeperRegistryFactory.getRegistry(registryUrl);
- assertThat(registry, not(nullValue()));
-
- status = registryStatusChecker.check();
- assertThat(status.getLevel(), is(Status.Level.ERROR));
-
- registry.register(serviceUrl);
- status = registryStatusChecker.check();
- assertThat(status.getLevel(), is(Status.Level.OK));
- }
-
@Test
void testSubscribeAnyValue() throws InterruptedException {
final CountDownLatch latch = new CountDownLatch(1);
zookeeperRegistry.register(serviceUrl);
zookeeperRegistry.subscribe(anyUrl, urls -> latch.countDown());
+ doAnswer(invocationOnMock -> {
+ latch.countDown();
+ return null;
+ })
+ .when(mockZookeeperClient)
+ .create(any(), anyBoolean(), anyBoolean());
zookeeperRegistry.register(serviceUrl);
latch.await();
}
@@ -176,6 +174,7 @@ class ZookeeperRegistryTest {
@Test
void testDoRegisterWithException() {
+ doThrow(new
IllegalStateException()).when(mockZookeeperClient).create(any(), anyBoolean(),
anyBoolean());
Assertions.assertThrows(RpcException.class, () -> {
URL errorUrl = URL.valueOf("multicast://0.0.0.0/");
zookeeperRegistry.doRegister(errorUrl);
@@ -184,6 +183,7 @@ class ZookeeperRegistryTest {
@Test
void testDoUnregisterWithException() {
+ doThrow(new
IllegalStateException()).when(mockZookeeperClient).delete(any());
Assertions.assertThrows(RpcException.class, () -> {
URL errorUrl = URL.valueOf("multicast://0.0.0.0/");
zookeeperRegistry.doUnregister(errorUrl);
diff --git
a/dubbo-registry/dubbo-registry-zookeeper/src/test/java/org/apache/dubbo/registry/zookeeper/ZookeeperServiceDiscoveryTest.java
b/dubbo-registry/dubbo-registry-zookeeper/src/test/java/org/apache/dubbo/registry/zookeeper/ZookeeperServiceDiscoveryTest.java
index a9405e9392..3243a30ea3 100644
---
a/dubbo-registry/dubbo-registry-zookeeper/src/test/java/org/apache/dubbo/registry/zookeeper/ZookeeperServiceDiscoveryTest.java
+++
b/dubbo-registry/dubbo-registry-zookeeper/src/test/java/org/apache/dubbo/registry/zookeeper/ZookeeperServiceDiscoveryTest.java
@@ -24,22 +24,40 @@ import
org.apache.dubbo.registry.client.event.ServiceInstancesChangedEvent;
import
org.apache.dubbo.registry.client.event.listener.ServiceInstancesChangedListener;
import org.apache.dubbo.rpc.model.ApplicationModel;
+import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.CountDownLatch;
+import com.google.common.collect.Lists;
+import org.apache.curator.CuratorZookeeperClient;
+import org.apache.curator.framework.CuratorFramework;
+import org.apache.curator.framework.CuratorFrameworkFactory;
+import org.apache.curator.framework.imps.CuratorFrameworkState;
+import org.apache.curator.x.discovery.ServiceCache;
+import org.apache.curator.x.discovery.ServiceCacheBuilder;
+import org.apache.curator.x.discovery.ServiceDiscovery;
+import org.apache.curator.x.discovery.ServiceDiscoveryBuilder;
+import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.condition.DisabledForJreRange;
import org.junit.jupiter.api.condition.JRE;
+import org.mockito.MockedStatic;
import org.mockito.internal.util.collections.Sets;
import static java.util.Arrays.asList;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.mockStatic;
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.when;
/**
* {@link ZookeeperServiceDiscovery} Test
@@ -57,14 +75,54 @@ class ZookeeperServiceDiscoveryTest {
private ZookeeperServiceDiscovery discovery;
private static String zookeeperConnectionAddress1;
+ private static MockedStatic<CuratorFrameworkFactory>
curatorFrameworkFactoryMockedStatic;
+ private static MockedStatic<ServiceDiscoveryBuilder>
serviceDiscoveryBuilderMockedStatic;
+
+ private CuratorFramework mockCuratorFramework;
+ private CuratorZookeeperClient mockCuratorZookeeperClient;
+ private ServiceDiscoveryBuilder mockServiceDiscoveryBuilder;
+ private ServiceDiscovery mockServiceDiscovery;
+ private ServiceCacheBuilder mockServiceCacheBuilder;
+ private ServiceCache mockServiceCache;
@BeforeAll
public static void beforeAll() {
- zookeeperConnectionAddress1 =
System.getProperty("zookeeper.connection.address.1");
+ zookeeperConnectionAddress1 = "zookeeper://localhost:" + "2181";
}
@BeforeEach
public void init() throws Exception {
+ // mock begin
+ // create mock bean begin
+ CuratorFrameworkFactory.Builder realBuilder =
CuratorFrameworkFactory.builder();
+ CuratorFrameworkFactory.Builder spyBuilder = spy(realBuilder);
+ curatorFrameworkFactoryMockedStatic =
mockStatic(CuratorFrameworkFactory.class);
+ curatorFrameworkFactoryMockedStatic
+ .when(CuratorFrameworkFactory::builder)
+ .thenReturn(spyBuilder);
+ serviceDiscoveryBuilderMockedStatic =
mockStatic(ServiceDiscoveryBuilder.class);
+ mockServiceDiscoveryBuilder = mock(ServiceDiscoveryBuilder.class);
+ mockServiceDiscovery = mock(ServiceDiscovery.class);
+ mockServiceCacheBuilder = mock(ServiceCacheBuilder.class);
+ mockCuratorFramework = mock(CuratorFramework.class);
+ mockServiceCache = mock(ServiceCache.class);
+
+ serviceDiscoveryBuilderMockedStatic
+ .when(() -> ServiceDiscoveryBuilder.builder(any()))
+ .thenReturn(mockServiceDiscoveryBuilder);
+
when(mockServiceDiscoveryBuilder.client(any())).thenReturn(mockServiceDiscoveryBuilder);
+
when(mockServiceDiscoveryBuilder.basePath(any())).thenReturn(mockServiceDiscoveryBuilder);
+
when(mockServiceDiscoveryBuilder.build()).thenReturn(mockServiceDiscovery);
+
when(mockServiceDiscovery.serviceCacheBuilder()).thenReturn(mockServiceCacheBuilder);
+
when(mockServiceCacheBuilder.name(any())).thenReturn(mockServiceCacheBuilder);
+ when(mockServiceCacheBuilder.build()).thenReturn(mockServiceCache);
+ doReturn(mockCuratorFramework).when(spyBuilder).build();
+ mockCuratorZookeeperClient = mock(CuratorZookeeperClient.class);
+ // mock default is started. If method need other status please replace
in test method.
+
when(mockCuratorFramework.getZookeeperClient()).thenReturn(mockCuratorZookeeperClient);
+
when(mockCuratorFramework.getState()).thenReturn(CuratorFrameworkState.STARTED);
+ when(mockCuratorZookeeperClient.isConnected()).thenReturn(true);
+
this.registryUrl = URL.valueOf(zookeeperConnectionAddress1);
ApplicationModel applicationModel = ApplicationModel.defaultModel();
applicationModel.getApplicationConfigManager().setApplication(new
ApplicationConfig(SERVICE_NAME));
@@ -78,7 +136,7 @@ class ZookeeperServiceDiscoveryTest {
}
@Test
- void testRegistration() throws InterruptedException {
+ void testRegistration() throws Exception {
CountDownLatch latch = new CountDownLatch(1);
@@ -98,9 +156,20 @@ class ZookeeperServiceDiscoveryTest {
discovery.register(URL.valueOf("dubbo://1.1.2.3:20880/DemoService"));
discovery.register();
- serviceInstances = discovery.getInstances(SERVICE_NAME);
DefaultServiceInstance serviceInstance = (DefaultServiceInstance)
discovery.getLocalInstance();
+ List<org.apache.curator.x.discovery.ServiceInstance> lists =
+
Lists.newArrayList(org.apache.curator.x.discovery.ServiceInstance.builder()
+ .name(SERVICE_NAME)
+ .address(
+
URL.valueOf("dubbo://1.1.2.3:20880/DemoService").getHost())
+ .port(20880)
+ .payload(new ZookeeperInstance(
+ "", serviceInstance.getServiceName(),
serviceInstance.getMetadata()))
+ .build());
+ when(mockServiceDiscovery.queryForInstances(any())).thenReturn(lists);
+ serviceInstances = discovery.getInstances(SERVICE_NAME);
+
assertTrue(serviceInstances.contains(serviceInstance));
assertEquals(asList(serviceInstance), serviceInstances);
@@ -111,14 +180,33 @@ class ZookeeperServiceDiscoveryTest {
discovery.register(URL.valueOf("dubbo://1.1.2.3:20880/DemoService1"));
discovery.update();
+ lists =
Lists.newArrayList(org.apache.curator.x.discovery.ServiceInstance.builder()
+ .name(SERVICE_NAME)
+
.address(URL.valueOf("dubbo://1.1.2.3:20880/DemoService").getHost())
+ .port(20880)
+ .payload(new ZookeeperInstance("",
serviceInstance.getServiceName(), metadata))
+ .build());
+
+ when(mockServiceDiscovery.queryForInstances(any())).thenReturn(lists);
serviceInstances = discovery.getInstances(SERVICE_NAME);
assertEquals(serviceInstance, serviceInstances.get(0));
discovery.unregister();
+ when(mockServiceDiscovery.queryForInstances(any())).thenReturn(new
ArrayList<>());
serviceInstances = discovery.getInstances(SERVICE_NAME);
assertTrue(serviceInstances.isEmpty());
}
+
+ @AfterAll
+ public static void afterAll() throws Exception {
+ if (curatorFrameworkFactoryMockedStatic != null) {
+ curatorFrameworkFactoryMockedStatic.close();
+ }
+ if (serviceDiscoveryBuilderMockedStatic != null) {
+ serviceDiscoveryBuilderMockedStatic.close();
+ }
+ }
}
diff --git
a/dubbo-registry/dubbo-registry-zookeeper/src/test/java/org/apache/dubbo/registry/zookeeper/util/CuratorFrameworkUtilsTest.java
b/dubbo-registry/dubbo-registry-zookeeper/src/test/java/org/apache/dubbo/registry/zookeeper/util/CuratorFrameworkUtilsTest.java
index 40b233c9be..aacfc2610f 100644
---
a/dubbo-registry/dubbo-registry-zookeeper/src/test/java/org/apache/dubbo/registry/zookeeper/util/CuratorFrameworkUtilsTest.java
+++
b/dubbo-registry/dubbo-registry-zookeeper/src/test/java/org/apache/dubbo/registry/zookeeper/util/CuratorFrameworkUtilsTest.java
@@ -27,16 +27,27 @@ import java.util.Arrays;
import java.util.List;
import java.util.Map;
+import org.apache.curator.CuratorZookeeperClient;
import org.apache.curator.framework.CuratorFramework;
+import org.apache.curator.framework.CuratorFrameworkFactory;
+import org.apache.curator.framework.imps.CuratorFrameworkState;
import org.apache.curator.x.discovery.ServiceDiscovery;
+import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
+import org.mockito.MockedStatic;
import org.mockito.Mockito;
import static
org.apache.dubbo.registry.client.metadata.ServiceInstanceMetadataUtils.EXPORTED_SERVICES_REVISION_PROPERTY_NAME;
import static
org.apache.dubbo.registry.client.metadata.ServiceInstanceMetadataUtils.METADATA_STORAGE_TYPE_PROPERTY_NAME;
import static
org.apache.dubbo.registry.zookeeper.util.CuratorFrameworkParams.ROOT_PATH;
+import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.mockStatic;
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.when;
/**
* {@link CuratorFrameworkUtils} Test
@@ -45,15 +56,40 @@ class CuratorFrameworkUtilsTest {
private static URL registryUrl;
private static String zookeeperConnectionAddress1;
private static MetadataReport metadataReport;
+ private static MockedStatic<CuratorFrameworkFactory>
curatorFrameworkFactoryMockedStatic;
+ CuratorFrameworkFactory.Builder spyBuilder =
CuratorFrameworkFactory.builder();
+ private CuratorFramework mockCuratorFramework;
+ private CuratorZookeeperClient mockCuratorZookeeperClient;
@BeforeAll
public static void init() throws Exception {
- zookeeperConnectionAddress1 =
System.getProperty("zookeeper.connection.address.1");
+ zookeeperConnectionAddress1 = "zookeeper://localhost:" + "2181";
registryUrl = URL.valueOf(zookeeperConnectionAddress1);
registryUrl.setScopeModel(ApplicationModel.defaultModel());
metadataReport = Mockito.mock(MetadataReport.class);
+
+ // mock begin
+ // create mock bean begin
+ CuratorFrameworkFactory.Builder realBuilder =
CuratorFrameworkFactory.builder();
+ CuratorFrameworkFactory.Builder spyBuilder = spy(realBuilder);
+
+ curatorFrameworkFactoryMockedStatic =
mockStatic(CuratorFrameworkFactory.class);
+ curatorFrameworkFactoryMockedStatic
+ .when(CuratorFrameworkFactory::builder)
+ .thenReturn(spyBuilder);
+ }
+
+ @BeforeEach
+ public void setUp() throws Exception {
+ mockCuratorFramework = mock(CuratorFramework.class);
+ doReturn(mockCuratorFramework).when(spyBuilder).build();
+ mockCuratorZookeeperClient = mock(CuratorZookeeperClient.class);
+ // mock default is started. If method need other status please replace
in test method.
+
when(mockCuratorFramework.getZookeeperClient()).thenReturn(mockCuratorZookeeperClient);
+
when(mockCuratorFramework.getState()).thenReturn(CuratorFrameworkState.STARTED);
+ when(mockCuratorZookeeperClient.isConnected()).thenReturn(true);
}
@Test
@@ -70,7 +106,6 @@ class CuratorFrameworkUtilsTest {
ServiceDiscovery<ZookeeperInstance> discovery =
CuratorFrameworkUtils.buildServiceDiscovery(curatorFramework,
ROOT_PATH.getParameterValue(registryUrl));
Assertions.assertNotNull(discovery);
- discovery.close();
curatorFramework.getZookeeperClient().close();
}
@@ -109,4 +144,11 @@ class CuratorFrameworkUtilsTest {
Assertions.assertNotNull(serviceInstances);
Assertions.assertEquals(serviceInstances.get(0), dubboServiceInstance);
}
+
+ @AfterAll
+ public static void afterAll() throws Exception {
+ if (curatorFrameworkFactoryMockedStatic != null) {
+ curatorFrameworkFactoryMockedStatic.close();
+ }
+ }
}
diff --git a/dubbo-registry/pom.xml b/dubbo-registry/pom.xml
index 28008cdf8e..daf7221bf6 100644
--- a/dubbo-registry/pom.xml
+++ b/dubbo-registry/pom.xml
@@ -37,13 +37,4 @@
<properties>
<skip_maven_deploy>false</skip_maven_deploy>
</properties>
-
- <dependencies>
- <dependency>
- <groupId>org.apache.dubbo</groupId>
- <artifactId>dubbo-test-check</artifactId>
- <version>${project.parent.version}</version>
- <scope>test</scope>
- </dependency>
- </dependencies>
</project>
diff --git
a/dubbo-remoting/dubbo-remoting-zookeeper-curator5/src/test/java/org/apache/dubbo/remoting/zookeeper/curator5/Curator5ZookeeperClientManagerTest.java
b/dubbo-remoting/dubbo-remoting-zookeeper-curator5/src/test/java/org/apache/dubbo/remoting/zookeeper/curator5/Curator5ZookeeperClientManagerTest.java
index 1522792e3e..b011f08467 100644
---
a/dubbo-remoting/dubbo-remoting-zookeeper-curator5/src/test/java/org/apache/dubbo/remoting/zookeeper/curator5/Curator5ZookeeperClientManagerTest.java
+++
b/dubbo-remoting/dubbo-remoting-zookeeper-curator5/src/test/java/org/apache/dubbo/remoting/zookeeper/curator5/Curator5ZookeeperClientManagerTest.java
@@ -32,13 +32,12 @@ import static
org.mockito.Mockito.mockConstructionWithAnswer;
class Curator5ZookeeperClientManagerTest {
private ZookeeperClient zookeeperClient;
- private ZookeeperClientManager zookeeperClientManager;
private static MockedConstruction<Curator5ZookeeperClient>
mockedCurator5ZookeeperClientConstruction;
private static String zookeeperConnectionAddress1;
@BeforeAll
public static void beforeAll() {
- zookeeperConnectionAddress1 =
System.getProperty("zookeeper.connection.address.1");
+ zookeeperConnectionAddress1 = "zookeeper://127.0.0.1:2181";
Curator5ZookeeperClient mockCurator5ZookeeperClient =
mock(Curator5ZookeeperClient.class);
mockedCurator5ZookeeperClientConstruction =
mockConstructionWithAnswer(Curator5ZookeeperClient.class,
invocationOnMock -> invocationOnMock
@@ -49,7 +48,6 @@ class Curator5ZookeeperClientManagerTest {
@BeforeEach
public void setUp() {
zookeeperClient = new
ZookeeperClientManager().connect(URL.valueOf(zookeeperConnectionAddress1 +
"/service"));
- zookeeperClientManager = new ZookeeperClientManager();
}
@Test
diff --git a/dubbo-serialization/pom.xml b/dubbo-serialization/pom.xml
index 079f6710ec..063eccd564 100644
--- a/dubbo-serialization/pom.xml
+++ b/dubbo-serialization/pom.xml
@@ -36,12 +36,4 @@
<skip_maven_deploy>false</skip_maven_deploy>
</properties>
- <dependencies>
- <dependency>
- <groupId>org.apache.dubbo</groupId>
- <artifactId>dubbo-test-check</artifactId>
- <version>${project.parent.version}</version>
- <scope>test</scope>
- </dependency>
- </dependencies>
</project>