private void assertSuccessful(Future<DownloadResult> future, String digest) throws Exception { DownloadResult result = future.get(5, TimeUnit.SECONDS); assertTrue(result.isComplete(), "Expected state SUCCESSFUL after succesful completion"); assertNotNull(result.getInputStream(), "Expected non null file after successful completion"); assertEquals(getDigest(result.getInputStream()), digest, "Expected same digest after successful completion"); }
private void assertStopped(Future<DownloadResult> future) throws Exception { try { DownloadResult result = future.get(5, TimeUnit.SECONDS); assertFalse(result.isComplete()); } catch (CancellationException exception) { // Ok; also fine... assertTrue(future.isCancelled()); } catch (ExecutionException exception) { Throwable cause = exception.getCause(); // On Solaris, interrupting an I/O operation yields an InterruptedIOException... assertTrue(cause instanceof InterruptedIOException, "Expected InterruptedIOException, but got: " + cause); } }
private void assertDownloadStopped(Future<DownloadResult> future) throws Exception { try { DownloadResult result = future.get(5, TimeUnit.SECONDS); assertFalse(result.isComplete()); } catch (CancellationException exception) { // Ok; also fine... assertTrue(future.isCancelled()); } catch (ExecutionException exception) { Throwable cause = exception.getCause(); // On Solaris, interrupting an I/O operation yields an InterruptedIOException... assertTrue(cause instanceof InterruptedIOException, "Expected InterruptedIOException, but got: " + cause); } }
@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 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); }
DownloadResult downloadResult = future.get(); if (downloadResult.isComplete()) { controller.logInfo("Installing %s update %s => %s...", m_type, updateInfo.m_from, updateInfo.m_to); delegate.install(downloadResult.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); }
@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(); } } } } }
assertTrue(downloadResult.isComplete());
@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); }