This is an automated email from the ASF dual-hosted git repository.
albumenj pushed a commit to branch 3.1
in repository https://gitbox.apache.org/repos/asf/dubbo.git
The following commit(s) were added to refs/heads/3.1 by this push:
new 393ea1d7e2 Fix assertion error and class cast exception in unit tests.
(#10825)
393ea1d7e2 is described below
commit 393ea1d7e21dfbb54b8aadacaba57a2aa0928069
Author: Andy Cheung <[email protected]>
AuthorDate: Wed Oct 26 10:20:48 2022 +0800
Fix assertion error and class cast exception in unit tests. (#10825)
---
.../remoting/transport/netty4/ConnectionTest.java | 21 +++++----
.../dubbo/rpc/filter/ExecuteLimitFilterTest.java | 50 +++++++++++-----------
2 files changed, 39 insertions(+), 32 deletions(-)
diff --git
a/dubbo-remoting/dubbo-remoting-netty4/src/test/java/org/apache/dubbo/remoting/transport/netty4/ConnectionTest.java
b/dubbo-remoting/dubbo-remoting-netty4/src/test/java/org/apache/dubbo/remoting/transport/netty4/ConnectionTest.java
index 55aa550639..cb1037ef78 100644
---
a/dubbo-remoting/dubbo-remoting-netty4/src/test/java/org/apache/dubbo/remoting/transport/netty4/ConnectionTest.java
+++
b/dubbo-remoting/dubbo-remoting-netty4/src/test/java/org/apache/dubbo/remoting/transport/netty4/ConnectionTest.java
@@ -28,9 +28,9 @@ import java.util.concurrent.CountDownLatch;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
-public class ConnectionTest {
+class ConnectionTest {
@Test
- public void connectSyncTest() throws Throwable {
+ void connectSyncTest() throws Throwable {
int port = NetUtils.getAvailablePort();
URL url = URL.valueOf("empty://127.0.0.1:" + port + "?foo=bar");
NettyPortUnificationServer server = null;
@@ -57,39 +57,44 @@ public class ConnectionTest {
// ignored
}
}
-
-
}
@Test
- public void testMultiConnect() throws Throwable {
+ void testMultiConnect() throws Throwable {
int port = NetUtils.getAvailablePort();
URL url = URL.valueOf("empty://127.0.0.1:" + port + "?foo=bar");
NettyPortUnificationServer server = null;
+ ExecutorService service = Executors.newFixedThreadPool(10);
+
try {
server = new NettyPortUnificationServer(url, new
DefaultPuHandler());
- server.close();
Connection connection = new Connection(url);
- ExecutorService service = Executors.newFixedThreadPool(10);
+
final CountDownLatch latch = new CountDownLatch(10);
for (int i = 0; i < 10; i++) {
Runnable runnable = () -> {
try {
Assertions.assertTrue(connection.isAvailable());
- latch.countDown();
} catch (Exception e) {
// ignore
+ } finally {
+ latch.countDown();
}
};
+
service.execute(runnable);
}
+
+ latch.await();
} finally {
try {
server.close();
} catch (Throwable e) {
// ignored
}
+
+ service.shutdown();
}
}
}
diff --git
a/dubbo-rpc/dubbo-rpc-api/src/test/java/org/apache/dubbo/rpc/filter/ExecuteLimitFilterTest.java
b/dubbo-rpc/dubbo-rpc-api/src/test/java/org/apache/dubbo/rpc/filter/ExecuteLimitFilterTest.java
index 4a8ba537eb..2f0f3b5faf 100644
---
a/dubbo-rpc/dubbo-rpc-api/src/test/java/org/apache/dubbo/rpc/filter/ExecuteLimitFilterTest.java
+++
b/dubbo-rpc/dubbo-rpc-api/src/test/java/org/apache/dubbo/rpc/filter/ExecuteLimitFilterTest.java
@@ -22,6 +22,7 @@ import org.apache.dubbo.rpc.Invocation;
import org.apache.dubbo.rpc.Invoker;
import org.apache.dubbo.rpc.Result;
import org.apache.dubbo.rpc.RpcException;
+import org.apache.dubbo.rpc.RpcInvocation;
import org.apache.dubbo.rpc.RpcStatus;
import org.apache.dubbo.rpc.support.BlockMyInvoker;
@@ -36,12 +37,12 @@ import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.doThrow;
import static org.mockito.Mockito.when;
-public class ExecuteLimitFilterTest {
+class ExecuteLimitFilterTest {
private ExecuteLimitFilter executeLimitFilter = new ExecuteLimitFilter();
@Test
- public void testNoExecuteLimitInvoke() throws Exception {
+ void testNoExecuteLimitInvoke() {
Invoker invoker = Mockito.mock(Invoker.class);
when(invoker.invoke(any(Invocation.class))).thenReturn(new
AppResponse("result"));
when(invoker.getUrl()).thenReturn(URL.valueOf("test://test:11/test?accesslog=true&group=dubbo&version=1.1"));
@@ -54,7 +55,7 @@ public class ExecuteLimitFilterTest {
}
@Test
- public void testExecuteLimitInvoke() throws Exception {
+ void testExecuteLimitInvoke() {
Invoker invoker = Mockito.mock(Invoker.class);
when(invoker.invoke(any(Invocation.class))).thenReturn(new
AppResponse("result"));
when(invoker.getUrl()).thenReturn(URL.valueOf("test://test:11/test?accesslog=true&group=dubbo&version=1.1&executes=10"));
@@ -67,7 +68,7 @@ public class ExecuteLimitFilterTest {
}
@Test
- public void testExecuteLimitInvokeWitException() throws Exception {
+ void testExecuteLimitInvokeWithException() {
Invoker invoker = Mockito.mock(Invoker.class);
doThrow(new RpcException())
.when(invoker).invoke(any(Invocation.class));
@@ -89,43 +90,44 @@ public class ExecuteLimitFilterTest {
}
@Test
- public void testMoreThanExecuteLimitInvoke() throws Exception {
+ void testMoreThanExecuteLimitInvoke() {
int maxExecute = 10;
int totalExecute = 20;
final AtomicInteger failed = new AtomicInteger(0);
- final Invocation invocation = Mockito.mock(Invocation.class);
+ final Invocation invocation = Mockito.mock(RpcInvocation.class);
when(invocation.getMethodName()).thenReturn("testMoreThanExecuteLimitInvoke");
URL url =
URL.valueOf("test://test:11/test?accesslog=true&group=dubbo&version=1.1&executes="
+ maxExecute);
- final Invoker<ExecuteLimitFilter> invoker = new
BlockMyInvoker<ExecuteLimitFilter>(url, 1000);
+ final Invoker<ExecuteLimitFilter> invoker = new BlockMyInvoker<>(url,
1000);
+
+ final CountDownLatch latchThatWaitsAllThreadStarted = new
CountDownLatch(1);
+ final CountDownLatch latchThatWaitsAllThreadFinished = new
CountDownLatch(totalExecute);
- final CountDownLatch latch = new CountDownLatch(1);
for (int i = 0; i < totalExecute; i++) {
- Thread thread = new Thread(new Runnable() {
-
- public void run() {
- try {
- latch.await();
- } catch (InterruptedException e) {
- e.printStackTrace();
- }
- try {
- executeLimitFilter.invoke(invoker, invocation);
- } catch (RpcException expected) {
- failed.incrementAndGet();
- }
+ Thread thread = new Thread(() -> {
+ try {
+ latchThatWaitsAllThreadStarted.await();
+ executeLimitFilter.invoke(invoker, invocation);
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ } catch (RpcException expected) {
+ failed.incrementAndGet();
+ } finally {
+ latchThatWaitsAllThreadFinished.countDown();
}
});
+
thread.start();
}
- latch.countDown();
+
+ latchThatWaitsAllThreadStarted.countDown();
try {
- Thread.sleep(1000);
+ latchThatWaitsAllThreadFinished.await();
} catch (InterruptedException e) {
- e.printStackTrace();
+ throw new RuntimeException(e);
}
Assertions.assertEquals(totalExecute - maxExecute, failed.get());