@Test public void testSuccessful_noresume_result() throws Exception { DownloadHandler downloadHandler = m_agentContext.getHandler(DownloadHandler.class); DownloadHandle handle = downloadHandler.getHandle(m_200url); handle.discard(); Future<DownloadResult> result = handle.start(null); assertSuccessful(result, m_200digest); }
@Override public void progress(long bytesRead) { handle.stop(); } });
@Test public void testDownloadOk() throws Exception { DownloadHandler downloadHandler = m_agentContext.getHandler(DownloadHandler.class); DownloadResult downloadResult; Future<DownloadResult> future; final DownloadHandle handle = downloadHandler.getHandle(m_testContentURL); future = handle.start(null); downloadResult = future.get(5, TimeUnit.SECONDS); assertTrue(downloadResult.isComplete()); File file = ((DownloadHandleImpl) handle).getDownloadFile(); long fileLength = file.length(); assertTrue(file.exists(), file.getName() + " does not exist?!"); assertTrue(fileLength > 0 && fileLength == m_contentLength, "Nothing downloaded yet for " + file.getName() + "?"); // Verify the contents of the downloaded file is what we expect... assertEquals(getDigest(file), m_digest); }
@Test public void testSuccessful_resume_result() throws Exception { DownloadHandler downloadHandler = m_agentContext.getHandler(DownloadHandler.class); final DownloadHandle handle = downloadHandler.getHandle(m_200url); handle.discard(); Future<DownloadResult> future = handle.start(new DownloadProgressListener() { @Override public void progress(long read) { Thread.currentThread().interrupt(); } }); assertStopped(future); assertSuccessful(handle.start(null), m_200digest); }
@Test public void testFailed404_noresume_result() throws Exception { DownloadHandler downloadHandler = m_agentContext.getHandler(DownloadHandler.class); DownloadHandle handle = downloadHandler.getHandle(m_404url); Future<DownloadResult> future = handle.start(null); assertIOException(future); }
@Override public void progress(long bytesRead) { if (--m_count == 0) { System.out.printf("Downloaded %d bytes, stopping download...%n", bytesRead); handle2.stop(); } } });
@Test public void testSuccessfulResumeAfterCompleteDownload() throws Exception { DownloadHandler downloadHandler = m_agentContext.getHandler(DownloadHandler.class); final DownloadHandle handle = downloadHandler.getHandle(m_200url); handle.discard(); Future<DownloadResult> future = handle.start(null); DownloadResult result = future.get(); assertNotNull(result); assertTrue(result.isComplete()); assertEquals(m_200digest, getDigest(result.getInputStream())); Future<DownloadResult> future2 = handle.start(null); DownloadResult result2 = future2.get(); assertNotNull(result2); assertTrue(result2.isComplete()); assertEquals(m_200digest, getDigest(result2.getInputStream())); }
@Test public void testRestartDownloadOk() throws Exception { DownloadHandler downloadHandler = m_agentContext.getHandler(DownloadHandler.class); DownloadResult downloadResult; Future<DownloadResult> future; final DownloadHandle handle = downloadHandler.getHandle(m_testContentURL); future = handle.start(new DownloadProgressListener() { @Override public void progress(long bytesRead) { handle.stop(); } }); assertDownloadStopped(future); File file = ((DownloadHandleImpl) handle).getDownloadFile(); long fileLength = file.length(); // Discard the result... handle.discard(); // Restart & finish the download... DownloadHandle handle2 = downloadHandler.getHandle(m_testContentURL); future = handle2.start(null); downloadResult = future.get(5, TimeUnit.SECONDS); assertTrue(downloadResult.isComplete()); fileLength = file.length(); assertTrue(file.exists(), file.getName() + " does not exist?!"); assertTrue(fileLength == m_contentLength, "Nothing downloaded yet for " + file.getName() + "?"); // Verify the contents of the downloaded file is what we expect... assertEquals(getDigest(file), m_digest); }
@BeforeMethod public void setUpAgain() throws Exception { m_dummyInputStream = new FileInputStream(m_dummyFile); DownloadResult downloadResult = addTestMock(DownloadResult.class); expect(downloadResult.isComplete()).andReturn(true).anyTimes(); expect(downloadResult.getInputStream()).andReturn(m_dummyInputStream).anyTimes(); Future<DownloadResult> future = addTestMock(Future.class); expect(future.get()).andReturn(downloadResult).anyTimes(); DownloadHandle downloadHandle = addTestMock(DownloadHandle.class); expect(downloadHandle.start(isNull(DownloadProgressListener.class))).andReturn(future).anyTimes(); DeploymentHandler deploymentHandler = addTestMock(DeploymentHandler.class); expect(deploymentHandler.getInstalledVersion()).andReturn(m_version2).anyTimes(); expect(deploymentHandler.getAvailableVersions()).andReturn(m_availableVersions).anyTimes(); expect(deploymentHandler.getDownloadHandle(eq(m_version3), eq(true))).andReturn(downloadHandle).once(); deploymentHandler.install(notNull(InputStream.class)); expectLastCall().once(); m_agentContext = mockAgentContext(); m_agentContext.setHandler(DeploymentHandler.class, deploymentHandler); replayTestMocks(); m_agentContext.start(); m_agentControl = new AgentControlImpl(m_agentContext); }
@Test public void testDownloading() throws Exception { Version current = m_agentControl.getDeploymentHandler().getInstalledVersion(); Version highest = m_agentControl.getDeploymentHandler().getAvailableVersions().last(); if (highest.compareTo(current) > 0) { DownloadHandle handle = m_agentControl.getDeploymentHandler().getDownloadHandle(highest, true); Future<DownloadResult> future = handle.start(null); DownloadResult result = future.get(); if (result.isComplete()) { InputStream inputStream = result.getInputStream(); try { m_agentControl.getDeploymentHandler().install(inputStream); } finally { inputStream.close(); } } } } }