Search in sources :

Example 11 with DemoService

use of org.apache.dubbo.rpc.protocol.dubbo.support.DemoService in project dubbo by alibaba.

the class DubboProtocolTest method testNonSerializedParameter.

@Test
public void testNonSerializedParameter() throws Exception {
    DemoService service = new DemoServiceImpl();
    int port = NetUtils.getAvailablePort();
    protocol.export(proxy.getInvoker(service, DemoService.class, URL.valueOf("dubbo://127.0.0.1:" + port + "/" + DemoService.class.getName() + "?codec=exchange")));
    service = proxy.getProxy(protocol.refer(DemoService.class, URL.valueOf("dubbo://127.0.0.1:" + port + "/" + DemoService.class.getName() + "?codec=exchange").addParameter("timeout", 3000L)));
    try {
        service.nonSerializedParameter(new NonSerialized());
        Assertions.fail();
    } catch (RpcException e) {
        Assertions.assertTrue(e.getMessage().contains("org.apache.dubbo.rpc.protocol.dubbo.support.NonSerialized must implement java.io.Serializable"));
    }
}
Also used : NonSerialized(org.apache.dubbo.rpc.protocol.dubbo.support.NonSerialized) RpcException(org.apache.dubbo.rpc.RpcException) DemoService(org.apache.dubbo.rpc.protocol.dubbo.support.DemoService) DemoServiceImpl(org.apache.dubbo.rpc.protocol.dubbo.support.DemoServiceImpl) Test(org.junit.jupiter.api.Test)

Example 12 with DemoService

use of org.apache.dubbo.rpc.protocol.dubbo.support.DemoService in project dubbo by alibaba.

the class DubboProtocolTest method testReturnNonSerialized.

@Test
public void testReturnNonSerialized() throws Exception {
    DemoService service = new DemoServiceImpl();
    int port = NetUtils.getAvailablePort();
    protocol.export(proxy.getInvoker(service, DemoService.class, URL.valueOf("dubbo://127.0.0.1:" + port + "/" + DemoService.class.getName() + "?codec=exchange")));
    service = proxy.getProxy(protocol.refer(DemoService.class, URL.valueOf("dubbo://127.0.0.1:" + port + "/" + DemoService.class.getName() + "?codec=exchange").addParameter("timeout", 3000L)));
    try {
        service.returnNonSerialized();
        Assertions.fail();
    } catch (RpcException e) {
        e.printStackTrace();
        Assertions.assertTrue(e.getMessage().contains("org.apache.dubbo.rpc.protocol.dubbo.support.NonSerialized must implement java.io.Serializable"));
    }
}
Also used : RpcException(org.apache.dubbo.rpc.RpcException) DemoService(org.apache.dubbo.rpc.protocol.dubbo.support.DemoService) DemoServiceImpl(org.apache.dubbo.rpc.protocol.dubbo.support.DemoServiceImpl) Test(org.junit.jupiter.api.Test)

Example 13 with DemoService

use of org.apache.dubbo.rpc.protocol.dubbo.support.DemoService in project dubbo by alibaba.

the class DubboProtocolTest method testDubboProtocol.

@Test
public void testDubboProtocol() throws Exception {
    DemoService service = new DemoServiceImpl();
    int port = NetUtils.getAvailablePort();
    protocol.export(proxy.getInvoker(service, DemoService.class, URL.valueOf("dubbo://127.0.0.1:" + port + "/" + DemoService.class.getName())));
    service = proxy.getProxy(protocol.refer(DemoService.class, URL.valueOf("dubbo://127.0.0.1:" + port + "/" + DemoService.class.getName()).addParameter("timeout", 3000L)));
    assertEquals(service.enumlength(new Type[] {}), Type.Lower);
    assertEquals(service.getSize(null), -1);
    assertEquals(service.getSize(new String[] { "", "", "" }), 3);
    Map<String, String> map = new HashMap<String, String>();
    map.put("aa", "bb");
    Set<String> set = service.keys(map);
    assertEquals(set.size(), 1);
    assertEquals(set.iterator().next(), "aa");
    service.invoke("dubbo://127.0.0.1:" + port + "/" + DemoService.class.getName() + "", "invoke");
    service = proxy.getProxy(protocol.refer(DemoService.class, URL.valueOf("dubbo://127.0.0.1:" + port + "/" + DemoService.class.getName() + "?client=netty").addParameter("timeout", 3000L)));
    // test netty client
    StringBuilder buf = new StringBuilder();
    for (int i = 0; i < 1024 * 32 + 32; i++) buf.append('A');
    System.out.println(service.stringLength(buf.toString()));
    // cast to EchoService
    EchoService echo = proxy.getProxy(protocol.refer(EchoService.class, URL.valueOf("dubbo://127.0.0.1:" + port + "/" + DemoService.class.getName() + "?client=netty").addParameter("timeout", 3000L)));
    assertEquals(echo.$echo(buf.toString()), buf.toString());
    assertEquals(echo.$echo("test"), "test");
    assertEquals(echo.$echo("abcdefg"), "abcdefg");
    assertEquals(echo.$echo(1234), 1234);
}
Also used : Type(org.apache.dubbo.rpc.protocol.dubbo.support.Type) HashMap(java.util.HashMap) EchoService(org.apache.dubbo.rpc.service.EchoService) DemoService(org.apache.dubbo.rpc.protocol.dubbo.support.DemoService) DemoServiceImpl(org.apache.dubbo.rpc.protocol.dubbo.support.DemoServiceImpl) Test(org.junit.jupiter.api.Test)

Example 14 with DemoService

use of org.apache.dubbo.rpc.protocol.dubbo.support.DemoService in project dubbo by alibaba.

the class RpcFilterTest method testRpcFilter.

@Test
public void testRpcFilter() throws Exception {
    DemoService service = new DemoServiceImpl();
    int port = NetUtils.getAvailablePort();
    URL url = URL.valueOf("dubbo://127.0.0.1:" + port + "/org.apache.dubbo.rpc.protocol.dubbo.support.DemoService?service.filter=echo");
    ApplicationModel.getServiceRepository().registerService(DemoService.class);
    protocol.export(proxy.getInvoker(service, DemoService.class, url));
    service = proxy.getProxy(protocol.refer(DemoService.class, url));
    Assertions.assertEquals("123", service.echo("123"));
    // cast to EchoService
    EchoService echo = proxy.getProxy(protocol.refer(EchoService.class, url));
    Assertions.assertEquals(echo.$echo("test"), "test");
    Assertions.assertEquals(echo.$echo("abcdefg"), "abcdefg");
    Assertions.assertEquals(echo.$echo(1234), 1234);
}
Also used : EchoService(org.apache.dubbo.rpc.service.EchoService) DemoService(org.apache.dubbo.rpc.protocol.dubbo.support.DemoService) URL(org.apache.dubbo.common.URL) DemoServiceImpl(org.apache.dubbo.rpc.protocol.dubbo.support.DemoServiceImpl) Test(org.junit.jupiter.api.Test)

Example 15 with DemoService

use of org.apache.dubbo.rpc.protocol.dubbo.support.DemoService in project dubbo by alibaba.

the class TraceFilterTest method testInvoke.

@Test
public void testInvoke() throws Exception {
    String method = "sayHello";
    Class<?> type = DemoService.class;
    String key = type.getName() + "." + method;
    // add tracer
    TraceFilter.addTracer(type, method, mockChannel, 2);
    Invoker<DemoService> mockInvoker = mock(Invoker.class);
    Invocation mockInvocation = mock(Invocation.class);
    Result mockResult = mock(Result.class);
    TraceFilter filter = new TraceFilter();
    given(mockInvoker.getInterface()).willReturn(DemoService.class);
    given(mockInvocation.getMethodName()).willReturn(method);
    given(mockInvocation.getArguments()).willReturn(new Object[0]);
    given(mockInvoker.invoke(mockInvocation)).willReturn(mockResult);
    given(mockResult.getValue()).willReturn("result");
    // test invoke
    filter.invoke(mockInvoker, mockInvocation);
    String message = listToString(mockChannel.getReceivedObjects());
    String expectMessage = "org.apache.dubbo.rpc.protocol.dubbo.support.DemoService.sayHello([]) -> \"result\"";
    System.out.println("actual message: " + message);
    Assertions.assertTrue(message.contains(expectMessage));
    Assertions.assertTrue(message.contains("elapsed:"));
    AtomicInteger traceCount = (AtomicInteger) mockChannel.getAttribute(TRACE_COUNT);
    Assertions.assertEquals(1, traceCount.get());
    // test remove channel when count >= max - 1
    filter.invoke(mockInvoker, mockInvocation);
    Field tracers = TraceFilter.class.getDeclaredField(TRACERS_FIELD_NAME);
    tracers.setAccessible(true);
    ConcurrentHashMap<String, Set<Channel>> o = (ConcurrentHashMap<String, Set<Channel>>) tracers.get(new ConcurrentHashMap<String, Set<Channel>>());
    Assertions.assertTrue(o.containsKey(key));
    Set<Channel> channels = o.get(key);
    Assertions.assertNotNull(channels);
    Assertions.assertFalse(channels.contains(mockChannel));
}
Also used : Set(java.util.Set) Invocation(org.apache.dubbo.rpc.Invocation) Channel(org.apache.dubbo.remoting.Channel) DemoService(org.apache.dubbo.rpc.protocol.dubbo.support.DemoService) Result(org.apache.dubbo.rpc.Result) Field(java.lang.reflect.Field) AtomicInteger(java.util.concurrent.atomic.AtomicInteger) ConcurrentHashMap(java.util.concurrent.ConcurrentHashMap) Test(org.junit.jupiter.api.Test)

Aggregations

DemoService (org.apache.dubbo.rpc.protocol.dubbo.support.DemoService)15 Test (org.junit.jupiter.api.Test)15 DemoServiceImpl (org.apache.dubbo.rpc.protocol.dubbo.support.DemoServiceImpl)12 URL (org.apache.dubbo.common.URL)5 RpcException (org.apache.dubbo.rpc.RpcException)3 EchoService (org.apache.dubbo.rpc.service.EchoService)3 HashMap (java.util.HashMap)2 AtomicInteger (java.util.concurrent.atomic.AtomicInteger)2 AppResponse (org.apache.dubbo.rpc.AppResponse)2 Result (org.apache.dubbo.rpc.Result)2 Type (org.apache.dubbo.rpc.protocol.dubbo.support.Type)2 Field (java.lang.reflect.Field)1 Set (java.util.Set)1 ConcurrentHashMap (java.util.concurrent.ConcurrentHashMap)1 ExecutorService (java.util.concurrent.ExecutorService)1 Status (org.apache.dubbo.common.status.Status)1 StatusChecker (org.apache.dubbo.common.status.StatusChecker)1 Channel (org.apache.dubbo.remoting.Channel)1 Invocation (org.apache.dubbo.rpc.Invocation)1 NonSerialized (org.apache.dubbo.rpc.protocol.dubbo.support.NonSerialized)1