Package net.tomp2p.p2p

Examples of net.tomp2p.p2p.Peer


        }
    }

    @Test
    public void testDirectReconnect() throws Exception {
        Peer sender = null;
        Peer recv1 = null;
        try {

         
          final CountConnectionOutboundHandler ccohTCP = new CountConnectionOutboundHandler();
          final CountConnectionOutboundHandler ccohUDP = new CountConnectionOutboundHandler();
          PipelineFilter pf = new PipelineFilter() {
        @Override
        public Map<String, Pair<EventExecutorGroup, ChannelHandler>> filter(Map<String, Pair<EventExecutorGroup, ChannelHandler>> channelHandlers, boolean tcp,
                boolean client) {
         
          Map<String, Pair<EventExecutorGroup, ChannelHandler>> retVal = new LinkedHashMap<String, Pair<EventExecutorGroup, ChannelHandler>>();
          retVal.put("counter", new Pair<EventExecutorGroup, ChannelHandler>(null, tcp? ccohTCP:ccohUDP));
          retVal.putAll(channelHandlers);
          return retVal;
        }
      };
      ChannelServerConfiguration csc = PeerBuilder.createDefaultChannelServerConfiguration();
      ChannelClientConfiguration ccc = PeerBuilder.createDefaultChannelClientConfiguration();
      csc.pipelineFilter(pf);
      ccc.pipelineFilter(pf);
            sender = new PeerBuilder(new Number160("0x50")).p2pId(55).enableMaintenance(false).ports(2424).channelClientConfiguration(ccc).channelServerConfiguration(csc).start();
            recv1 = new PeerBuilder(new Number160("0x20")).p2pId(55).enableMaintenance(false).ports(8088).channelClientConfiguration(ccc).channelServerConfiguration(csc).start();
            recv1.objectDataReply(new ObjectDataReply() {
                @Override
                public Object reply(PeerAddress sender, Object request) throws Exception {
                    return "yes";
                }
            });
            FuturePeerConnection peerConnection = sender.createPeerConnection(recv1.peerAddress());
            ccohTCP.reset();
            ccohUDP.reset();

            FutureDirect fd1 = sender.sendDirect(peerConnection).object("test")
                    .connectionTimeoutTCPMillis(2000).idleTCPSeconds(10 * 1000).start();
            fd1.awaitListenersUninterruptibly();
            Assert.assertEquals(true, fd1.isSuccess());
            Assert.assertEquals(1, ccohTCP.total());
            Assert.assertEquals(0, ccohUDP.total());
            Thread.sleep(2000);
            System.err.println("send second with the same connection");
            FutureDirect fd2 = sender.sendDirect(peerConnection).object("test").start();
            fd2.awaitUninterruptibly();
            Assert.assertEquals(1, ccohTCP.total());
            Assert.assertEquals(0, ccohUDP.total());
            Assert.assertEquals(true, fd2.isSuccess());
            peerConnection.close().await();
            System.err.println("done");
        } finally {
            if (sender != null) {
                sender.shutdown().await();
            }
            if (recv1 != null) {
                recv1.shutdown().await();
            }
        }
    }
View Full Code Here


        }
    }

    @Test
    public void testDirect2() throws Exception {
        Peer sender = null;
        Peer recv1 = null;
        try {

          final CountConnectionOutboundHandler ccohTCP = new CountConnectionOutboundHandler();
          final CountConnectionOutboundHandler ccohUDP = new CountConnectionOutboundHandler();
          PipelineFilter pf = new PipelineFilter() {
        @Override
        public Map<String, Pair<EventExecutorGroup, ChannelHandler>> filter(Map<String, Pair<EventExecutorGroup, ChannelHandler>> channelHandlers, boolean tcp,
                boolean client) {
         
          Map<String, Pair<EventExecutorGroup, ChannelHandler>> retVal = new LinkedHashMap<String, Pair<EventExecutorGroup, ChannelHandler>>();
          retVal.put("counter", new Pair<EventExecutorGroup, ChannelHandler>(null, tcp? ccohTCP:ccohUDP));
          retVal.putAll(channelHandlers);
          return retVal;
        }
      };
      ChannelServerConfiguration csc = PeerBuilder.createDefaultChannelServerConfiguration();
      ChannelClientConfiguration ccc = PeerBuilder.createDefaultChannelClientConfiguration();
      csc.pipelineFilter(pf);
      ccc.pipelineFilter(pf);
            sender = new PeerBuilder(new Number160("0x50")).p2pId(55).ports(2424).enableMaintenance(false)
                    .channelClientConfiguration(ccc).channelServerConfiguration(csc).start();
            recv1 = new PeerBuilder(new Number160("0x20")).p2pId(55).ports(8088).enableMaintenance(false)
                .channelClientConfiguration(ccc).channelServerConfiguration(csc).start();
            recv1.objectDataReply(new ObjectDataReply() {
                @Override
                public Object reply(PeerAddress sender, Object request) throws Exception {
                    return "yes";
                }
            });
            FuturePeerConnection peerConnection = sender.createPeerConnection(recv1.peerAddress(), 8000);
            ccohTCP.reset();
            ccohUDP.reset();

            FutureDirect fd1 = sender.sendDirect(peerConnection).object("test")
                    .connectionTimeoutTCPMillis(2000).idleTCPSeconds(5).start();
            fd1.awaitUninterruptibly();

            Assert.assertEquals(1, ccohTCP.total());

            Thread.sleep(7000);

            FutureDirect fd2 = sender.sendDirect(peerConnection).object("test").start();
            fd2.awaitUninterruptibly();
            peerConnection.close().await();
            Assert.assertEquals(2, ccohTCP.total());
            System.out.println("done");
        } finally {
            if (sender != null) {
                sender.shutdown().await();
            }
            if (recv1 != null) {
                recv1.shutdown().await();
            }
        }
    }
View Full Code Here

        seed.shutdown().awaitListenersUninterruptibly();
        peer.peer().shutdown().awaitListenersUninterruptibly();
    }

    public PeerDHT createAndAttachRemotePeer() {
        final Peer peer;
        try {
            peer = new PeerBuilder(new Number160(rnd)).ports(5003).start();
        } catch (Exception e) {
            e.printStackTrace();
            Assert.fail();
            return null;
        }
        final FutureBootstrap fb = peer.bootstrap().broadcast().ports(seed.peerAddress().udpPort()).start();
        fb.awaitUninterruptibly();
        peer.discover().peerAddress(fb.bootstrapTo().iterator().next()).start();
        fb.addListener(new BaseFutureListener<BaseFuture>() {
            @Override
            public void operationComplete(BaseFuture future) throws Exception {
                Collection<PeerAddress> addresses = fb.bootstrapTo();
                if (addresses != null && !addresses.isEmpty()) {
                    peer.discover().peerAddress(addresses.iterator().next()).start().awaitUninterruptibly();
                } else {
                    Assert.assertTrue("Unable to boostrap to peers in the network", false);
                }
            }
View Full Code Here

    }

    private PeerDHT[] createPeers(int startport, int nr, String name) throws IOException {
        PeerDHT[] peers = new PeerDHT[nr];
        for (int i = 0; i < nr; i++) {
          Peer peer = new PeerBuilder(Number160.createHash(name + i)).ports(PORT + i).start();
            peers[i] = new PeerBuilderDHT(peer).start();
        }
        return peers;
    }
View Full Code Here

  @Test
  public void testPutTimeout() throws Exception {
    PeerDHT master = null;
    try {
      Peer pmaster = new PeerBuilder(new Number160(rnd)).ports(4001).start();
      master = new PeerBuilderDHT(pmaster).storage(new StorageMemory(1)).start();
      Data data = new Data("hallo");
      data.ttlSeconds(1);
      FuturePut fdht = master.put(Number160.ONE).data(data).start();
      fdht.awaitUninterruptibly();
View Full Code Here

    }
  }

  @Test
  public void testObjectSendExample() throws Exception {
    Peer p1 = null;
    Peer p2 = null;
    try {
      p1 = new PeerBuilder(new Number160(rnd)).ports(4001).start();
      p2 = new PeerBuilder(new Number160(rnd)).ports(4002).start();
      // attach reply handler
      p2.objectDataReply(new ObjectDataReply() {
        @Override
        public Object reply(PeerAddress sender, Object request) throws Exception {
          System.out.println("request [" + request + "]");
          return "world";
        }
      });
      FutureDirect futureData = p1.sendDirect(p2.peerAddress()).object("hello").start();
      futureData.awaitUninterruptibly();
      System.out.println("reply [" + futureData.object() + "]");
    } finally {
      if (p1 != null) {
        p1.shutdown().await();
      }
      if (p2 != null) {
        p2.shutdown().await();
      }

    }
  }
View Full Code Here

   * @throws Exception
   */
  @Test
  public void testBindings() throws Exception {
    final Random rnd = new Random(42L);
    Peer p1 = null;
    Peer p2 = null;
    try {
      // setup (step 1)
      Bindings b = new Bindings().addInterface("lo");
      p1 = new PeerBuilder(new Number160(rnd)).ports(4001).bindings(b).start();
      p2 = new PeerBuilder(new Number160(rnd)).ports(4002).bindings(b).start();
      FutureBootstrap fb = p2.bootstrap().peerAddress(p1.peerAddress()).start();
      fb.awaitUninterruptibly();
      Assert.assertEquals(true, fb.isSuccess());
    } finally {
      if (p1 != null) {
        p1.shutdown().await();
      }
      if (p2 != null) {
        p2.shutdown().await();
      }

    }
  }
View Full Code Here

 

  // TODO: make this work
  @Test
  public void testTooManyOpenFilesInSystem() throws Exception {
    Peer master = null;
    Peer slave = null;
    try {
      // since we have two peers, we need to reduce the connections -> we
      // will have 300 * 2 (peer connection)
      // plus 100 * 2 * 2. The last multiplication is due to discover,
      // where the recipient creates a connection
      // with its own limit. Since the limit is 1024 and we stop at 1000
      // only for the connection, we may run into
      // too many open files
      PeerBuilder masterMaker = new PeerBuilder(new Number160(rnd)).ports(4001);
      master = masterMaker.enableMaintenance(false).start();
      PeerBuilder slaveMaker = new PeerBuilder(new Number160(rnd)).ports(4002);
      slave = slaveMaker.enableMaintenance(false).start();

      System.err.println("peers up and running");

      slave.rawDataReply(new RawDataReply() {
        @Override
        public Buffer reply(PeerAddress sender, Buffer requestBuffer, boolean last) throws Exception {
          final byte[] b1 = new byte[10000];
          int i = requestBuffer.buffer().getInt(0);
          ByteBuf buf = Unpooled.wrappedBuffer(b1);
          buf.setInt(0, i);
          return new Buffer(buf);
        }
      });
      List<BaseFuture> list1 = new ArrayList<BaseFuture>();
      List<BaseFuture> list2 = new ArrayList<BaseFuture>();
      List<FuturePeerConnection> list3 = new ArrayList<FuturePeerConnection>();
      for (int i = 0; i < 125; i++) {
        final byte[] b = new byte[10000];
        FuturePeerConnection pc = master.createPeerConnection(slave.peerAddress());
        list1.add(master.sendDirect(pc).buffer(new Buffer(Unpooled.wrappedBuffer(b))).start());
        list3.add(pc);
        // pc.close();
      }
      for (int i = 0; i < 20000; i++) {
        list2.add(master.discover().peerAddress(slave.peerAddress()).start());
        final byte[] b = new byte[10000];
        byte[] me = Utils.intToByteArray(i);
        System.arraycopy(me, 0, b, 0, 4);
        list2.add(master.sendDirect(slave.peerAddress()).buffer(new Buffer(Unpooled.wrappedBuffer(b)))
                .start());
      }
      for (BaseFuture bf : list1) {
        bf.awaitListenersUninterruptibly();
        if (bf.isFailed()) {
          System.err.println("WTF " + bf.failedReason());
        } else {
          System.err.print(",");
        }
        Assert.assertEquals(true, bf.isSuccess());
      }
      for (FuturePeerConnection pc : list3) {
        pc.close().awaitListenersUninterruptibly();
      }
      for (BaseFuture bf : list2) {
        bf.awaitListenersUninterruptibly();
        if (bf.isFailed()) {
          System.err.println("WTF " + bf.failedReason());
        } else {
          System.err.print(".");
        }
        Assert.assertEquals(true, bf.isSuccess());
      }
      System.err.println("done!!");
    } catch (Exception e) {
      e.printStackTrace();
    } finally {
      System.err.println("done!1!");
      if (master != null) {
        master.shutdown().await();
      }
      if (slave != null) {
        slave.shutdown().await();
      }
    }
  }
View Full Code Here

  public static PeerDHT[] createNodesWithShortId(int nrOfPeers, Random rnd, int port, AutomaticFuture automaticFuture) throws Exception {
    if (nrOfPeers < 1) {
      throw new IllegalArgumentException("Cannot create less than 1 peer");
    }
    final Peer master;
    PeerDHT[] peers = new PeerDHT[nrOfPeers];
    if (automaticFuture != null) {
      master = new PeerBuilder(new Number160(1111))
              .ports(port).start().addAutomaticFuture(automaticFuture);
      peers[0] = new PeerBuilderDHT(master).start();
    } else {
      master = new PeerBuilder(new Number160(1111)).ports(port)
              .start();
      peers[0] = new PeerBuilderDHT(master).start();
    }

    for (int i = 1; i < nrOfPeers; i++) {
      if (automaticFuture != null) {
        Peer peer = new PeerBuilder(new Number160(i))
                .masterPeer(master).start().addAutomaticFuture(automaticFuture);
        peers[i] = new PeerBuilderDHT(peer).start();
      } else {
        Peer peer = new PeerBuilder(new Number160(i))
                .masterPeer(master).start();
        peers[i] = new PeerBuilderDHT(peer).start();
      }
    }
    System.err.println("peers created.");
View Full Code Here

 
  @Test
  public void testSetupRelayPeers() throws Exception {
    final Random rnd = new Random(42);
    final int nrOfNodes = 200;
    Peer master = null;
    Peer unreachablePeer = null;
    try {
      // setup test peers
      Peer[] peers = UtilsNAT.createNodes(nrOfNodes, rnd, 4001);
      master = peers[0];
      UtilsNAT.perfectRouting(peers);
      for (Peer peer : peers) {
        new PeerBuilderNAT(peer).bufferConfiguration(androidConfig).start();
      }

      // Test setting up relay peers
      unreachablePeer = new PeerBuilder(Number160.createHash(rnd.nextInt())).ports(5000).start();

      // find neighbors
      FutureBootstrap futureBootstrap = unreachablePeer.bootstrap().peerAddress(peers[0].peerAddress()).start();
      futureBootstrap.awaitUninterruptibly();
      Assert.assertTrue(futureBootstrap.isSuccess());

      // setup relay
      PeerNAT uNat = new PeerBuilderNAT(unreachablePeer).relayType(relayType).gcmServerCredentials(gcmServerCredentials).start();
      FutureRelayNAT startRelay = uNat.startRelay(peers[0].peerAddress()).awaitUninterruptibly();
      Assert.assertTrue(startRelay.isSuccess());
      mockGCM(peers, uNat);

      // Check if flags are set correctly
      Assert.assertTrue(unreachablePeer.peerAddress().isRelayed());
      Assert.assertFalse(unreachablePeer.peerAddress().isFirewalledTCP());
      Assert.assertFalse(unreachablePeer.peerAddress().isFirewalledUDP());
    } finally {
      if (master != null) {
        master.shutdown().await();
      }
      if (unreachablePeer != null) {
        unreachablePeer.shutdown().await();
      }
    }
  }
View Full Code Here

TOP

Related Classes of net.tomp2p.p2p.Peer

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.