diff options
author | Jon Bratseth <bratseth@gmail.com> | 2022-09-02 14:51:27 +0200 |
---|---|---|
committer | Jon Bratseth <bratseth@gmail.com> | 2022-09-02 14:51:27 +0200 |
commit | 1182b801fbfff57ce1eb7aa5d7cfd138dcad041d (patch) | |
tree | 2047a7636fe1c77bdeb00976790cbc8e132b1293 /config/src | |
parent | 377d2c5874e889c0c32cebb1f691493f6694389e (diff) |
Cleanup, more tests and separate resolved from not
Diffstat (limited to 'config/src')
-rw-r--r-- | config/src/main/java/com/yahoo/vespa/config/ConfigPayloadApplier.java | 10 | ||||
-rw-r--r-- | config/src/test/java/com/yahoo/vespa/config/ConfigPayloadApplierTest.java | 72 |
2 files changed, 67 insertions, 15 deletions
diff --git a/config/src/main/java/com/yahoo/vespa/config/ConfigPayloadApplier.java b/config/src/main/java/com/yahoo/vespa/config/ConfigPayloadApplier.java index b0ce2291438..4f078059f46 100644 --- a/config/src/main/java/com/yahoo/vespa/config/ConfigPayloadApplier.java +++ b/config/src/main/java/com/yahoo/vespa/config/ConfigPayloadApplier.java @@ -250,10 +250,12 @@ public class ConfigPayloadApplier<T extends ConfigInstance.Builder> { private ModelReference resolveModel(String modelStringValue) { var model = ModelReference.valueOf(modelStringValue); // Resolve any of url and path present, in priority order - if (model.url().isPresent() && canResolveUrls()) - model = model.withUrl(Optional.of(resolveUrl(model.url().get().value()))); - else if (model.path().isPresent()) - model = model.withPath(Optional.of(resolvePath(model.path().get().value()))); + if (model.url().isPresent() && canResolveUrls()) { + model = new ModelReference(Path.of(resolveUrl(model.url().get().value()).value())); + } + else if (model.path().isPresent()) { + model = new ModelReference(Path.of(resolvePath(model.path().get().value()).value())); + } return model; } diff --git a/config/src/test/java/com/yahoo/vespa/config/ConfigPayloadApplierTest.java b/config/src/test/java/com/yahoo/vespa/config/ConfigPayloadApplierTest.java index 4d3b6b93b3b..aa517c943de 100644 --- a/config/src/test/java/com/yahoo/vespa/config/ConfigPayloadApplierTest.java +++ b/config/src/test/java/com/yahoo/vespa/config/ConfigPayloadApplierTest.java @@ -11,28 +11,78 @@ import java.io.File; import java.nio.file.Path; import java.util.Optional; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.fail; + /** * @author bratseth */ public class ConfigPayloadApplierTest { @Test - public void testConfigApplier() { - var applier = new ConfigPayloadApplier<>(new ResolvedTypesConfig.Builder(), new MockAcquirer(), new MockDownloader()); - var config = new ResolvedTypesConfig.Builder(); - config.myPath(new FileReference("mock/myPath.txt")); - config.myUrl(new UrlReference("mock/myUrl.txt")); - config.myModel(new ModelReference(Optional.empty(), - Optional.of(new UrlReference("mockPath/myPath.txt")), - Optional.of(new FileReference("mockUrl/myUrl.txt")))); - applier.applyPayload(ConfigPayload.fromInstance(config.build())); + public void testAllConfigApplierReferenceTypes() { + var configBuilder = new ResolvedTypesConfig.Builder(); + var applier = new ConfigPayloadApplier<>(configBuilder, new MockAcquirer(), new MockDownloader()); + + var inputConfig = new ResolvedTypesConfig.Builder(); + inputConfig.myPath(new FileReference("myPath.txt")); + inputConfig.myUrl(new UrlReference("myUrl.txt")); + inputConfig.myModel(new ModelReference(Optional.empty(), + Optional.of(new UrlReference("myUrl.txt")), + Optional.of(new FileReference("myPath.txt")))); + applier.applyPayload(ConfigPayload.fromInstance(inputConfig.build())); + var config = configBuilder.build(); + + assertEndsWith("resolvedPath/myPath.txt", config.myPath().toString()); + assertEndsWith("resolvedUrl/myUrl.txt", config.myUrl().toString()); + assertEndsWith("resolvedUrl/myUrl.txt", config.myModel().toString()); + } + + @Test + public void testModelWithUrlOnly() { + var configBuilder = new ResolvedTypesConfig.Builder(); + var applier = new ConfigPayloadApplier<>(configBuilder, new MockAcquirer(), new MockDownloader()); + + var inputConfig = new ResolvedTypesConfig.Builder(); + inputConfig.myPath(new FileReference("myPath.txt")); + inputConfig.myUrl(new UrlReference("myUrl.txt")); + inputConfig.myModel(ModelReference.valueOf("my-id myUrl.txt \"\"")); + applier.applyPayload(ConfigPayload.fromInstance(inputConfig.build())); + var config = configBuilder.build(); + + assertEndsWith("resolvedUrl/myUrl.txt", config.myModel().toString()); + } + + @Test + public void testModelWithPathOnly() { + var configBuilder = new ResolvedTypesConfig.Builder(); + var applier = new ConfigPayloadApplier<>(configBuilder, new MockAcquirer(), new MockDownloader()); + + var inputConfig = new ResolvedTypesConfig.Builder(); + inputConfig.myPath(new FileReference("myPath.txt")); + inputConfig.myUrl(new UrlReference("myUrl.txt")); + inputConfig.myModel(ModelReference.valueOf("my-id \"\" myPath.txt")); + applier.applyPayload(ConfigPayload.fromInstance(inputConfig.build())); + var config = configBuilder.build(); + + assertEndsWith("resolvedPath/myPath.txt", config.myModel().toString()); + } + + private void assertEndsWith(String ending, String string) { + String assertingThat = "'" + string + "' ends with '" + ending + "'"; + try { + assertEquals(assertingThat, ending, string.substring(string.length() - ending.length())); + } + catch (StringIndexOutOfBoundsException e) { + fail(assertingThat); + } } private static class MockAcquirer implements ConfigTransformer.PathAcquirer { @Override public Path getPath(FileReference fileReference) { - return Path.of("mockPath", fileReference.value()); + return Path.of("resolvedPath", fileReference.value()); } } @@ -41,7 +91,7 @@ public class ConfigPayloadApplierTest { @Override public File waitFor(UrlReference urlReference, long timeout) { - return new File("mockUrl", urlReference.value()); + return new File("resolvedUrl", urlReference.value()); } } |