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();