Examples of PeerDHT


Examples of net.tomp2p.dht.PeerDHT

  }

  @Test
  public void testInfoMessageNOTSAME() throws IOException, InterruptedException {

    PeerDHT sender = null;
    PeerDHT receiver = null;
    try {
      final AtomicReference<DataMap> ref = new AtomicReference<DataMap>();

      sender = new PeerBuilderDHT(new PeerBuilder(new Number160(3)).ports(4003).start()).start();

      receiver = new PeerBuilderDHT(new PeerBuilder(new Number160(4)).ports(4004).start()).start();

      final PeerSync senderSync = new PeerSync(sender, 5);
      new PeerSync(receiver, 5);

      final Number160 locationKey = new Number160(300);
      final Number160 domainKey = Number160.ZERO;
      final Number160 contentKey = Number160.ZERO;

      final String value = "Test";
      final String value1 = "Test1";

      sender.put(locationKey).data(new Data(value)).start().awaitUninterruptibly();
      receiver.put(locationKey).data(new Data(value1)).start().awaitUninterruptibly();

      HashMap<Number640, Data> map = new HashMap<Number640, Data>();
      final DataMap dataMap = new DataMap(map);
      map.put(new Number640(locationKey, domainKey, contentKey, Number160.ZERO), new Data("Test"));

      sender.peer().bootstrap().peerAddress(receiver.peerAddress()).start().awaitUninterruptibly();

      final CountDownLatch latch = new CountDownLatch(1);
      final PeerAddress receiverAddress = receiver.peerAddress();

      FutureChannelCreator futureChannelCreator = sender.peer().connectionBean().reservation().create(0, 1);
      futureChannelCreator.addListener(new BaseFutureAdapter<FutureChannelCreator>() {
        @Override
        public void operationComplete(final FutureChannelCreator future2) throws Exception {
          if (future2.isSuccess()) {
            SyncBuilder synchronizationBuilder = new SyncBuilder(senderSync, receiverAddress, 5);
            synchronizationBuilder.dataMap(dataMap);
            final FutureResponse futureResponse = senderSync.syncRPC().infoMessage(receiverAddress,
                    synchronizationBuilder, future2.channelCreator());
            futureResponse.addListener(new BaseFutureAdapter<FutureResponse>() {
              @Override
              public void operationComplete(FutureResponse future) throws Exception {
                ref.set(future.responseMessage().dataMap(0));
                Utils.addReleaseListener(future2.channelCreator(), futureResponse);
                latch.countDown();
              }
            });
          }
        }
      });

      latch.await();
      assertEquals(1, ref.get().size());
      assertEquals(100, ref.get().dataMap().values().iterator().next().toBytes().length);
      assertEquals(false, ref.get().dataMap().values().iterator().next().isFlag1());
      assertEquals(false, ref.get().dataMap().values().iterator().next().isFlag2());

    } finally {
      if (sender != null) {
        sender.shutdown().await();
      }
      if (receiver != null) {
        receiver.shutdown().await();
      }
    }
  }
View Full Code Here

Examples of net.tomp2p.dht.PeerDHT

    }
  }

  @Test
  public void testSyncMessageDiff() throws IOException, InterruptedException, ClassNotFoundException {
    PeerDHT sender = null;
    PeerDHT receiver = null;
    try {
      sender = new PeerBuilderDHT(new PeerBuilder(new Number160(3)).ports(4003).start()).start();
      receiver = new PeerBuilderDHT(new PeerBuilder(new Number160(4)).ports(4004).start()).start();

      final PeerSync senderSync = new PeerSync(sender, 5);
      new PeerSync(receiver, 5);

      final Number160 locationKey = new Number160(500);
      final Number160 domainKey = Number160.ZERO;
      final Number160 contentKey = Number160.ZERO;
      Number640 key = new Number640(locationKey, domainKey, contentKey, Number160.ZERO);
      final String newValue = "Test1Test2Test3Test4";
      final String oldValue = "test0Test2test0Test4";

      Data test1 = new Data(newValue.getBytes());
      Data test2 = new Data(oldValue.getBytes());

      sender.put(locationKey).data(test1).start().awaitUninterruptibly();
      receiver.put(locationKey).data(test2).start().awaitUninterruptibly();

      FutureDone<SyncStat> future = senderSync.synchronize(receiver.peerAddress()).key(key)
              .start();
      future.awaitUninterruptibly();

      System.err.println(future.object().toString());
      Data data = receiver.storageLayer()
              .get(new Number640(locationKey, domainKey, contentKey, Number160.ZERO));
      byte[] reconstructedValue = data.toBytes();

      assertArrayEquals(newValue.getBytes(), reconstructedValue);
      Assert.assertEquals(20, ((SyncStat)future.object()).dataOrig());
      Assert.assertEquals(26, ((SyncStat)future.object()).dataCopy());
    } finally {
      if (sender != null) {
        sender.shutdown().awaitUninterruptibly();
      }
      if (receiver != null) {
        receiver.shutdown().awaitUninterruptibly();
      }
    }
  }
View Full Code Here

Examples of net.tomp2p.dht.PeerDHT

    }
  }
 
  @Test
  public void testSyncMessageDiff2() throws IOException, InterruptedException, ClassNotFoundException {
    PeerDHT sender = null;
    PeerDHT receiver = null;
    try {
      sender = new PeerBuilderDHT(new PeerBuilder(new Number160(3)).ports(4003).start()).start();
      receiver = new PeerBuilderDHT(new PeerBuilder(new Number160(4)).ports(4004).start()).start();

      final PeerSync senderSync = new PeerSync(sender, 32);
      new PeerSync(receiver, 32);
     

      final Number160 locationKey = new Number160(500);
      final Number160 domainKey = Number160.ZERO;
      final Number160 contentKey = Number160.ZERO;
      Number640 key = new Number640(locationKey, domainKey, contentKey, Number160.ZERO);
      final String newValue = "TomP2P 5 is around the corner with several new additions. One of the larger changes is the support for relays as described here. Check out the latest alpha version.";
      final String oldValue = "TomP2P 5 is around the corner with several new additions! One of the larger changes is the support for relays as described here. Check out the latest alpha version.";

      Data test1 = new Data(newValue.getBytes());
      Data test2 = new Data(oldValue.getBytes());

      sender.put(locationKey).data(test1).start().awaitUninterruptibly();
      receiver.put(locationKey).data(test2).start().awaitUninterruptibly();

      FutureDone<SyncStat> future = senderSync.synchronize(receiver.peerAddress()).key(key)
              .start();
      future.awaitUninterruptibly();

      System.err.println(future.object().toString());
      Data data = receiver.storageLayer()
              .get(new Number640(locationKey, domainKey, contentKey, Number160.ZERO));
      byte[] reconstructedValue = data.toBytes();

      assertArrayEquals(newValue.getBytes(), reconstructedValue);
      Assert.assertEquals(164, ((SyncStat)future.object()).dataOrig());
      Assert.assertEquals(56, ((SyncStat)future.object()).dataCopy());
    } finally {
      if (sender != null) {
        sender.shutdown().awaitUninterruptibly();
      }
      if (receiver != null) {
        receiver.shutdown().awaitUninterruptibly();
      }
    }
  }
View Full Code Here

Examples of net.tomp2p.dht.PeerDHT

    }
  }

  @Test
  public void testSyncMessageSame() throws IOException, InterruptedException, ClassNotFoundException {
    PeerDHT sender = null;
    PeerDHT receiver = null;
    try {
      sender = new PeerBuilderDHT(new PeerBuilder(new Number160(3)).ports(4003).start()).start();
      receiver = new PeerBuilderDHT(new PeerBuilder(new Number160(4)).ports(4004).start()).start();
     
      final PeerSync senderSync = new PeerSync(sender, 5);
      new PeerSync(receiver, 5);

      final Number160 locationKey = new Number160(500);
      final Number160 domainKey = Number160.ZERO;
      final Number160 contentKey = Number160.ZERO;
      Number640 key = new Number640(locationKey, domainKey, contentKey, Number160.ZERO);
      final String newValue = "Test1Test2Test3Test4";
      final String oldValue = "Test1Test2Test3Test4";

      Data test1 = new Data(newValue.getBytes());
      Data test2 = new Data(oldValue.getBytes());

      sender.put(locationKey).data(test1).start().awaitUninterruptibly();
      receiver.put(locationKey).data(test2).start().awaitUninterruptibly();

      FutureDone<SyncStat> future = senderSync.synchronize(receiver.peerAddress()).key(key)
              .start();
      future.awaitUninterruptibly();

      System.err.println(future.object().toString());
      Data data = receiver.storageLayer()
              .get(new Number640(locationKey, domainKey, contentKey, Number160.ZERO));
      byte[] reconstructedValue = data.toBytes();

      assertArrayEquals(newValue.getBytes(), reconstructedValue);
     
      Assert.assertEquals(0, ((SyncStat)future.object()).dataOrig());
      Assert.assertEquals(0, ((SyncStat)future.object()).dataCopy());
    } finally {
      if (sender != null) {
        sender.shutdown().awaitUninterruptibly();
      }
      if (receiver != null) {
        receiver.shutdown().awaitUninterruptibly();
      }
    }
  }
View Full Code Here

Examples of net.tomp2p.dht.PeerDHT

    }
  }

  @Test
  public void testSyncMessageCopy() throws IOException, InterruptedException, ClassNotFoundException {
    PeerDHT sender = null;
    PeerDHT receiver = null;
    try {
      sender = new PeerBuilderDHT(new PeerBuilder(new Number160(3)).ports(4003).start()).start();
      receiver = new PeerBuilderDHT(new PeerBuilder(new Number160(4)).ports(4004).start()).start();

      final PeerSync senderSync = new PeerSync(sender, 5);
      new PeerSync(receiver, 5);

      final Number160 locationKey = new Number160(600);
      final Number160 domainKey = Number160.ZERO;
      final Number160 contentKey = Number160.ZERO;
      Number640 key = new Number640(locationKey, domainKey, contentKey, Number160.ZERO);
      final String newValue = "Test1Test2Test3Test4";

      Data test1 = new Data(newValue.getBytes());

      sender.put(locationKey).data(test1).start().awaitUninterruptibly();

      FutureDone<SyncStat> future = senderSync.synchronize(receiver.peerAddress()).key(key)
              .start();
      future.awaitUninterruptibly();

      System.err.println(future.object().toString());

      Data data = receiver.storageLayer()
              .get(new Number640(locationKey, domainKey, contentKey, Number160.ZERO));
      byte[] reconstructedValue = data.toBytes();
      assertArrayEquals(newValue.getBytes(), reconstructedValue);
      Assert.assertEquals(20, ((SyncStat)future.object()).dataOrig());
      Assert.assertEquals(20, ((SyncStat)future.object()).dataCopy());
    } finally {
      if (sender != null) {
        sender.shutdown().awaitUninterruptibly();
      }
      if (receiver != null) {
        receiver.shutdown().awaitUninterruptibly();
      }
    }
  }
View Full Code Here

Examples of net.tomp2p.dht.PeerDHT

    private static final int PORT = 4001;
    private static final int NR_PEERS = 100;
   
    @Test
    public void testDataloss() throws IOException, InterruptedException {
        PeerDHT p1 = null;
        PeerDHT p2 = null;
        PeerDHT p3 = null;
        try {
           
            p1 = new PeerBuilderDHT(new PeerBuilder(Number160.createHash("111")).ports(PORT)
                    .start()).start();
            p2 = new PeerBuilderDHT(new PeerBuilder(Number160.createHash("22")).ports(PORT+1)
                    .start()).start();
            p3 = new PeerBuilderDHT(new PeerBuilder(Number160.createHash("33")).ports(PORT+2)
                    .start()).start();
           
            IndirectReplication i1 = new IndirectReplication(p1);
            i1.start();
            IndirectReplication i2 = new IndirectReplication(p2);
            i2.start();
            IndirectReplication i3 = new IndirectReplication(p3);
            i3.start();
           
            Utils2.perfectRouting(p1, p2, p3);
            Number160 locationKey = Number160.createHash("test1");
            FuturePut fp = p2.put(locationKey).data(new Data("hallo")).requestP2PConfiguration(new RequestP2PConfiguration(2, 10, 0)).start();
            fp.awaitUninterruptibly();
            getReplicasCount(locationKey, p1, p2, p3);
            //
            p3.peer().announceShutdown().start().awaitUninterruptibly();
            p3.shutdown().awaitUninterruptibly();
            Thread.sleep(500);
            p3 = new PeerBuilderDHT(new PeerBuilder(locationKey).ports(PORT+3).start()).start();
            i3 = new IndirectReplication(p3);
            i3.start();
           
            System.out.println("now we add a peer that matches perfectly the key " + locationKey+ ". This will now become the responsible peer");
            p3.peer().bootstrap().peerAddress(p1.peerAddress()).start().awaitUninterruptibly();
            getReplicasCount(locationKey, p1, p2, p3);
            Thread.sleep(500);
            p1.peer().announceShutdown().start().awaitUninterruptibly();
            p1.shutdown().awaitUninterruptibly();
            p2.peer().announceShutdown().start().awaitUninterruptibly();
            p2.shutdown().awaitUninterruptibly();
            Thread.sleep(500);
            int count = getReplicasCount(locationKey, p1, p2, p3);
            Assert.assertEquals(1, count);
           
        } finally {
            if (p1 != null && !p1.peer().isShutdown()) {
                p1.shutdown().awaitUninterruptibly();
            }
            if (p2 != null && !p2.peer().isShutdown()) {
                p2.shutdown().awaitUninterruptibly();
            }
            if (p3 != null && !p3.peer().isShutdown()) {
                p3.shutdown().awaitUninterruptibly();
            }
        }
    }
View Full Code Here

Examples of net.tomp2p.dht.PeerDHT

        }
    }
   
    @Test
    public void testDataloss2() throws IOException, InterruptedException {
      PeerDHT p1 = null;
      PeerDHT p2 = null;
      PeerDHT p3 = null;
        try {
           
            p1 = new PeerBuilderDHT(new PeerBuilder(Number160.createHash("111")).ports(PORT)
                    .start()).start();
            p2 = new PeerBuilderDHT(new PeerBuilder(Number160.createHash("22")).ports(PORT+1)
                    .start()).start();
            p3 = new PeerBuilderDHT(new PeerBuilder(Number160.createHash("33")).ports(PORT+2)
                    .start()).start();
           
            IndirectReplication i1 = new IndirectReplication(p1);
            i1.start();
            IndirectReplication i2 = new IndirectReplication(p2);
            i2.start();
            IndirectReplication i3 = new IndirectReplication(p3);
            i3.start();
           
           
           
            Utils2.perfectRouting(p1, p2, p3);
            Number160 locationKey = Number160.createHash("test1");
            FuturePut fp = p2.put(locationKey).data(new Data("hallo")).requestP2PConfiguration(new RequestP2PConfiguration(2, 10, 0)).start();
            fp.awaitUninterruptibly();
            getReplicasCount(locationKey, p1, p2, p3);
           
            p3.peer().announceShutdown().start().awaitUninterruptibly();
            p3.shutdown().awaitUninterruptibly();
            p1.peer().announceShutdown().start().awaitUninterruptibly();
            p1.shutdown().awaitUninterruptibly();
            Thread.sleep(500);
            getReplicasCount(locationKey, p1, p2, p3);
           
            //
           
            p3 = new PeerBuilderDHT(new PeerBuilder(locationKey).ports(PORT+3).start()).start();
            i3 = new IndirectReplication(p3);
            i3.start();
           
            System.out.println("now we add a peer that matches perfectly the key " + locationKey+ ". This will now become the responsible peer");
            p3.peer().bootstrap().peerAddress(p2.peerAddress()).start().awaitUninterruptibly();
           
            p1 = new PeerBuilderDHT(new PeerBuilder(Number160.createHash("1111")).ports(PORT+4)
                    .start()).start();
            i1 = new IndirectReplication(p1);
            i1.start();
           
            p1.peer().bootstrap().peerAddress(p2.peerAddress()).start().awaitUninterruptibly();
           
            getReplicasCount(locationKey, p1, p2, p3);
            Thread.sleep(500);
           
            int count = getReplicasCount(locationKey, p1, p2, p3);
            Assert.assertEquals(2, count);
           
        } finally {
          if (p1 != null && !p1.peer().isShutdown()) {
                p1.shutdown().awaitUninterruptibly();
            }
            if (p2 != null && !p2.peer().isShutdown()) {
                p2.shutdown().awaitUninterruptibly();
            }
            if (p3 != null && !p3.peer().isShutdown()) {
                p3.shutdown().awaitUninterruptibly();
            }
        }
    }
View Full Code Here

Examples of net.tomp2p.dht.PeerDHT

    }
   
    @Test
    public void testSimpleIndirectReplicationForward() throws Exception {
        final Random rnd = new Random(42L);
        PeerDHT master = null;
        try {
            // setup
          PeerDHT[] peers = Utils2.createNodes(2, rnd, PORT, new AutomaticFuture() {
                @Override
                public void futureCreated(BaseFuture future) {
                    System.err.println("future created "+ future);
                }
            }, true);
            master = peers[0];
            //print out info
            System.err.println("looking for "+searchPeer(Number160.createHash("2"), peers).peerAddress()+" in ");
            for(PeerDHT peer:peers) {
                System.err.println(peer.peerAddress());
            }
            //store data, the two peers do not know each other
            Data data = new Data("Test");
            FuturePut futureDHT = master.put(Number160.createHash("2")).data(data).start();
            futureDHT.awaitUninterruptibly();
            futureDHT.futureRequests().awaitUninterruptibly();
            //now, do the routing, so that each peers know each other. The content should be moved
            Assert.assertEquals(false, peers[1].storageLayer().contains(new Number640(Number160.createHash("2"), Number160.ZERO, Number160.ZERO, Number160.ZERO)));
            Utils2.perfectRouting(peers);
            //we should see now the forward replication
            Thread.sleep(1000);
            //test it
            Assert.assertEquals(true, peers[1].storageLayer().contains(new Number640(Number160.createHash("2"), Number160.ZERO, Number160.ZERO, Number160.ZERO)));
           
        } finally {
            if (master != null) {
                master.shutdown().awaitUninterruptibly();
            }
        }
    }
View Full Code Here

Examples of net.tomp2p.dht.PeerDHT

     *
     * @throws Exception .
     */
    @Test
    public void testIndirectReplicationForward() throws Exception {
      PeerDHT master = null;
        try {
            // setup
          PeerDHT[] peers = Utils2.createNodes(NR_PEERS, RND2, PORT, new AutomaticFuture() {
                @Override
                public void futureCreated(BaseFuture future) {
                    System.err.println("future created "+ future);
                }
            }, true);
            master = peers[0];
            Number160 locationKey = new Number160(RND2);
            master.peerBean().peerMap();
            // closest
            TreeSet<PeerAddress> tmp = new TreeSet<PeerAddress>(PeerMap.createComparator(locationKey));
            tmp.add(master.peerAddress());
            for (int i = 0; i < peers.length; i++) {
                tmp.add(peers[i].peerAddress());
            }
            PeerAddress closest = tmp.iterator().next();
            System.err.println("closest to " + locationKey + " is " + closest);
            // store
            Data data = new Data("Test");
            FuturePut futureDHT = master.put(locationKey).data(data).start();
            futureDHT.awaitUninterruptibly();
            futureDHT.futureRequests().awaitUninterruptibly();
            Assert.assertEquals(true, futureDHT.isSuccess());
            List<FutureBootstrap> tmp2 = new ArrayList<FutureBootstrap>();
            Utils2.perfectRouting(peers);
            //for (int i = 0; i < peers.length; i++) {
            //    if (peers[i] != master) {
            //        tmp2.add(peers[i].bootstrap().setPeerAddress(master.getPeerAddress()).start());
            //    }
            //}
            for (FutureBootstrap fm : tmp2) {
                fm.awaitUninterruptibly();
                Assert.assertEquals(true, fm.isSuccess());
            }
           
            // wait for the replication
            PeerDHT peerClose = searchPeer(closest, peers);
            int i = 0;
            // wait for 2.5 sec
            final int tests = 10;
            final int wait = 2500;
            while (!peerClose.storageLayer()
                    .contains(new Number640(locationKey, Number160.ZERO, Number160.ZERO, Number160.ZERO))) {
                Thread.sleep(wait / tests);
                i++;
                if (i > tests) {
                    break;
                }
            }
            Assert.assertEquals(true, peerClose.storageLayer()
                    .contains(new Number640(locationKey, Number160.ZERO, Number160.ZERO, Number160.ZERO)));
        } finally {
            if (master != null) {
                master.shutdown().awaitUninterruptibly();
            }
View Full Code Here

Examples of net.tomp2p.dht.PeerDHT

  }

  @Test
  public void testNoRelayDHT() throws Exception {
    final Random rnd = new Random(42);
    PeerDHT master = null;
    PeerDHT slave = null;
    try {
      PeerDHT[] peers = UtilsNAT.createNodesDHT(10, rnd, 4000);
      master = peers[0]; // the relay peer
      UtilsNAT.perfectRouting(peers);
      for (PeerDHT peer : peers) {
        new PeerBuilderNAT(peer.peer()).bufferConfiguration(androidConfig).start();
      }
      PeerMapConfiguration pmc = new PeerMapConfiguration(Number160.createHash(rnd.nextInt()));
      slave = new PeerBuilderDHT(new PeerBuilder(Number160.ONE).peerMap(new PeerMap(pmc)).ports(13337).start())
          .start();
      printMapStatus(slave, peers);
      FuturePut futurePut = peers[8].put(slave.peerID()).data(new Data("hello")).start().awaitUninterruptibly();
      futurePut.futureRequests().awaitUninterruptibly();
      Assert.assertTrue(futurePut.isSuccess());
      Assert.assertFalse(slave.storageLayer().contains(
          new Number640(slave.peerID(), Number160.ZERO, Number160.ZERO, Number160.ZERO)));
      System.err.println("DONE!");
    } finally {
      if (master != null) {
        master.shutdown().await();
      }
      if (slave != null) {
        slave.shutdown().await();
      }
    }
  }
View Full Code Here
TOP
Copyright © 2018 www.massapi.com. 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.