Package net.tomp2p.p2p

Examples of net.tomp2p.p2p.Peer


  @Test
  public void testBoostrap() throws Exception {
    final Random rnd = new Random(42);
    final int nrOfNodes = 10;
    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();
      PeerAddress upa = unreachablePeer.peerBean().serverPeerAddress();
      upa = upa.changeFirewalledTCP(true).changeFirewalledUDP(true);
      unreachablePeer.peerBean().serverPeerAddress(upa);

      // 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).peerMapUpdateInterval(5).start();
      FutureRelayNAT startRelay = uNat.startRelay(peers[0].peerAddress()).awaitUninterruptibly();
      Assert.assertTrue(startRelay.isSuccess());
      mockGCM(peers, uNat);

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

      boolean otherPeersHaveRelay = false;

      for (Peer peer : peers) {
        if (peer.peerBean().peerMap().allOverflow().contains(unreachablePeer.peerAddress())) {
          for (PeerAddress pa : peer.peerBean().peerMap().allOverflow()) {
            if (pa.peerId().equals(unreachablePeer.peerID())) {
              if (pa.peerSocketAddresses().size() > 0) {
                otherPeersHaveRelay = true;
              }
              System.err.println("-->" + pa.peerSocketAddresses());
              System.err.println("relay=" + pa.isRelayed());
            }
          }
          System.err.println("check 1! " + peer.peerAddress());
        }

      }
      Assert.assertTrue(otherPeersHaveRelay);

      // wait for maintenance
      Thread.sleep(uNat.peerMapUpdateInterval() * 1000);

      boolean otherPeersMe = false;
      for (Peer peer : peers) {
        if (peer.peerBean().peerMap().all().contains(unreachablePeer.peerAddress())) {
          System.err.println("check 2! " + peer.peerAddress());
          otherPeersMe = true;
        }
      }
      Assert.assertTrue(otherPeersMe);
    } finally {
      if (master != null) {
        master.shutdown().await();
      }
      if (unreachablePeer != null) {
        unreachablePeer.shutdown().await();
      }
    }
  }
View Full Code Here


   */
  @Test
  public void testRelaySendDirect() throws Exception {
    final Random rnd = new Random(42);
    final int nrOfNodes = 100;
    Peer master = null;
    Peer unreachablePeer1 = null;
    Peer unreachablePeer2 = 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
      unreachablePeer1 = new PeerBuilder(Number160.createHash(rnd.nextInt())).ports(13337).start();
      PeerNAT uNat1 = new PeerBuilderNAT(unreachablePeer1).relayType(relayType).gcmServerCredentials(gcmServerCredentials).start();
      FutureRelayNAT fbn = uNat1.startRelay(master.peerAddress());
      fbn.awaitUninterruptibly();
      Assert.assertTrue(fbn.isSuccess());
      mockGCM(peers, uNat1);

           System.out.print("Send direct message to unreachable peer " + unreachablePeer1.peerAddress());
            final String request = "Hello ";
            final String response = "World!";
           
            final AtomicBoolean test1 = new AtomicBoolean(false);
            final AtomicBoolean test2 = new AtomicBoolean(false);
           
            //final Peer unr = unreachablePeer;
            unreachablePeer1.objectDataReply(new ObjectDataReply() {
                public Object reply(PeerAddress sender, Object obj) throws Exception {
                  test1.set(obj.equals(request));
                    Assert.assertEquals(request.toString(), request);
                    test2.set(sender.inetAddress().toString().contains("0.0.0.0"));
                    System.err.println("Got sender:"+sender);
                   
                    //this is too late here, so we cannot test this here
                    //Collection<PeerSocketAddress> list = new ArrayList<PeerSocketAddress>();
                    //list.add(new PeerSocketAddress(InetAddress.getByName("101.101.101.101"), 101, 101));
                    //unr.peerBean().serverPeerAddress(unr.peerBean().serverPeerAddress().changePeerSocketAddresses(list));
                   
                    return response;
                }
            });
           
           
            unreachablePeer2 = new PeerBuilder(Number160.createHash(rnd.nextInt())).ports(13338).start();
      PeerNAT uNat2 = new PeerBuilderNAT(unreachablePeer2).relayType(relayType).gcmServerCredentials(gcmServerCredentials).start();
      fbn = uNat2.startRelay(peers[42].peerAddress());

     
      fbn.awaitUninterruptibly();
      Assert.assertTrue(fbn.isSuccess());
      mockGCM(peers, uNat2);

      //prevent rcon
      Collection<PeerSocketAddress> list = unreachablePeer2.peerBean().serverPeerAddress().peerSocketAddresses();
      if(list.size() >= relayType.maxRelayCount()) {
        Iterator<PeerSocketAddress> iterator = list.iterator();
        iterator.next();
        iterator.remove();
      }
      list.add(new PeerSocketAddress(InetAddress.getByName("10.10.10.10"), 10, 10));
      unreachablePeer2.peerBean().serverPeerAddress(unreachablePeer2.peerBean().serverPeerAddress().changePeerSocketAddresses(list));
           
      System.err.println("unreachablePeer1: " + unreachablePeer1.peerAddress());
      System.err.println("unreachablePeer2: "+unreachablePeer2.peerAddress());
     
            FutureDirect fd = unreachablePeer2.sendDirect(unreachablePeer1.peerAddress()).object(request).start().awaitUninterruptibly();
            System.err.println("got msg from: "+fd.futureResponse().responseMessage().sender());
            Assert.assertEquals(response, fd.object());
            //make sure we did not receive it from the unreachable peer with port 13337
            //System.err.println(fd.getWrappedFuture());
            //TODO: this case is true for relay
            //Assert.assertEquals(fd.wrappedFuture().responseMessage().senderSocket().getPort(), 4001);
            //TODO: this case is true for rcon
            Assert.assertEquals(unreachablePeer1.peerID(), fd.wrappedFuture().responseMessage().sender().peerId());
           
            Assert.assertTrue(test1.get());
            Assert.assertFalse(test2.get());
            Assert.assertEquals(relayType.maxRelayCount(), fd.futureResponse().responseMessage().sender().peerSocketAddresses().size());
    } finally {
      if (unreachablePeer1 != null) {
        unreachablePeer1.shutdown().await();
      }
      if (unreachablePeer2 != null) {
        unreachablePeer2.shutdown().await();
      }
      if (master != null) {
        master.shutdown().await();
      }
    }
View Full Code Here

   */
  @Test
  public void testRelaySendDirect2() throws Exception {
    final Random rnd = new Random(42);
    final int nrOfNodes = 100;
    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();
      }

      // setup relay
      unreachablePeer = new PeerBuilder(Number160.createHash(rnd.nextInt())).ports(13337).start();
      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);

      System.out.print("Send direct message to unreachable peer");
      final String request = "Hello ";
      final String response = "World!";

      unreachablePeer.objectDataReply(new ObjectDataReply() {
        public Object reply(PeerAddress sender, Object request) throws Exception {
          Assert.assertEquals(request.toString(), request);
          return response;
        }
      });

      FutureDirect fd = peers[42].sendDirect(unreachablePeer.peerAddress()).object(request).start()
          .awaitUninterruptibly();
      Assert.assertEquals(response, fd.object());
     
      // make sure we did receive it from the unreachable peer with id
      Assert.assertEquals(unreachablePeer.peerID(), fd.wrappedFuture().responseMessage().sender().peerId());
    } finally {
      if (unreachablePeer != null) {
        unreachablePeer.shutdown().await();
      }
      if (master != null) {
        master.shutdown().await();
      }
    }
View Full Code Here

   */
  @Test
  public void testRelaySendDirect3() throws Exception {
    final Random rnd = new Random(42);
    final int nrOfNodes = 100;
    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();
      }
     
      // setup relay
      unreachablePeer = new PeerBuilder(Number160.createHash(rnd.nextInt())).ports(13337).start();
      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);

      System.out.print("Send direct message from unreachable peer");
      final String request = "Hello ";
      final String response = "World!";

      Peer receiver = peers[42];
      receiver.objectDataReply(new ObjectDataReply() {
        public Object reply(PeerAddress sender, Object request) throws Exception {
          Assert.assertEquals(request.toString(), request);
          return response;
        }
      });

      FutureDirect fd = unreachablePeer.sendDirect(receiver.peerAddress()).object(request).start()
          .awaitUninterruptibly();
      Assert.assertEquals(response, fd.object());
     
      // make sure we did receive it from the unreachable peer with id
      Assert.assertEquals(receiver.peerID(), fd.wrappedFuture().responseMessage().sender().peerId());
    } finally {
      if (unreachablePeer != null) {
        unreachablePeer.shutdown().await();
      }
      if (master != null) {
View Full Code Here

  @Test
  public void testRelayRouting() throws Exception {
    final Random rnd = new Random(42);
    final int nrOfNodes = 8; // test only works if total nr of nodes is < 8
    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(13337).start();
      PeerAddress upa = unreachablePeer.peerBean().serverPeerAddress();
      upa = upa.changeFirewalledTCP(true).changeFirewalledUDP(true);
      unreachablePeer.peerBean().serverPeerAddress(upa);

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

      // setup relay and lower the update interval to 5s
      PeerNAT uNat = new PeerBuilderNAT(unreachablePeer).relayType(relayType).gcmServerCredentials(gcmServerCredentials).peerMapUpdateInterval(5).start();
      FutureRelayNAT startRelay = uNat.startRelay(peers[0].peerAddress());
      FutureRelay frNAT = startRelay.awaitUninterruptibly().futureRelay();
      Assert.assertTrue(startRelay.isSuccess());
      mockGCM(peers, uNat);

      PeerAddress relayPeer = frNAT.relays().iterator().next().relayAddress();
      Peer found = null;
      for (Peer p : peers) {
        if (p.peerAddress().equals(relayPeer)) {
          found = p;
          break;
        }
View Full Code Here

    }
 
  @Test
  public void testVeryFewPeers() throws Exception {
    final Random rnd = new Random(42);
    Peer master = null;
    Peer unreachablePeer = null;
    try {
      Peer[] peers = UtilsNAT.createNodes(3, rnd, 4000);
      master = peers[0]; // the relay peer
      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(13337).start();
      PeerNAT uNat = new PeerBuilderNAT(unreachablePeer).relayType(relayType).gcmServerCredentials(gcmServerCredentials).start();
      FutureRelayNAT fbn = uNat.startRelay(master.peerAddress()).awaitUninterruptibly();
      Assert.assertTrue(fbn.isSuccess());
      mockGCM(peers, uNat);

    } 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.