package org.limewire.mojito.util; import java.net.InetSocketAddress; import java.net.SocketAddress; import junit.framework.TestSuite; import org.limewire.mojito.KUID; import org.limewire.mojito.MojitoTestCase; import org.limewire.mojito.db.DHTValueEntity; import org.limewire.mojito.db.DHTValueType; import org.limewire.mojito.db.impl.DHTValueImpl; import org.limewire.mojito.routing.Contact; import org.limewire.mojito.routing.ContactFactory; import org.limewire.mojito.routing.RouteTable; import org.limewire.mojito.routing.Vendor; import org.limewire.mojito.routing.Version; import org.limewire.mojito.routing.impl.RouteTableImpl; import org.limewire.mojito.settings.DatabaseSettings; import org.limewire.mojito.settings.KademliaSettings; import org.limewire.util.StringUtils; public class DatabaseUtilsTest extends MojitoTestCase { public static final String LOCAL_NODE_ID = "8A82F518E1CD6E7D56F965D65CE5FCAA6261DEA4"; /*static { System.setProperty("org.apache.commons.logging.Log", "org.apache.commons.logging.impl.NoOpLog"); }*/ public DatabaseUtilsTest(String name) { super(name); } public static TestSuite suite() { return buildTestSuite(DatabaseUtilsTest.class); } public static void main(String[] args) { junit.textui.TestRunner.run(suite()); } public void testExpirationTime() { assertEquals(20, KademliaSettings.REPLICATION_PARAMETER.getValue()); RouteTable routeTable = new RouteTableImpl(LOCAL_NODE_ID); for (int i = 0; i < 15; i++) { KUID nodeId = KUID.createRandomID(); SocketAddress addr = new InetSocketAddress("localhost", 5000 + i); routeTable.add(ContactFactory.createLiveContact(addr, Vendor.UNKNOWN, Version.ZERO, nodeId, addr, 0, Contact.DEFAULT_FLAG)); } assertEquals(16, routeTable.size()); Contact creator = routeTable.getLocalNode(); KUID valueId = creator.getNodeID().invert(); DHTValueEntity value = DHTValueEntity.createFromRemote(creator, creator, valueId, new DHTValueImpl(DHTValueType.TEST, Version.ZERO, StringUtils.toUTF8Bytes("Hello World"))); long expectedExpiresAt = value.getCreationTime() + DatabaseSettings.VALUE_EXPIRATION_TIME.getValue(); assertEquals(expectedExpiresAt, DatabaseUtils.getExpirationTime(routeTable, value)); for (int i = 0; i < 4; i++) { KUID nodeId = KUID.createRandomID(); SocketAddress addr = new InetSocketAddress("localhost", 6000 + i); routeTable.add(ContactFactory.createLiveContact(addr, Vendor.UNKNOWN, Version.ZERO, nodeId, addr, 0, Contact.DEFAULT_FLAG)); assertEquals(expectedExpiresAt, DatabaseUtils.getExpirationTime(routeTable, value)); } assertEquals(20, routeTable.size()); KUID nodeId = KUID.createRandomID(); SocketAddress addr = new InetSocketAddress("localhost", 7000); routeTable.add(ContactFactory.createLiveContact(addr, Vendor.UNKNOWN, Version.ZERO, nodeId, addr, 0, Contact.DEFAULT_FLAG)); long expiresAt = DatabaseUtils.getExpirationTime(routeTable, value); assertLessThan(expectedExpiresAt, expiresAt); } }