package org.limewire.core.impl.support; import org.jmock.Expectations; import org.jmock.Mockery; import org.jmock.lib.legacy.ClassImposteriser; import org.limewire.core.api.library.RemoteLibraryManager; import org.limewire.core.api.library.SearchResultList; import org.limewire.net.SocketsManager; import org.limewire.nio.ByteBufferCache; import org.limewire.nio.NIODispatcher; import org.limewire.util.BaseTestCase; import com.limegroup.gnutella.Acceptor; import com.limegroup.gnutella.ConnectionManager; import com.limegroup.gnutella.ConnectionServices; import com.limegroup.gnutella.DownloadManager; import com.limegroup.gnutella.DownloadServices; import com.limegroup.gnutella.LifecycleManager; import com.limegroup.gnutella.Statistics; import com.limegroup.gnutella.UDPService; import com.limegroup.gnutella.UploadServices; import com.limegroup.gnutella.auth.ContentManager; import com.limegroup.gnutella.connection.ConnectionCheckerManager; import com.limegroup.gnutella.downloader.DiskController; import com.limegroup.gnutella.library.CreationTimeCache; import com.limegroup.gnutella.library.FileView; import com.limegroup.gnutella.library.Library; import com.limegroup.gnutella.simpp.SimppManager; import com.limegroup.gnutella.uploader.UploadSlotManager; /** * Tests the delegate getter methods in LimeSessionInfo. Ensure that they are connected and return the correct * results from the correct classes. */ public class LimeSessionInfoTest extends BaseTestCase { public LimeSessionInfoTest(String name) { super(name); } public void testGetNumberOfPendingTimeouts() { Mockery context = new Mockery() {{ setImposteriser(ClassImposteriser.INSTANCE); }}; final NIODispatcher dispatcher = context.mock(NIODispatcher.class); LimeSessionInfo sessionInfo = new LimeSessionInfo(dispatcher, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null); context.checking(new Expectations() {{ allowing(dispatcher).getNumPendingTimeouts(); will(returnValue(3)); }}); assertEquals(3, sessionInfo.getNumberOfPendingTimeouts()); context.assertIsSatisfied(); } public void testDownloadManagerDelegates() { Mockery context = new Mockery() {{ setImposteriser(ClassImposteriser.INSTANCE); }}; final DownloadManager downloadManager = context.mock(DownloadManager.class); LimeSessionInfo sessionInfo = new LimeSessionInfo(null, downloadManager, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null); context.checking(new Expectations() {{ allowing(downloadManager).getNumWaitingDownloads(); will(returnValue(5)); allowing(downloadManager).getNumIndividualDownloaders(); will(returnValue(6)); }}); assertEquals(5, sessionInfo.getNumWaitingDownloads()); assertEquals(6, sessionInfo.getNumIndividualDownloaders()); context.assertIsSatisfied(); } public void testGetCurrentUptime() { Mockery context = new Mockery() {{ setImposteriser(ClassImposteriser.INSTANCE); }}; final Statistics statistics = context.mock(Statistics.class); LimeSessionInfo sessionInfo = new LimeSessionInfo(null, null, statistics, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null); context.checking(new Expectations() {{ allowing(statistics).getUptime(); will(returnValue(25L)); }}); assertEquals(25, sessionInfo.getCurrentUptime()); context.assertIsSatisfied(); } public void testConnectionManagerDelagates() { Mockery context = new Mockery() {{ setImposteriser(ClassImposteriser.INSTANCE); }}; final ConnectionManager connectionManager = context.mock(ConnectionManager.class); LimeSessionInfo sessionInfo = new LimeSessionInfo(null, null, null, connectionManager, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null); context.checking(new Expectations() {{ allowing(connectionManager).getNumInitializedClientConnections(); will(returnValue(9)); allowing(connectionManager).getNumClientSupernodeConnections(); will(returnValue(10)); allowing(connectionManager).getNumUltrapeerConnections(); will(returnValue(20)); allowing(connectionManager).getNumOldConnections(); will(returnValue(21)); }}); assertEquals(9, sessionInfo.getNumUltrapeerToLeafConnections()); assertEquals(10, sessionInfo.getNumLeafToUltrapeerConnections()); assertEquals(20, sessionInfo.getNumUltrapeerToUltrapeerConnections()); assertEquals(21, sessionInfo.getNumOldConnections()); context.assertIsSatisfied(); } public void testGetContentResponsesSize() { Mockery context = new Mockery() {{ setImposteriser(ClassImposteriser.INSTANCE); }}; final ContentManager contentManager = context.mock(ContentManager.class); LimeSessionInfo sessionInfo = new LimeSessionInfo(null, null, null, null, contentManager, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null); context.checking(new Expectations() {{ allowing(contentManager).getCacheSize(); will(returnValue(55)); }}); assertEquals(55, sessionInfo.getContentResponsesSize()); context.assertIsSatisfied(); } public void testGetCreationCacheSize() { Mockery context = new Mockery() {{ setImposteriser(ClassImposteriser.INSTANCE); }}; final CreationTimeCache creationTimeCache = context.mock(CreationTimeCache.class); LimeSessionInfo sessionInfo = new LimeSessionInfo(null, null, null, null, null, creationTimeCache, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null); context.checking(new Expectations() {{ allowing(creationTimeCache).getSize(); will(returnValue(59)); }}); assertEquals(59, sessionInfo.getCreationCacheSize()); context.assertIsSatisfied(); } public void testDiskControllerDelegates() { Mockery context = new Mockery() {{ setImposteriser(ClassImposteriser.INSTANCE); }}; final DiskController diskController = context.mock(DiskController.class); LimeSessionInfo sessionInfo = new LimeSessionInfo(null, null, null, null, null, null, diskController, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null); context.checking(new Expectations() {{ allowing(diskController).getSizeOfByteCache(); will(returnValue(77)); allowing(diskController).getSizeOfVerifyingCache(); will(returnValue(78)); allowing(diskController).getNumPendingItems(); will(returnValue(79)); }}); assertEquals(77, sessionInfo.getDiskControllerByteCacheSize()); assertEquals(78, sessionInfo.getDiskControllerVerifyingCacheSize()); assertEquals(79, sessionInfo.getDiskControllerQueueSize()); context.assertIsSatisfied(); } public void testGetByteBufferCacheSize() { Mockery context = new Mockery() {{ setImposteriser(ClassImposteriser.INSTANCE); }}; final ByteBufferCache byteBufferCache = context.mock(ByteBufferCache.class); LimeSessionInfo sessionInfo = new LimeSessionInfo(null, null, null, null, null, null, null, null, byteBufferCache, null, null, null, null, null, null, null, null, null, null, null, null, null); context.checking(new Expectations() {{ allowing(byteBufferCache).getHeapCacheSize(); will(returnValue(99L)); }}); assertEquals(99, sessionInfo.getByteBufferCacheSize()); context.assertIsSatisfied(); } public void testGetNumberOfWaitingSockets() { Mockery context = new Mockery() {{ setImposteriser(ClassImposteriser.INSTANCE); }}; final SocketsManager socketsManager = context.mock(SocketsManager.class); LimeSessionInfo sessionInfo = new LimeSessionInfo(null, null, null, null, null, null, null, socketsManager, null, null, null, null, null, null, null, null, null, null, null, null, null, null); context.checking(new Expectations() {{ allowing(socketsManager).getNumWaitingSockets(); will(returnValue(2399)); }}); assertEquals(2399, sessionInfo.getNumberOfWaitingSockets()); context.assertIsSatisfied(); } public void testUDPServiceDelegates() { Mockery context = new Mockery() {{ setImposteriser(ClassImposteriser.INSTANCE); }}; final UDPService udpService = context.mock(UDPService.class); LimeSessionInfo sessionInfo = new LimeSessionInfo(null, null, null, null, null, null, null, null, null, udpService, null, null, null, null, null, null, null, null, null, null, null, null); context.checking(new Expectations() {{ allowing(udpService).lastReportedPort(); will(returnValue(742)); allowing(udpService).receivedIpPong(); will(returnValue(745)); one(udpService).isGUESSCapable(); will(returnValue(true)); one(udpService).canReceiveSolicited(); will(returnValue(true)); one(udpService).canDoFWT(); will(returnValue(true)); one(udpService).portStable(); will(returnValue(true)); one(udpService).isGUESSCapable(); will(returnValue(false)); one(udpService).canReceiveSolicited(); will(returnValue(false)); one(udpService).canDoFWT(); will(returnValue(false)); one(udpService).portStable(); will(returnValue(false)); }}); assertEquals(742, sessionInfo.lastReportedUdpPort()); assertEquals(745, sessionInfo.receivedIpPong()); assertTrue(sessionInfo.isGUESSCapable()); assertTrue(sessionInfo.canReceiveSolicited()); assertTrue(sessionInfo.canDoFWT()); assertTrue(sessionInfo.isUdpPortStable()); assertFalse(sessionInfo.isGUESSCapable()); assertFalse(sessionInfo.canReceiveSolicited()); assertFalse(sessionInfo.canDoFWT()); assertFalse(sessionInfo.isUdpPortStable()); context.assertIsSatisfied(); } public void testAcceptorDelegates() { Mockery context = new Mockery() {{ setImposteriser(ClassImposteriser.INSTANCE); }}; final Acceptor acceptor = context.mock(Acceptor.class); LimeSessionInfo sessionInfo = new LimeSessionInfo(null, null, null, null, null, null, null, null, null, null, acceptor, null, null, null, null, null, null, null, null, null, null, null); context.checking(new Expectations() {{ one(acceptor).acceptedIncoming(); will(returnValue(true)); one(acceptor).acceptedIncoming(); will(returnValue(false)); one(acceptor).getPort(true); will(returnValue(878)); }}); assertTrue(sessionInfo.acceptedIncomingConnection()); assertFalse(sessionInfo.acceptedIncomingConnection()); assertEquals(878, sessionInfo.getPort()); context.assertIsSatisfied(); } public void testGetNumActiveDownloads() { Mockery context = new Mockery(); final DownloadServices downloadServices = context.mock(DownloadServices.class); LimeSessionInfo sessionInfo = new LimeSessionInfo(null, null, null, null, null, null, null, null, null, null, null, downloadServices, null, null, null, null, null, null, null, null, null, null); context.checking(new Expectations() {{ allowing(downloadServices).getNumActiveDownloads(); will(returnValue(111)); }}); assertEquals(111, sessionInfo.getNumActiveDownloads()); context.assertIsSatisfied(); } public void testUploadServicesDeligates() { Mockery context = new Mockery(); final UploadServices uploadServices = context.mock(UploadServices.class); LimeSessionInfo sessionInfo = new LimeSessionInfo(null, null, null, null, null, null, null, null, null, null, null, null, uploadServices, null, null, null, null, null, null, null, null, null); context.checking(new Expectations() {{ allowing(uploadServices).getNumUploads(); will(returnValue(531)); allowing(uploadServices).getNumQueuedUploads(); will(returnValue(532)); }}); assertEquals(531, sessionInfo.getNumActiveUploads()); assertEquals(532, sessionInfo.getNumQueuedUploads()); context.assertIsSatisfied(); } public void testGetNumConnectionCheckerWorkarounds() { Mockery context = new Mockery(); final ConnectionCheckerManager connectionCheckerManager = context.mock(ConnectionCheckerManager.class); LimeSessionInfo sessionInfo = new LimeSessionInfo(null, null, null, null, null, null, null, null, null, null, null, null, null, connectionCheckerManager, null, null, null, null, null, null, null, null); context.checking(new Expectations() {{ allowing(connectionCheckerManager).getNumWorkarounds(); will(returnValue(1211)); }}); assertEquals(1211, sessionInfo.getNumConnectionCheckerWorkarounds()); context.assertIsSatisfied(); } public void testGetSelectStats() { Mockery context = new Mockery() {{ setImposteriser(ClassImposteriser.INSTANCE); }}; final NIODispatcher nioDispatcher = context.mock(NIODispatcher.class); LimeSessionInfo sessionInfo = new LimeSessionInfo(null, null, null, null, null, null, null, null, null, null, null, null, null, null, nioDispatcher, null, null, null, null, null, null, null); context.checking(new Expectations() {{ allowing(nioDispatcher).getSelectStats(); will(returnValue(new long[] {Long.MAX_VALUE, 2, 3, 88})); }}); assertEquals(new long[] {Long.MAX_VALUE, 2, 3, 88}, sessionInfo.getSelectStats()); context.assertIsSatisfied(); } public void testFileManagerDeligates() { final Mockery context = new Mockery(); final Library library = context.mock(Library.class); final FileView gnutella = context.mock(FileView.class); LimeSessionInfo sessionInfo = new LimeSessionInfo(null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, library, null, null, null, null, null, gnutella); context.checking(new Expectations() {{ allowing(gnutella).size(); will(returnValue(1110)); allowing(library).size(); will(returnValue(1111)); }}); assertEquals(1110, sessionInfo.getSharedFileListSize()); assertEquals(1111, sessionInfo.getManagedFileListSize()); context.assertIsSatisfied(); } public void testGetAllFriendsFileListSize() { final Mockery context = new Mockery(); final RemoteLibraryManager remoteLibraryManager = context.mock(RemoteLibraryManager.class); LimeSessionInfo sessionInfo = new LimeSessionInfo(null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, remoteLibraryManager, null); context.checking(new Expectations() {{ SearchResultList allFriendsList = context.mock(SearchResultList.class); allowing(remoteLibraryManager).getAllFriendsFileList(); will(returnValue(allFriendsList)); allowing(allFriendsList).size(); will(returnValue(222)); }}); assertEquals(222, sessionInfo.getAllFriendsFileListSize()); context.assertIsSatisfied(); } public void testGetSimppVersion() { Mockery context = new Mockery(); final SimppManager simppManager = context.mock(SimppManager.class); LimeSessionInfo sessionInfo = new LimeSessionInfo(null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, simppManager, null, null, null, null, null); context.checking(new Expectations() {{ allowing(simppManager).getVersion(); will(returnValue(70)); }}); assertEquals(70, sessionInfo.getSimppVersion()); context.assertIsSatisfied(); } public void testGetUploadSlotManagerInfo() { Mockery context = new Mockery(); final UploadSlotManager uploadSlotManager = context.mock(UploadSlotManager.class); LimeSessionInfo sessionInfo = new LimeSessionInfo(null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, uploadSlotManager, null, null, null, null); context.checking(new Expectations() {{ // None }}); assertNotNull(sessionInfo.getUploadSlotManagerInfo()); assertNotEquals("", sessionInfo.getUploadSlotManagerInfo()); context.assertIsSatisfied(); } public void testConnectionServicesDeligates() { Mockery context = new Mockery() {{ setImposteriser(ClassImposteriser.INSTANCE); }}; final ConnectionServices connectionServices = context.mock(ConnectionServices.class); LimeSessionInfo sessionInfo = new LimeSessionInfo(null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, connectionServices, null, null, null); context.checking(new Expectations() {{ one(connectionServices).isConnected(); will(returnValue(true)); one(connectionServices).isConnected(); will(returnValue(false)); one(connectionServices).isShieldedLeaf(); will(returnValue(true)); one(connectionServices).isShieldedLeaf(); will(returnValue(false)); one(connectionServices).isSupernode(); will(returnValue(true)); one(connectionServices).isSupernode(); will(returnValue(false)); }}); assertTrue(sessionInfo.isConnected()); assertFalse(sessionInfo.isConnected()); assertTrue(sessionInfo.isShieldedLeaf()); assertFalse(sessionInfo.isShieldedLeaf()); assertTrue(sessionInfo.isSupernode()); assertFalse(sessionInfo.isSupernode()); context.assertIsSatisfied(); } public void testIsLifecycleLoaded() { Mockery context = new Mockery() {{ setImposteriser(ClassImposteriser.INSTANCE); }}; final LifecycleManager lifecycleManager = context.mock(LifecycleManager.class); LimeSessionInfo sessionInfo = new LimeSessionInfo(null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, lifecycleManager, null, null); context.checking(new Expectations() {{ one(lifecycleManager).isLoaded(); will(returnValue(true)); one(lifecycleManager).isLoaded(); will(returnValue(false)); }}); assertTrue(sessionInfo.isLifecycleLoaded()); assertFalse(sessionInfo.isLifecycleLoaded()); context.assertIsSatisfied(); } }