package org.limewire.mojito.manager; import java.net.InetSocketAddress; import java.net.SocketAddress; import java.util.LinkedHashSet; import java.util.Set; import java.util.concurrent.ExecutionException; import junit.framework.TestSuite; import org.limewire.mojito.Context; import org.limewire.mojito.MojitoDHT; import org.limewire.mojito.MojitoFactory; import org.limewire.mojito.MojitoTestCase; import org.limewire.mojito.exceptions.DHTTimeoutException; import org.limewire.mojito.routing.Contact; import org.limewire.mojito.settings.NetworkSettings; import org.limewire.mojito.settings.PingSettings; public class PingManagerTest extends MojitoTestCase { /*static { System.setProperty("org.apache.commons.logging.Log", "org.apache.commons.logging.impl.NoOpLog"); }*/ public PingManagerTest(String name){ super(name); } public static TestSuite suite() { return buildTestSuite(PingManagerTest.class); } public static void main(String[] args) { junit.textui.TestRunner.run(suite()); } @Override protected void setUp() throws Exception { super.setUp(); setLocalIsPrivate(false); } public void testParallelPings() throws Exception { PingSettings.PARALLEL_PINGS.setValue(3); NetworkSettings.MAX_ERRORS.setValue(0); MojitoDHT dht1 = null, dht2 = null; try { dht1 = MojitoFactory.createDHT(); dht1.bind(new InetSocketAddress(2000)); dht1.start(); dht2 = MojitoFactory.createDHT(); dht2.bind(new InetSocketAddress(3000)); dht2.start(); Set<SocketAddress> hosts = new LinkedHashSet<SocketAddress>(); hosts.add(new InetSocketAddress("www.apple.com", 80)); hosts.add(new InetSocketAddress("www.microsoft.com", 80)); hosts.add(new InetSocketAddress("www.google.com", 80)); hosts.add(new InetSocketAddress("www.cnn.com", 80)); assertEquals(4, hosts.size()); try { ((Context)dht2).ping(hosts).get().getContact(); fail("Ping should have failed"); } catch (ExecutionException e) { assertTrue(e.getCause() instanceof DHTTimeoutException); } hosts.add(new InetSocketAddress("localhost", 2000)); assertEquals(5, hosts.size()); try { Contact node = ((Context)dht2).ping(hosts).get().getContact(); assertEquals(dht1.getLocalNodeID(), node.getNodeID()); } catch (ExecutionException e) { fail(e); } } finally { if (dht1 != null) { dht1.close(); } if (dht2 != null) { dht2.close(); } } } }