Search in sources :

Example 1 with HeartbeatClientEndpointManager

use of com.weibo.api.motan.transport.support.HeartbeatClientEndpointManager in project motan by weibocom.

the class NettyEndpointFactoryTest method testNotShareChannel.

private void testNotShareChannel(boolean isServer) {
    NettyEndpointFactory factory = new NettyEndpointFactory();
    MessageHandler handler = new ProviderMessageRouter();
    URL url = new URL("motan", "localhost", 18080, "com.weibo.api.motan.procotol.example.IHello");
    Endpoint endpoint = createEndpoint(url, handler, isServer, factory);
    Assert.assertEquals(endpoint.getUrl().getUri(), url.getUri());
    url = new URL("motan", "localhost", 18081, "com.weibo.api.motan.procotol.example.IHello");
    endpoint = createEndpoint(url, handler, isServer, factory);
    Assert.assertEquals(endpoint.getUrl().getUri(), url.getUri());
    Assert.assertTrue(endpoint != createEndpoint(new URL("motan", "localhost", 18081, "com.weibo.api.motan.procotol.example.IHello"), handler, isServer, factory));
    if (isServer) {
        Assert.assertEquals(factory.getShallServerChannels().size(), 0);
    }
    if (isServer) {
        factory.safeReleaseResource((Server) endpoint, url);
    } else {
        Assert.assertEquals(((HeartbeatClientEndpointManager) factory.getEndpointManager()).getClients().size(), 3);
        factory.safeReleaseResource((Client) endpoint, url);
        Assert.assertEquals(((HeartbeatClientEndpointManager) factory.getEndpointManager()).getClients().size(), 2);
    }
}
Also used : HeartbeatClientEndpointManager(com.weibo.api.motan.transport.support.HeartbeatClientEndpointManager) ProviderMessageRouter(com.weibo.api.motan.transport.ProviderMessageRouter) MessageHandler(com.weibo.api.motan.transport.MessageHandler) Endpoint(com.weibo.api.motan.transport.Endpoint) URL(com.weibo.api.motan.rpc.URL)

Example 2 with HeartbeatClientEndpointManager

use of com.weibo.api.motan.transport.support.HeartbeatClientEndpointManager in project motan by weibocom.

the class NettyEndpointFactoryTest method testShareChannel.

private void testShareChannel(boolean isServer) {
    NettyEndpointFactory factory = new NettyEndpointFactory();
    MessageHandler handler = new ProviderMessageRouter();
    URL url1 = new URL("motan", "localhost", 18080, "com.weibo.api.motan.procotol.example.IHello");
    url1.addParameter(URLParamType.shareChannel.getName(), "true");
    Endpoint endpoint1 = createEndpoint(url1, handler, isServer, factory);
    Assert.assertEquals(endpoint1.getUrl().getServerPortStr(), url1.getServerPortStr());
    URL url2 = new URL("motan", "localhost", 18081, "com.weibo.api.motan.protocol.example.IHello1");
    url2.addParameter(URLParamType.shareChannel.getName(), "true");
    Endpoint endpoint2 = createEndpoint(url2, handler, isServer, factory);
    Assert.assertEquals(endpoint2.getUrl().getServerPortStr(), url2.getServerPortStr());
    URL url3 = new URL("motan", "localhost", 18081, "com.weibo.api.motan.protocol.example.IHello2");
    url3.addParameter(URLParamType.shareChannel.getName(), "true");
    Endpoint endpoint3 = createEndpoint(url3, handler, isServer, factory);
    if (isServer) {
        Assert.assertTrue(endpoint2 == endpoint3);
    } else {
        Assert.assertTrue(endpoint2 != endpoint3);
    }
    URL url4 = new URL("injvm", "localhost", 18081, "com.weibo.api.motan.protocol.example.IHello3");
    url4.addParameter(URLParamType.shareChannel.getName(), "true");
    Endpoint endpoint4 = null;
    if (isServer) {
        try {
            endpoint4 = createEndpoint(url4, handler, isServer, factory);
            Assert.assertTrue(false);
        } catch (Exception e) {
            Assert.assertTrue(true);
        }
    } else {
        try {
            endpoint4 = createEndpoint(url4, handler, isServer, factory);
            Assert.assertTrue(true);
        } catch (Exception e) {
            Assert.assertTrue(false);
        }
    }
    if (isServer) {
        Assert.assertEquals(factory.getShallServerChannels().size(), 2);
    }
    if (isServer) {
        factory.safeReleaseResource((Server) endpoint1, url1);
        factory.safeReleaseResource((Server) endpoint2, url2);
        factory.safeReleaseResource((Server) endpoint3, url3);
        Assert.assertEquals(factory.getShallServerChannels().size(), 0);
    } else {
        Assert.assertEquals(((HeartbeatClientEndpointManager) factory.getEndpointManager()).getClients().size(), 4);
        factory.safeReleaseResource((Client) endpoint1, url1);
        Assert.assertEquals(((HeartbeatClientEndpointManager) factory.getEndpointManager()).getClients().size(), 3);
        factory.safeReleaseResource((Client) endpoint2, url2);
        Assert.assertEquals(((HeartbeatClientEndpointManager) factory.getEndpointManager()).getClients().size(), 2);
        factory.safeReleaseResource((Client) endpoint3, url3);
        Assert.assertEquals(((HeartbeatClientEndpointManager) factory.getEndpointManager()).getClients().size(), 1);
        factory.safeReleaseResource((Client) endpoint4, url4);
        Assert.assertEquals(((HeartbeatClientEndpointManager) factory.getEndpointManager()).getClients().size(), 0);
    }
}
Also used : HeartbeatClientEndpointManager(com.weibo.api.motan.transport.support.HeartbeatClientEndpointManager) ProviderMessageRouter(com.weibo.api.motan.transport.ProviderMessageRouter) MessageHandler(com.weibo.api.motan.transport.MessageHandler) Endpoint(com.weibo.api.motan.transport.Endpoint) URL(com.weibo.api.motan.rpc.URL)

Aggregations

URL (com.weibo.api.motan.rpc.URL)2 Endpoint (com.weibo.api.motan.transport.Endpoint)2 MessageHandler (com.weibo.api.motan.transport.MessageHandler)2 ProviderMessageRouter (com.weibo.api.motan.transport.ProviderMessageRouter)2 HeartbeatClientEndpointManager (com.weibo.api.motan.transport.support.HeartbeatClientEndpointManager)2