You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dubbo.apache.org by wa...@apache.org on 2018/07/09 06:17:18 UTC

[incubator-dubbo] branch master updated: add test cases for injvm rpc protocol (#2041)

This is an automated email from the ASF dual-hosted git repository.

wangxin pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-dubbo.git


The following commit(s) were added to refs/heads/master by this push:
     new 137393c  add test cases for injvm rpc protocol (#2041)
137393c is described below

commit 137393c7a76e813f5108fd8e1e4a2ddb57207c38
Author: kimmking <ki...@gmail.com>
AuthorDate: Mon Jul 9 14:17:16 2018 +0800

    add test cases for injvm rpc protocol (#2041)
---
 .../dubbo/rpc/protocol/injvm/InjvmProtocol.java    |  2 +-
 .../rpc/protocol/injvm/InjvmProtocolTest.java      | 29 +++++++++++++++++++++-
 .../dubbo/rpc/protocol/injvm/ProtocolTest.java     |  6 +++++
 3 files changed, 35 insertions(+), 2 deletions(-)

diff --git a/dubbo-rpc/dubbo-rpc-injvm/src/main/java/org/apache/dubbo/rpc/protocol/injvm/InjvmProtocol.java b/dubbo-rpc/dubbo-rpc-injvm/src/main/java/org/apache/dubbo/rpc/protocol/injvm/InjvmProtocol.java
index eff37b8..290e208 100644
--- a/dubbo-rpc/dubbo-rpc-injvm/src/main/java/org/apache/dubbo/rpc/protocol/injvm/InjvmProtocol.java
+++ b/dubbo-rpc/dubbo-rpc-injvm/src/main/java/org/apache/dubbo/rpc/protocol/injvm/InjvmProtocol.java
@@ -97,7 +97,7 @@ public class InjvmProtocol extends AbstractProtocol implements Protocol {
         // Since injvm protocol is configured explicitly, we don't need to set any extra flag, use normal refer process.
         if (Constants.LOCAL_PROTOCOL.toString().equals(url.getProtocol())) {
             isJvmRefer = false;
-        } else if (Constants.SCOPE_LOCAL.equals(scope) || (url.getParameter("injvm", false))) {
+        } else if (Constants.SCOPE_LOCAL.equals(scope) || (url.getParameter(Constants.LOCAL_PROTOCOL, false))) {
             // if it's declared as local reference
             // 'scope=local' is equivalent to 'injvm=true', injvm will be deprecated in the future release
             isJvmRefer = true;
diff --git a/dubbo-rpc/dubbo-rpc-injvm/src/test/java/org/apache/dubbo/rpc/protocol/injvm/InjvmProtocolTest.java b/dubbo-rpc/dubbo-rpc-injvm/src/test/java/org/apache/dubbo/rpc/protocol/injvm/InjvmProtocolTest.java
index 8d5c5d2..c6c0bdb 100644
--- a/dubbo-rpc/dubbo-rpc-injvm/src/test/java/org/apache/dubbo/rpc/protocol/injvm/InjvmProtocolTest.java
+++ b/dubbo-rpc/dubbo-rpc-injvm/src/test/java/org/apache/dubbo/rpc/protocol/injvm/InjvmProtocolTest.java
@@ -21,6 +21,7 @@ import org.apache.dubbo.common.Constants;
 import org.apache.dubbo.common.URL;
 import org.apache.dubbo.common.extension.ExtensionLoader;
 import org.apache.dubbo.rpc.Exporter;
+import org.apache.dubbo.rpc.Invoker;
 import org.apache.dubbo.rpc.Protocol;
 import org.apache.dubbo.rpc.ProxyFactory;
 
@@ -28,9 +29,11 @@ import org.junit.After;
 import org.junit.Test;
 
 import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
 
 import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertTrue;
 
 /**
@@ -38,6 +41,11 @@ import static org.junit.Assert.assertTrue;
  */
 
 public class InjvmProtocolTest {
+
+    static{
+        InjvmProtocol injvm = InjvmProtocol.getInjvmProtocol();
+    }
+
     private Protocol protocol = ExtensionLoader.getExtensionLoader(Protocol.class).getAdaptiveExtension();
     private ProxyFactory proxy = ExtensionLoader.getExtensionLoader(ProxyFactory.class).getAdaptiveExtension();
     private List<Exporter<?>> exporters = new ArrayList<Exporter<?>>();
@@ -53,11 +61,17 @@ public class InjvmProtocolTest {
     @Test
     public void testLocalProtocol() throws Exception {
         DemoService service = new DemoServiceImpl();
-        Exporter<?> exporter = protocol.export(proxy.getInvoker(service, DemoService.class, URL.valueOf("injvm://127.0.0.1/TestService").addParameter(Constants.INTERFACE_KEY, DemoService.class.getName())));
+        Invoker<?> invoker = proxy.getInvoker(service, DemoService.class, URL.valueOf("injvm://127.0.0.1/TestService").addParameter(Constants.INTERFACE_KEY, DemoService.class.getName()));
+        assertTrue(invoker.isAvailable());
+        Exporter<?> exporter = protocol.export(invoker);
         exporters.add(exporter);
         service = proxy.getProxy(protocol.refer(DemoService.class, URL.valueOf("injvm://127.0.0.1/TestService").addParameter(Constants.INTERFACE_KEY, DemoService.class.getName())));
         assertEquals(service.getSize(new String[]{"", "", ""}), 3);
         service.invoke("injvm://127.0.0.1/TestService", "invoke");
+
+        InjvmInvoker injvmInvoker = new InjvmInvoker(DemoService.class, URL.valueOf("injvm://127.0.0.1/TestService"),null,new HashMap<String, Exporter<?>>());
+        assertFalse(injvmInvoker.isAvailable());
+
     }
 
     @Test
@@ -74,6 +88,19 @@ public class InjvmProtocolTest {
         url = url.addParameter(Constants.GROUP_KEY, "*")
                 .addParameter(Constants.VERSION_KEY, "*");
         assertTrue(InjvmProtocol.getInjvmProtocol().isInjvmRefer(url));
+
+        url = URL.valueOf("fake://127.0.0.1/TestService").addParameter(Constants.SCOPE_KEY, Constants.SCOPE_LOCAL);
+        assertTrue(InjvmProtocol.getInjvmProtocol().isInjvmRefer(url));
+
+        url = URL.valueOf("fake://127.0.0.1/TestService").addParameter(Constants.LOCAL_PROTOCOL,true);
+        assertTrue(InjvmProtocol.getInjvmProtocol().isInjvmRefer(url));
+
+        url = URL.valueOf("fake://127.0.0.1/TestService").addParameter(Constants.SCOPE_KEY, Constants.SCOPE_REMOTE);
+        assertFalse(InjvmProtocol.getInjvmProtocol().isInjvmRefer(url));
+
+        url = URL.valueOf("fake://127.0.0.1/TestService").addParameter(Constants.GENERIC_KEY, true);
+        assertFalse(InjvmProtocol.getInjvmProtocol().isInjvmRefer(url));
+
     }
 
 }
\ No newline at end of file
diff --git a/dubbo-rpc/dubbo-rpc-injvm/src/test/java/org/apache/dubbo/rpc/protocol/injvm/ProtocolTest.java b/dubbo-rpc/dubbo-rpc-injvm/src/test/java/org/apache/dubbo/rpc/protocol/injvm/ProtocolTest.java
index e68c423..45ee265 100644
--- a/dubbo-rpc/dubbo-rpc-injvm/src/test/java/org/apache/dubbo/rpc/protocol/injvm/ProtocolTest.java
+++ b/dubbo-rpc/dubbo-rpc-injvm/src/test/java/org/apache/dubbo/rpc/protocol/injvm/ProtocolTest.java
@@ -36,6 +36,10 @@ public class ProtocolTest {
         }
     };
 
+    static{
+        InjvmProtocol injvm = InjvmProtocol.getInjvmProtocol();
+    }
+
     ProxyFactory proxyFactory = ExtensionLoader.getExtensionLoader(ProxyFactory.class).getExtension("javassist");
 
     URL url = URL.valueOf("injvm://localhost:0/org.apache.dubbo.rpc.support.IEcho?interface=org.apache.dubbo.rpc.support.IEcho");
@@ -48,6 +52,8 @@ public class ProtocolTest {
 
         Protocol InjvmProtocol = ExtensionLoader.getExtensionLoader(Protocol.class).getExtension("injvm");
 
+        assertEquals(0,InjvmProtocol.getDefaultPort());
+
         InjvmProtocol.export(invoker);
 
         Invoker<IEcho> refer = InjvmProtocol.refer(IEcho.class, url);