Examples of PeerDHT


Examples of net.tomp2p.dht.PeerDHT

        KeyPairGenerator gen = KeyPairGenerator.getInstance( "DSA" );
        KeyPair pair1 = gen.generateKeyPair();
        KeyPair pair2 = gen.generateKeyPair();
        KeyPair pair3 = gen.generateKeyPair();
        final Number160 peer2Owner = Utils.makeSHAHash( pair2.getPublic().getEncoded() );
        PeerDHT peer1 = new PeerBuilderDHT(new PeerBuilder( pair1 ).ports( 4001 ).start()).start();
        PeerDHT peer2 = new PeerBuilderDHT(new PeerBuilder( pair2 ).ports( 4002 ).start()).start();
        PeerDHT peer3 = new PeerBuilderDHT(new PeerBuilder( pair3 ).ports( 4003 ).start()).start();
        PeerDHT[] peers = new PeerDHT[] { peer1, peer2, peer3 };
        ExampleUtils.bootstrap( peers );
        setProtection( peers, ProtectionEnable.ALL, ProtectionMode.MASTER_PUBLIC_KEY );
        // peer 1 stores "test" in the domain key of owner peer 2
        FuturePut futurePut =
            peer1.put( Number160.ONE ).data( new Data( "test" ) ).domainKey( peer2Owner ).protectDomain().start();
        futurePut.awaitUninterruptibly();
        // peer 2 did not claim this domain, so we stored it
        System.out.println( "stored: " + futurePut.isSuccess() + " -> because no one claimed this domain" );
        // peer 3 want to store something
        futurePut =
            peer3.put( Number160.ONE ).data( new Data( "hello" ) ).domainKey( peer2Owner ).protectDomain().start();
        futurePut.awaitUninterruptibly();
        System.out.println( "stored: " + futurePut.isSuccess() + " -> becaues peer1 already claimed this domain" );
        // peer 2 claims this domain
        futurePut =
            peer2.put( Number160.ONE ).data( new Data( "MINE!" ) ).domainKey( peer2Owner ).protectDomain().start();
View Full Code Here

Examples of net.tomp2p.dht.PeerDHT

        KeyPairGenerator gen = KeyPairGenerator.getInstance( "DSA" );
        KeyPair pair1 = gen.generateKeyPair();
        KeyPair pair2 = gen.generateKeyPair();
        KeyPair pair3 = gen.generateKeyPair();
        final Number160 peer2Owner = Utils.makeSHAHash( pair2.getPublic().getEncoded() );
        PeerDHT peer1 = new PeerBuilderDHT(new PeerBuilder( pair1 ).ports( 4001 ).start()).start();
        PeerDHT peer2 = new PeerBuilderDHT(new PeerBuilder( pair2 ).ports( 4002 ).start()).start();
        PeerDHT peer3 = new PeerBuilderDHT(new PeerBuilder( pair3 ).ports( 4003 ).start()).start();
        PeerDHT[] peers = new PeerDHT[] { peer1, peer2, peer3 };
        ExampleUtils.bootstrap( peers );
        setProtection( peers, ProtectionEnable.NONE, ProtectionMode.MASTER_PUBLIC_KEY );
        // peer 1 stores "test" in the domain key of owner peer 2
        FuturePut futurePut =
            peer1.put( Number160.ONE ).data( new Data( "test" ) ).protectDomain().domainKey( peer2Owner ).start();
        futurePut.awaitUninterruptibly();
        // peer 2 did not claim this domain, so we stored it
        System.out.println( "stored: " + futurePut.isSuccess()
            + " -> because no one can claim domains except the owner, storage ok but no protection" );
        // peer 3 want to store something
        futurePut =
            peer3.put( Number160.ONE ).data( new Data( "hello" ) ).protectDomain().domainKey( peer2Owner ).start();
        futurePut.awaitUninterruptibly();
        System.out.println( "stored: " + futurePut.isSuccess()
            + " -> because no one can claim domains except the owner, storage ok but no protection" );
        // peer 2 claims this domain
        futurePut =
            peer2.put( Number160.ONE ).data( new Data( "MINE!" ) ).protectDomain().domainKey( peer2Owner ).start();
        futurePut.awaitUninterruptibly();
        System.out.println( "stored: " + futurePut.isSuccess() + " -> becaues peer2 is the owner" );
        // get the data!
        FutureGet futureGet = peer1.get( Number160.ONE ).domainKey( peer2Owner ).start();
        futureGet.awaitUninterruptibly();
        System.out.println( "we got " + futureGet.data().object() );
        futurePut = peer3.put( Number160.ONE ).domainKey( peer2Owner ).data( new Data( "hello" ) ).start();
        futurePut.awaitUninterruptibly();
        System.out.println( "stored: " + futurePut.isSuccess() + " -> because this domain is claimed by peer2" );
        shutdown( peers );
    }
View Full Code Here

Examples of net.tomp2p.dht.PeerDHT

     */
    @Test
    public void testResponsibility0Root2() throws Exception {
        final Random rnd = new Random(42L);
        final int port = 8000;
        PeerDHT master = null;
        PeerDHT slave1 = null;
        PeerDHT slave2 = null;
        ChannelCreator cc = null;
        try {
            Number160 loc = new Number160(rnd);
            Map<Number160, Data> contentMap = new HashMap<Number160, Data>();
            contentMap.put(Number160.ZERO, new Data("string"));
            final AtomicInteger test1 = new AtomicInteger(0);
            final AtomicInteger test2 = new AtomicInteger(0);
            StorageMemory s1 = new StorageMemory();
            master = new PeerBuilderDHT(new PeerBuilder(new Number160(rnd)).ports(port).start()).storage(s1).start();
            IndirectReplication im = new IndirectReplication(master);
            System.err.println("master is " + master.peerAddress());

            ResponsibilityListener responsibilityListener = new ResponsibilityListener() {
                @Override
                public FutureDone<?> otherResponsible(final Number160 locationKey, final PeerAddress other) {
                    System.err.println("Other peer (" + other + ")is responsible for " + locationKey);
                    test1.incrementAndGet();
                    return null;
                }

                @Override
                public void meResponsible(final Number160 locationKey) {
                    System.err.println("I'm responsible for " + locationKey);
                    test2.incrementAndGet();
                }
                @Override
                public void meResponsible(Number160 locationKey, PeerAddress newPeer) {
                  System.err.println("I sync for " + locationKey + " / ");
                }
            };

            im.addResponsibilityListener(responsibilityListener);
            im.start();

            FutureChannelCreator fcc = master.peer().connectionBean().reservation().create(0, 1);
            fcc.awaitUninterruptibly();
            cc = fcc.channelCreator();

            PutBuilder putBuilder = new PutBuilder(master, loc);
            putBuilder.domainKey(domainKey);
            putBuilder.dataMapContent(contentMap);
            putBuilder.versionKey(Number160.ZERO);

            master.storeRPC().put(master.peerAddress(), putBuilder, cc).awaitUninterruptibly();
            slave1 = new PeerBuilderDHT(new PeerBuilder(new Number160(rnd)).ports(port + 1).start()).start();
            slave2 = new PeerBuilderDHT(new PeerBuilder(new Number160(rnd)).ports(port + 2).start()).start();
            System.err.println("slave1 is " + slave1.peerAddress());
            System.err.println("slave2 is " + slave2.peerAddress());
            // master peer learns about the slave peers
            master.peerBean().peerMap().peerFound(slave1.peerAddress(), null, null);
            master.peerBean().peerMap().peerFound(slave2.peerAddress(), null, null);

            System.err.println("both peers online");
            PeerAddress slaveAddress1 = slave1.peerAddress();
            slave1.shutdown().await();
            master.peerBean().peerMap().peerFailed(slaveAddress1, new PeerException(AbortCause.SHUTDOWN, "shutdown"));

            Assert.assertEquals(1, test1.get());
            Assert.assertEquals(2, test2.get());

            PeerAddress slaveAddress2 = slave2.peerAddress();
            slave2.shutdown().await();
            master.peerBean().peerMap().peerFailed(slaveAddress2, new PeerException(AbortCause.SHUTDOWN, "shutdown"));

            Assert.assertEquals(1, test1.get());
            Assert.assertEquals(3, test2.get());

View Full Code Here

Examples of net.tomp2p.dht.PeerDHT

    try {
      char[] letters = { 'a', 'b', 'c', 'd' };
      StorageMemory storage = new StorageMemory();
      for (int i = 0; i < joins.length; i++) {
        if(i == 0) {
          PeerDHT peer = new PeerBuilderDHT(new PeerBuilder(new Number160("0x" + letters[i])).ports(Ports.DEFAULT_PORT + i)
              .start()).storage(storage).start();
          ind = new IndirectReplication(peer).replicationFactor(replicationFactor).nRoot(nRoot).start();
          peers.add(peer);
        } else {
          PeerDHT peer = new PeerBuilderDHT(new PeerBuilder(new Number160("0x" + letters[i])).ports(Ports.DEFAULT_PORT + i)
              .start()).start();
          new IndirectReplication(peer).replicationFactor(replicationFactor).nRoot(nRoot).start();
          peers.add(peer)
        }
      }
     
      PeerDHT master = peers.get(0);
     
      // attach test listener for test verification
      final AtomicInteger replicateOther = new AtomicInteger(0);
      final AtomicInteger replicateI = new AtomicInteger(0);
      final AtomicInteger replicateWe = new AtomicInteger(0);
      ind.addResponsibilityListener(new ResponsibilityListener() {
        @Override
        public FutureDone<?> otherResponsible(final Number160 locationKey, final PeerAddress other) {
          replicateOther.incrementAndGet();
          return null;
        }

        @Override
        public void meResponsible(final Number160 locationKey) {
          replicateI.incrementAndGet();
        }

        @Override
        public void meResponsible(Number160 locationKey, PeerAddress newPeer) {
          replicateWe.incrementAndGet();
        }
      });
     
      // create test data with given location key
      Map<Number160, Data> dataMap = new HashMap<Number160, Data>();
      dataMap.put(Number160.ZERO, new Data("string"));
      PutBuilder putBuilder = new PutBuilder(master, lKey);
      putBuilder.domainKey(Number160.ZERO);
      putBuilder.dataMapContent(dataMap);
      putBuilder.versionKey(Number160.ZERO);

      FutureChannelCreator fcc = master.peer().connectionBean().reservation().create(0, 1);
      fcc.awaitUninterruptibly();
      cc = fcc.channelCreator();

      // put test data
      FutureResponse fr = master.storeRPC().put(master.peerAddress(), putBuilder, cc);
      fr.awaitUninterruptibly();
      Assert.assertEquals(joins[0][0], replicateI.get());
      replicateI.set(0);
      Assert.assertEquals(joins[0][1], replicateWe.get());
      replicateWe.set(0);
      Assert.assertEquals(joins[0][2], replicateOther.get());
      replicateOther.set(0);
     
      for (int i = 1; i < joins.length; i++) {
        // insert a peer
        master.peerBean().peerMap().peerFound(peers.get(i).peerAddress(), null, null);
        // verify replication notifications
        Assert.assertEquals(joins[i][0], replicateI.get());
        replicateI.set(0);
        Assert.assertEquals(joins[i][1], replicateWe.get());
        replicateWe.set(0);
        Assert.assertEquals(joins[i][2], replicateOther.get());
        replicateOther.set(0);
      }
     
      for (int i = 0; i < leaves.length; i++) {
        // remove a peer
        master.peerBean().peerMap().peerFailed(peers.get(i+1).peerAddress(), new PeerException(AbortCause.SHUTDOWN, "shutdown"));
        // verify replication notifications
        Assert.assertEquals(leaves[i][0], replicateI.get());
        replicateI.set(0);
        Assert.assertEquals(leaves[i][1], replicateWe.get());
        replicateWe.set(0);
View Full Code Here

Examples of net.tomp2p.dht.PeerDHT

    }
  }

  @Test
  public void testHeavyLoadNRootReplication() throws Exception {
    PeerDHT master = null;
    Random rnd = new Random();
    try {
      // setup
      PeerDHT[] peers = Utils2.createNodes(10, rnd, 4001);
      master = peers[0];
      Utils2.perfectRouting(peers);
     
      for (int i = 0; i < peers.length; i++) {
        new net.tomp2p.replication.IndirectReplication(peers[i]).intervalMillis(500).nRoot()
        .replicationFactor(6).start();
      }

      NavigableMap<Number160, Data> sortedMap = new TreeMap<Number160, Data>();
      Number160 locationKey = Number160.createHash("location");
      Number160 domainKey = Number160.createHash("domain");
      Number160 contentKey = Number160.createHash("content");

      String content = "";
      for (int i = 0; i < 500; i++) {
        content += "a";
        Number160 vKey = generateVersionKey(i, content);
        Data data = new Data(content);
        if (!sortedMap.isEmpty()) {
          data.addBasedOn(sortedMap.lastKey());
        }
        data.prepareFlag();
        sortedMap.put(vKey, data);

        // put test data (prepare)
        FuturePut fput = peers[rnd.nextInt(10)].put(locationKey)
            .data(contentKey, sortedMap.get(vKey)).domainKey(domainKey).versionKey(vKey).start();
        fput.awaitUninterruptibly();
        fput.futureRequests().awaitUninterruptibly();
        fput.futureRequests().awaitListenersUninterruptibly();
        Assert.assertEquals(true, fput.isSuccess());

        // confirm put
        FuturePut futurePutConfirm = peers[rnd.nextInt(10)].put(locationKey).domainKey(domainKey)
            .data(contentKey, new Data()).versionKey(vKey).putConfirm().start();
        futurePutConfirm.awaitUninterruptibly();
        futurePutConfirm.awaitListenersUninterruptibly();

        // get latest version with digest
        FutureGet fget = peers[rnd.nextInt(10)].get(locationKey).domainKey(domainKey)
            .contentKey(contentKey).getLatest().withDigest().start();
        fget.awaitUninterruptibly();
        Assert.assertTrue(fget.isSuccess());

        // check result
        Map<Number640, Data> dataMap = fget.dataMap();
        Assert.assertEquals(1, dataMap.size());
        Number480 key480 = new Number480(locationKey, domainKey, contentKey);

        Number640 key = new Number640(key480, vKey);
        Assert.assertTrue(dataMap.containsKey(key));
        Assert.assertEquals(data.object(), dataMap.get(key).object());

        // check digest result
        DigestResult digestResult = fget.digest();
        Assert.assertEquals(sortedMap.size(), digestResult.keyDigest().size());
        for (Number160 versionKey : sortedMap.keySet()) {
          Number640 digestKey = new Number640(locationKey, domainKey, contentKey, versionKey);
          Assert.assertTrue(digestResult.keyDigest().containsKey(digestKey));
          Assert.assertEquals(sortedMap.get(versionKey).basedOnSet().size(), digestResult
              .keyDigest().get(digestKey).size());
          for (Number160 bKey : sortedMap.get(versionKey).basedOnSet()) {
            Assert.assertTrue(digestResult.keyDigest().get(digestKey).contains(bKey));
          }
        }
      }
    } finally {
      if (master != null) {
        master.shutdown().await();
      }
    }
  }
View Full Code Here

Examples of net.tomp2p.dht.PeerDHT

public class TestConsistency {
 
  @Test
  public void testConsistency() throws Exception {
    Random rnd = new Random(42);
    PeerDHT peers [] = UtilsReplication.createNodes(11, rnd, 4000, null);
    UtilsReplication.perfectRouting(peers);
   
    RoutingConfiguration r = new RoutingConfiguration(6, 10, 2);
    RequestP2PConfiguration p = new RequestP2PConfiguration(6, 10, 0);
    FuturePut fp = peers[5].put(Number160.MAX_VALUE).routingConfiguration(r).requestP2PConfiguration(p).data(new Data("test")).start();
View Full Code Here

Examples of net.tomp2p.dht.PeerDHT

     * @throws Exception .
     */
    @Test
    public void testResponsibility0Root1() throws Exception {
        // Random rnd=new Random(42L);
      PeerDHT master = null;
      PeerDHT slave = null;
        ChannelCreator cc = null;
        try {
          StorageMemory s1 = new StorageMemory();
          master = new PeerBuilderDHT(new PeerBuilder(new Number160("0xee")).start()).storage(s1).start();
          IndirectReplication im = new IndirectReplication(master);
         
           
            final AtomicInteger test1 = new AtomicInteger(0);
            final AtomicInteger test2 = new AtomicInteger(0);

            ResponsibilityListener responsibilityListener = new ResponsibilityListener() {
                @Override
                public void meResponsible(final Number160 locationKey) {
                    System.err.println("I'm responsible for " + locationKey + " / ");
                    test2.incrementAndGet();
                }

        @Override
                public void meResponsible(Number160 locationKey, PeerAddress newPeer) {
                  System.err.println("I sync for " + locationKey + " / ");
                }

        @Override
                public FutureDone<?> otherResponsible(Number160 locationKey, PeerAddress other) {
          System.err.println("Other peer (" + other + ")is responsible for " + locationKey);
                    test1.incrementAndGet();
                  return null;
                }
            };
           
            im.addResponsibilityListener(responsibilityListener);
            im.start();

            Number160 location = new Number160("0xff");
            Map<Number160, Data> dataMap = new HashMap<Number160, Data>();
            dataMap.put(Number160.ZERO, new Data("string"));

            FutureChannelCreator fcc = master.peer().connectionBean().reservation().create(0, 1);
            fcc.awaitUninterruptibly();
            cc = fcc.channelCreator();

            PutBuilder putBuilder = new PutBuilder(master, location);
            putBuilder.domainKey(location);
            putBuilder.dataMapContent(dataMap);
            putBuilder.versionKey(Number160.ZERO);

            FutureResponse fr = master.storeRPC().put(master.peerAddress(), putBuilder, cc);
            fr.awaitUninterruptibly();
            // s1.put(location, Number160.ZERO, null, dataMap, false, false);
            final int slavePort = 7701;
            slave = new PeerBuilderDHT(new PeerBuilder(new Number160("0xfe")).ports(slavePort).start()).start();
            master.peerBean().peerMap().peerFound(slave.peerAddress(), null, null);
            master.peerBean().peerMap().peerFailed(slave.peerAddress(), new PeerException(AbortCause.SHUTDOWN, "shutdown"));
            Assert.assertEquals(1, test1.get());
            Assert.assertEquals(2, test2.get());
        } catch (Throwable t) {
            t.printStackTrace();
        } finally {
            if (cc != null) {
                cc.shutdown().awaitListenersUninterruptibly();
            }
            if (master != null) {
                master.shutdown().await();
            }
            if (slave != null) {
                slave.shutdown().await();
            }
        }
    }
View Full Code Here

Examples of net.tomp2p.dht.PeerDHT

    private int port12 = 4012;
    private int port13 = 4013;

    @Test
    public void testGetBestSmoothingFactor() throws IOException {
        PeerDHT peer = new PeerBuilderDHT(new PeerBuilder(new Number160(peerId)).ports(port7).start()).start();
        AutoReplication automaticReplication = new AutoReplication(peer.peer());
        automaticReplication.reliability(reliability);

        ArrayList<Integer> x = new ArrayList<Integer>();
        ArrayList<Double> y = new ArrayList<Double>();
View Full Code Here

Examples of net.tomp2p.dht.PeerDHT

        Assert.assertEquals(0.5, AutoReplication.bestSmoothingFactor(x, y), 0.0);
    }

    @Test
    public void testGetAverage() throws IOException {
      PeerDHT peer = new PeerBuilderDHT(new PeerBuilder(new Number160(peerId)).ports(port8).start()).start();
        AutoReplication automaticReplication = new AutoReplication(peer.peer());
        automaticReplication.reliability(reliability);

        ArrayList<Integer> observations = new ArrayList<Integer>();
        ArrayList<Double> averages = new ArrayList<Double>();
View Full Code Here

Examples of net.tomp2p.dht.PeerDHT

        Assert.assertEquals(9.4, AutoReplication.ema(observations, averages), 0.0);
    }

    @Test
    public void testGetStandardDeviation() throws IOException {
      PeerDHT peer = new PeerBuilderDHT(new PeerBuilder(new Number160(peerId)).ports(port9).start()).start();
        AutoReplication automaticReplication = new AutoReplication(peer.peer());
        automaticReplication.reliability(reliability);

        ArrayList<Integer> observations = new ArrayList<Integer>();
        ArrayList<Double> averages = new ArrayList<Double>();
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.