package com.limegroup.gnutella.dht; import java.net.InetSocketAddress; import org.limewire.core.settings.ConnectionSettings; import org.limewire.gnutella.tests.LimeTestCase; import org.limewire.mojito.KUID; import org.limewire.mojito.MojitoDHT; import org.limewire.mojito.MojitoFactory; import org.limewire.mojito.routing.Contact; import org.limewire.mojito.routing.RouteTable; import org.limewire.mojito.routing.Contact.State; import org.limewire.mojito.routing.impl.RemoteContact; import org.limewire.mojito.settings.ContextSettings; import com.limegroup.gnutella.LifecycleManager; public abstract class DHTTestCase extends LimeTestCase { protected static final int BOOTSTRAP_DHT_PORT = 3000; protected static final int PORT = 6667; private boolean bootstrapped = false; public DHTTestCase(String name) { super(name); } protected MojitoDHT startBootstrapDHT(LifecycleManager lifeCycleManager) throws Exception { assertFalse("bootstrap DHT already started", bootstrapped); bootstrapped = true; // setup bootstrap node MojitoDHT bootstrapDHT = MojitoFactory.createDHT("bootstrapNode"); bootstrapDHT.bind(new InetSocketAddress(BOOTSTRAP_DHT_PORT)); bootstrapDHT.start(); org.limewire.core.settings.NetworkSettings.PORT.setValue(PORT); ConnectionSettings.FORCED_PORT.setValue(PORT); assertEquals("unexpected port", PORT, org.limewire.core.settings.NetworkSettings.PORT.getValue()); ConnectionSettings.CONNECT_ON_STARTUP.setValue(false); lifeCycleManager.start(); return bootstrapDHT; } protected void fillRoutingTable(RouteTable rt, int numNodes) { for(int i = 0; i < numNodes; i++) { KUID kuid = KUID.createRandomID(); RemoteContact node = new RemoteContact( new InetSocketAddress("localhost",4000+i), ContextSettings.getVendor(), ContextSettings.getVersion(), kuid, new InetSocketAddress("localhost",4000+i), 0, Contact.DEFAULT_FLAG, State.UNKNOWN); rt.add(node); } } }