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();
+    }
+
+}