diff options
author | Harald Musum <musum@oath.com> | 2017-11-13 08:02:09 +0100 |
---|---|---|
committer | Harald Musum <musum@oath.com> | 2017-11-13 08:02:09 +0100 |
commit | 0ea659400846a3d0a1e372fe2cead4248bc2715c (patch) | |
tree | e8936ad2cf104585100739368f121801bc8ed8b1 /config-proxy | |
parent | 7dc5186f858d59686bf2f0ceb052ccd5e30ada38 (diff) |
Wire in receiving files
Diffstat (limited to 'config-proxy')
3 files changed, 23 insertions, 9 deletions
diff --git a/config-proxy/src/main/java/com/yahoo/vespa/config/proxy/filedistribution/FileDistributionRpcServer.java b/config-proxy/src/main/java/com/yahoo/vespa/config/proxy/filedistribution/FileDistributionRpcServer.java index 552758bcfa4..46b1ffc721e 100644 --- a/config-proxy/src/main/java/com/yahoo/vespa/config/proxy/filedistribution/FileDistributionRpcServer.java +++ b/config-proxy/src/main/java/com/yahoo/vespa/config/proxy/filedistribution/FileDistributionRpcServer.java @@ -138,11 +138,13 @@ public class FileDistributionRpcServer { String filename = req.parameters().get(1).asString(); byte[] content = req.parameters().get(2).asData(); long xxhash = req.parameters().get(3).asInt64(); - int errorCode = req.parameters().get(3).asInt32(); - String errorDescription = req.parameters().get(4).asString(); + int errorCode = req.parameters().get(4).asInt32(); + String errorDescription = req.parameters().get(5).asString(); if (errorCode == 0) { - //downloader.receive(fileReference, filename, content); + // TODO: Remove when system test works + log.log(LogLevel.INFO, "Receiving file reference '" + fileReference.value() + "'"); + downloader.receiveFile(fileReference, filename, content); req.returnValues().add(new Int32Value(0)); } else { log.log(LogLevel.WARNING, "Receiving file reference '" + fileReference.value() + "' failed: " + errorDescription); diff --git a/config-proxy/src/main/java/com/yahoo/vespa/config/proxy/filedistribution/FileReferenceDownloader.java b/config-proxy/src/main/java/com/yahoo/vespa/config/proxy/filedistribution/FileReferenceDownloader.java index 611ad67a5d8..4b32ffab2b7 100644 --- a/config-proxy/src/main/java/com/yahoo/vespa/config/proxy/filedistribution/FileReferenceDownloader.java +++ b/config-proxy/src/main/java/com/yahoo/vespa/config/proxy/filedistribution/FileReferenceDownloader.java @@ -118,7 +118,8 @@ class FileReferenceDownloader { } private synchronized void completedDownloading(FileReference fileReference, File file) { - downloads.get(fileReference).future().set(Optional.of(file)); + if (downloads.containsKey(fileReference)) + downloads.get(fileReference).future().set(Optional.of(file)); downloadStatus.put(fileReference, 100.0); } diff --git a/config-proxy/src/test/java/com/yahoo/vespa/config/proxy/filedistribution/FileDownloaderTest.java b/config-proxy/src/test/java/com/yahoo/vespa/config/proxy/filedistribution/FileDownloaderTest.java index c44e19f9f03..cad3d2d0330 100644 --- a/config-proxy/src/test/java/com/yahoo/vespa/config/proxy/filedistribution/FileDownloaderTest.java +++ b/config-proxy/src/test/java/com/yahoo/vespa/config/proxy/filedistribution/FileDownloaderTest.java @@ -55,8 +55,8 @@ public class FileDownloaderTest { String fileReferenceString = "foo"; String filename = "foo.jar"; - File fileReferenceFullPath = fileReferenceFullPath(downloadDir, fileReferenceString); FileReference fileReference = new FileReference(fileReferenceString); + File fileReferenceFullPath = fileReferenceFullPath(downloadDir, fileReference); writeFileReference(downloadDir, fileReferenceString, filename); // Check that we get correct path and content when asking for file reference @@ -76,7 +76,7 @@ public class FileDownloaderTest { connection.setResponseHandler(new MockConnection.UnknownFileReferenceResponseHandler()); FileReference fileReference = new FileReference("bar"); - File fileReferenceFullPath = fileReferenceFullPath(downloadDir, fileReference.value()); + File fileReferenceFullPath = fileReferenceFullPath(downloadDir, fileReference); assertFalse(fileReferenceFullPath.getAbsolutePath(), fileDownloader.getFile(fileReference).isPresent()); // Verify download status when unable to download @@ -87,7 +87,7 @@ public class FileDownloaderTest { // fileReference does not exist on disk, needs to be downloaded) FileReference fileReference = new FileReference("fileReference"); - File fileReferenceFullPath = fileReferenceFullPath(downloadDir, fileReference.value()); + File fileReferenceFullPath = fileReferenceFullPath(downloadDir, fileReference); assertFalse(fileReferenceFullPath.getAbsolutePath(), fileDownloader.getFile(fileReference).isPresent()); // Verify download status @@ -125,13 +125,24 @@ public class FileDownloaderTest { assertDownloadStatus(fileDownloader, bar, 0.0); } + @Test + public void receiveFile() throws IOException { + File downloadDir = Files.createTempDirectory("filedistribution").toFile(); + FileDownloader fileDownloader = new FileDownloader(null, downloadDir, Duration.ofMillis(200)); + FileReference foo = new FileReference("foo"); + String filename = "foo.jar"; + fileDownloader.receiveFile(foo, filename, Utf8.toBytes("content")); + File downloadedFile = new File(fileReferenceFullPath(downloadDir, foo), filename); + assertEquals("content", IOUtils.readFile(downloadedFile)); + } + private void writeFileReference(File dir, String fileReferenceString, String fileName) throws IOException { File file = new File(new File(dir, fileReferenceString), fileName); IOUtils.writeFile(file, "content", false); } - private File fileReferenceFullPath(File dir, String fileReferenceString) { - return new File(dir, fileReferenceString); + private File fileReferenceFullPath(File dir, FileReference fileReference) { + return new File(dir, fileReference.value()); } private void assertDownloadStatus(FileDownloader fileDownloader, FileReference fileReference, double expectedDownloadStatus) { |