assertEquals(getDigest(file), m_digest);
}
@Test
public void testResumeDownloadOk() throws Exception {
DownloadHandler downloadHandler = m_agentContext.getHandler(DownloadHandler.class);
DownloadResult downloadResult;
Future<DownloadResult> future;
final DownloadHandle handle = downloadHandler.getHandle(m_testContentURL);
// Start the download, but interrupt it after reading the first chunk of data...
future = handle.start(new DownloadProgressListener() {
@Override
public void progress(long bytesRead) {
System.out.printf("Downloaded %d bytes, interrupting download...%n", bytesRead);
Thread.currentThread().interrupt();
}
});
assertDownloadStopped(future);
File file = ((DownloadHandleImpl) handle).getDownloadFile();
long firstFileLength = file.length();
assertTrue(file.exists(), file.getName() + " does not exist?!");
assertTrue(firstFileLength > 0, "Nothing downloaded yet for " + file.getName() + "?");
assertTrue(firstFileLength < m_contentLength, "Everything downloaded for " + file.getName() + "?");
final DownloadHandle handle2 = downloadHandler.getHandle(m_testContentURL);
// Resume the download, but stop it after reading the first chunk of data...
future = handle2.start(new DownloadProgressListener() {
private int m_count = 5;
@Override
public void progress(long bytesRead) {
if (--m_count == 0) {
System.out.printf("Downloaded %d bytes, stopping download...%n", bytesRead);
handle2.stop();
}
}
});
assertDownloadStopped(future);
long secondFileLength = file.length();
System.out.printf("First size: %d, second size: %d; total = %d.%n", firstFileLength, secondFileLength, m_contentLength);
assertTrue(secondFileLength >= firstFileLength, "Downloaded restarted for " + file.getName() + "?");
assertTrue(secondFileLength < m_contentLength, "Everything downloaded for " + file.getName() + "?");
DownloadHandle handle3 = downloadHandler.getHandle(m_testContentURL);
// Resume the download, and finish it...
future = handle3.start(null);
downloadResult = future.get(5, TimeUnit.SECONDS);
assertTrue(downloadResult.isComplete());