package net.tomp2p.p2p; import java.util.Random; import java.util.concurrent.atomic.AtomicInteger; import net.tomp2p.Utils2; import net.tomp2p.futures.BaseFuture; import org.junit.Assert; import org.junit.Rule; import org.junit.Test; import org.junit.rules.TestRule; import org.junit.rules.TestWatcher; import org.junit.runner.Description; public class TestMaintenance { @Rule public TestRule watcher = new TestWatcher() { protected void starting(Description description) { System.out.println("Starting test: " + description.getMethodName()); } }; @Test public void testMaintenance() throws Exception { final Random rnd = new Random(42L); Peer[] peers = null; try { // setup AtomicInteger counter = new AtomicInteger(0); peers = Utils2.createRealNodes(10, rnd, 4001, new Rep(counter)); Peer master = peers[0]; //give the master one of the peers, master.peerBean().peerMap().peerFound(peers[1].peerAddress(), peers[2].peerAddress(), null, null); // wait for 1 sec. master.peerBean().peerMap().peerFound(peers[1].peerAddress(), peers[2].peerAddress(), null, null); Thread.sleep(3000); //both peers pinged each other Assert.assertEquals(2, counter.get()); } finally { if (peers != null) { for(int i=0;i<peers.length;i++) { peers[i].shutdown().await(); } } } } private static class Rep implements AutomaticFuture { private final AtomicInteger counter; public Rep(AtomicInteger counter) { this.counter = counter; } @Override public void futureCreated(BaseFuture future) { counter.incrementAndGet(); } } }