You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dubbo.apache.org by hy...@apache.org on 2019/09/10 02:46:42 UTC
[dubbo] branch master updated: Change main method under
dubbo-remoting-api to standard unit test (#5026)
This is an automated email from the ASF dual-hosted git repository.
hyunkun pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/dubbo.git
The following commit(s) were added to refs/heads/master by this push:
new 9275b9d Change main method under dubbo-remoting-api to standard unit test (#5026)
9275b9d is described below
commit 9275b9d5154b75c3a52f7fbb14f9290ef24bde2f
Author: xiaomoran <54...@users.noreply.github.com>
AuthorDate: Tue Sep 10 10:46:29 2019 +0800
Change main method under dubbo-remoting-api to standard unit test (#5026)
* change main method under dubbo-remoting-api to standard test
* add timeout
* remove unnecessary loops
---
.../transport/mina/ClientToServerTest.java | 3 +-
.../transport/netty/ClientToServerTest.java | 3 +-
.../transport/netty4/ClientReconnectTest.java | 2 +-
.../transport/netty4/ClientToServerTest.java | 3 +-
.../remoting/transport/netty4}/DemoService.java | 2 +-
.../transport/netty4}/DemoServiceImpl.java | 2 +-
.../remoting/transport/netty4}/MockResult.java | 2 +-
.../transport/netty4/ReplierDispatcherTest.java} | 117 ++++++++++++---------
.../remoting/transport/netty4}/RpcMessage.java | 2 +-
.../transport/netty4}/RpcMessageHandler.java | 3 +-
10 files changed, 81 insertions(+), 58 deletions(-)
diff --git a/dubbo-remoting/dubbo-remoting-mina/src/test/java/org/apache/remoting/transport/mina/ClientToServerTest.java b/dubbo-remoting/dubbo-remoting-mina/src/test/java/org/apache/remoting/transport/mina/ClientToServerTest.java
index 6414434..25d8618 100644
--- a/dubbo-remoting/dubbo-remoting-mina/src/test/java/org/apache/remoting/transport/mina/ClientToServerTest.java
+++ b/dubbo-remoting/dubbo-remoting-mina/src/test/java/org/apache/remoting/transport/mina/ClientToServerTest.java
@@ -16,6 +16,7 @@
*/
package org.apache.remoting.transport.mina;
+import org.apache.dubbo.common.utils.NetUtils;
import org.apache.dubbo.remoting.RemotingException;
import org.apache.dubbo.remoting.exchange.ExchangeChannel;
import org.apache.dubbo.remoting.exchange.ExchangeServer;
@@ -47,7 +48,7 @@ public abstract class ClientToServerTest {
@BeforeEach
protected void setUp() throws Exception {
- int port = (int) (1000 * Math.random() + 10000);
+ int port = NetUtils.getAvailablePort();
server = newServer(port, handler);
client = newClient(port);
}
diff --git a/dubbo-remoting/dubbo-remoting-netty/src/test/java/org/apache/dubbo/remoting/transport/netty/ClientToServerTest.java b/dubbo-remoting/dubbo-remoting-netty/src/test/java/org/apache/dubbo/remoting/transport/netty/ClientToServerTest.java
index 267f569..d89227f 100644
--- a/dubbo-remoting/dubbo-remoting-netty/src/test/java/org/apache/dubbo/remoting/transport/netty/ClientToServerTest.java
+++ b/dubbo-remoting/dubbo-remoting-netty/src/test/java/org/apache/dubbo/remoting/transport/netty/ClientToServerTest.java
@@ -16,6 +16,7 @@
*/
package org.apache.dubbo.remoting.transport.netty;
+import org.apache.dubbo.common.utils.NetUtils;
import org.apache.dubbo.remoting.RemotingException;
import org.apache.dubbo.remoting.exchange.ExchangeChannel;
import org.apache.dubbo.remoting.exchange.ExchangeServer;
@@ -46,7 +47,7 @@ public abstract class ClientToServerTest {
@BeforeEach
protected void setUp() throws Exception {
- int port = (int) (1000 * Math.random() + 10000);
+ int port = NetUtils.getAvailablePort();
server = newServer(port, handler);
client = newClient(port);
}
diff --git a/dubbo-remoting/dubbo-remoting-netty4/src/test/java/org/apache/dubbo/remoting/transport/netty4/ClientReconnectTest.java b/dubbo-remoting/dubbo-remoting-netty4/src/test/java/org/apache/dubbo/remoting/transport/netty4/ClientReconnectTest.java
index 9a2065a..844950c 100644
--- a/dubbo-remoting/dubbo-remoting-netty4/src/test/java/org/apache/dubbo/remoting/transport/netty4/ClientReconnectTest.java
+++ b/dubbo-remoting/dubbo-remoting-netty4/src/test/java/org/apache/dubbo/remoting/transport/netty4/ClientReconnectTest.java
@@ -50,7 +50,7 @@ public class ClientReconnectTest {
Assertions.assertFalse(client.isConnected());
Server server = startServer(port);
for (int i = 0; i < 100 && !client.isConnected(); i++) {
- Thread.sleep(10);
+ Thread.sleep(20);
}
Assertions.assertTrue(client.isConnected());
client.close(2000);
diff --git a/dubbo-remoting/dubbo-remoting-netty4/src/test/java/org/apache/dubbo/remoting/transport/netty4/ClientToServerTest.java b/dubbo-remoting/dubbo-remoting-netty4/src/test/java/org/apache/dubbo/remoting/transport/netty4/ClientToServerTest.java
index 9b8db00..1015a53 100644
--- a/dubbo-remoting/dubbo-remoting-netty4/src/test/java/org/apache/dubbo/remoting/transport/netty4/ClientToServerTest.java
+++ b/dubbo-remoting/dubbo-remoting-netty4/src/test/java/org/apache/dubbo/remoting/transport/netty4/ClientToServerTest.java
@@ -16,6 +16,7 @@
*/
package org.apache.dubbo.remoting.transport.netty4;
+import org.apache.dubbo.common.utils.NetUtils;
import org.apache.dubbo.remoting.RemotingException;
import org.apache.dubbo.remoting.exchange.ExchangeChannel;
import org.apache.dubbo.remoting.exchange.ExchangeServer;
@@ -47,7 +48,7 @@ public abstract class ClientToServerTest {
@BeforeEach
protected void setUp() throws Exception {
- int port = (int) (1000 * Math.random() + 10000);
+ int port = NetUtils.getAvailablePort();
server = newServer(port, handler);
client = newClient(port);
}
diff --git a/dubbo-remoting/dubbo-remoting-api/src/test/java/org/apache/dubbo/remoting/DemoService.java b/dubbo-remoting/dubbo-remoting-netty4/src/test/java/org/apache/dubbo/remoting/transport/netty4/DemoService.java
similarity index 92%
rename from dubbo-remoting/dubbo-remoting-api/src/test/java/org/apache/dubbo/remoting/DemoService.java
rename to dubbo-remoting/dubbo-remoting-netty4/src/test/java/org/apache/dubbo/remoting/transport/netty4/DemoService.java
index 9b9a650..2734ed8 100644
--- a/dubbo-remoting/dubbo-remoting-api/src/test/java/org/apache/dubbo/remoting/DemoService.java
+++ b/dubbo-remoting/dubbo-remoting-netty4/src/test/java/org/apache/dubbo/remoting/transport/netty4/DemoService.java
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.dubbo.remoting;
+package org.apache.dubbo.remoting.transport.netty4;
/**
* <code>TestService</code>
diff --git a/dubbo-remoting/dubbo-remoting-api/src/test/java/org/apache/dubbo/remoting/DemoServiceImpl.java b/dubbo-remoting/dubbo-remoting-netty4/src/test/java/org/apache/dubbo/remoting/transport/netty4/DemoServiceImpl.java
similarity index 95%
rename from dubbo-remoting/dubbo-remoting-api/src/test/java/org/apache/dubbo/remoting/DemoServiceImpl.java
rename to dubbo-remoting/dubbo-remoting-netty4/src/test/java/org/apache/dubbo/remoting/transport/netty4/DemoServiceImpl.java
index 9d55bef..02b67f9 100644
--- a/dubbo-remoting/dubbo-remoting-api/src/test/java/org/apache/dubbo/remoting/DemoServiceImpl.java
+++ b/dubbo-remoting/dubbo-remoting-netty4/src/test/java/org/apache/dubbo/remoting/transport/netty4/DemoServiceImpl.java
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.dubbo.remoting;
+package org.apache.dubbo.remoting.transport.netty4;
/**
* <code>TestServiceImpl</code>
diff --git a/dubbo-remoting/dubbo-remoting-api/src/test/java/org/apache/dubbo/remoting/MockResult.java b/dubbo-remoting/dubbo-remoting-netty4/src/test/java/org/apache/dubbo/remoting/transport/netty4/MockResult.java
similarity index 95%
rename from dubbo-remoting/dubbo-remoting-api/src/test/java/org/apache/dubbo/remoting/MockResult.java
rename to dubbo-remoting/dubbo-remoting-netty4/src/test/java/org/apache/dubbo/remoting/transport/netty4/MockResult.java
index c353621..db1a814 100644
--- a/dubbo-remoting/dubbo-remoting-api/src/test/java/org/apache/dubbo/remoting/MockResult.java
+++ b/dubbo-remoting/dubbo-remoting-netty4/src/test/java/org/apache/dubbo/remoting/transport/netty4/MockResult.java
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.dubbo.remoting;
+package org.apache.dubbo.remoting.transport.netty4;
import java.io.Serializable;
diff --git a/dubbo-remoting/dubbo-remoting-api/src/test/java/org/apache/dubbo/remoting/Main.java b/dubbo-remoting/dubbo-remoting-netty4/src/test/java/org/apache/dubbo/remoting/transport/netty4/ReplierDispatcherTest.java
similarity index 53%
rename from dubbo-remoting/dubbo-remoting-api/src/test/java/org/apache/dubbo/remoting/Main.java
rename to dubbo-remoting/dubbo-remoting-netty4/src/test/java/org/apache/dubbo/remoting/transport/netty4/ReplierDispatcherTest.java
index 4478f86..3ed2aca 100644
--- a/dubbo-remoting/dubbo-remoting-api/src/test/java/org/apache/dubbo/remoting/Main.java
+++ b/dubbo-remoting/dubbo-remoting-netty4/src/test/java/org/apache/dubbo/remoting/transport/netty4/ReplierDispatcherTest.java
@@ -14,93 +14,112 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.dubbo.remoting;
+package org.apache.dubbo.remoting.transport.netty4;
import org.apache.dubbo.common.URL;
+import org.apache.dubbo.common.constants.CommonConstants;
+import org.apache.dubbo.common.utils.NetUtils;
+import org.apache.dubbo.remoting.RemotingException;
import org.apache.dubbo.remoting.exchange.ExchangeChannel;
+import org.apache.dubbo.remoting.exchange.ExchangeServer;
import org.apache.dubbo.remoting.exchange.Exchangers;
-import org.apache.dubbo.remoting.exchange.support.Replier;
import org.apache.dubbo.remoting.exchange.support.ReplierDispatcher;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
import java.io.Serializable;
import java.util.Random;
-import java.util.concurrent.CompletableFuture;
-import java.util.concurrent.Executor;
-import java.util.concurrent.Executors;
+import java.util.concurrent.*;
+
+import static org.junit.jupiter.api.Assertions.fail;
+
/**
- * Main
+ * ReplierDispatcherTest
*/
-public class Main {
- public static void main(String[] args) throws Exception {
- startServer(9010);
- mutliThreadTest(10, 9010);
- dataPackageTest(9010);
- }
+public class ReplierDispatcherTest {
+
+ private ExchangeServer exchangeServer;
+
+ private ConcurrentHashMap<String, ExchangeChannel> clients = new ConcurrentHashMap<>();
- private static void startServer(int port) throws Exception {
+ private int port;
+
+ @BeforeEach
+ public void startServer() throws RemotingException {
+ port = NetUtils.getAvailablePort();
ReplierDispatcher dispatcher = new ReplierDispatcher();
dispatcher.addReplier(RpcMessage.class, new RpcMessageHandler());
- dispatcher.addReplier(Object.class, new Replier<Object>() {
- public Object reply(ExchangeChannel channel, Object msg) {
- for (int i = 0; i < 10000; i++)
- System.currentTimeMillis();
- System.out.println("handle:" + msg + ";thread:" + Thread.currentThread().getName());
- return new StringMessage("hello world");
- }
- });
- Exchangers.bind(URL.valueOf("dubbo://localhost:" + port), dispatcher);
+ dispatcher.addReplier(Data.class, (channel, msg) -> new StringMessage("hello world"));
+ exchangeServer = Exchangers.bind(URL.valueOf("dubbo://localhost:" + port), dispatcher);
}
- static void dataPackageTest(int port) throws Exception {
+
+ @Test
+ public void testDataPackage() throws Exception {
ExchangeChannel client = Exchangers.connect(URL.valueOf("dubbo://localhost:" + port));
Random random = new Random();
for (int i = 5; i < 100; i++) {
StringBuilder sb = new StringBuilder();
for (int j = 0; j < i * 100; j++)
- sb.append("(" + random.nextLong() + ")");
- Main.Data d = new Main.Data();
+ sb.append("(").append(random.nextLong()).append(")");
+ Data d = new Data();
d.setData(sb.toString());
- client.request(d).get();
+ Assertions.assertEquals(client.request(d).get().toString(), "hello world");
}
- System.out.println("send finished.");
+ clients.put(Thread.currentThread().getName(), client);
}
- static void mutliThreadTest(int tc, final int port) throws Exception {
- Executor exec = Executors.newFixedThreadPool(tc);
+
+ @Test
+ public void testMultiThread() throws Exception {
+ int tc = 10;
+ ExecutorService exec = Executors.newFixedThreadPool(tc);
for (int i = 0; i < tc; i++)
- exec.execute(new Runnable() {
- public void run() {
- try {
- test(port);
- } catch (Exception e) {
- e.printStackTrace();
- }
+ exec.execute(() -> {
+ try {
+ clientExchangeInfo(port);
+ } catch (Exception e) {
+ fail();
}
});
+ exec.shutdown();
+ exec.awaitTermination(10, TimeUnit.SECONDS);
}
- private static void test(int port) throws Exception {
- ExchangeChannel client = Exchangers.connect(URL.valueOf("dubbo://localhost:" + port));
+ void clientExchangeInfo(int port) throws Exception {
+ ExchangeChannel client = Exchangers.connect(URL.valueOf("dubbo://localhost:" + port + "?" + CommonConstants.TIMEOUT_KEY + "=5000"));
+ clients.put(Thread.currentThread().getName(), client);
MockResult result = (MockResult) client.request(new RpcMessage(DemoService.class.getName(), "plus", new Class<?>[]{int.class, int.class}, new Object[]{55, 25})).get();
- System.out.println("55+25=" + result.getResult());
-
- for (int i = 0; i < 100; i++)
+ Assertions.assertEquals(result.getResult(), 80);
+ for (int i = 0; i < 100; i++) {
client.request(new RpcMessage(DemoService.class.getName(), "sayHello", new Class<?>[]{String.class}, new Object[]{"qianlei" + i}));
+ }
+ for (int i = 0; i < 100; i++) {
+ CompletableFuture<Object> future = client.request(new Data());
+ Assertions.assertEquals(future.get().toString(), "hello world");
+ }
+ }
- for (int i = 0; i < 100; i++)
- client.request(new Main.Data());
- System.out.println("=====test invoke=====");
- for (int i = 0; i < 100; i++) {
- CompletableFuture<Object> future = client.request(new Main.Data());
- System.out.println("invoke and get");
- System.out.println("invoke result:" + future.get());
+ @AfterEach
+ public void tearDown() {
+ try {
+ if (exchangeServer != null)
+ exchangeServer.close();
+ } finally {
+ if (clients.size() != 0)
+ clients.forEach((key, value) -> {
+ value.close();
+ clients.remove(key);
+ });
}
- System.out.println("=====the end=====");
}
+
static class Data implements Serializable {
private static final long serialVersionUID = -4666580993978548778L;
diff --git a/dubbo-remoting/dubbo-remoting-api/src/test/java/org/apache/dubbo/remoting/RpcMessage.java b/dubbo-remoting/dubbo-remoting-netty4/src/test/java/org/apache/dubbo/remoting/transport/netty4/RpcMessage.java
similarity index 93%
rename from dubbo-remoting/dubbo-remoting-api/src/test/java/org/apache/dubbo/remoting/RpcMessage.java
rename to dubbo-remoting/dubbo-remoting-netty4/src/test/java/org/apache/dubbo/remoting/transport/netty4/RpcMessage.java
index 6cb642e..4f5f413 100755
--- a/dubbo-remoting/dubbo-remoting-api/src/test/java/org/apache/dubbo/remoting/RpcMessage.java
+++ b/dubbo-remoting/dubbo-remoting-netty4/src/test/java/org/apache/dubbo/remoting/transport/netty4/RpcMessage.java
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.dubbo.remoting;
+package org.apache.dubbo.remoting.transport.netty4;
import java.io.Serializable;
diff --git a/dubbo-remoting/dubbo-remoting-api/src/test/java/org/apache/dubbo/remoting/RpcMessageHandler.java b/dubbo-remoting/dubbo-remoting-netty4/src/test/java/org/apache/dubbo/remoting/transport/netty4/RpcMessageHandler.java
similarity index 93%
rename from dubbo-remoting/dubbo-remoting-api/src/test/java/org/apache/dubbo/remoting/RpcMessageHandler.java
rename to dubbo-remoting/dubbo-remoting-netty4/src/test/java/org/apache/dubbo/remoting/transport/netty4/RpcMessageHandler.java
index 5211558..120d454 100755
--- a/dubbo-remoting/dubbo-remoting-api/src/test/java/org/apache/dubbo/remoting/RpcMessageHandler.java
+++ b/dubbo-remoting/dubbo-remoting-netty4/src/test/java/org/apache/dubbo/remoting/transport/netty4/RpcMessageHandler.java
@@ -14,10 +14,11 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.dubbo.remoting;
+package org.apache.dubbo.remoting.transport.netty4;
import org.apache.dubbo.common.bytecode.NoSuchMethodException;
import org.apache.dubbo.common.bytecode.Wrapper;
+import org.apache.dubbo.remoting.RemotingException;
import org.apache.dubbo.remoting.exchange.ExchangeChannel;
import org.apache.dubbo.remoting.exchange.support.Replier;