You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dubbo.apache.org by xi...@apache.org on 2021/07/30 13:17:16 UTC
[dubbo] branch master updated: Fix the test case of HessianProtocol
does not pass on some machines.
This is an automated email from the ASF dual-hosted git repository.
xiaoheng 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 9810c5e Fix the test case of HessianProtocol does not pass on some machines.
9810c5e is described below
commit 9810c5e469d6d48c428b52df9975e26a3fd49066
Author: xiaoheng1 <20...@qq.com>
AuthorDate: Fri Jul 30 21:06:26 2021 +0800
Fix the test case of HessianProtocol does not pass on some machines.
---
...tocolTest.java => HessianProtocolCoreTest.java} | 104 +---------------
.../hessian/HessianProtocolNonCoreTest.java | 136 +++++++++++++++++++++
2 files changed, 139 insertions(+), 101 deletions(-)
diff --git a/dubbo-rpc/dubbo-rpc-hessian/src/test/java/org/apache/dubbo/rpc/protocol/hessian/HessianProtocolTest.java b/dubbo-rpc/dubbo-rpc-hessian/src/test/java/org/apache/dubbo/rpc/protocol/hessian/HessianProtocolCoreTest.java
similarity index 59%
rename from dubbo-rpc/dubbo-rpc-hessian/src/test/java/org/apache/dubbo/rpc/protocol/hessian/HessianProtocolTest.java
rename to dubbo-rpc/dubbo-rpc-hessian/src/test/java/org/apache/dubbo/rpc/protocol/hessian/HessianProtocolCoreTest.java
index 7ee98b3..d3215e4 100644
--- a/dubbo-rpc/dubbo-rpc-hessian/src/test/java/org/apache/dubbo/rpc/protocol/hessian/HessianProtocolTest.java
+++ b/dubbo-rpc/dubbo-rpc-hessian/src/test/java/org/apache/dubbo/rpc/protocol/hessian/HessianProtocolCoreTest.java
@@ -31,8 +31,6 @@ import org.apache.dubbo.rpc.Invoker;
import org.apache.dubbo.rpc.Protocol;
import org.apache.dubbo.rpc.ProxyFactory;
import org.apache.dubbo.rpc.RpcContext;
-import org.apache.dubbo.rpc.RpcException;
-import org.apache.dubbo.rpc.protocol.hessian.HessianServiceImpl.MyException;
import org.apache.dubbo.rpc.service.GenericService;
import org.junit.jupiter.api.Assertions;
@@ -42,12 +40,12 @@ import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
-import static org.junit.jupiter.api.Assertions.fail;
-
/**
* HessianProtocolTest
+ * On some machines, there is a limit on the maximum number of threads.
+ * Therefore, the test cases of the Hessian protocol are split into two files
*/
-public class HessianProtocolTest {
+public class HessianProtocolCoreTest {
@Test
public void testHessianProtocol() {
@@ -155,100 +153,4 @@ public class HessianProtocolTest {
exporter.unexport();
}
- @Test
- public void testOverload() {
- HessianServiceImpl server = new HessianServiceImpl();
- Assertions.assertFalse(server.isCalled());
- ProxyFactory proxyFactory = ExtensionLoader.getExtensionLoader(ProxyFactory.class).getAdaptiveExtension();
- Protocol protocol = ExtensionLoader.getExtensionLoader(Protocol.class).getAdaptiveExtension();
- int port = NetUtils.getAvailablePort();
- URL url = URL.valueOf("hessian://127.0.0.1:" + port + "/" + HessianService.class.getName() + "?version=1.0.0&hessian.overload.method=true&hessian2.request=false");
- Exporter<HessianService> exporter = protocol.export(proxyFactory.getInvoker(server, HessianService.class, url));
- Invoker<HessianService> invoker = protocol.refer(HessianService.class, url);
- HessianService client = proxyFactory.getProxy(invoker);
- String result = client.sayHello("haha");
- Assertions.assertEquals("Hello, haha", result);
- result = client.sayHello("haha", 1);
- Assertions.assertEquals("Hello, haha. ", result);
- invoker.destroy();
- exporter.unexport();
- }
-
- @Test
- public void testHttpClient() {
- HessianServiceImpl server = new HessianServiceImpl();
- Assertions.assertFalse(server.isCalled());
- ProxyFactory proxyFactory = ExtensionLoader.getExtensionLoader(ProxyFactory.class).getAdaptiveExtension();
- Protocol protocol = ExtensionLoader.getExtensionLoader(Protocol.class).getAdaptiveExtension();
- int port = NetUtils.getAvailablePort();
- URL url = URL.valueOf("hessian://127.0.0.1:" + port + "/" + HessianService.class.getName() + "?version=1.0.0&client=httpclient&hessian.overload.method=true");
- Exporter<HessianService> exporter = protocol.export(proxyFactory.getInvoker(server, HessianService.class, url));
- Invoker<HessianService> invoker = protocol.refer(HessianService.class, url);
- HessianService client = proxyFactory.getProxy(invoker);
- String result = client.sayHello("haha");
- Assertions.assertTrue(server.isCalled());
- Assertions.assertEquals("Hello, haha", result);
- invoker.destroy();
- exporter.unexport();
- }
-
- @Test
- public void testTimeOut() {
- HessianServiceImpl server = new HessianServiceImpl();
- ProxyFactory proxyFactory = ExtensionLoader.getExtensionLoader(ProxyFactory.class).getAdaptiveExtension();
- Protocol protocol = ExtensionLoader.getExtensionLoader(Protocol.class).getAdaptiveExtension();
- int port = NetUtils.getAvailablePort();
- URL url = URL.valueOf("hessian://127.0.0.1:" + port + "/" + HessianService.class.getName() + "?version=1.0.0&timeout=10");
- Exporter<HessianService> exporter = protocol.export(proxyFactory.getInvoker(server, HessianService.class, url));
- Invoker<HessianService> invoker = protocol.refer(HessianService.class, url);
- HessianService client = proxyFactory.getProxy(invoker);
- try {
- client.timeOut(6000);
- fail();
- } catch (RpcException expected) {
- Assertions.assertTrue(expected.isTimeout());
- } finally {
- invoker.destroy();
- exporter.unexport();
- }
-
- }
-
- @Test
- public void testCustomException() {
- HessianServiceImpl server = new HessianServiceImpl();
- ProxyFactory proxyFactory = ExtensionLoader.getExtensionLoader(ProxyFactory.class).getAdaptiveExtension();
- Protocol protocol = ExtensionLoader.getExtensionLoader(Protocol.class).getAdaptiveExtension();
- int port = NetUtils.getAvailablePort();
- URL url = URL.valueOf("hessian://127.0.0.1:" + port + "/" + HessianService.class.getName() + "?version=1.0.0");
- Exporter<HessianService> exporter = protocol.export(proxyFactory.getInvoker(server, HessianService.class, url));
- Invoker<HessianService> invoker = protocol.refer(HessianService.class, url);
- HessianService client = proxyFactory.getProxy(invoker);
- try {
- client.customException();
- fail();
- } catch (MyException expected) {
-
- }
- invoker.destroy();
- exporter.unexport();
- }
-
-
- @Test
- public void testRemoteApplicationName() {
- HessianServiceImpl server = new HessianServiceImpl();
- ProxyFactory proxyFactory = ExtensionLoader.getExtensionLoader(ProxyFactory.class).getAdaptiveExtension();
- Protocol protocol = ExtensionLoader.getExtensionLoader(Protocol.class).getAdaptiveExtension();
- int port = NetUtils.getAvailablePort();
- URL url = URL.valueOf("hessian://127.0.0.1:" + port + "/" + HessianService.class.getName() + "?version=1.0.0&hessian.overload.method=true").addParameter("application", "consumer");
- Exporter<HessianService> exporter = protocol.export(proxyFactory.getInvoker(server, HessianService.class, url));
- Invoker<HessianService> invoker = protocol.refer(HessianService.class, url);
- HessianService client = proxyFactory.getProxy(invoker);
- String result = client.getRemoteApplicationName();
- Assertions.assertEquals("consumer", result);
- invoker.destroy();
- exporter.unexport();
- }
-
}
diff --git a/dubbo-rpc/dubbo-rpc-hessian/src/test/java/org/apache/dubbo/rpc/protocol/hessian/HessianProtocolNonCoreTest.java b/dubbo-rpc/dubbo-rpc-hessian/src/test/java/org/apache/dubbo/rpc/protocol/hessian/HessianProtocolNonCoreTest.java
new file mode 100644
index 0000000..e373198
--- /dev/null
+++ b/dubbo-rpc/dubbo-rpc-hessian/src/test/java/org/apache/dubbo/rpc/protocol/hessian/HessianProtocolNonCoreTest.java
@@ -0,0 +1,136 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.dubbo.rpc.protocol.hessian;
+
+import org.apache.dubbo.common.URL;
+import org.apache.dubbo.common.extension.ExtensionLoader;
+import org.apache.dubbo.common.utils.NetUtils;
+import org.apache.dubbo.rpc.Exporter;
+import org.apache.dubbo.rpc.Invoker;
+import org.apache.dubbo.rpc.Protocol;
+import org.apache.dubbo.rpc.ProxyFactory;
+import org.apache.dubbo.rpc.RpcException;
+import org.apache.dubbo.rpc.protocol.hessian.HessianServiceImpl.MyException;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.fail;
+
+/**
+ * HessianProtocolTest
+ * On some machines, there is a limit on the maximum number of threads.
+ * Therefore, the test cases of the Hessian protocol are split into two files
+ */
+public class HessianProtocolNonCoreTest {
+
+ @Test
+ public void testOverload() {
+ HessianServiceImpl server = new HessianServiceImpl();
+ Assertions.assertFalse(server.isCalled());
+ ProxyFactory proxyFactory = ExtensionLoader.getExtensionLoader(ProxyFactory.class).getAdaptiveExtension();
+ Protocol protocol = ExtensionLoader.getExtensionLoader(Protocol.class).getAdaptiveExtension();
+ int port = NetUtils.getAvailablePort();
+ URL url = URL.valueOf("hessian://127.0.0.1:" + port + "/" + HessianService.class.getName() + "?version=1.0.0&hessian.overload.method=true&hessian2.request=false");
+ Exporter<HessianService> exporter = protocol.export(proxyFactory.getInvoker(server, HessianService.class, url));
+ Invoker<HessianService> invoker = protocol.refer(HessianService.class, url);
+ HessianService client = proxyFactory.getProxy(invoker);
+ String result = client.sayHello("haha");
+ Assertions.assertEquals("Hello, haha", result);
+ result = client.sayHello("haha", 1);
+ Assertions.assertEquals("Hello, haha. ", result);
+ invoker.destroy();
+ exporter.unexport();
+ }
+
+ @Test
+ public void testHttpClient() {
+ HessianServiceImpl server = new HessianServiceImpl();
+ Assertions.assertFalse(server.isCalled());
+ ProxyFactory proxyFactory = ExtensionLoader.getExtensionLoader(ProxyFactory.class).getAdaptiveExtension();
+ Protocol protocol = ExtensionLoader.getExtensionLoader(Protocol.class).getAdaptiveExtension();
+ int port = NetUtils.getAvailablePort();
+ URL url = URL.valueOf("hessian://127.0.0.1:" + port + "/" + HessianService.class.getName() + "?version=1.0.0&client=httpclient&hessian.overload.method=true");
+ Exporter<HessianService> exporter = protocol.export(proxyFactory.getInvoker(server, HessianService.class, url));
+ Invoker<HessianService> invoker = protocol.refer(HessianService.class, url);
+ HessianService client = proxyFactory.getProxy(invoker);
+ String result = client.sayHello("haha");
+ Assertions.assertTrue(server.isCalled());
+ Assertions.assertEquals("Hello, haha", result);
+ invoker.destroy();
+ exporter.unexport();
+ }
+
+ @Test
+ public void testTimeOut() {
+ HessianServiceImpl server = new HessianServiceImpl();
+ ProxyFactory proxyFactory = ExtensionLoader.getExtensionLoader(ProxyFactory.class).getAdaptiveExtension();
+ Protocol protocol = ExtensionLoader.getExtensionLoader(Protocol.class).getAdaptiveExtension();
+ int port = NetUtils.getAvailablePort();
+ URL url = URL.valueOf("hessian://127.0.0.1:" + port + "/" + HessianService.class.getName() + "?version=1.0.0&timeout=10");
+ Exporter<HessianService> exporter = protocol.export(proxyFactory.getInvoker(server, HessianService.class, url));
+ Invoker<HessianService> invoker = protocol.refer(HessianService.class, url);
+ HessianService client = proxyFactory.getProxy(invoker);
+ try {
+ client.timeOut(6000);
+ fail();
+ } catch (RpcException expected) {
+ Assertions.assertTrue(expected.isTimeout());
+ } finally {
+ invoker.destroy();
+ exporter.unexport();
+ }
+
+ }
+
+ @Test
+ public void testCustomException() {
+ HessianServiceImpl server = new HessianServiceImpl();
+ ProxyFactory proxyFactory = ExtensionLoader.getExtensionLoader(ProxyFactory.class).getAdaptiveExtension();
+ Protocol protocol = ExtensionLoader.getExtensionLoader(Protocol.class).getAdaptiveExtension();
+ int port = NetUtils.getAvailablePort();
+ URL url = URL.valueOf("hessian://127.0.0.1:" + port + "/" + HessianService.class.getName() + "?version=1.0.0");
+ Exporter<HessianService> exporter = protocol.export(proxyFactory.getInvoker(server, HessianService.class, url));
+ Invoker<HessianService> invoker = protocol.refer(HessianService.class, url);
+ HessianService client = proxyFactory.getProxy(invoker);
+ try {
+ client.customException();
+ fail();
+ } catch (MyException expected) {
+
+ }
+ invoker.destroy();
+ exporter.unexport();
+ }
+
+
+ @Test
+ public void testRemoteApplicationName() {
+ HessianServiceImpl server = new HessianServiceImpl();
+ ProxyFactory proxyFactory = ExtensionLoader.getExtensionLoader(ProxyFactory.class).getAdaptiveExtension();
+ Protocol protocol = ExtensionLoader.getExtensionLoader(Protocol.class).getAdaptiveExtension();
+ int port = NetUtils.getAvailablePort();
+ URL url = URL.valueOf("hessian://127.0.0.1:" + port + "/" + HessianService.class.getName() + "?version=1.0.0&hessian.overload.method=true").addParameter("application", "consumer");
+ Exporter<HessianService> exporter = protocol.export(proxyFactory.getInvoker(server, HessianService.class, url));
+ Invoker<HessianService> invoker = protocol.refer(HessianService.class, url);
+ HessianService client = proxyFactory.getProxy(invoker);
+ String result = client.getRemoteApplicationName();
+ Assertions.assertEquals("consumer", result);
+ invoker.destroy();
+ exporter.unexport();
+ }
+
+}