From 8e2eb332a1d7aece2d344daa26a8b078420b3034 Mon Sep 17 00:00:00 2001 From: Kaiyao Ke <47203510+kaiyaok2@users.noreply.github.com> Date: Fri, 10 May 2024 11:27:46 -0500 Subject: [PATCH] fixed non-idempotent unit tests (#14172) --- .../dubbo/common/bytecode/ClassGeneratorTest.java | 5 +++-- ...egistryCenterExportMetadataIntegrationTest.java | 1 - ...egistryCenterExportProviderIntegrationTest.java | 1 - ...MultipleRegistryCenterInjvmIntegrationTest.java | 1 - ...terServiceDiscoveryRegistryIntegrationTest.java | 1 - ...egistryCenterExportMetadataIntegrationTest.java | 1 - ...egistryCenterExportProviderIntegrationTest.java | 1 - .../SingleRegistryCenterInjvmIntegrationTest.java | 1 - .../dubbo/config/utils/ReferenceCacheTest.java | 1 + .../prometheus/PrometheusMetricsReporterTest.java | 6 +++++- .../PrometheusMetricsThreadPoolTest.java | 7 ++++++- .../dubbo/monitor/dubbo/DubboMonitorTest.java | 14 +++++++++++--- .../apache/dubbo/qos/command/impl/LiveTest.java | 1 + .../transport/ChannelHandlerDispatcherTest.java | 14 ++++++++++++++ .../java/org/apache/dubbo/rpc/RpcStatusTest.java | 12 ++++++++++++ 15 files changed, 53 insertions(+), 14 deletions(-) diff --git a/dubbo-common/src/test/java/org/apache/dubbo/common/bytecode/ClassGeneratorTest.java b/dubbo-common/src/test/java/org/apache/dubbo/common/bytecode/ClassGeneratorTest.java index afaa59299f..02a1e9fd25 100644 --- a/dubbo-common/src/test/java/org/apache/dubbo/common/bytecode/ClassGeneratorTest.java +++ b/dubbo-common/src/test/java/org/apache/dubbo/common/bytecode/ClassGeneratorTest.java @@ -57,7 +57,8 @@ class ClassGeneratorTest { ClassGenerator cg = ClassGenerator.newInstance(); // add className, interface, superClass - String className = BaseClass.class.getPackage().getName() + ".TestClass"; + String className = BaseClass.class.getPackage().getName() + ".TestClass" + + UUID.randomUUID().toString().replace("-", ""); cg.setClassName(className); cg.addInterface(BaseInterface.class); cg.setSuperClass(BaseClass.class); @@ -212,7 +213,7 @@ class ClassGeneratorTest { fname.setAccessible(true); ClassGenerator cg = ClassGenerator.newInstance(); - cg.setClassName(Bean.class.getName() + "$Builder2"); + cg.setClassName(Bean.class.getName() + "$Builder2" + UUID.randomUUID().toString()); cg.addInterface(Builder.class); cg.addField("FNAME", Modifier.PUBLIC | Modifier.STATIC, java.lang.reflect.Field.class); diff --git a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/integration/multiple/exportmetadata/MultipleRegistryCenterExportMetadataIntegrationTest.java b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/integration/multiple/exportmetadata/MultipleRegistryCenterExportMetadataIntegrationTest.java index 0cc3aa81c7..78098f8c3d 100644 --- a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/integration/multiple/exportmetadata/MultipleRegistryCenterExportMetadataIntegrationTest.java +++ b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/integration/multiple/exportmetadata/MultipleRegistryCenterExportMetadataIntegrationTest.java @@ -172,7 +172,6 @@ class MultipleRegistryCenterExportMetadataIntegrationTest implements Integration @AfterEach public void tearDown() throws IOException { DubboBootstrap.reset(); - PROVIDER_APPLICATION_NAME = null; serviceConfig = null; // The exported service has been unexported Assertions.assertTrue(serviceListener.getExportedServices().isEmpty()); diff --git a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/integration/multiple/exportprovider/MultipleRegistryCenterExportProviderIntegrationTest.java b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/integration/multiple/exportprovider/MultipleRegistryCenterExportProviderIntegrationTest.java index 10395824f5..21ffd61150 100644 --- a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/integration/multiple/exportprovider/MultipleRegistryCenterExportProviderIntegrationTest.java +++ b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/integration/multiple/exportprovider/MultipleRegistryCenterExportProviderIntegrationTest.java @@ -239,7 +239,6 @@ class MultipleRegistryCenterExportProviderIntegrationTest implements Integration @AfterEach public void tearDown() throws IOException { DubboBootstrap.reset(); - PROVIDER_APPLICATION_NAME = null; serviceConfig = null; // The exported service has been unexported Assertions.assertTrue(serviceListener.getExportedServices().isEmpty()); diff --git a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/integration/multiple/injvm/MultipleRegistryCenterInjvmIntegrationTest.java b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/integration/multiple/injvm/MultipleRegistryCenterInjvmIntegrationTest.java index 3d7315a456..f0bd1ba637 100644 --- a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/integration/multiple/injvm/MultipleRegistryCenterInjvmIntegrationTest.java +++ b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/integration/multiple/injvm/MultipleRegistryCenterInjvmIntegrationTest.java @@ -185,7 +185,6 @@ class MultipleRegistryCenterInjvmIntegrationTest implements IntegrationTest { @AfterEach public void tearDown() throws IOException { DubboBootstrap.reset(); - PROVIDER_APPLICATION_NAME = null; serviceConfig = null; // The exported service has been unexported Assertions.assertTrue(serviceListener.getExportedServices().isEmpty()); diff --git a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/integration/multiple/servicediscoveryregistry/MultipleRegistryCenterServiceDiscoveryRegistryIntegrationTest.java b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/integration/multiple/servicediscoveryregistry/MultipleRegistryCenterServiceDiscoveryRegistryIntegrationTest.java index 1f89b88cc3..1816277cf8 100644 --- a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/integration/multiple/servicediscoveryregistry/MultipleRegistryCenterServiceDiscoveryRegistryIntegrationTest.java +++ b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/integration/multiple/servicediscoveryregistry/MultipleRegistryCenterServiceDiscoveryRegistryIntegrationTest.java @@ -201,7 +201,6 @@ class MultipleRegistryCenterServiceDiscoveryRegistryIntegrationTest implements I @AfterEach public void tearDown() throws IOException { DubboBootstrap.reset(); - PROVIDER_APPLICATION_NAME = null; serviceConfig = null; // TODO: we need to check whether this scenario is normal // TODO: the Exporter and ServiceDiscoveryRegistry are same in multiple registry center diff --git a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/integration/single/exportmetadata/SingleRegistryCenterExportMetadataIntegrationTest.java b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/integration/single/exportmetadata/SingleRegistryCenterExportMetadataIntegrationTest.java index 996e98d892..b6e67f4a6e 100644 --- a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/integration/single/exportmetadata/SingleRegistryCenterExportMetadataIntegrationTest.java +++ b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/integration/single/exportmetadata/SingleRegistryCenterExportMetadataIntegrationTest.java @@ -169,7 +169,6 @@ class SingleRegistryCenterExportMetadataIntegrationTest implements IntegrationTe @AfterEach public void tearDown() throws IOException { DubboBootstrap.reset(); - PROVIDER_APPLICATION_NAME = null; serviceConfig = null; // The exported service has been unexported Assertions.assertTrue(serviceListener.getExportedServices().isEmpty()); diff --git a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/integration/single/exportprovider/SingleRegistryCenterExportProviderIntegrationTest.java b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/integration/single/exportprovider/SingleRegistryCenterExportProviderIntegrationTest.java index d866f40d6e..b411670349 100644 --- a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/integration/single/exportprovider/SingleRegistryCenterExportProviderIntegrationTest.java +++ b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/integration/single/exportprovider/SingleRegistryCenterExportProviderIntegrationTest.java @@ -240,7 +240,6 @@ class SingleRegistryCenterExportProviderIntegrationTest implements IntegrationTe @AfterEach public void tearDown() throws IOException { DubboBootstrap.reset(); - PROVIDER_APPLICATION_NAME = null; serviceConfig = null; // The exported service has been unexported Assertions.assertTrue(serviceListener.getExportedServices().isEmpty()); diff --git a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/integration/single/injvm/SingleRegistryCenterInjvmIntegrationTest.java b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/integration/single/injvm/SingleRegistryCenterInjvmIntegrationTest.java index 95090fd8ff..fd68e3367e 100644 --- a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/integration/single/injvm/SingleRegistryCenterInjvmIntegrationTest.java +++ b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/integration/single/injvm/SingleRegistryCenterInjvmIntegrationTest.java @@ -185,7 +185,6 @@ class SingleRegistryCenterInjvmIntegrationTest implements IntegrationTest { @AfterEach public void tearDown() throws IOException { DubboBootstrap.reset(); - PROVIDER_APPLICATION_NAME = null; serviceConfig = null; // The exported service has been unexported Assertions.assertTrue(serviceListener.getExportedServices().isEmpty()); diff --git a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/utils/ReferenceCacheTest.java b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/utils/ReferenceCacheTest.java index c231d892bc..c324c53e06 100644 --- a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/utils/ReferenceCacheTest.java +++ b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/utils/ReferenceCacheTest.java @@ -35,6 +35,7 @@ class ReferenceCacheTest { public void setUp() throws Exception { DubboBootstrap.reset(); MockReferenceConfig.setCounter(0); + XxxMockReferenceConfig.setCounter(0); SimpleReferenceCache.CACHE_HOLDER.clear(); } diff --git a/dubbo-metrics/dubbo-metrics-prometheus/src/test/java/org/apache/dubbo/metrics/prometheus/PrometheusMetricsReporterTest.java b/dubbo-metrics/dubbo-metrics-prometheus/src/test/java/org/apache/dubbo/metrics/prometheus/PrometheusMetricsReporterTest.java index 5304963a04..e8198a3d05 100644 --- a/dubbo-metrics/dubbo-metrics-prometheus/src/test/java/org/apache/dubbo/metrics/prometheus/PrometheusMetricsReporterTest.java +++ b/dubbo-metrics/dubbo-metrics-prometheus/src/test/java/org/apache/dubbo/metrics/prometheus/PrometheusMetricsReporterTest.java @@ -51,6 +51,7 @@ class PrometheusMetricsReporterTest { private MetricsConfig metricsConfig; private ApplicationModel applicationModel; private FrameworkModel frameworkModel; + HttpServer prometheusExporterHttpServer; @BeforeEach public void setup() { @@ -64,6 +65,9 @@ class PrometheusMetricsReporterTest { @AfterEach public void teardown() { applicationModel.destroy(); + if (prometheusExporterHttpServer != null) { + prometheusExporterHttpServer.stop(0); + } } @Test @@ -146,7 +150,7 @@ class PrometheusMetricsReporterTest { private void exportHttpServer(PrometheusMetricsReporter reporter, int port) { try { - HttpServer prometheusExporterHttpServer = HttpServer.create(new InetSocketAddress(port), 0); + prometheusExporterHttpServer = HttpServer.create(new InetSocketAddress(port), 0); prometheusExporterHttpServer.createContext("/metrics", httpExchange -> { reporter.resetIfSamplesChanged(); String response = reporter.getPrometheusRegistry().scrape(); diff --git a/dubbo-metrics/dubbo-metrics-prometheus/src/test/java/org/apache/dubbo/metrics/prometheus/PrometheusMetricsThreadPoolTest.java b/dubbo-metrics/dubbo-metrics-prometheus/src/test/java/org/apache/dubbo/metrics/prometheus/PrometheusMetricsThreadPoolTest.java index 5591cd8c54..83b062e1c1 100644 --- a/dubbo-metrics/dubbo-metrics-prometheus/src/test/java/org/apache/dubbo/metrics/prometheus/PrometheusMetricsThreadPoolTest.java +++ b/dubbo-metrics/dubbo-metrics-prometheus/src/test/java/org/apache/dubbo/metrics/prometheus/PrometheusMetricsThreadPoolTest.java @@ -62,6 +62,8 @@ public class PrometheusMetricsThreadPoolTest { DefaultMetricsCollector metricsCollector; + HttpServer prometheusExporterHttpServer; + @BeforeEach public void setup() { applicationModel = ApplicationModel.defaultModel(); @@ -77,6 +79,9 @@ public class PrometheusMetricsThreadPoolTest { @AfterEach public void teardown() { applicationModel.destroy(); + if (prometheusExporterHttpServer != null) { + prometheusExporterHttpServer.stop(0); + } } @Test @@ -121,7 +126,7 @@ public class PrometheusMetricsThreadPoolTest { private void exportHttpServer(PrometheusMetricsReporter reporter, int port) { try { - HttpServer prometheusExporterHttpServer = HttpServer.create(new InetSocketAddress(port), 0); + prometheusExporterHttpServer = HttpServer.create(new InetSocketAddress(port), 0); prometheusExporterHttpServer.createContext("/metrics", httpExchange -> { reporter.resetIfSamplesChanged(); String response = reporter.getPrometheusRegistry().scrape(); diff --git a/dubbo-monitor/dubbo-monitor-default/src/test/java/org/apache/dubbo/monitor/dubbo/DubboMonitorTest.java b/dubbo-monitor/dubbo-monitor-default/src/test/java/org/apache/dubbo/monitor/dubbo/DubboMonitorTest.java index 891a45e107..c6f7c26541 100644 --- a/dubbo-monitor/dubbo-monitor-default/src/test/java/org/apache/dubbo/monitor/dubbo/DubboMonitorTest.java +++ b/dubbo-monitor/dubbo-monitor-default/src/test/java/org/apache/dubbo/monitor/dubbo/DubboMonitorTest.java @@ -30,6 +30,8 @@ import org.apache.dubbo.rpc.ProxyFactory; import org.apache.dubbo.rpc.Result; import org.apache.dubbo.rpc.RpcException; +import java.io.IOException; +import java.net.ServerSocket; import java.util.Arrays; import java.util.List; import java.util.Optional; @@ -139,7 +141,13 @@ class DubboMonitorTest { } @Test - void testMonitorFactory() { + void testMonitorFactory() throws IOException { + int port; + try (ServerSocket socket = new ServerSocket(0)) { + port = socket.getLocalPort(); + socket.close(); + } + MockMonitorService monitorService = new MockMonitorService(); URL statistics = new URLBuilder(DUBBO_PROTOCOL, "10.20.153.10", 0) .addParameter(APPLICATION_KEY, "morgan") @@ -163,12 +171,12 @@ class DubboMonitorTest { Exporter exporter = protocol.export(proxyFactory.getInvoker( monitorService, MonitorService.class, - URL.valueOf("dubbo://127.0.0.1:17979/" + MonitorService.class.getName()))); + URL.valueOf("dubbo://127.0.0.1:" + port + "/" + MonitorService.class.getName()))); try { Monitor monitor = null; long start = System.currentTimeMillis(); while (System.currentTimeMillis() - start < 60000) { - monitor = monitorFactory.getMonitor(URL.valueOf("dubbo://127.0.0.1:17979?interval=10")); + monitor = monitorFactory.getMonitor(URL.valueOf("dubbo://127.0.0.1:" + port + "?interval=10")); if (monitor == null) { continue; } diff --git a/dubbo-plugin/dubbo-qos/src/test/java/org/apache/dubbo/qos/command/impl/LiveTest.java b/dubbo-plugin/dubbo-qos/src/test/java/org/apache/dubbo/qos/command/impl/LiveTest.java index 60da31680a..70a90986b8 100644 --- a/dubbo-plugin/dubbo-qos/src/test/java/org/apache/dubbo/qos/command/impl/LiveTest.java +++ b/dubbo-plugin/dubbo-qos/src/test/java/org/apache/dubbo/qos/command/impl/LiveTest.java @@ -35,6 +35,7 @@ class LiveTest { @AfterEach public void reset() { frameworkModel.destroy(); + MockLivenessProbe.setCheckReturnValue(false); } @Test diff --git a/dubbo-remoting/dubbo-remoting-api/src/test/java/org/apache/dubbo/remoting/transport/ChannelHandlerDispatcherTest.java b/dubbo-remoting/dubbo-remoting-api/src/test/java/org/apache/dubbo/remoting/transport/ChannelHandlerDispatcherTest.java index 2e7fdf2838..df6b3559e0 100644 --- a/dubbo-remoting/dubbo-remoting-api/src/test/java/org/apache/dubbo/remoting/transport/ChannelHandlerDispatcherTest.java +++ b/dubbo-remoting/dubbo-remoting-api/src/test/java/org/apache/dubbo/remoting/transport/ChannelHandlerDispatcherTest.java @@ -24,12 +24,18 @@ import java.util.Collection; import java.util.Collections; import java.util.HashSet; +import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; import org.mockito.Mockito; class ChannelHandlerDispatcherTest { + @AfterEach + public void tearDown() { + MockChannelHandler.reset(); + } + @Test void test() { ChannelHandlerDispatcher channelHandlerDispatcher = new ChannelHandlerDispatcher(); @@ -138,4 +144,12 @@ class MockChannelHandler extends ChannelHandlerAdapter { public static int getCaughtCount() { return caughtCount; } + + public static void reset() { + sentCount = 0; + connectedCount = 0; + disconnectedCount = 0; + receivedCount = 0; + caughtCount = 0; + } } diff --git a/dubbo-rpc/dubbo-rpc-api/src/test/java/org/apache/dubbo/rpc/RpcStatusTest.java b/dubbo-rpc/dubbo-rpc-api/src/test/java/org/apache/dubbo/rpc/RpcStatusTest.java index efa938e803..de0eaab48a 100644 --- a/dubbo-rpc/dubbo-rpc-api/src/test/java/org/apache/dubbo/rpc/RpcStatusTest.java +++ b/dubbo-rpc/dubbo-rpc-api/src/test/java/org/apache/dubbo/rpc/RpcStatusTest.java @@ -39,6 +39,10 @@ class RpcStatusTest { URL url = new ServiceConfigURL("dubbo", "127.0.0.1", 91031, DemoService.class.getName()); String methodName = "testBeginCountEndCount"; int max = 2; + + RpcStatus.removeStatus(url); + RpcStatus.removeStatus(url, methodName); + boolean flag = RpcStatus.beginCount(url, methodName, max); RpcStatus urlRpcStatus = RpcStatus.getStatus(url); RpcStatus methodRpcStatus = RpcStatus.getStatus(url, methodName); @@ -65,6 +69,10 @@ class RpcStatusTest { void testBeginCountEndCountInMultiThread() throws Exception { URL url = new ServiceConfigURL("dubbo", "127.0.0.1", 91032, DemoService.class.getName()); String methodName = "testBeginCountEndCountInMultiThread"; + + RpcStatus.removeStatus(url); + RpcStatus.removeStatus(url, methodName); + int max = 50; int threadNum = 10; AtomicInteger successCount = new AtomicInteger(); @@ -99,6 +107,10 @@ class RpcStatusTest { URL url = new ServiceConfigURL("dubbo", "127.0.0.1", 91033, DemoService.class.getName()); String methodName = "testStatistics"; int max = 0; + + RpcStatus.removeStatus(url); + RpcStatus.removeStatus(url, methodName); + RpcStatus.beginCount(url, methodName, max); RpcStatus.beginCount(url, methodName, max); RpcStatus.beginCount(url, methodName, max);