summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGeir Storli <geirst@yahooinc.com>2023-04-27 13:49:37 +0000
committerGeir Storli <geirst@yahooinc.com>2023-04-27 13:49:37 +0000
commit103fc08d70b2612a7d8af3f3866f27f3cbedefbc (patch)
tree7c218222d9dc7828b13460a2a81b7ffbe77cde98
parentf5dd3cb5d31875cf596adc01f2207f690afe553f (diff)
Add util to export derived config files from a schema file.
Can e.g. be used by C++ unit tests to generate required config files.
-rw-r--r--config-model/src/test/java/com/yahoo/schema/derived/SchemaToDerivedConfigExporter.java52
1 files changed, 52 insertions, 0 deletions
diff --git a/config-model/src/test/java/com/yahoo/schema/derived/SchemaToDerivedConfigExporter.java b/config-model/src/test/java/com/yahoo/schema/derived/SchemaToDerivedConfigExporter.java
new file mode 100644
index 00000000000..ec3381033dc
--- /dev/null
+++ b/config-model/src/test/java/com/yahoo/schema/derived/SchemaToDerivedConfigExporter.java
@@ -0,0 +1,52 @@
+// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.schema.derived;
+
+import com.yahoo.config.model.application.provider.MockFileRegistry;
+import com.yahoo.config.model.deploy.DeployState;
+import com.yahoo.config.model.deploy.TestProperties;
+import com.yahoo.document.config.DocumenttypesConfig;
+import com.yahoo.schema.ApplicationBuilder;
+import com.yahoo.schema.parser.ParseException;
+import com.yahoo.vespa.configmodel.producers.DocumentTypes;
+
+import java.io.IOException;
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assumptions.assumeTrue;
+
+/**
+ * Utility class for deriving backend configs for a given schema and exporting them to a set of files.
+ *
+ * This can be used by e.g C++ unit tests to generate configs that are checked in as part of the test.
+ * Place the schema file in a directory $HOME/mydir and run the following in $HOME/git/vespa:
+ * mvn test -Dtest=SchemaToDerivedConfigExporter -Dschema.exporter.path=$HOME/mydir -pl config-model
+ *
+ * Note that the directory path must be absolute.
+ *
+ * @author geirst
+ */
+public class SchemaToDerivedConfigExporter {
+
+ private void exportConfig(String dirPath, DerivedConfiguration config, ApplicationBuilder builder) throws IOException {
+ config.export(dirPath);
+ DerivedConfiguration.exportDocuments(new DocumentTypes().produce(builder.getModel(), new DocumenttypesConfig.Builder()), dirPath);
+ }
+
+ @Test
+ public void deriveAndExport() throws IOException, ParseException {
+ var dirPath = System.getProperty("schema.exporter.path");
+ // The test is marked as skipped if this is not true.
+ assumeTrue(dirPath != null);
+
+ var props = new TestProperties();
+ var logger = new TestableDeployLogger();
+ var builder = ApplicationBuilder.createFromDirectory(dirPath, new MockFileRegistry(), logger, props);
+ var derived = new DerivedConfiguration(builder.getSchema(null),
+ new DeployState.Builder().properties(props)
+ .deployLogger(logger)
+ .rankProfileRegistry(builder.getRankProfileRegistry())
+ .queryProfiles(builder.getQueryProfileRegistry())
+ .build());
+ exportConfig(dirPath, derived, builder);
+ }
+}