package com.limegroup.gnutella.downloader; import java.util.List; import org.limewire.gnutella.tests.LimeTestCase; import org.limewire.gnutella.tests.LimeTestUtils; import org.limewire.io.GUID; import junit.framework.Test; import com.google.inject.Injector; public class PushListTest extends LimeTestCase { private PushList pushList; public PushListTest(String name) { super(name); } public static Test suite() { return buildTestSuite(PushListTest.class); } @Override protected void setUp() throws Exception { Injector injector = LimeTestUtils.createInjectorNonEagerly(); pushList = injector.getInstance(PushList.class); } public void testGetExactHost() { PushDetails details = new PushDetails(new GUID().bytes(), "addresss"); HTTPConnectObserver observer = new HTTPConnectObserverStub(); pushList.addPushHost(details, observer); HTTPConnectObserver returnObserver = pushList.getExactHostFor(details); assertNotNull(returnObserver); assertEquals(observer, returnObserver); returnObserver = pushList.getExactHostFor(details); // getExactHost should have removed the value, make sure nothing else exists in there. assertNull(returnObserver); } public void testGetHost() { PushDetails details = new PushDetails(new GUID().bytes(), "addresss"); HTTPConnectObserver observer = new HTTPConnectObserverStub(); pushList.addPushHost(details, observer); HTTPConnectObserver returnObserver = pushList.getHostFor(details.getClientGUID(), details.getAddress()); assertNotNull(returnObserver); assertEquals(observer, returnObserver); returnObserver = pushList.getExactHostFor(details); // getExactHost should have removed the value, make sure nothing else exists in there. assertNull(returnObserver); } public void testGetAllAndClear() { PushDetails details = new PushDetails(new GUID().bytes(), "addresss"); HTTPConnectObserver observer = new HTTPConnectObserverStub(); PushDetails details2 = new PushDetails(new GUID().bytes(), "address2"); HTTPConnectObserver observer2 = new HTTPConnectObserverStub(); pushList.addPushHost(details, observer); pushList.addPushHost(details2, observer2); List<HTTPConnectObserver> list = pushList.getAllAndClear(); assertEquals(list.size(), 2); assertTrue(list.contains(observer)); assertTrue(list.contains(observer2)); HTTPConnectObserver returnObserver = pushList.getExactHostFor(details); // getExactHost should have removed the value, make sure nothing else exists in there. assertNull(returnObserver); returnObserver = pushList.getExactHostFor(details2); // getExactHost should have removed the value, make sure nothing else exists in there. assertNull(returnObserver); } public void testGetExactHostMultipleConnectsToSameHost() { GUID guid = new GUID(); String address = "address"; PushDetails details = new PushDetails(guid.bytes(), address); PushDetails details1 = new PushDetails(guid.bytes(), address); PushDetails details2 = new PushDetails(guid.bytes(), address); HTTPConnectObserver observer = new HTTPConnectObserverStub(); pushList.addPushHost(details, observer); pushList.addPushHost(details1, observer); pushList.addPushHost(details2, observer); HTTPConnectObserver returnObserver = pushList.getExactHostFor(details); assertNotNull(returnObserver); assertEquals(observer, returnObserver); returnObserver = pushList.getExactHostFor(details); assertNull(returnObserver); returnObserver = pushList.getExactHostFor(details1); assertNotNull(returnObserver); assertEquals(observer, returnObserver); returnObserver = pushList.getExactHostFor(details2); assertNotNull(returnObserver); assertEquals(observer, returnObserver); returnObserver = pushList.getExactHostFor(details1); assertNull(returnObserver); returnObserver = pushList.getExactHostFor(details2); assertNull(returnObserver); } public void testGetHostMultipleConnectsToSameHost() { GUID guid = new GUID(); String address = "address"; PushDetails details = new PushDetails(guid.bytes(), address); PushDetails details1 = new PushDetails(guid.bytes(), address); PushDetails details2 = new PushDetails(guid.bytes(), address); HTTPConnectObserver observer = new HTTPConnectObserverStub(); pushList.addPushHost(details, observer); pushList.addPushHost(details1, observer); pushList.addPushHost(details2, observer); HTTPConnectObserver returnObserver = pushList.getHostFor(details.getClientGUID(), details.getAddress()); assertNotNull(returnObserver); assertEquals(observer, returnObserver); returnObserver = pushList.getExactHostFor(details); assertNull(returnObserver); returnObserver = pushList.getHostFor(details1.getClientGUID(), details1.getAddress()); assertNotNull(returnObserver); assertEquals(observer, returnObserver); returnObserver = pushList.getHostFor(details2.getClientGUID(), details2.getAddress()); assertNotNull(returnObserver); assertEquals(observer, returnObserver); returnObserver = pushList.getExactHostFor(details1); assertNull(returnObserver); returnObserver = pushList.getExactHostFor(details2); assertNull(returnObserver); } }