aboutsummaryrefslogtreecommitdiffstats
path: root/config-application-package
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2021-06-09 15:01:02 +0200
committerHenning Baldersheim <balder@yahoo-inc.com>2021-06-09 18:28:05 +0200
commitc6f31c85c466234df03228d997522860214a4501 (patch)
tree855b466f7293e97ff59cd9baf6f871caf915dd9d /config-application-package
parent18956afb738ba5f72631b880c7af9a16acee7589 (diff)
Add option for adding blobs
Diffstat (limited to 'config-application-package')
-rw-r--r--config-application-package/src/main/java/com/yahoo/config/model/application/provider/MockFileRegistry.java11
-rw-r--r--config-application-package/src/main/java/com/yahoo/config/model/application/provider/PreGeneratedFileRegistry.java5
-rw-r--r--config-application-package/src/test/java/com/yahoo/config/model/application/provider/PreGeneratedFileRegistryTestCase.java12
3 files changed, 23 insertions, 5 deletions
diff --git a/config-application-package/src/main/java/com/yahoo/config/model/application/provider/MockFileRegistry.java b/config-application-package/src/main/java/com/yahoo/config/model/application/provider/MockFileRegistry.java
index b3d2b061430..5d71376aa5b 100644
--- a/config-application-package/src/main/java/com/yahoo/config/model/application/provider/MockFileRegistry.java
+++ b/config-application-package/src/main/java/com/yahoo/config/model/application/provider/MockFileRegistry.java
@@ -4,7 +4,9 @@ package com.yahoo.config.model.application.provider;
import com.yahoo.config.FileReference;
import com.yahoo.config.application.api.FileRegistry;
import com.yahoo.net.HostName;
+import net.jpountz.xxhash.XXHashFactory;
+import java.nio.ByteBuffer;
import java.util.ArrayList;
import java.util.List;
@@ -33,4 +35,13 @@ public class MockFileRegistry implements FileRegistry {
throw new IllegalArgumentException("FileReference addUri(String uri) is not implemented for " + getClass().getCanonicalName());
}
+ @Override
+ public FileReference addBlob(ByteBuffer blob) {
+ long blobHash = XXHashFactory.fastestJavaInstance().hash64().hash(blob, 0);
+ String relativePath = Long.toHexString(blobHash) + ".blob";
+ FileReference fileReference = new FileReference(relativePath);
+ entries.add(new Entry(relativePath, fileReference));
+ return fileReference;
+ }
+
}
diff --git a/config-application-package/src/main/java/com/yahoo/config/model/application/provider/PreGeneratedFileRegistry.java b/config-application-package/src/main/java/com/yahoo/config/model/application/provider/PreGeneratedFileRegistry.java
index e779d59ba24..75482ded05d 100644
--- a/config-application-package/src/main/java/com/yahoo/config/model/application/provider/PreGeneratedFileRegistry.java
+++ b/config-application-package/src/main/java/com/yahoo/config/model/application/provider/PreGeneratedFileRegistry.java
@@ -7,6 +7,7 @@ import com.yahoo.config.application.api.FileRegistry;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.Reader;
+import java.nio.ByteBuffer;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
@@ -81,6 +82,10 @@ public class PreGeneratedFileRegistry implements FileRegistry {
public FileReference addUri(String uri) {
return new FileReference(path2Hash.get(uri));
}
+ @Override
+ public FileReference addBlob(ByteBuffer blob) {
+ return new FileReference(path2Hash.get(blob));
+ }
@Override
public String fileSourceHost() {
diff --git a/config-application-package/src/test/java/com/yahoo/config/model/application/provider/PreGeneratedFileRegistryTestCase.java b/config-application-package/src/test/java/com/yahoo/config/model/application/provider/PreGeneratedFileRegistryTestCase.java
index 4b2f5890a4e..7996efaa60e 100644
--- a/config-application-package/src/test/java/com/yahoo/config/model/application/provider/PreGeneratedFileRegistryTestCase.java
+++ b/config-application-package/src/test/java/com/yahoo/config/model/application/provider/PreGeneratedFileRegistryTestCase.java
@@ -1,35 +1,37 @@
// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.model.application.provider;
-import com.yahoo.config.FileReference;
import com.yahoo.config.application.api.FileRegistry;
import org.junit.Test;
import java.io.StringReader;
-import java.util.List;
+import java.nio.ByteBuffer;
+import java.nio.charset.StandardCharsets;
import java.util.Set;
import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
/**
* @author Tony Vaagenes
*/
public class PreGeneratedFileRegistryTestCase {
+ private static final String BLOB = "Some blob";
@Test
public void importAndExport() {
FileRegistry fileRegistry = new MockFileRegistry();
fileRegistry.addFile("1234");
+ fileRegistry.addBlob(ByteBuffer.wrap(BLOB.getBytes(StandardCharsets.UTF_8)));
String serializedRegistry = PreGeneratedFileRegistry.exportRegistry(fileRegistry);
PreGeneratedFileRegistry importedRegistry = PreGeneratedFileRegistry.importRegistry(new StringReader(serializedRegistry));
- assertEquals(Set.of("1234"), importedRegistry.getPaths());
+ assertEquals(Set.of("1234", "c5674b55c15c9c95.blob"), importedRegistry.getPaths());
- assertEquals(1, importedRegistry.getPaths().size());
+ assertEquals(2, importedRegistry.getPaths().size());
checkConsistentEntry(fileRegistry.export().get(0), importedRegistry);
+ checkConsistentEntry(fileRegistry.export().get(1), importedRegistry);
assertEquals(fileRegistry.fileSourceHost(), importedRegistry.fileSourceHost());
}