Search in sources :

Example 51 with Channel

use of org.apache.dubbo.remoting.Channel in project dubbo by alibaba.

the class MulticastExchangeNetworkerTest method testJoin.

@Test
public void testJoin() throws RemotingException, InterruptedException {
    final String groupURL = "multicast://224.5.6.7:1234";
    MulticastExchangeNetworker multicastExchangeNetworker = new MulticastExchangeNetworker();
    final CountDownLatch countDownLatch = new CountDownLatch(1);
    Peer peer1 = multicastExchangeNetworker.lookup(URL.valueOf(groupURL)).join(URL.valueOf("exchange://0.0.0.0:" + NetUtils.getAvailablePort() + "?exchanger=header"), new ExchangeHandlerAdapter() {

        @Override
        public CompletableFuture<Object> reply(ExchangeChannel channel, Object msg) throws RemotingException {
            countDownLatch.countDown();
            return super.reply(channel, msg);
        }
    });
    Peer peer2 = multicastExchangeNetworker.lookup(URL.valueOf(groupURL)).join(URL.valueOf("exchange://0.0.0.0:" + NetUtils.getAvailablePort() + "?exchanger=header"), mock(ExchangeHandler.class));
    while (true) {
        for (Channel channel : peer1.getChannels()) {
            channel.send("hello multicast exchange network!");
        }
        TimeUnit.MILLISECONDS.sleep(50);
        long count = countDownLatch.getCount();
        if (count > 0) {
            break;
        }
    }
    Group lookup = Networkers.lookup(groupURL);
    assertThat(lookup, not(nullValue()));
    assertThat(peer1, instanceOf(ExchangeServerPeer.class));
    peer1.close();
    peer2.close();
}
Also used : ExchangeHandlerAdapter(org.apache.dubbo.remoting.exchange.support.ExchangeHandlerAdapter) Group(org.apache.dubbo.remoting.p2p.Group) Peer(org.apache.dubbo.remoting.p2p.Peer) ExchangeChannel(org.apache.dubbo.remoting.exchange.ExchangeChannel) Channel(org.apache.dubbo.remoting.Channel) ExchangeChannel(org.apache.dubbo.remoting.exchange.ExchangeChannel) CountDownLatch(java.util.concurrent.CountDownLatch) ExchangeHandler(org.apache.dubbo.remoting.exchange.ExchangeHandler) CompletableFuture(java.util.concurrent.CompletableFuture) RemotingException(org.apache.dubbo.remoting.RemotingException) Test(org.junit.jupiter.api.Test)

Example 52 with Channel

use of org.apache.dubbo.remoting.Channel in project dubbo by alibaba.

the class MulticastNetworkerTest method testJoin.

@Test
public void testJoin() throws RemotingException, InterruptedException {
    final String groupURL = "multicast://224.5.6.7:1234";
    final String peerURL = "exchange://0.0.0.0:" + NetUtils.getAvailablePort() + "?exchanger=header";
    final CountDownLatch countDownLatch = new CountDownLatch(1);
    Peer peer1 = Networkers.join(groupURL, peerURL, new ChannelHandlerAdapter() {

        @Override
        public void received(Channel channel, Object message) {
            countDownLatch.countDown();
        }
    });
    Peer peer2 = Networkers.join(groupURL, "exchange://0.0.0.0:" + NetUtils.getAvailablePort() + "?exchanger=header", mock(ChannelHandlerAdapter.class));
    while (true) {
        long count = countDownLatch.getCount();
        if (count > 0) {
            break;
        }
        for (Channel channel : peer1.getChannels()) {
            channel.send("hello world!");
        }
        TimeUnit.MILLISECONDS.sleep(50);
    }
    Group lookup = Networkers.lookup(groupURL);
    assertThat(lookup, not(nullValue()));
    peer2.close();
    peer1.close();
}
Also used : ChannelHandlerAdapter(org.apache.dubbo.remoting.transport.ChannelHandlerAdapter) Group(org.apache.dubbo.remoting.p2p.Group) Peer(org.apache.dubbo.remoting.p2p.Peer) Channel(org.apache.dubbo.remoting.Channel) CountDownLatch(java.util.concurrent.CountDownLatch) Test(org.junit.jupiter.api.Test)

Example 53 with Channel

use of org.apache.dubbo.remoting.Channel in project dubbo by alibaba.

the class FileNetworkerTest method testJoin.

@Test
public void testJoin(@TempDir Path folder) throws RemotingException, InterruptedException {
    final String groupURL = "file:///" + folder.getFileName().toAbsolutePath();
    FileNetworker networker = new FileNetworker();
    Group group = networker.lookup(URL.valueOf(groupURL));
    final CountDownLatch countDownLatch = new CountDownLatch(1);
    Peer peer1 = group.join(URL.valueOf("exchange://0.0.0.0:" + NetUtils.getAvailablePort() + "?exchanger=header"), new ChannelHandlerAdapter() {

        @Override
        public void received(Channel channel, Object message) {
            countDownLatch.countDown();
        }
    });
    Peer peer2 = group.join(URL.valueOf("exchange://0.0.0.0:" + NetUtils.getAvailablePort() + "?exchanger=header"), mock(ChannelHandlerAdapter.class));
    while (true) {
        long count = countDownLatch.getCount();
        if (count > 0) {
            break;
        }
        for (Channel channel : peer1.getChannels()) {
            channel.send(0, false);
            channel.send("hello world!");
        }
        TimeUnit.MILLISECONDS.sleep(50);
    }
    peer2.close();
    peer1.close();
}
Also used : ChannelHandlerAdapter(org.apache.dubbo.remoting.transport.ChannelHandlerAdapter) Group(org.apache.dubbo.remoting.p2p.Group) Peer(org.apache.dubbo.remoting.p2p.Peer) Channel(org.apache.dubbo.remoting.Channel) CountDownLatch(java.util.concurrent.CountDownLatch) Test(org.junit.jupiter.api.Test)

Aggregations

Channel (org.apache.dubbo.remoting.Channel)53 Test (org.junit.jupiter.api.Test)32 Request (org.apache.dubbo.remoting.exchange.Request)18 ChannelBuffer (org.apache.dubbo.remoting.buffer.ChannelBuffer)16 Response (org.apache.dubbo.remoting.exchange.Response)12 ExchangeChannel (org.apache.dubbo.remoting.exchange.ExchangeChannel)9 URL (org.apache.dubbo.common.URL)8 AtomicInteger (java.util.concurrent.atomic.AtomicInteger)7 HeaderExchangeHandler (org.apache.dubbo.remoting.exchange.support.header.HeaderExchangeHandler)6 RemotingException (org.apache.dubbo.remoting.RemotingException)5 ConcurrentHashMap (java.util.concurrent.ConcurrentHashMap)4 CountDownLatch (java.util.concurrent.CountDownLatch)4 ExchangeHandler (org.apache.dubbo.remoting.exchange.ExchangeHandler)4 MockedChannel (org.apache.dubbo.remoting.handler.MockedChannel)4 AppResponse (org.apache.dubbo.rpc.AppResponse)4 Demo (org.apache.dubbo.rpc.gen.thrift.Demo)4 TBinaryProtocol (org.apache.thrift.protocol.TBinaryProtocol)4 TMessage (org.apache.thrift.protocol.TMessage)4 TIOStreamTransport (org.apache.thrift.transport.TIOStreamTransport)4 IOException (java.io.IOException)3