From d45fdde0126187a9dfe991a368791af1d5da21b9 Mon Sep 17 00:00:00 2001 From: Zachary Bischoff <116595361+bischoffz@users.noreply.github.com> Date: Wed, 24 Apr 2024 02:46:33 -0400 Subject: [PATCH 01/19] Increment Version --- pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index 8db03ea..ed96223 100644 --- a/pom.xml +++ b/pom.xml @@ -49,7 +49,7 @@ - 1.0.0 + 1.1.0-SNAPSHOT UTF-8 @@ -312,4 +312,4 @@ - \ No newline at end of file + From e17e774f14cd3100e86b4789cdb133e7e890da44 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 6 May 2024 16:44:51 -0400 Subject: [PATCH 02/19] Bump the standard-plugins group with 6 updates (#2) Bumps the standard-plugins group with 6 updates: | Package | From | To | | --- | --- | --- | | [org.codehaus.mojo:flatten-maven-plugin](https://github.com/mojohaus/flatten-maven-plugin) | `1.3.0` | `1.6.0` | | [org.apache.maven.plugins:maven-surefire-plugin](https://github.com/apache/maven-surefire) | `3.0.0-M5` | `3.2.5` | | [org.apache.maven.plugins:maven-failsafe-plugin](https://github.com/apache/maven-surefire) | `3.0.0-M5` | `3.2.5` | | [org.apache.maven.plugins:maven-source-plugin](https://github.com/apache/maven-source-plugin) | `3.2.1` | `3.3.1` | | [org.apache.maven.plugins:maven-javadoc-plugin](https://github.com/apache/maven-javadoc-plugin) | `3.5.0` | `3.6.3` | | [org.apache.maven.plugins:maven-gpg-plugin](https://github.com/apache/maven-gpg-plugin) | `3.2.2` | `3.2.4` | Updates `org.codehaus.mojo:flatten-maven-plugin` from 1.3.0 to 1.6.0 - [Release notes](https://github.com/mojohaus/flatten-maven-plugin/releases) - [Commits](https://github.com/mojohaus/flatten-maven-plugin/compare/flatten-maven-plugin-1.3.0...1.6.0) Updates `org.apache.maven.plugins:maven-surefire-plugin` from 3.0.0-M5 to 3.2.5 - [Release notes](https://github.com/apache/maven-surefire/releases) - [Commits](https://github.com/apache/maven-surefire/compare/surefire-3.0.0-M5...surefire-3.2.5) Updates `org.apache.maven.plugins:maven-failsafe-plugin` from 3.0.0-M5 to 3.2.5 - [Release notes](https://github.com/apache/maven-surefire/releases) - [Commits](https://github.com/apache/maven-surefire/compare/surefire-3.0.0-M5...surefire-3.2.5) Updates `org.apache.maven.plugins:maven-source-plugin` from 3.2.1 to 3.3.1 - [Commits](https://github.com/apache/maven-source-plugin/compare/maven-source-plugin-3.2.1...maven-source-plugin-3.3.1) Updates `org.apache.maven.plugins:maven-javadoc-plugin` from 3.5.0 to 3.6.3 - [Release notes](https://github.com/apache/maven-javadoc-plugin/releases) - [Commits](https://github.com/apache/maven-javadoc-plugin/compare/maven-javadoc-plugin-3.5.0...maven-javadoc-plugin-3.6.3) Updates `org.apache.maven.plugins:maven-gpg-plugin` from 3.2.2 to 3.2.4 - [Release notes](https://github.com/apache/maven-gpg-plugin/releases) - [Commits](https://github.com/apache/maven-gpg-plugin/compare/maven-gpg-plugin-3.2.2...maven-gpg-plugin-3.2.4) --- updated-dependencies: - dependency-name: org.codehaus.mojo:flatten-maven-plugin dependency-type: direct:production update-type: version-update:semver-minor dependency-group: standard-plugins - dependency-name: org.apache.maven.plugins:maven-surefire-plugin dependency-type: direct:production update-type: version-update:semver-minor dependency-group: standard-plugins - dependency-name: org.apache.maven.plugins:maven-failsafe-plugin dependency-type: direct:production update-type: version-update:semver-minor dependency-group: standard-plugins - dependency-name: org.apache.maven.plugins:maven-source-plugin dependency-type: direct:production update-type: version-update:semver-minor dependency-group: standard-plugins - dependency-name: org.apache.maven.plugins:maven-javadoc-plugin dependency-type: direct:production update-type: version-update:semver-minor dependency-group: standard-plugins - dependency-name: org.apache.maven.plugins:maven-gpg-plugin dependency-type: direct:production update-type: version-update:semver-patch dependency-group: standard-plugins ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- pom.xml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/pom.xml b/pom.xml index ed96223..bc57a1e 100644 --- a/pom.xml +++ b/pom.xml @@ -57,12 +57,12 @@ 17 - 1.3.0 - 3.0.0-M5 - 3.0.0-M5 - 3.2.1 - 3.5.0 - 3.2.2 + 1.6.0 + 3.2.5 + 3.2.5 + 3.3.1 + 3.6.3 + 3.2.4 0.4.0 From 827d5253a331ccd8b1791c80cd9e9f6356ce95ac Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 6 May 2024 16:45:14 -0400 Subject: [PATCH 03/19] Bump the test-dependencies group with 3 updates (#3) Bumps the test-dependencies group with 3 updates: [org.jacoco:jacoco-maven-plugin](https://github.com/jacoco/jacoco), [org.junit.jupiter:junit-jupiter-api](https://github.com/junit-team/junit5) and [org.junit.jupiter:junit-jupiter-engine](https://github.com/junit-team/junit5). Updates `org.jacoco:jacoco-maven-plugin` from 0.8.9 to 0.8.12 - [Release notes](https://github.com/jacoco/jacoco/releases) - [Commits](https://github.com/jacoco/jacoco/compare/v0.8.9...v0.8.12) Updates `org.junit.jupiter:junit-jupiter-api` from 5.8.2 to 5.10.2 - [Release notes](https://github.com/junit-team/junit5/releases) - [Commits](https://github.com/junit-team/junit5/compare/r5.8.2...r5.10.2) Updates `org.junit.jupiter:junit-jupiter-engine` from 5.8.2 to 5.10.2 - [Release notes](https://github.com/junit-team/junit5/releases) - [Commits](https://github.com/junit-team/junit5/compare/r5.8.2...r5.10.2) Updates `org.junit.jupiter:junit-jupiter-engine` from 5.8.2 to 5.10.2 - [Release notes](https://github.com/junit-team/junit5/releases) - [Commits](https://github.com/junit-team/junit5/compare/r5.8.2...r5.10.2) --- updated-dependencies: - dependency-name: org.jacoco:jacoco-maven-plugin dependency-type: direct:development update-type: version-update:semver-patch dependency-group: test-dependencies - dependency-name: org.junit.jupiter:junit-jupiter-api dependency-type: direct:development update-type: version-update:semver-minor dependency-group: test-dependencies - dependency-name: org.junit.jupiter:junit-jupiter-engine dependency-type: direct:development update-type: version-update:semver-minor dependency-group: test-dependencies - dependency-name: org.junit.jupiter:junit-jupiter-engine dependency-type: direct:development update-type: version-update:semver-minor dependency-group: test-dependencies ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index bc57a1e..e877dbb 100644 --- a/pom.xml +++ b/pom.xml @@ -68,8 +68,8 @@ 4.2.0 2.8.0 - 0.8.9 - 5.8.2 + 0.8.12 + 5.10.2 From 8ce8fe35a181f9bcee51f29dd1ecce759bc577f5 Mon Sep 17 00:00:00 2001 From: Zachary Bischoff <116595361+bischoffz@users.noreply.github.com> Date: Thu, 9 May 2024 12:38:29 -0400 Subject: [PATCH 04/19] move over pipeline-test-support (#6) * move over pipeline-test-support * remove static variables * add a log statement * remove final * rename files --- pom.xml | 95 +++++- .../testsupport/PipelineInputResolver.java | 110 +++++++ .../testsupport/PipelineTestSupport.java | 217 ++++++++++++ .../aspr/ms/gcm/pipeline/testsupport.proto | 40 +++ .../testsupport/AT_PipelineInputResolver.java | 130 ++++++++ .../testsupport/AT_PipelineTestSupport.java | 310 ++++++++++++++++++ .../unittestcoverage/UnitTestReport.java | 24 ++ .../globalPropertiesPluginData1.json | 138 ++++++++ .../globalPropertiesPluginData2.json | 138 ++++++++ .../globalPropertiesPluginData3.json | 138 ++++++++ .../globalPropertiesPluginData4.json | 151 +++++++++ src/test/resources/pipeline_tester.json | 49 +++ src/test/resources/pipeline_tester_bad.json | 50 +++ src/test/resources/pipeline_tester_dir.json | 49 +++ src/test/resources/pipeline_tester_prev.json | 48 +++ 15 files changed, 1686 insertions(+), 1 deletion(-) create mode 100644 src/main/java/gov/hhs/aspr/ms/gcm/pipeline/testsupport/PipelineInputResolver.java create mode 100644 src/main/java/gov/hhs/aspr/ms/gcm/pipeline/testsupport/PipelineTestSupport.java create mode 100644 src/main/proto/gov/hhs/aspr/ms/gcm/pipeline/testsupport.proto create mode 100644 src/test/java/gov/hhs/aspr/ms/gcm/pipeline/testsupport/AT_PipelineInputResolver.java create mode 100644 src/test/java/gov/hhs/aspr/ms/gcm/pipeline/testsupport/AT_PipelineTestSupport.java create mode 100644 src/test/java/gov/hhs/aspr/ms/gcm/pipeline/unittestcoverage/UnitTestReport.java create mode 100644 src/test/resources/globalPropertiesPluginData1.json create mode 100644 src/test/resources/globalPropertiesPluginData2.json create mode 100644 src/test/resources/globalPropertiesPluginData3.json create mode 100644 src/test/resources/globalPropertiesPluginData4.json create mode 100644 src/test/resources/pipeline_tester.json create mode 100644 src/test/resources/pipeline_tester_bad.json create mode 100644 src/test/resources/pipeline_tester_dir.json create mode 100644 src/test/resources/pipeline_tester_prev.json diff --git a/pom.xml b/pom.xml index 946a6e2..d1c05a9 100644 --- a/pom.xml +++ b/pom.xml @@ -56,6 +56,12 @@ 17 17 + + 1.7.0 + 3.3.0 + 1.3.2 + 0.6.1 + 1.6.0 3.2.5 @@ -68,6 +74,7 @@ 4.2.0 2.8.1 + 3.25.2 0.8.12 5.10.2 @@ -105,6 +112,20 @@ + + kr.motd.maven + os-maven-plugin + ${os-maven-plugin.version} + + + detect-os + initialize + + detect + + + + @@ -136,6 +157,78 @@ + + + org.codehaus.mojo + build-helper-maven-plugin + ${build-helper-maven-plugin.version} + + + add-proto-gen-folder-as-source + generate-sources + + add-source + + + + ${project.build.directory}/generated-sources/protobuf/java + + + + + + + + + com.google.code.maven-replacer-plugin + maven-replacer-plugin + ${maven-replacer-plugin.version} + + + replace-warnings-in-gen-files + process-sources + + replace + + + + + + target/generated-sources/**/*.java + + true + + MULTILINE + + + + ^(@SuppressWarnings\(.*?\)\s+)?public final class + @SuppressWarnings("all") public final class + + + + + + + + org.xolstice.maven.plugins + protobuf-maven-plugin + ${protobuf-maven-plugin.version} + + + + compile + test-compile + + + + + com.google.protobuf:protoc:${protoc.version}:exe:${os.detected.classifier} + ${basedir}/src/main/proto/gov/hhs/aspr/ms/gcm/pipeline + false + + + org.apache.maven.plugins @@ -312,4 +405,4 @@ - + \ No newline at end of file diff --git a/src/main/java/gov/hhs/aspr/ms/gcm/pipeline/testsupport/PipelineInputResolver.java b/src/main/java/gov/hhs/aspr/ms/gcm/pipeline/testsupport/PipelineInputResolver.java new file mode 100644 index 0000000..0411067 --- /dev/null +++ b/src/main/java/gov/hhs/aspr/ms/gcm/pipeline/testsupport/PipelineInputResolver.java @@ -0,0 +1,110 @@ +package gov.hhs.aspr.ms.gcm.pipeline.testsupport; + +import com.google.protobuf.Descriptors.FieldDescriptor; + +import java.nio.file.Path; +import java.util.function.Function; + +import com.google.protobuf.Message; + +/* + * This class contains advanced protobuf logic to progomatically go through each field in the pipeline input and resolve the path against PipelineTestPaths.RESOURCE_DIR + * + * If you are not familiar with protobuf, it is suggested to not look nor touch this code with a 10ft pole. + * + * Additionally, this code should rarely ever change under normal circumstances. + * + * Above each method is a small blurb about what the method does, if you are curious. + */ +public class PipelineInputResolver { + + private final Function resolverFunction; + + // package access for PipelineTestSupport + PipelineInputResolver(Function resolverFunction) { + this.resolverFunction = resolverFunction; + } + + /* + * this method gets called from PipelineTestHelper + * + * it takes in a protobuf message field, the field value and the pipeline input + * builder + * + * it determines the type of the field, either message -> normal pipeline, + * dimensionPipelineInput -> dimension pipeline, or primative. + * + * for primative values, it merely copies the value as is to the builder via the + * set field + * + * for normal pipelines and dimension pipelines, it calls the respective methods + */ + public void resolvePipelineInput(FieldDescriptor PLIField, Object PLIValue, Message.Builder resolvedPLIBuilder) { + resolvedPLIBuilder.setField(PLIField, resolveField(PLIField, PLIValue)); + } + + /* + * This mathod takes a protobuf message value + * + * It creates a new protobuf message builder for the message value + * + * for each field on the value: + * + * it checks if it is a repeated field or not + * + * if not, it sets the field to the value returned by resolveField + * + * if repeated, it adds the value returned by resolveField to the the field + * + * it returns the built protobuf message + */ + private Message resolveFields(Message message) { + + Message.Builder builder = message.newBuilderForType(); + + message.getAllFields().forEach((field, value) -> { + if (field.isRepeated()) { + int fieldCount = message.getRepeatedFieldCount(field); + for (int i = 0; i < fieldCount; i++) { + Object repeatedFieldValue = message.getRepeatedField(field, i); + builder.addRepeatedField(field, resolveField(field, repeatedFieldValue)); + } + } else { + builder.setField(field, resolveField(field, value)); + } + }); + + return builder.build(); + } + + /* + * Takes in a field descriptor and the field value + * + * it determines the type of the field. + * + * There are only 2 cases we care about: + * + * String, in which case we can safely assume that the field is a path field and needs to be resolved + * + * Message, in which case we then go through each field within the message and potentially resolve any fields within it, recurively + * + * returns the new value of the field + */ + private Object resolveField(FieldDescriptor field, Object value) { + Object _value = value; + + switch (field.getJavaType()) { + case STRING: + String path = (String) _value; + _value = this.resolverFunction.apply(path).toString(); + break; + case MESSAGE: + Message fieldMessage = (Message) _value; + _value = resolveFields(fieldMessage); + break; + default: + break; + } + return _value; + } +} diff --git a/src/main/java/gov/hhs/aspr/ms/gcm/pipeline/testsupport/PipelineTestSupport.java b/src/main/java/gov/hhs/aspr/ms/gcm/pipeline/testsupport/PipelineTestSupport.java new file mode 100644 index 0000000..4659654 --- /dev/null +++ b/src/main/java/gov/hhs/aspr/ms/gcm/pipeline/testsupport/PipelineTestSupport.java @@ -0,0 +1,217 @@ +package gov.hhs.aspr.ms.gcm.pipeline.testsupport; + +import java.io.FileReader; +import java.io.IOException; +import java.io.Reader; +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.List; +import java.util.Map; +import java.util.function.Function; + +import com.google.protobuf.Descriptors.FieldDescriptor; +import com.google.protobuf.Message; +import com.google.protobuf.util.JsonFormat; +import com.google.protobuf.util.JsonFormat.Parser; + +import gov.hhs.aspr.ms.taskit.core.TranslationController; +import gov.hhs.aspr.ms.taskit.core.TranslationEngine; +import gov.hhs.aspr.ms.taskit.core.TranslationEngineType; +import gov.hhs.aspr.ms.taskit.protobuf.ProtobufTranslationEngine; + +/** + * Test support class for testing pipelines. + *

+ * This test is only to be used if you are using protobuf to load and parse your + * pipeline input file. This is highly advised and if you aren't doing so, it is + * a good time to ask yourself why you are not. + *

+ * The param for this class is the type for your pipeline input class. Again, it + * assumes you are using protobuf and thus this type must be an extension of the + * {@link Message} type. + *

+ * Provides utility methods for loading unresolved pipeline input files, + * resolving pipeline input files, creating resolved pipeline input files on + * disk and comparing 2 output files. + * + * @param the type for your pipeline input class + */ +public class PipelineTestSupport { + + private final TranslationEngine translationEngine; + private final Class pipelineInputClassRef; + private final T pipelineInputInstance; + private final PipelineInputResolver pipelineInputResolver; + private final Function resolverFunction; + // private final String testOutputDir; + + /** + * Creates a PipelineTestSupport class + * + * Takes a translation engine builder that should contain a translation engine + * with any and all translation specs needed to validate any and all java types + * used in the pipeline tests. + * + * Takes a default instance of the given pipeline input type. + * + * Takes a class reference of the given pipeline input type. + * + * Takes a resolver function that will be used to resolve the paths in the file + * to the equivalent absolute paths. + * + * Takes in a string for the test output directory so that it can be created for + * you when getting a resolved pipeline input. + * + * @param translationEngineBuilder + * @param pipelineInputInstance + * @param pipelineInputClassRef + * @param resolverFunction + * @param testOutputDir + * + */ + public PipelineTestSupport(TranslationEngine translationEngine, T pipelineInputInstance, + Class pipelineInputClassRef, Function resolverFunction, Path testOutputDir) { + this.translationEngine = translationEngine; + this.pipelineInputInstance = pipelineInputInstance; + this.pipelineInputClassRef = pipelineInputClassRef; + this.pipelineInputResolver = new PipelineInputResolver(resolverFunction); + this.resolverFunction = resolverFunction; + // this.testOutputDir = testOutputDir; + } + + /** + * Given a pipeline input and a file name, uses taskit to output the pipeline + * input to a file with the given name. + * + * uses a protobuf translation engine and the file will be writen in json + */ + public String createResolvedPipelineInputFile(T input, String fileName) { + T.Builder builder = input.toBuilder(); + + Path resolvedPipelineInputPath = this.resolverFunction.apply(fileName); + TranslationController.builder() + .addTranslationEngine(ProtobufTranslationEngine.builder().build()) + .build() + .writeOutput(builder.build(), resolvedPipelineInputPath, TranslationEngineType.PROTOBUF); + + return resolvedPipelineInputPath.toString(); + } + + /** + * Given two class refs and 2 paths, read in each path using taskit and compare + * the resulting app object (APP_OBJ) classes for both object equals and string + * equals + *

+ * This test will fail if there isn't a properly implemented equals contract on + * the APP_OBJ + *

+ * This test will fail if there isn't a properly implemented toString on the + * APP_OBJ + *

+ * uses the translation engine provided to this class + */ + public boolean filesAreSame(Class inputClassRef, + Class outputClassRef, Path pathOfExpectedOutput, Path pathOfActualOutput) { + + TranslationController translationController = TranslationController.builder() + .addTranslationEngine(this.translationEngine) + .addInputFilePath(pathOfExpectedOutput, inputClassRef, + this.translationEngine.getTranslationEngineType()) + .addInputFilePath(pathOfActualOutput, inputClassRef, this.translationEngine.getTranslationEngineType()) + .build(); + + translationController.readInput(); + + List inputObjs = translationController.getObjects(outputClassRef); + + APP_OBJ obj1 = inputObjs.get(0); + APP_OBJ obj2 = inputObjs.get(1); + + return obj1.equals(obj2) && obj1.toString().equals(obj2.toString()); + } + + /** + * Given an unresolved pipeline input, creates a resolved pipeline input based + * on whether to use the directory input file or not, and whether to set + * runningWithPreviousData to true or not + *

+ * for the directory input file, it only resolves the input and output directory + * paths. Otherwise, it will call the PipelineInputResolver to resolve each and + * every path within the input + *

+ * then creates the Test output dir + *

+ * --------------------- + *

+ * For the input and out directory, the variable names MUST BE: 'inputDirectory' + * and 'outputDirectory' otherwise they will not be resolved. + *

+ * For the setPrev option, it will set the value of 'runningWithPreviousData' to + * true if set. Note that the variable name MUST be 'runningWithPreviousData' + */ + public T getResolvedPipelineInput(T unresolvedInput, boolean useDirectoryFile, boolean setPrev) { + + T.Builder resolvedInputBuilder = unresolvedInput.toBuilder(); + + Map fields = resolvedInputBuilder.getAllFields(); + + if (!useDirectoryFile) { + fields.forEach((pipelineField, pipelineFieldValue) -> { + this.pipelineInputResolver.resolvePipelineInput(pipelineField, pipelineFieldValue, + resolvedInputBuilder); + }); + + if (setPrev) { + fields.forEach((pipelineField, pipelineFieldValue) -> { + if (pipelineField.getName().equals("runningWithPreviousData")) { + resolvedInputBuilder.setField(pipelineField, setPrev); + + return; + } + }); + } + } else { + fields.forEach((pipelineField, pipelineFieldValue) -> { + if (pipelineField.getName().equals("inputDirectory") + || pipelineField.getName().equals("outputDirectory")) { + this.pipelineInputResolver.resolvePipelineInput(pipelineField, pipelineFieldValue, + resolvedInputBuilder); + } + }); + } + + // make outputDir + // need to update to util 4.2.0-snapshot + // ResourceHelper.makeOutputDir(testOutputDir); + + return this.pipelineInputClassRef.cast(resolvedInputBuilder.build()); + } + + /** + * given a filename, attempts to load the file using protobuf + *

+ * file must be of the type assigned to this class and is not allowed to have + * any missing/omitted fields that are not labeled optional. + */ + public T getUnresolvedPipelineInput(String inputFileName) { + Path pipelineInputPath = this.resolverFunction.apply(inputFileName); + + if (!Files.exists(pipelineInputPath)) { + throw new RuntimeException( + "Provided path does not exist: " + pipelineInputPath.toAbsolutePath().toString()); + } + + Parser jsonParser = JsonFormat.parser(); + + T.Builder builder = this.pipelineInputInstance.newBuilderForType(); + + try { + Reader reader = new FileReader(pipelineInputPath.toFile()); + jsonParser.merge(reader, builder); + } catch (IOException e) { + throw new RuntimeException(e); + } + + return this.pipelineInputClassRef.cast(builder.build()); + } +} diff --git a/src/main/proto/gov/hhs/aspr/ms/gcm/pipeline/testsupport.proto b/src/main/proto/gov/hhs/aspr/ms/gcm/pipeline/testsupport.proto new file mode 100644 index 0000000..dc7d3fe --- /dev/null +++ b/src/main/proto/gov/hhs/aspr/ms/gcm/pipeline/testsupport.proto @@ -0,0 +1,40 @@ +syntax = "proto3"; +package gov.hhs.aspr.ms.gcm.pipeline; + +option java_multiple_files = true; +option java_package = "gov.hhs.aspr.ms.gcm.pipeline.testsupport.input"; + +message TestPipelineInput { + TestSubPipelineInput testPipelineInput = 1; + TestDimensionPipelineInput testDimensionPipelineInput = 2; + optional bool runningWithPreviousData = 3; + optional string inputDirectory = 4; + optional string outputDirectory = 5; +} + +message TestSubPipelineInput { + string testDataFile1 = 1; + string testDataFile2 = 2; + string testDataFile3 = 3; + string testDataFile4 = 4; + string pluginDataFile = 5; +} + +message TestDimensionInstanceInput { + bool enabled = 1; + string inputFile = 2; + string dimensionDataFile = 3; +} + +message TestMultiDimensionPipelineInput { + repeated TestDimensionInstanceInput dimensionInstanceInput = 1; +} + +message TestSingleDimensionPipelineInput { + TestDimensionInstanceInput dimensionInstanceInput = 1; +} + +message TestDimensionPipelineInput { + TestMultiDimensionPipelineInput testMultiDimensionPipelineInput = 1; + TestSingleDimensionPipelineInput testSingleDimensionPipelineInput = 2; +} \ No newline at end of file diff --git a/src/test/java/gov/hhs/aspr/ms/gcm/pipeline/testsupport/AT_PipelineInputResolver.java b/src/test/java/gov/hhs/aspr/ms/gcm/pipeline/testsupport/AT_PipelineInputResolver.java new file mode 100644 index 0000000..d54c0db --- /dev/null +++ b/src/test/java/gov/hhs/aspr/ms/gcm/pipeline/testsupport/AT_PipelineInputResolver.java @@ -0,0 +1,130 @@ +package gov.hhs.aspr.ms.gcm.pipeline.testsupport; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; + +import java.nio.file.Path; +import java.util.Map; + +import org.junit.jupiter.api.Test; + +import com.google.protobuf.Descriptors.FieldDescriptor; +import com.google.protobuf.Message; + +import gov.hhs.aspr.ms.gcm.pipeline.testsupport.input.TestDimensionInstanceInput; +import gov.hhs.aspr.ms.gcm.pipeline.testsupport.input.TestDimensionPipelineInput; +import gov.hhs.aspr.ms.gcm.pipeline.testsupport.input.TestMultiDimensionPipelineInput; +import gov.hhs.aspr.ms.gcm.pipeline.testsupport.input.TestPipelineInput; +import gov.hhs.aspr.ms.gcm.pipeline.testsupport.input.TestSingleDimensionPipelineInput; +import gov.hhs.aspr.ms.gcm.pipeline.testsupport.input.TestSubPipelineInput; +import gov.hhs.aspr.ms.taskit.protobuf.ProtobufTranslationEngine; +import gov.hhs.aspr.ms.util.annotations.UnitTestMethod; +import gov.hhs.aspr.ms.util.resourcehelper.ResourceHelper; + +public class AT_PipelineInputResolver { + private final Path REOURCE_DIR = ResourceHelper.getResourceDir(AT_PipelineInputResolver.class); + private final String TEST_OUTPUT_DIR_NAME = "testOutput"; + private final Path TEST_OUTPUT_DIR = getResolvedResourcePath(TEST_OUTPUT_DIR_NAME); + private final String TEST_FILE_NAME = "pipeline_tester.json"; + + private final Path getResolvedResourcePath(String path) { + return REOURCE_DIR.resolve(path).toAbsolutePath(); + } + + @Test + @UnitTestMethod(target = PipelineInputResolver.class, name = "resolvePipelineInput", args = { FieldDescriptor.class, + Object.class, Message.Builder.class }) + public void testResolvePipelineInput() { + PipelineTestSupport testPipelineInputTestSupport = new PipelineTestSupport<>( + ProtobufTranslationEngine.builder().build(), TestPipelineInput.getDefaultInstance(), + TestPipelineInput.class, + this::getResolvedResourcePath, + TEST_OUTPUT_DIR); + + PipelineInputResolver pipelineInputResolver = new PipelineInputResolver( + this::getResolvedResourcePath); + + TestPipelineInput unresolvedTestPipelineInput = testPipelineInputTestSupport + .getUnresolvedPipelineInput(TEST_FILE_NAME); + + TestPipelineInput.Builder resolvedInputBuilder = unresolvedTestPipelineInput.toBuilder(); + Map fields = resolvedInputBuilder.getAllFields(); + + fields.forEach((pipelineField, pipelineFieldValue) -> { + pipelineInputResolver.resolvePipelineInput(pipelineField, pipelineFieldValue, + resolvedInputBuilder); + }); + + TestPipelineInput resolvedPipelineInput = resolvedInputBuilder.build(); + + TestSubPipelineInput testResolvedSubPipelineInput = resolvedPipelineInput.getTestPipelineInput(); + TestDimensionPipelineInput testResolvedDimensionPipelineInput = resolvedPipelineInput + .getTestDimensionPipelineInput(); + + TestSingleDimensionPipelineInput testResolvedSingleDimensionPipelineInput = testResolvedDimensionPipelineInput + .getTestSingleDimensionPipelineInput(); + TestMultiDimensionPipelineInput testResolvedMultiDimensionPipelineInput = testResolvedDimensionPipelineInput + .getTestMultiDimensionPipelineInput(); + + TestSubPipelineInput testUnresolvedSubPipelineInput = unresolvedTestPipelineInput + .getTestPipelineInput(); + TestDimensionPipelineInput testUnresolvedDimensionPipelineInput = unresolvedTestPipelineInput + .getTestDimensionPipelineInput(); + + TestSingleDimensionPipelineInput testUnresolvedSingleDimensionPipelineInput = testUnresolvedDimensionPipelineInput + .getTestSingleDimensionPipelineInput(); + TestMultiDimensionPipelineInput testUnresolvedMultiDimensionPipelineInput = testUnresolvedDimensionPipelineInput + .getTestMultiDimensionPipelineInput(); + + Path testPath = Path.of(testResolvedSubPipelineInput.getTestDataFile1()); + Path expectedPath = getResolvedResourcePath(testUnresolvedSubPipelineInput.getTestDataFile1()); + assertTrue(testPath.isAbsolute()); + assertEquals(expectedPath, testPath); + + testPath = Path.of(testResolvedSubPipelineInput.getTestDataFile2()); + expectedPath = getResolvedResourcePath(testUnresolvedSubPipelineInput.getTestDataFile2()); + assertTrue(testPath.isAbsolute()); + + testPath = Path.of(testResolvedSubPipelineInput.getTestDataFile3()); + expectedPath = getResolvedResourcePath(testUnresolvedSubPipelineInput.getTestDataFile3()); + assertTrue(testPath.isAbsolute()); + + testPath = Path.of(testResolvedSubPipelineInput.getTestDataFile4()); + expectedPath = getResolvedResourcePath(testUnresolvedSubPipelineInput.getTestDataFile4()); + assertTrue(testPath.isAbsolute()); + + testPath = Path.of(testResolvedSubPipelineInput.getPluginDataFile()); + expectedPath = getResolvedResourcePath(testUnresolvedSubPipelineInput.getPluginDataFile()); + assertTrue(testPath.isAbsolute()); + + testPath = Path.of(testResolvedSingleDimensionPipelineInput.getDimensionInstanceInput().getInputFile()); + expectedPath = getResolvedResourcePath( + testUnresolvedSingleDimensionPipelineInput.getDimensionInstanceInput().getInputFile()); + assertTrue(testPath.isAbsolute()); + + testPath = Path.of(testResolvedSingleDimensionPipelineInput.getDimensionInstanceInput() + .getDimensionDataFile()); + expectedPath = getResolvedResourcePath( + testUnresolvedSingleDimensionPipelineInput.getDimensionInstanceInput() + .getDimensionDataFile()); + assertTrue(testPath.isAbsolute()); + + assertEquals(testUnresolvedMultiDimensionPipelineInput.getDimensionInstanceInputCount(), + testResolvedMultiDimensionPipelineInput.getDimensionInstanceInputCount()); + + for (int i = 0; i < testResolvedMultiDimensionPipelineInput.getDimensionInstanceInputCount(); i++) { + TestDimensionInstanceInput unresolvedDimInstance = testUnresolvedMultiDimensionPipelineInput + .getDimensionInstanceInput(i); + TestDimensionInstanceInput resolvedDimInstance = testResolvedMultiDimensionPipelineInput + .getDimensionInstanceInput(i); + + testPath = Path.of(resolvedDimInstance.getInputFile()); + expectedPath = getResolvedResourcePath(unresolvedDimInstance.getInputFile()); + assertTrue(testPath.isAbsolute()); + + testPath = Path.of(resolvedDimInstance.getDimensionDataFile()); + expectedPath = getResolvedResourcePath(unresolvedDimInstance.getDimensionDataFile()); + assertTrue(testPath.isAbsolute()); + } + } +} diff --git a/src/test/java/gov/hhs/aspr/ms/gcm/pipeline/testsupport/AT_PipelineTestSupport.java b/src/test/java/gov/hhs/aspr/ms/gcm/pipeline/testsupport/AT_PipelineTestSupport.java new file mode 100644 index 0000000..e1a08fa --- /dev/null +++ b/src/test/java/gov/hhs/aspr/ms/gcm/pipeline/testsupport/AT_PipelineTestSupport.java @@ -0,0 +1,310 @@ +package gov.hhs.aspr.ms.gcm.pipeline.testsupport; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.junit.jupiter.api.Assertions.assertTrue; + +import java.nio.file.Path; +import java.util.function.Function; + +import org.junit.jupiter.api.Test; + +import com.google.protobuf.InvalidProtocolBufferException; +import com.google.protobuf.Message; + +import gov.hhs.aspr.ms.gcm.pipeline.testsupport.input.TestDimensionInstanceInput; +import gov.hhs.aspr.ms.gcm.pipeline.testsupport.input.TestDimensionPipelineInput; +import gov.hhs.aspr.ms.gcm.pipeline.testsupport.input.TestMultiDimensionPipelineInput; +import gov.hhs.aspr.ms.gcm.pipeline.testsupport.input.TestPipelineInput; +import gov.hhs.aspr.ms.gcm.pipeline.testsupport.input.TestSingleDimensionPipelineInput; +import gov.hhs.aspr.ms.gcm.pipeline.testsupport.input.TestSubPipelineInput; +import gov.hhs.aspr.ms.gcm.simulation.plugins.globalproperties.datamanagers.GlobalPropertiesPluginData; +import gov.hhs.aspr.ms.gcm.taskit.protobuf.plugins.globalproperties.GlobalPropertiesTranslator; +import gov.hhs.aspr.ms.gcm.taskit.protobuf.plugins.globalproperties.data.input.GlobalPropertiesPluginDataInput; +import gov.hhs.aspr.ms.gcm.taskit.protobuf.plugins.properties.PropertiesTranslator; +import gov.hhs.aspr.ms.gcm.taskit.protobuf.plugins.reports.ReportsTranslator; +import gov.hhs.aspr.ms.taskit.core.TranslationEngine; +import gov.hhs.aspr.ms.taskit.protobuf.ProtobufTranslationEngine; +import gov.hhs.aspr.ms.util.annotations.UnitTestConstructor; +import gov.hhs.aspr.ms.util.annotations.UnitTestMethod; +import gov.hhs.aspr.ms.util.resourcehelper.ResourceHelper; + +public class AT_PipelineTestSupport { + private final Path REOURCE_DIR = ResourceHelper.getResourceDir(this.getClass()); + private final String TEST_OUTPUT_DIR_NAME = "testOutput"; + private final Path TEST_OUTPUT_DIR = getResolvedResourcePath(TEST_OUTPUT_DIR_NAME); + private final String TEST_FILE_NAME = "pipeline_tester.json"; + private final String TEST_FILE_DIR_NAME = "pipeline_tester_dir.json"; + private final String TEST_FILE_PREV_NAME = "pipeline_tester_prev.json"; + private final String TEST_FILE_BAD_NAME = "pipeline_tester_bad.json"; + private final String TEST_FILE_NAME_RESOLVED = "pipeline_tester_resolved.json"; + + private final String TEST_GP_FILE_1 = "globalPropertiesPluginData1.json"; + private final String TEST_GP_FILE_2 = "globalPropertiesPluginData2.json"; + private final String TEST_GP_FILE_3 = "globalPropertiesPluginData3.json"; + private final String TEST_GP_FILE_4 = "globalPropertiesPluginData4.json"; + + private final Path TEST_GP_FILE_1_PATH = getResolvedResourcePath(TEST_GP_FILE_1); + private final Path TEST_GP_FILE_2_PATH = getResolvedResourcePath(TEST_GP_FILE_2); + private final Path TEST_GP_FILE_3_PATH = getResolvedResourcePath(TEST_GP_FILE_3); + private final Path TEST_GP_FILE_4_PATH = getResolvedResourcePath(TEST_GP_FILE_4); + + private final Path getResolvedResourcePath(String path) { + return REOURCE_DIR.resolve(path).toAbsolutePath(); + } + + @Test + @UnitTestConstructor(target = PipelineTestSupport.class, args = { TranslationEngine.class, Message.class, + Class.class, Function.class, Path.class }) + public void testConstructor() { + PipelineTestSupport testPipelineInputTestSupport = new PipelineTestSupport<>( + ProtobufTranslationEngine.builder().build(), TestPipelineInput.getDefaultInstance(), + TestPipelineInput.class, + this::getResolvedResourcePath, + TEST_OUTPUT_DIR); + + assertNotNull(testPipelineInputTestSupport); + } + + @Test + @UnitTestMethod(target = PipelineTestSupport.class, name = "createResolvedPipelineInputFile", args = { + Message.class, + String.class }) + public void testCreateResolvedPipelineInputFile() { + PipelineTestSupport testPipelineInputTestSupport = new PipelineTestSupport<>( + ProtobufTranslationEngine.builder().build(), TestPipelineInput.getDefaultInstance(), + TestPipelineInput.class, + this::getResolvedResourcePath, + TEST_OUTPUT_DIR); + + TestPipelineInput testPipelineInput = testPipelineInputTestSupport + .getUnresolvedPipelineInput(TEST_FILE_NAME); + TestPipelineInput resolvedPipelineInput = testPipelineInputTestSupport + .getResolvedPipelineInput(testPipelineInput, false, false); + + String filePath = testPipelineInputTestSupport.createResolvedPipelineInputFile(resolvedPipelineInput, + TEST_FILE_NAME_RESOLVED); + + Path resolvedPath = Path.of(filePath); + + assertTrue(resolvedPath.isAbsolute()); + assertTrue(resolvedPath.toFile().exists()); + } + + @Test + @UnitTestMethod(target = PipelineTestSupport.class, name = "filesAreSame", args = { Class.class, Class.class, + Path.class, Path.class }) + public void testFilesAreSame() { + PipelineTestSupport testPipelineInputTestSupport = new PipelineTestSupport<>( + ProtobufTranslationEngine.builder() + .addTranslator(GlobalPropertiesTranslator.getTranslator()) + .addTranslator(PropertiesTranslator.getTranslator()) + .addTranslator(ReportsTranslator.getTranslator()) + .build(), + TestPipelineInput.getDefaultInstance(), + TestPipelineInput.class, + this::getResolvedResourcePath, + TEST_OUTPUT_DIR); + + assertTrue(testPipelineInputTestSupport.filesAreSame(GlobalPropertiesPluginDataInput.class, + GlobalPropertiesPluginData.class, TEST_GP_FILE_1_PATH, TEST_GP_FILE_2_PATH)); + assertFalse(testPipelineInputTestSupport.filesAreSame(GlobalPropertiesPluginDataInput.class, + GlobalPropertiesPluginData.class, TEST_GP_FILE_1_PATH, TEST_GP_FILE_3_PATH)); + assertFalse(testPipelineInputTestSupport.filesAreSame(GlobalPropertiesPluginDataInput.class, + GlobalPropertiesPluginData.class, TEST_GP_FILE_2_PATH, TEST_GP_FILE_3_PATH)); + assertFalse(testPipelineInputTestSupport.filesAreSame(GlobalPropertiesPluginDataInput.class, + GlobalPropertiesPluginData.class, TEST_GP_FILE_3_PATH, TEST_GP_FILE_4_PATH)); + } + + @Test + @UnitTestMethod(target = PipelineTestSupport.class, name = "getResolvedPipelineInput", args = { Message.class, + boolean.class, + boolean.class }) + public void testGetResolvedPipelineInput() { + PipelineTestSupport testPipelineInputTestSupport = new PipelineTestSupport<>( + ProtobufTranslationEngine.builder().build(), TestPipelineInput.getDefaultInstance(), + TestPipelineInput.class, + this::getResolvedResourcePath, + TEST_OUTPUT_DIR); + + TestPipelineInput unresolvedTestPipelineInput = testPipelineInputTestSupport + .getUnresolvedPipelineInput(TEST_FILE_NAME); + TestPipelineInput resolvedPipelineInput = testPipelineInputTestSupport + .getResolvedPipelineInput(unresolvedTestPipelineInput, false, false); + + TestSubPipelineInput testResolvedSubPipelineInput = resolvedPipelineInput.getTestPipelineInput(); + TestDimensionPipelineInput testResolvedDimensionPipelineInput = resolvedPipelineInput + .getTestDimensionPipelineInput(); + + TestSingleDimensionPipelineInput testResolvedSingleDimensionPipelineInput = testResolvedDimensionPipelineInput + .getTestSingleDimensionPipelineInput(); + TestMultiDimensionPipelineInput testResolvedMultiDimensionPipelineInput = testResolvedDimensionPipelineInput + .getTestMultiDimensionPipelineInput(); + + TestSubPipelineInput testUnresolvedSubPipelineInput = unresolvedTestPipelineInput + .getTestPipelineInput(); + TestDimensionPipelineInput testUnresolvedDimensionPipelineInput = unresolvedTestPipelineInput + .getTestDimensionPipelineInput(); + + TestSingleDimensionPipelineInput testUnresolvedSingleDimensionPipelineInput = testUnresolvedDimensionPipelineInput + .getTestSingleDimensionPipelineInput(); + TestMultiDimensionPipelineInput testUnresolvedMultiDimensionPipelineInput = testUnresolvedDimensionPipelineInput + .getTestMultiDimensionPipelineInput(); + + Path testPath = Path.of(testResolvedSubPipelineInput.getTestDataFile1()); + Path expectedPath = getResolvedResourcePath(testUnresolvedSubPipelineInput.getTestDataFile1()); + assertTrue(testPath.isAbsolute()); + assertEquals(expectedPath, testPath); + + testPath = Path.of(testResolvedSubPipelineInput.getTestDataFile2()); + expectedPath = getResolvedResourcePath(testUnresolvedSubPipelineInput.getTestDataFile2()); + assertTrue(testPath.isAbsolute()); + assertEquals(expectedPath, testPath); + + testPath = Path.of(testResolvedSubPipelineInput.getTestDataFile3()); + expectedPath = getResolvedResourcePath(testUnresolvedSubPipelineInput.getTestDataFile3()); + assertTrue(testPath.isAbsolute()); + assertEquals(expectedPath, testPath); + + testPath = Path.of(testResolvedSubPipelineInput.getTestDataFile4()); + expectedPath = getResolvedResourcePath(testUnresolvedSubPipelineInput.getTestDataFile4()); + assertTrue(testPath.isAbsolute()); + assertEquals(expectedPath, testPath); + + testPath = Path.of(testResolvedSubPipelineInput.getPluginDataFile()); + expectedPath = getResolvedResourcePath(testUnresolvedSubPipelineInput.getPluginDataFile()); + assertTrue(testPath.isAbsolute()); + assertEquals(expectedPath, testPath); + + testPath = Path.of(testResolvedSingleDimensionPipelineInput.getDimensionInstanceInput().getInputFile()); + expectedPath = getResolvedResourcePath( + testUnresolvedSingleDimensionPipelineInput.getDimensionInstanceInput().getInputFile()); + assertTrue(testPath.isAbsolute()); + assertEquals(expectedPath, testPath); + + testPath = Path.of(testResolvedSingleDimensionPipelineInput.getDimensionInstanceInput() + .getDimensionDataFile()); + expectedPath = getResolvedResourcePath( + testUnresolvedSingleDimensionPipelineInput.getDimensionInstanceInput() + .getDimensionDataFile()); + assertTrue(testPath.isAbsolute()); + assertEquals(expectedPath, testPath); + + assertEquals(testUnresolvedMultiDimensionPipelineInput.getDimensionInstanceInputCount(), + testResolvedMultiDimensionPipelineInput.getDimensionInstanceInputCount()); + + for (int i = 0; i < testResolvedMultiDimensionPipelineInput.getDimensionInstanceInputCount(); i++) { + TestDimensionInstanceInput unresolvedDimInstance = testUnresolvedMultiDimensionPipelineInput + .getDimensionInstanceInput(i); + TestDimensionInstanceInput resolvedDimInstance = testResolvedMultiDimensionPipelineInput + .getDimensionInstanceInput(i); + + testPath = Path.of(resolvedDimInstance.getInputFile()); + expectedPath = getResolvedResourcePath(unresolvedDimInstance.getInputFile()); + assertTrue(testPath.isAbsolute()); + assertEquals(expectedPath, testPath); + + testPath = Path.of(resolvedDimInstance.getDimensionDataFile()); + expectedPath = getResolvedResourcePath(unresolvedDimInstance.getDimensionDataFile()); + assertTrue(testPath.isAbsolute()); + assertEquals(expectedPath, testPath); + } + + unresolvedTestPipelineInput = testPipelineInputTestSupport + .getUnresolvedPipelineInput(TEST_FILE_DIR_NAME); + resolvedPipelineInput = testPipelineInputTestSupport + .getResolvedPipelineInput(unresolvedTestPipelineInput, true, false); + + testPath = Path.of(resolvedPipelineInput.getInputDirectory()); + expectedPath = getResolvedResourcePath(unresolvedTestPipelineInput.getInputDirectory()); + assertTrue(testPath.isAbsolute()); + assertEquals(expectedPath, testPath); + + testPath = Path.of(resolvedPipelineInput.getOutputDirectory()); + expectedPath = getResolvedResourcePath(unresolvedTestPipelineInput.getOutputDirectory()); + assertTrue(testPath.isAbsolute()); + assertEquals(expectedPath, testPath); + + unresolvedTestPipelineInput = testPipelineInputTestSupport + .getUnresolvedPipelineInput(TEST_FILE_PREV_NAME); + resolvedPipelineInput = testPipelineInputTestSupport + .getResolvedPipelineInput(unresolvedTestPipelineInput, false, true); + + assertTrue(resolvedPipelineInput.getRunningWithPreviousData()); + } + + @Test + @UnitTestMethod(target = PipelineTestSupport.class, name = "getUnresolvedPipelineInput", args = { + String.class }) + public void testGetUnresolvedPipelineInput() { + PipelineTestSupport testPipelineInputTestSupport = new PipelineTestSupport<>( + ProtobufTranslationEngine.builder().build(), TestPipelineInput.getDefaultInstance(), + TestPipelineInput.class, + this::getResolvedResourcePath, + TEST_OUTPUT_DIR); + + TestPipelineInput testPipelineInput = testPipelineInputTestSupport + .getUnresolvedPipelineInput(TEST_FILE_NAME); + + TestSubPipelineInput testSubPipelineInput = testPipelineInput.getTestPipelineInput(); + TestDimensionPipelineInput testDimensionPipelineInput = testPipelineInput + .getTestDimensionPipelineInput(); + + TestSingleDimensionPipelineInput testSingleDimensionPipelineInput = testDimensionPipelineInput + .getTestSingleDimensionPipelineInput(); + TestMultiDimensionPipelineInput testMultiDimensionPipelineInput = testDimensionPipelineInput + .getTestMultiDimensionPipelineInput(); + + Path testPath = Path.of(testSubPipelineInput.getTestDataFile1()); + assertNotNull(testPath); + + testPath = Path.of(testSubPipelineInput.getTestDataFile2()); + assertNotNull(testPath); + + testPath = Path.of(testSubPipelineInput.getTestDataFile3()); + assertNotNull(testPath); + + testPath = Path.of(testSubPipelineInput.getTestDataFile4()); + assertNotNull(testPath); + + testPath = Path.of(testSubPipelineInput.getPluginDataFile()); + assertNotNull(testPath); + + testPath = Path.of(testSingleDimensionPipelineInput.getDimensionInstanceInput().getInputFile()); + assertNotNull(testPath); + + testPath = Path.of(testSingleDimensionPipelineInput.getDimensionInstanceInput().getDimensionDataFile()); + assertNotNull(testPath); + + for (TestDimensionInstanceInput testDimensionInstanceInput : testMultiDimensionPipelineInput + .getDimensionInstanceInputList()) { + testPath = Path.of(testDimensionInstanceInput.getInputFile()); + assertNotNull(testPath); + + testPath = Path.of(testDimensionInstanceInput.getDimensionDataFile()); + assertNotNull(testPath); + } + + // preconditions: + // file path does not exist + RuntimeException runtimeException = assertThrows(RuntimeException.class, () -> { + testPipelineInputTestSupport + .getUnresolvedPipelineInput("badFile.json"); + }); + + assertEquals( + "Provided path does not exist: " + getResolvedResourcePath("badFile.json").toAbsolutePath().toString(), + runtimeException.getMessage()); + + // json is bad/has unknown fields + runtimeException = assertThrows(RuntimeException.class, () -> { + testPipelineInputTestSupport + .getUnresolvedPipelineInput(TEST_FILE_BAD_NAME); + }); + + assertEquals(InvalidProtocolBufferException.class, + runtimeException.getCause().getClass()); + } +} diff --git a/src/test/java/gov/hhs/aspr/ms/gcm/pipeline/unittestcoverage/UnitTestReport.java b/src/test/java/gov/hhs/aspr/ms/gcm/pipeline/unittestcoverage/UnitTestReport.java new file mode 100644 index 0000000..9c32e04 --- /dev/null +++ b/src/test/java/gov/hhs/aspr/ms/gcm/pipeline/unittestcoverage/UnitTestReport.java @@ -0,0 +1,24 @@ +package gov.hhs.aspr.ms.gcm.pipeline.unittestcoverage; + +public final class UnitTestReport { + + public static void main(final String[] args) { + + System.out.println("Missing Tests Report:"); + gov.hhs.aspr.ms.util.meta.unittestcoverage.reports.MissingTestsReport.run(args); + System.out.print("\n\n\n"); + + System.out.println("MetaInfo Report:"); + gov.hhs.aspr.ms.util.meta.unittestcoverage.reports.MetaInfoReport.run(args); + System.out.print("\n\n\n"); + + System.out.println("Incomplete Tests Report:"); + gov.hhs.aspr.ms.util.meta.unittestcoverage.reports.IncompleteClassReport.run(args); + System.out.print("\n\n\n"); + + System.out.println("Status Report:"); + gov.hhs.aspr.ms.util.meta.unittestcoverage.reports.StatusReport.run(args); + System.out.print("\n\n\n"); + } + +} diff --git a/src/test/resources/globalPropertiesPluginData1.json b/src/test/resources/globalPropertiesPluginData1.json new file mode 100644 index 0000000..1c30834 --- /dev/null +++ b/src/test/resources/globalPropertiesPluginData1.json @@ -0,0 +1,138 @@ +{ + "globalPropertyDefinitinions": [{ + "propertyId": { + "@type": "type.googleapis.com/gov.hhs.aspr.ms.taskit.protobuf.WrapperEnumValue", + "enumTypeUrl": "gov.hhs.aspr.ms.gcm.taskit.protobuf.plugins.TestGlobalPropertyIdInput", + "value": "GLOBAL_PROPERTY_1_BOOLEAN_MUTABLE" + }, + "propertyDefinition": { + "propertyValuesAreMutable": true, + "defaultValue": { + "@type": "type.googleapis.com/google.protobuf.BoolValue", + "value": false + } + }, + "propertyTrackingPolicy": true + }, { + "propertyId": { + "@type": "type.googleapis.com/gov.hhs.aspr.ms.taskit.protobuf.WrapperEnumValue", + "enumTypeUrl": "gov.hhs.aspr.ms.gcm.taskit.protobuf.plugins.TestGlobalPropertyIdInput", + "value": "GLOBAL_PROPERTY_2_INTEGER_MUTABLE" + }, + "propertyDefinition": { + "propertyValuesAreMutable": true, + "defaultValue": { + "@type": "type.googleapis.com/google.protobuf.Int32Value", + "value": 0 + } + }, + "propertyTrackingPolicy": true + }, { + "propertyId": { + "@type": "type.googleapis.com/gov.hhs.aspr.ms.taskit.protobuf.WrapperEnumValue", + "enumTypeUrl": "gov.hhs.aspr.ms.gcm.taskit.protobuf.plugins.TestGlobalPropertyIdInput", + "value": "GLOBAL_PROPERTY_3_DOUBLE_MUTABLE" + }, + "propertyDefinition": { + "type": "java.lang.Double", + "propertyValuesAreMutable": true + }, + "propertyTrackingPolicy": true + }, { + "propertyId": { + "@type": "type.googleapis.com/gov.hhs.aspr.ms.taskit.protobuf.WrapperEnumValue", + "enumTypeUrl": "gov.hhs.aspr.ms.gcm.taskit.protobuf.plugins.TestGlobalPropertyIdInput", + "value": "GLOBAL_PROPERTY_4_BOOLEAN_IMMUTABLE" + }, + "propertyDefinition": { + "defaultValue": { + "@type": "type.googleapis.com/google.protobuf.BoolValue", + "value": false + } + }, + "propertyTrackingPolicy": true + }, { + "propertyId": { + "@type": "type.googleapis.com/gov.hhs.aspr.ms.taskit.protobuf.WrapperEnumValue", + "enumTypeUrl": "gov.hhs.aspr.ms.gcm.taskit.protobuf.plugins.TestGlobalPropertyIdInput", + "value": "GLOBAL_PROPERTY_5_INTEGER_IMMUTABLE" + }, + "propertyDefinition": { + "defaultValue": { + "@type": "type.googleapis.com/google.protobuf.Int32Value", + "value": 0 + } + }, + "propertyTrackingPolicy": true + }, { + "propertyId": { + "@type": "type.googleapis.com/gov.hhs.aspr.ms.taskit.protobuf.WrapperEnumValue", + "enumTypeUrl": "gov.hhs.aspr.ms.gcm.taskit.protobuf.plugins.TestGlobalPropertyIdInput", + "value": "GLOBAL_PROPERTY_6_DOUBLE_IMMUTABLE" + }, + "propertyDefinition": { + "defaultValue": { + "@type": "type.googleapis.com/google.protobuf.DoubleValue", + "value": 0.0 + } + }, + "propertyTrackingPolicy": true + }], + "globalPropertyValues": [{ + "propertyId": { + "@type": "type.googleapis.com/gov.hhs.aspr.ms.taskit.protobuf.WrapperEnumValue", + "enumTypeUrl": "gov.hhs.aspr.ms.gcm.taskit.protobuf.plugins.TestGlobalPropertyIdInput", + "value": "GLOBAL_PROPERTY_3_DOUBLE_MUTABLE" + }, + "propertyValue": { + "@type": "type.googleapis.com/google.protobuf.DoubleValue", + "value": 0.5160930745117192 + }, + "propertyValueTime": 0.0 + }, { + "propertyId": { + "@type": "type.googleapis.com/gov.hhs.aspr.ms.taskit.protobuf.WrapperEnumValue", + "enumTypeUrl": "gov.hhs.aspr.ms.gcm.taskit.protobuf.plugins.TestGlobalPropertyIdInput", + "value": "GLOBAL_PROPERTY_5_INTEGER_IMMUTABLE" + }, + "propertyValue": { + "@type": "type.googleapis.com/google.protobuf.Int32Value", + "value": 0 + }, + "propertyValueTime": 0.0 + }, { + "propertyId": { + "@type": "type.googleapis.com/gov.hhs.aspr.ms.taskit.protobuf.WrapperEnumValue", + "enumTypeUrl": "gov.hhs.aspr.ms.gcm.taskit.protobuf.plugins.TestGlobalPropertyIdInput", + "value": "GLOBAL_PROPERTY_2_INTEGER_MUTABLE" + }, + "propertyValue": { + "@type": "type.googleapis.com/google.protobuf.Int32Value", + "value": 0 + }, + "propertyValueTime": 0.0 + }, { + "propertyId": { + "@type": "type.googleapis.com/gov.hhs.aspr.ms.taskit.protobuf.WrapperEnumValue", + "enumTypeUrl": "gov.hhs.aspr.ms.gcm.taskit.protobuf.plugins.TestGlobalPropertyIdInput", + "value": "GLOBAL_PROPERTY_4_BOOLEAN_IMMUTABLE" + }, + "propertyValue": { + "@type": "type.googleapis.com/google.protobuf.BoolValue", + "value": false + }, + "propertyValueTime": 0.0 + }, { + "propertyId": { + "@type": "type.googleapis.com/gov.hhs.aspr.ms.taskit.protobuf.WrapperEnumValue", + "enumTypeUrl": "gov.hhs.aspr.ms.gcm.taskit.protobuf.plugins.TestGlobalPropertyIdInput", + "value": "GLOBAL_PROPERTY_1_BOOLEAN_MUTABLE" + }, + "propertyValue": { + "@type": "type.googleapis.com/google.protobuf.BoolValue", + "value": false + }, + "propertyValueTime": 0.0 + }], + "version": "4.2.0" +} \ No newline at end of file diff --git a/src/test/resources/globalPropertiesPluginData2.json b/src/test/resources/globalPropertiesPluginData2.json new file mode 100644 index 0000000..1c30834 --- /dev/null +++ b/src/test/resources/globalPropertiesPluginData2.json @@ -0,0 +1,138 @@ +{ + "globalPropertyDefinitinions": [{ + "propertyId": { + "@type": "type.googleapis.com/gov.hhs.aspr.ms.taskit.protobuf.WrapperEnumValue", + "enumTypeUrl": "gov.hhs.aspr.ms.gcm.taskit.protobuf.plugins.TestGlobalPropertyIdInput", + "value": "GLOBAL_PROPERTY_1_BOOLEAN_MUTABLE" + }, + "propertyDefinition": { + "propertyValuesAreMutable": true, + "defaultValue": { + "@type": "type.googleapis.com/google.protobuf.BoolValue", + "value": false + } + }, + "propertyTrackingPolicy": true + }, { + "propertyId": { + "@type": "type.googleapis.com/gov.hhs.aspr.ms.taskit.protobuf.WrapperEnumValue", + "enumTypeUrl": "gov.hhs.aspr.ms.gcm.taskit.protobuf.plugins.TestGlobalPropertyIdInput", + "value": "GLOBAL_PROPERTY_2_INTEGER_MUTABLE" + }, + "propertyDefinition": { + "propertyValuesAreMutable": true, + "defaultValue": { + "@type": "type.googleapis.com/google.protobuf.Int32Value", + "value": 0 + } + }, + "propertyTrackingPolicy": true + }, { + "propertyId": { + "@type": "type.googleapis.com/gov.hhs.aspr.ms.taskit.protobuf.WrapperEnumValue", + "enumTypeUrl": "gov.hhs.aspr.ms.gcm.taskit.protobuf.plugins.TestGlobalPropertyIdInput", + "value": "GLOBAL_PROPERTY_3_DOUBLE_MUTABLE" + }, + "propertyDefinition": { + "type": "java.lang.Double", + "propertyValuesAreMutable": true + }, + "propertyTrackingPolicy": true + }, { + "propertyId": { + "@type": "type.googleapis.com/gov.hhs.aspr.ms.taskit.protobuf.WrapperEnumValue", + "enumTypeUrl": "gov.hhs.aspr.ms.gcm.taskit.protobuf.plugins.TestGlobalPropertyIdInput", + "value": "GLOBAL_PROPERTY_4_BOOLEAN_IMMUTABLE" + }, + "propertyDefinition": { + "defaultValue": { + "@type": "type.googleapis.com/google.protobuf.BoolValue", + "value": false + } + }, + "propertyTrackingPolicy": true + }, { + "propertyId": { + "@type": "type.googleapis.com/gov.hhs.aspr.ms.taskit.protobuf.WrapperEnumValue", + "enumTypeUrl": "gov.hhs.aspr.ms.gcm.taskit.protobuf.plugins.TestGlobalPropertyIdInput", + "value": "GLOBAL_PROPERTY_5_INTEGER_IMMUTABLE" + }, + "propertyDefinition": { + "defaultValue": { + "@type": "type.googleapis.com/google.protobuf.Int32Value", + "value": 0 + } + }, + "propertyTrackingPolicy": true + }, { + "propertyId": { + "@type": "type.googleapis.com/gov.hhs.aspr.ms.taskit.protobuf.WrapperEnumValue", + "enumTypeUrl": "gov.hhs.aspr.ms.gcm.taskit.protobuf.plugins.TestGlobalPropertyIdInput", + "value": "GLOBAL_PROPERTY_6_DOUBLE_IMMUTABLE" + }, + "propertyDefinition": { + "defaultValue": { + "@type": "type.googleapis.com/google.protobuf.DoubleValue", + "value": 0.0 + } + }, + "propertyTrackingPolicy": true + }], + "globalPropertyValues": [{ + "propertyId": { + "@type": "type.googleapis.com/gov.hhs.aspr.ms.taskit.protobuf.WrapperEnumValue", + "enumTypeUrl": "gov.hhs.aspr.ms.gcm.taskit.protobuf.plugins.TestGlobalPropertyIdInput", + "value": "GLOBAL_PROPERTY_3_DOUBLE_MUTABLE" + }, + "propertyValue": { + "@type": "type.googleapis.com/google.protobuf.DoubleValue", + "value": 0.5160930745117192 + }, + "propertyValueTime": 0.0 + }, { + "propertyId": { + "@type": "type.googleapis.com/gov.hhs.aspr.ms.taskit.protobuf.WrapperEnumValue", + "enumTypeUrl": "gov.hhs.aspr.ms.gcm.taskit.protobuf.plugins.TestGlobalPropertyIdInput", + "value": "GLOBAL_PROPERTY_5_INTEGER_IMMUTABLE" + }, + "propertyValue": { + "@type": "type.googleapis.com/google.protobuf.Int32Value", + "value": 0 + }, + "propertyValueTime": 0.0 + }, { + "propertyId": { + "@type": "type.googleapis.com/gov.hhs.aspr.ms.taskit.protobuf.WrapperEnumValue", + "enumTypeUrl": "gov.hhs.aspr.ms.gcm.taskit.protobuf.plugins.TestGlobalPropertyIdInput", + "value": "GLOBAL_PROPERTY_2_INTEGER_MUTABLE" + }, + "propertyValue": { + "@type": "type.googleapis.com/google.protobuf.Int32Value", + "value": 0 + }, + "propertyValueTime": 0.0 + }, { + "propertyId": { + "@type": "type.googleapis.com/gov.hhs.aspr.ms.taskit.protobuf.WrapperEnumValue", + "enumTypeUrl": "gov.hhs.aspr.ms.gcm.taskit.protobuf.plugins.TestGlobalPropertyIdInput", + "value": "GLOBAL_PROPERTY_4_BOOLEAN_IMMUTABLE" + }, + "propertyValue": { + "@type": "type.googleapis.com/google.protobuf.BoolValue", + "value": false + }, + "propertyValueTime": 0.0 + }, { + "propertyId": { + "@type": "type.googleapis.com/gov.hhs.aspr.ms.taskit.protobuf.WrapperEnumValue", + "enumTypeUrl": "gov.hhs.aspr.ms.gcm.taskit.protobuf.plugins.TestGlobalPropertyIdInput", + "value": "GLOBAL_PROPERTY_1_BOOLEAN_MUTABLE" + }, + "propertyValue": { + "@type": "type.googleapis.com/google.protobuf.BoolValue", + "value": false + }, + "propertyValueTime": 0.0 + }], + "version": "4.2.0" +} \ No newline at end of file diff --git a/src/test/resources/globalPropertiesPluginData3.json b/src/test/resources/globalPropertiesPluginData3.json new file mode 100644 index 0000000..a31f9a4 --- /dev/null +++ b/src/test/resources/globalPropertiesPluginData3.json @@ -0,0 +1,138 @@ +{ + "globalPropertyDefinitinions": [{ + "propertyId": { + "@type": "type.googleapis.com/gov.hhs.aspr.ms.taskit.protobuf.WrapperEnumValue", + "enumTypeUrl": "gov.hhs.aspr.ms.gcm.taskit.protobuf.plugins.TestGlobalPropertyIdInput", + "value": "GLOBAL_PROPERTY_1_BOOLEAN_MUTABLE" + }, + "propertyDefinition": { + "propertyValuesAreMutable": false, + "defaultValue": { + "@type": "type.googleapis.com/google.protobuf.BoolValue", + "value": false + } + }, + "propertyTrackingPolicy": true + }, { + "propertyId": { + "@type": "type.googleapis.com/gov.hhs.aspr.ms.taskit.protobuf.WrapperEnumValue", + "enumTypeUrl": "gov.hhs.aspr.ms.gcm.taskit.protobuf.plugins.TestGlobalPropertyIdInput", + "value": "GLOBAL_PROPERTY_2_INTEGER_MUTABLE" + }, + "propertyDefinition": { + "propertyValuesAreMutable": true, + "defaultValue": { + "@type": "type.googleapis.com/google.protobuf.Int32Value", + "value": 0 + } + }, + "propertyTrackingPolicy": true + }, { + "propertyId": { + "@type": "type.googleapis.com/gov.hhs.aspr.ms.taskit.protobuf.WrapperEnumValue", + "enumTypeUrl": "gov.hhs.aspr.ms.gcm.taskit.protobuf.plugins.TestGlobalPropertyIdInput", + "value": "GLOBAL_PROPERTY_3_DOUBLE_MUTABLE" + }, + "propertyDefinition": { + "type": "java.lang.Double", + "propertyValuesAreMutable": true + }, + "propertyTrackingPolicy": true + }, { + "propertyId": { + "@type": "type.googleapis.com/gov.hhs.aspr.ms.taskit.protobuf.WrapperEnumValue", + "enumTypeUrl": "gov.hhs.aspr.ms.gcm.taskit.protobuf.plugins.TestGlobalPropertyIdInput", + "value": "GLOBAL_PROPERTY_4_BOOLEAN_IMMUTABLE" + }, + "propertyDefinition": { + "defaultValue": { + "@type": "type.googleapis.com/google.protobuf.BoolValue", + "value": false + } + }, + "propertyTrackingPolicy": true + }, { + "propertyId": { + "@type": "type.googleapis.com/gov.hhs.aspr.ms.taskit.protobuf.WrapperEnumValue", + "enumTypeUrl": "gov.hhs.aspr.ms.gcm.taskit.protobuf.plugins.TestGlobalPropertyIdInput", + "value": "GLOBAL_PROPERTY_5_INTEGER_IMMUTABLE" + }, + "propertyDefinition": { + "defaultValue": { + "@type": "type.googleapis.com/google.protobuf.Int32Value", + "value": 0 + } + }, + "propertyTrackingPolicy": true + }, { + "propertyId": { + "@type": "type.googleapis.com/gov.hhs.aspr.ms.taskit.protobuf.WrapperEnumValue", + "enumTypeUrl": "gov.hhs.aspr.ms.gcm.taskit.protobuf.plugins.TestGlobalPropertyIdInput", + "value": "GLOBAL_PROPERTY_6_DOUBLE_IMMUTABLE" + }, + "propertyDefinition": { + "defaultValue": { + "@type": "type.googleapis.com/google.protobuf.DoubleValue", + "value": 0.0 + } + }, + "propertyTrackingPolicy": true + }], + "globalPropertyValues": [{ + "propertyId": { + "@type": "type.googleapis.com/gov.hhs.aspr.ms.taskit.protobuf.WrapperEnumValue", + "enumTypeUrl": "gov.hhs.aspr.ms.gcm.taskit.protobuf.plugins.TestGlobalPropertyIdInput", + "value": "GLOBAL_PROPERTY_3_DOUBLE_MUTABLE" + }, + "propertyValue": { + "@type": "type.googleapis.com/google.protobuf.DoubleValue", + "value": 0.5160930745117192 + }, + "propertyValueTime": 0.0 + }, { + "propertyId": { + "@type": "type.googleapis.com/gov.hhs.aspr.ms.taskit.protobuf.WrapperEnumValue", + "enumTypeUrl": "gov.hhs.aspr.ms.gcm.taskit.protobuf.plugins.TestGlobalPropertyIdInput", + "value": "GLOBAL_PROPERTY_5_INTEGER_IMMUTABLE" + }, + "propertyValue": { + "@type": "type.googleapis.com/google.protobuf.Int32Value", + "value": 0 + }, + "propertyValueTime": 0.0 + }, { + "propertyId": { + "@type": "type.googleapis.com/gov.hhs.aspr.ms.taskit.protobuf.WrapperEnumValue", + "enumTypeUrl": "gov.hhs.aspr.ms.gcm.taskit.protobuf.plugins.TestGlobalPropertyIdInput", + "value": "GLOBAL_PROPERTY_2_INTEGER_MUTABLE" + }, + "propertyValue": { + "@type": "type.googleapis.com/google.protobuf.Int32Value", + "value": 0 + }, + "propertyValueTime": 0.0 + }, { + "propertyId": { + "@type": "type.googleapis.com/gov.hhs.aspr.ms.taskit.protobuf.WrapperEnumValue", + "enumTypeUrl": "gov.hhs.aspr.ms.gcm.taskit.protobuf.plugins.TestGlobalPropertyIdInput", + "value": "GLOBAL_PROPERTY_4_BOOLEAN_IMMUTABLE" + }, + "propertyValue": { + "@type": "type.googleapis.com/google.protobuf.BoolValue", + "value": false + }, + "propertyValueTime": 0.0 + }, { + "propertyId": { + "@type": "type.googleapis.com/gov.hhs.aspr.ms.taskit.protobuf.WrapperEnumValue", + "enumTypeUrl": "gov.hhs.aspr.ms.gcm.taskit.protobuf.plugins.TestGlobalPropertyIdInput", + "value": "GLOBAL_PROPERTY_1_BOOLEAN_MUTABLE" + }, + "propertyValue": { + "@type": "type.googleapis.com/google.protobuf.BoolValue", + "value": false + }, + "propertyValueTime": 0.0 + }], + "version": "4.2.0" +} \ No newline at end of file diff --git a/src/test/resources/globalPropertiesPluginData4.json b/src/test/resources/globalPropertiesPluginData4.json new file mode 100644 index 0000000..ed07b42 --- /dev/null +++ b/src/test/resources/globalPropertiesPluginData4.json @@ -0,0 +1,151 @@ +{ + "globalPropertyDefinitinions": [ + { + "propertyId": { + "@type": "type.googleapis.com/gov.hhs.aspr.ms.taskit.protobuf.WrapperEnumValue", + "enumTypeUrl": "gov.hhs.aspr.ms.gcm.taskit.protobuf.plugins.TestGlobalPropertyIdInput", + "value": "GLOBAL_PROPERTY_2_INTEGER_MUTABLE" + }, + "propertyDefinition": { + "propertyValuesAreMutable": true, + "defaultValue": { + "@type": "type.googleapis.com/google.protobuf.Int32Value", + "value": 0 + } + }, + "propertyTrackingPolicy": true + }, + { + "propertyId": { + "@type": "type.googleapis.com/gov.hhs.aspr.ms.taskit.protobuf.WrapperEnumValue", + "enumTypeUrl": "gov.hhs.aspr.ms.gcm.taskit.protobuf.plugins.TestGlobalPropertyIdInput", + "value": "GLOBAL_PROPERTY_1_BOOLEAN_MUTABLE" + }, + "propertyDefinition": { + "propertyValuesAreMutable": false, + "defaultValue": { + "@type": "type.googleapis.com/google.protobuf.BoolValue", + "value": false + } + }, + "propertyTrackingPolicy": true + }, + { + "propertyId": { + "@type": "type.googleapis.com/gov.hhs.aspr.ms.taskit.protobuf.WrapperEnumValue", + "enumTypeUrl": "gov.hhs.aspr.ms.gcm.taskit.protobuf.plugins.TestGlobalPropertyIdInput", + "value": "GLOBAL_PROPERTY_3_DOUBLE_MUTABLE" + }, + "propertyDefinition": { + "type": "java.lang.Double", + "propertyValuesAreMutable": true + }, + "propertyTrackingPolicy": true + }, + { + "propertyId": { + "@type": "type.googleapis.com/gov.hhs.aspr.ms.taskit.protobuf.WrapperEnumValue", + "enumTypeUrl": "gov.hhs.aspr.ms.gcm.taskit.protobuf.plugins.TestGlobalPropertyIdInput", + "value": "GLOBAL_PROPERTY_4_BOOLEAN_IMMUTABLE" + }, + "propertyDefinition": { + "defaultValue": { + "@type": "type.googleapis.com/google.protobuf.BoolValue", + "value": false + } + }, + "propertyTrackingPolicy": true + }, + { + "propertyId": { + "@type": "type.googleapis.com/gov.hhs.aspr.ms.taskit.protobuf.WrapperEnumValue", + "enumTypeUrl": "gov.hhs.aspr.ms.gcm.taskit.protobuf.plugins.TestGlobalPropertyIdInput", + "value": "GLOBAL_PROPERTY_5_INTEGER_IMMUTABLE" + }, + "propertyDefinition": { + "defaultValue": { + "@type": "type.googleapis.com/google.protobuf.Int32Value", + "value": 0 + } + }, + "propertyTrackingPolicy": true + }, + { + "propertyId": { + "@type": "type.googleapis.com/gov.hhs.aspr.ms.taskit.protobuf.WrapperEnumValue", + "enumTypeUrl": "gov.hhs.aspr.ms.gcm.taskit.protobuf.plugins.TestGlobalPropertyIdInput", + "value": "GLOBAL_PROPERTY_6_DOUBLE_IMMUTABLE" + }, + "propertyDefinition": { + "defaultValue": { + "@type": "type.googleapis.com/google.protobuf.DoubleValue", + "value": 0.0 + } + }, + "propertyTrackingPolicy": true + } + ], + "globalPropertyValues": [ + { + "propertyId": { + "@type": "type.googleapis.com/gov.hhs.aspr.ms.taskit.protobuf.WrapperEnumValue", + "enumTypeUrl": "gov.hhs.aspr.ms.gcm.taskit.protobuf.plugins.TestGlobalPropertyIdInput", + "value": "GLOBAL_PROPERTY_3_DOUBLE_MUTABLE" + }, + "propertyValue": { + "@type": "type.googleapis.com/google.protobuf.DoubleValue", + "value": 0.5160930745117192 + }, + "propertyValueTime": 0.0 + }, + { + "propertyId": { + "@type": "type.googleapis.com/gov.hhs.aspr.ms.taskit.protobuf.WrapperEnumValue", + "enumTypeUrl": "gov.hhs.aspr.ms.gcm.taskit.protobuf.plugins.TestGlobalPropertyIdInput", + "value": "GLOBAL_PROPERTY_5_INTEGER_IMMUTABLE" + }, + "propertyValue": { + "@type": "type.googleapis.com/google.protobuf.Int32Value", + "value": 0 + }, + "propertyValueTime": 0.0 + }, + { + "propertyId": { + "@type": "type.googleapis.com/gov.hhs.aspr.ms.taskit.protobuf.WrapperEnumValue", + "enumTypeUrl": "gov.hhs.aspr.ms.gcm.taskit.protobuf.plugins.TestGlobalPropertyIdInput", + "value": "GLOBAL_PROPERTY_2_INTEGER_MUTABLE" + }, + "propertyValue": { + "@type": "type.googleapis.com/google.protobuf.Int32Value", + "value": 0 + }, + "propertyValueTime": 0.0 + }, + { + "propertyId": { + "@type": "type.googleapis.com/gov.hhs.aspr.ms.taskit.protobuf.WrapperEnumValue", + "enumTypeUrl": "gov.hhs.aspr.ms.gcm.taskit.protobuf.plugins.TestGlobalPropertyIdInput", + "value": "GLOBAL_PROPERTY_4_BOOLEAN_IMMUTABLE" + }, + "propertyValue": { + "@type": "type.googleapis.com/google.protobuf.BoolValue", + "value": false + }, + "propertyValueTime": 0.0 + }, + { + "propertyId": { + "@type": "type.googleapis.com/gov.hhs.aspr.ms.taskit.protobuf.WrapperEnumValue", + "enumTypeUrl": "gov.hhs.aspr.ms.gcm.taskit.protobuf.plugins.TestGlobalPropertyIdInput", + "value": "GLOBAL_PROPERTY_1_BOOLEAN_MUTABLE" + }, + "propertyValue": { + "@type": "type.googleapis.com/google.protobuf.BoolValue", + "value": false + }, + "propertyValueTime": 0.0 + } + ], + "version": "4.2.0" +} \ No newline at end of file diff --git a/src/test/resources/pipeline_tester.json b/src/test/resources/pipeline_tester.json new file mode 100644 index 0000000..11f8cc3 --- /dev/null +++ b/src/test/resources/pipeline_tester.json @@ -0,0 +1,49 @@ +{ + "inputDirectory": "rawInput", + "outputDirectory": "testOutput", + "testPipelineInput": { + "testDataFile1": "rawInput/blocks/testDataFile1.csv", + "testDataFile2": "rawInput/blocks/testDataFile2.csv", + "testDataFile3": "rawInput/blocks/testDataFile3.csv", + "testDataFile4": "rawInput/reports/testDataFile4.csv", + "pluginDataFile": "testOutput/testPluginData.json" + }, + "testDimensionPipelineInput": { + "testSingleDimensionPipelineInput": { + "dimensionInstanceInput": { + "enabled": true, + "inputFile": "rawInput/dimensions/test_dimension1.csv", + "dimensionDataFile": "testOutput/testDimensionData1.json" + } + }, + "testMultiDimensionPipelineInput" : { + "dimensionInstanceInput": [ + { + "enabled": true, + "inputFile": "rawInput/dimensions/test_dimension2.csv", + "dimensionDataFile": "testOutput/testDimensionData2.json" + }, + { + "enabled": true, + "inputFile": "rawInput/dimensions/test_dimension3.csv", + "dimensionDataFile": "testOutput/testDimensionData3.json" + }, + { + "enabled": true, + "inputFile": "rawInput/dimensions/test_dimension4.csv", + "dimensionDataFile": "testOutput/testDimensionData4.json" + }, + { + "enabled": true, + "inputFile": "rawInput/dimensions/test_dimension5.csv", + "dimensionDataFile": "testOutput/testDimensionData5.json" + }, + { + "enabled": true, + "inputFile": "rawInput/dimensions/test_dimension6.csv", + "dimensionDataFile": "testOutput/testDimensionData6.json" + } + ] + } + } +} \ No newline at end of file diff --git a/src/test/resources/pipeline_tester_bad.json b/src/test/resources/pipeline_tester_bad.json new file mode 100644 index 0000000..fb7b067 --- /dev/null +++ b/src/test/resources/pipeline_tester_bad.json @@ -0,0 +1,50 @@ +{ + "badProp": false, + "inputDirectory": "rawInput", + "outputDirectory": "testOutput", + "testPipelineInput": { + "testDataFile1": "rawInput/blocks/testDataFile1.csv", + "testDataFile2": "rawInput/blocks/testDataFile2.csv", + "testDataFile3": "rawInput/blocks/testDataFile3.csv", + "testDataFile4": "rawInput/reports/testDataFile4.csv", + "pluginDataFile": "testOutput/testPluginData.json" + }, + "testDimensionPipelineInput": { + "testSingleDimensionPipelineInput": { + "dimensionInstanceInput": { + "enabled": true, + "inputFile": "rawInput/dimensions/test_dimension1.csv", + "dimensionDataFile": "testOutput/testDimensionData1.json" + } + }, + "testMultiDimensionPipelineInput" : { + "dimensionInstanceInput": [ + { + "enabled": true, + "inputFile": "rawInput/dimensions/test_dimension2.csv", + "dimensionDataFile": "testOutput/testDimensionData2.json" + }, + { + "enabled": true, + "inputFile": "rawInput/dimensions/test_dimension3.csv", + "dimensionDataFile": "testOutput/testDimensionData3.json" + }, + { + "enabled": true, + "inputFile": "rawInput/dimensions/test_dimension4.csv", + "dimensionDataFile": "testOutput/testDimensionData4.json" + }, + { + "enabled": true, + "inputFile": "rawInput/dimensions/test_dimension5.csv", + "dimensionDataFile": "testOutput/testDimensionData5.json" + }, + { + "enabled": true, + "inputFile": "rawInput/dimensions/test_dimension6.csv", + "dimensionDataFile": "testOutput/testDimensionData6.json" + } + ] + } + } +} \ No newline at end of file diff --git a/src/test/resources/pipeline_tester_dir.json b/src/test/resources/pipeline_tester_dir.json new file mode 100644 index 0000000..1eadb7f --- /dev/null +++ b/src/test/resources/pipeline_tester_dir.json @@ -0,0 +1,49 @@ +{ + "inputDirectory": "rawInput", + "outputDirectory": "testOutput", + "testPipelineInput": { + "testDataFile1": "blocks/testDataFile1.csv", + "testDataFile2": "blocks/testDataFile2.csv", + "testDataFile3": "blocks/testDataFile3.csv", + "testDataFile4": "reports/testDataFile4.csv", + "pluginDataFile": "testPluginData.json" + }, + "testDimensionPipelineInput": { + "testSingleDimensionPipelineInput": { + "dimensionInstanceInput": { + "enabled": true, + "inputFile": "dimensions/test_dimension1.csv", + "dimensionDataFile": "testDimensionData1.json" + } + }, + "testMultiDimensionPipelineInput" : { + "dimensionInstanceInput": [ + { + "enabled": true, + "inputFile": "dimensions/test_dimension2.csv", + "dimensionDataFile": "testDimensionData2.json" + }, + { + "enabled": true, + "inputFile": "dimensions/test_dimension3.csv", + "dimensionDataFile": "testDimensionData3.json" + }, + { + "enabled": true, + "inputFile": "dimensions/test_dimension4.csv", + "dimensionDataFile": "testDimensionData4.json" + }, + { + "enabled": true, + "inputFile": "dimensions/test_dimension5.csv", + "dimensionDataFile": "testDimensionData5.json" + }, + { + "enabled": true, + "inputFile": "dimensions/test_dimension6.csv", + "dimensionDataFile": "testDimensionData6.json" + } + ] + } + } +} \ No newline at end of file diff --git a/src/test/resources/pipeline_tester_prev.json b/src/test/resources/pipeline_tester_prev.json new file mode 100644 index 0000000..b6260c8 --- /dev/null +++ b/src/test/resources/pipeline_tester_prev.json @@ -0,0 +1,48 @@ +{ + "runningWithPreviousData": true, + "testPipelineInput": { + "testDataFile1": "rawInput/blocks/testDataFile1.csv", + "testDataFile2": "rawInput/blocks/testDataFile2.csv", + "testDataFile3": "rawInput/blocks/testDataFile3.csv", + "testDataFile4": "rawInput/reports/testDataFile4.csv", + "pluginDataFile": "testOutput/testPluginData.json" + }, + "testDimensionPipelineInput": { + "testSingleDimensionPipelineInput": { + "dimensionInstanceInput": { + "enabled": true, + "inputFile": "rawInput/dimensions/test_dimension1.csv", + "dimensionDataFile": "testOutput/testDimensionData1.json" + } + }, + "testMultiDimensionPipelineInput": { + "dimensionInstanceInput": [ + { + "enabled": true, + "inputFile": "rawInput/dimensions/test_dimension2.csv", + "dimensionDataFile": "testOutput/testDimensionData2.json" + }, + { + "enabled": true, + "inputFile": "rawInput/dimensions/test_dimension3.csv", + "dimensionDataFile": "testOutput/testDimensionData3.json" + }, + { + "enabled": true, + "inputFile": "rawInput/dimensions/test_dimension4.csv", + "dimensionDataFile": "testOutput/testDimensionData4.json" + }, + { + "enabled": true, + "inputFile": "rawInput/dimensions/test_dimension5.csv", + "dimensionDataFile": "testOutput/testDimensionData5.json" + }, + { + "enabled": true, + "inputFile": "rawInput/dimensions/test_dimension6.csv", + "dimensionDataFile": "testOutput/testDimensionData6.json" + } + ] + } + } +} \ No newline at end of file From 8c974d4d3700761abffd31ff0e0f76e8af7743d5 Mon Sep 17 00:00:00 2001 From: bischoffz Date: Fri, 10 May 2024 08:37:06 -0400 Subject: [PATCH 05/19] add dev pr build --- .github/workflows/dev_build.yml | 2 - .github/workflows/dev_pr_build.yml | 100 +++++++++++++++++++++++++++++ 2 files changed, 100 insertions(+), 2 deletions(-) create mode 100644 .github/workflows/dev_pr_build.yml diff --git a/.github/workflows/dev_build.yml b/.github/workflows/dev_build.yml index 55f41fb..51af358 100644 --- a/.github/workflows/dev_build.yml +++ b/.github/workflows/dev_build.yml @@ -11,8 +11,6 @@ name: GCM Pipeline Development Build on: push: branches: [ "dev" ] - pull_request: - branches: [ "dev" ] jobs: dev-build: diff --git a/.github/workflows/dev_pr_build.yml b/.github/workflows/dev_pr_build.yml new file mode 100644 index 0000000..ea62424 --- /dev/null +++ b/.github/workflows/dev_pr_build.yml @@ -0,0 +1,100 @@ +# This workflow will build a Java project with Maven, and cache/restore any dependencies to improve the workflow execution time +# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-java-with-maven + +# This workflow uses actions that are not certified by GitHub. +# They are provided by a third-party and are governed by +# separate terms of service, privacy policy, and support +# documentation. + +name: GCM Pipeline Development PR Build + +on: + pull_request: + branches-ignore: [ "main" ] + +jobs: + dev-build: + runs-on: ubuntu-latest + steps: + - name: Checkout GCM Pipeline + uses: actions/checkout@v4 + + - name: Set up JDK 17 + uses: actions/setup-java@v4 + with: + java-version: '17' + distribution: 'temurin' + cache: maven + + - name: Get GCM Version + run: | + echo "gcm_version=v$(mvn help:evaluate -Dexpression=gcm.version -q -DforceStdout --file pom.xml)" >> "$GITHUB_ENV" + + - name: Checkout GCM + if: ${{ endsWith(env.gcm_version, 'SNAPSHOT') }} + uses: actions/checkout@v4 + with: + repository: HHS/ASPR-8 + path: gcm + ref: dev + + - name: Get GCM Taskit Version + run: | + echo "gcm_taskit_version=v$(mvn help:evaluate -Dexpression=gcm-taskit.version -q -DforceStdout --file pom.xml)" >> "$GITHUB_ENV" + + - name: Checkout GCM Taskit + if: ${{ endsWith(env.gcm_taskit_version, 'SNAPSHOT') }} + uses: actions/checkout@v4 + with: + repository: HHS/ASPR-ms-gcm-taskit + path: gcm-taskit + ref: dev + + - name: Get Util Version + if: ${{ endsWith(env.gcm_version, 'SNAPSHOT') }} + run: | + echo "util_version=v$(mvn help:evaluate -Dexpression=util.version -q -DforceStdout --file gcm/pom.xml)" >> "$GITHUB_ENV" + + - name: Checkout Util + if: ${{ endsWith(env.util_version, 'SNAPSHOT') }} + uses: actions/checkout@v4 + with: + repository: HHS/ASPR-ms-util + path: util + ref: dev + + - name: Get Taskit Version + if: ${{ endsWith(env.gcm_taskit_version, 'SNAPSHOT') }} + run: | + echo "taskit_version=v$(mvn help:evaluate -Dexpression=taskit.version -q -DforceStdout --file gcm-taskit/pom.xml)" >> "$GITHUB_ENV" + + - name: Checkout Taskit + if: ${{ endsWith(env.taskit_version, 'SNAPSHOT') }} + uses: actions/checkout@v4 + with: + repository: HHS/ASPR-ms-taskit + path: taskit-core + ref: dev + + - name: Build Util + if: ${{ endsWith(env.util_version, 'SNAPSHOT') }} + run: mvn clean install -DskipTests --file util/pom.xml + + - name: Build GCM + if: ${{ endsWith(env.gcm_version, 'SNAPSHOT') }} + run: mvn clean install -DskipTests --file gcm/pom.xml + + - name: Build Taskit + if: ${{ endsWith(env.taskit_version, 'SNAPSHOT') }} + run: mvn clean install -DskipTests --file taskit-core/pom.xml + + - name: Build GCM Taskit + if: ${{ endsWith(env.gcm_taskit_version, 'SNAPSHOT') }} + run: mvn clean install -DskipTests --file gcm-taskit/pom.xml + + - name: Build GCM Pipeline + run: mvn clean install --file pom.xml + + # Optional: Uploads the full dependency graph to GitHub to improve the quality of Dependabot alerts this repository can receive + # - name: Update dependency graph + # uses: advanced-security/maven-dependency-submission-action@571e99aab1055c2e71a1e2309b9691de18d6b7d6 From e8d84713df48c11e9b2ba6ce540cdbb30f8caa03 Mon Sep 17 00:00:00 2001 From: bischoffz Date: Tue, 14 May 2024 20:30:54 -0400 Subject: [PATCH 06/19] add make testoutput dir --- .../ms/gcm/pipeline/testsupport/PipelineTestSupport.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/main/java/gov/hhs/aspr/ms/gcm/pipeline/testsupport/PipelineTestSupport.java b/src/main/java/gov/hhs/aspr/ms/gcm/pipeline/testsupport/PipelineTestSupport.java index 4659654..32851cf 100644 --- a/src/main/java/gov/hhs/aspr/ms/gcm/pipeline/testsupport/PipelineTestSupport.java +++ b/src/main/java/gov/hhs/aspr/ms/gcm/pipeline/testsupport/PipelineTestSupport.java @@ -18,6 +18,7 @@ import gov.hhs.aspr.ms.taskit.core.TranslationEngine; import gov.hhs.aspr.ms.taskit.core.TranslationEngineType; import gov.hhs.aspr.ms.taskit.protobuf.ProtobufTranslationEngine; +import gov.hhs.aspr.ms.util.resourcehelper.ResourceHelper; /** * Test support class for testing pipelines. @@ -43,7 +44,7 @@ public class PipelineTestSupport { private final T pipelineInputInstance; private final PipelineInputResolver pipelineInputResolver; private final Function resolverFunction; - // private final String testOutputDir; + private final Path testOutputDir; /** * Creates a PipelineTestSupport class @@ -76,7 +77,7 @@ public PipelineTestSupport(TranslationEngine translationEngine, T pipelineInputI this.pipelineInputClassRef = pipelineInputClassRef; this.pipelineInputResolver = new PipelineInputResolver(resolverFunction); this.resolverFunction = resolverFunction; - // this.testOutputDir = testOutputDir; + this.testOutputDir = testOutputDir; } /** @@ -182,7 +183,7 @@ public T getResolvedPipelineInput(T unresolvedInput, boolean useDirectoryFile, b // make outputDir // need to update to util 4.2.0-snapshot - // ResourceHelper.makeOutputDir(testOutputDir); + ResourceHelper.makeOutputDir(testOutputDir); return this.pipelineInputClassRef.cast(resolvedInputBuilder.build()); } From 4dbcc0cbbd0449bf2c7defd34593ca58f09da174 Mon Sep 17 00:00:00 2001 From: bischoffz Date: Fri, 17 May 2024 04:49:44 -0400 Subject: [PATCH 07/19] update to util 4.2 --- pom.xml | 4 ++-- .../aspr/ms/gcm/pipeline/testsupport/PipelineTestSupport.java | 3 +-- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/pom.xml b/pom.xml index d1c05a9..1398db4 100644 --- a/pom.xml +++ b/pom.xml @@ -72,8 +72,8 @@ 0.4.0 - 4.2.0 - 2.8.1 + 4.2.1-SNAPSHOT + 2.8.2-SNAPSHOT 3.25.2 0.8.12 5.10.2 diff --git a/src/main/java/gov/hhs/aspr/ms/gcm/pipeline/testsupport/PipelineTestSupport.java b/src/main/java/gov/hhs/aspr/ms/gcm/pipeline/testsupport/PipelineTestSupport.java index 32851cf..755fc28 100644 --- a/src/main/java/gov/hhs/aspr/ms/gcm/pipeline/testsupport/PipelineTestSupport.java +++ b/src/main/java/gov/hhs/aspr/ms/gcm/pipeline/testsupport/PipelineTestSupport.java @@ -182,8 +182,7 @@ public T getResolvedPipelineInput(T unresolvedInput, boolean useDirectoryFile, b } // make outputDir - // need to update to util 4.2.0-snapshot - ResourceHelper.makeOutputDir(testOutputDir); + ResourceHelper.createDirectory(testOutputDir); return this.pipelineInputClassRef.cast(resolvedInputBuilder.build()); } From 41ee354e31614b1c34a48d3e7a015678d1f8cfad Mon Sep 17 00:00:00 2001 From: bischoffz Date: Wed, 29 May 2024 02:47:00 -0400 Subject: [PATCH 08/19] remove gcm sim dep update gcm taskit dep to scope provided --- pom.xml | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/pom.xml b/pom.xml index 1398db4..fc7afcc 100644 --- a/pom.xml +++ b/pom.xml @@ -72,7 +72,6 @@ 0.4.0 - 4.2.1-SNAPSHOT 2.8.2-SNAPSHOT 3.25.2 0.8.12 @@ -80,15 +79,11 @@ - - gov.hhs.aspr.ms.gcm - simulation - ${gcm.version} - gov.hhs.aspr.ms.gcm.taskit protobuf ${gcm-taskit.version} + provided org.jacoco From f24d2f66330bc3bb0e9ed21048608fa6289615bb Mon Sep 17 00:00:00 2001 From: bischoffz Date: Wed, 29 May 2024 02:57:43 -0400 Subject: [PATCH 09/19] update dev pipelines --- .github/workflows/dev_build.yml | 44 ++++++++++++++---------------- .github/workflows/dev_pr_build.yml | 44 ++++++++++++++---------------- 2 files changed, 40 insertions(+), 48 deletions(-) diff --git a/.github/workflows/dev_build.yml b/.github/workflows/dev_build.yml index 51af358..05d0ca2 100644 --- a/.github/workflows/dev_build.yml +++ b/.github/workflows/dev_build.yml @@ -26,18 +26,6 @@ jobs: distribution: 'temurin' cache: maven - - name: Get GCM Version - run: | - echo "gcm_version=v$(mvn help:evaluate -Dexpression=gcm.version -q -DforceStdout --file pom.xml)" >> "$GITHUB_ENV" - - - name: Checkout GCM - if: ${{ endsWith(env.gcm_version, 'SNAPSHOT') }} - uses: actions/checkout@v4 - with: - repository: HHS/ASPR-8 - path: gcm - ref: dev - - name: Get GCM Taskit Version run: | echo "gcm_taskit_version=v$(mvn help:evaluate -Dexpression=gcm-taskit.version -q -DforceStdout --file pom.xml)" >> "$GITHUB_ENV" @@ -50,24 +38,19 @@ jobs: path: gcm-taskit ref: dev - - name: Get Util Version - if: ${{ endsWith(env.gcm_version, 'SNAPSHOT') }} + - name: Get GCM and Taskit Version run: | - echo "util_version=v$(mvn help:evaluate -Dexpression=util.version -q -DforceStdout --file gcm/pom.xml)" >> "$GITHUB_ENV" + echo "gcm_version=v$(mvn help:evaluate -Dexpression=gcm.version -q -DforceStdout --file gcm-taskit/pom.xml)" >> "$GITHUB_ENV" + echo "taskit_version=v$(mvn help:evaluate -Dexpression=taskit.version -q -DforceStdout --file gcm-taskit/pom.xml)" >> "$GITHUB_ENV" - - name: Checkout Util - if: ${{ endsWith(env.util_version, 'SNAPSHOT') }} + - name: Checkout GCM + if: ${{ endsWith(env.gcm_version, 'SNAPSHOT') }} uses: actions/checkout@v4 with: - repository: HHS/ASPR-ms-util - path: util + repository: HHS/ASPR-8 + path: gcm ref: dev - - name: Get Taskit Version - if: ${{ endsWith(env.gcm_taskit_version, 'SNAPSHOT') }} - run: | - echo "taskit_version=v$(mvn help:evaluate -Dexpression=taskit.version -q -DforceStdout --file gcm-taskit/pom.xml)" >> "$GITHUB_ENV" - - name: Checkout Taskit if: ${{ endsWith(env.taskit_version, 'SNAPSHOT') }} uses: actions/checkout@v4 @@ -76,6 +59,19 @@ jobs: path: taskit-core ref: dev + - name: Get Util Version + if: ${{ endsWith(env.gcm_version, 'SNAPSHOT') }} + run: | + echo "util_version=v$(mvn help:evaluate -Dexpression=util.version -q -DforceStdout --file gcm/pom.xml)" >> "$GITHUB_ENV" + + - name: Checkout Util + if: ${{ endsWith(env.util_version, 'SNAPSHOT') }} + uses: actions/checkout@v4 + with: + repository: HHS/ASPR-ms-util + path: util + ref: dev + - name: Build Util if: ${{ endsWith(env.util_version, 'SNAPSHOT') }} run: mvn clean install -DskipTests --file util/pom.xml diff --git a/.github/workflows/dev_pr_build.yml b/.github/workflows/dev_pr_build.yml index ea62424..d5e8071 100644 --- a/.github/workflows/dev_pr_build.yml +++ b/.github/workflows/dev_pr_build.yml @@ -26,18 +26,6 @@ jobs: distribution: 'temurin' cache: maven - - name: Get GCM Version - run: | - echo "gcm_version=v$(mvn help:evaluate -Dexpression=gcm.version -q -DforceStdout --file pom.xml)" >> "$GITHUB_ENV" - - - name: Checkout GCM - if: ${{ endsWith(env.gcm_version, 'SNAPSHOT') }} - uses: actions/checkout@v4 - with: - repository: HHS/ASPR-8 - path: gcm - ref: dev - - name: Get GCM Taskit Version run: | echo "gcm_taskit_version=v$(mvn help:evaluate -Dexpression=gcm-taskit.version -q -DforceStdout --file pom.xml)" >> "$GITHUB_ENV" @@ -50,24 +38,19 @@ jobs: path: gcm-taskit ref: dev - - name: Get Util Version - if: ${{ endsWith(env.gcm_version, 'SNAPSHOT') }} + - name: Get GCM and Taskit Version run: | - echo "util_version=v$(mvn help:evaluate -Dexpression=util.version -q -DforceStdout --file gcm/pom.xml)" >> "$GITHUB_ENV" + echo "gcm_version=v$(mvn help:evaluate -Dexpression=gcm.version -q -DforceStdout --file gcm-taskit/pom.xml)" >> "$GITHUB_ENV" + echo "taskit_version=v$(mvn help:evaluate -Dexpression=taskit.version -q -DforceStdout --file gcm-taskit/pom.xml)" >> "$GITHUB_ENV" - - name: Checkout Util - if: ${{ endsWith(env.util_version, 'SNAPSHOT') }} + - name: Checkout GCM + if: ${{ endsWith(env.gcm_version, 'SNAPSHOT') }} uses: actions/checkout@v4 with: - repository: HHS/ASPR-ms-util - path: util + repository: HHS/ASPR-8 + path: gcm ref: dev - - name: Get Taskit Version - if: ${{ endsWith(env.gcm_taskit_version, 'SNAPSHOT') }} - run: | - echo "taskit_version=v$(mvn help:evaluate -Dexpression=taskit.version -q -DforceStdout --file gcm-taskit/pom.xml)" >> "$GITHUB_ENV" - - name: Checkout Taskit if: ${{ endsWith(env.taskit_version, 'SNAPSHOT') }} uses: actions/checkout@v4 @@ -76,6 +59,19 @@ jobs: path: taskit-core ref: dev + - name: Get Util Version + if: ${{ endsWith(env.gcm_version, 'SNAPSHOT') }} + run: | + echo "util_version=v$(mvn help:evaluate -Dexpression=util.version -q -DforceStdout --file gcm/pom.xml)" >> "$GITHUB_ENV" + + - name: Checkout Util + if: ${{ endsWith(env.util_version, 'SNAPSHOT') }} + uses: actions/checkout@v4 + with: + repository: HHS/ASPR-ms-util + path: util + ref: dev + - name: Build Util if: ${{ endsWith(env.util_version, 'SNAPSHOT') }} run: mvn clean install -DskipTests --file util/pom.xml From 14c22f0c7b044aaaa1deafb88ee209713d20c888 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 29 May 2024 03:12:51 -0400 Subject: [PATCH 10/19] --- (#10) updated-dependencies: - dependency-name: org.codehaus.mojo:build-helper-maven-plugin dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index fc7afcc..984490b 100644 --- a/pom.xml +++ b/pom.xml @@ -58,7 +58,7 @@ 1.7.0 - 3.3.0 + 3.6.0 1.3.2 0.6.1 From 15818ec409456398491b1dd948627e619f978f66 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 29 May 2024 03:15:12 -0400 Subject: [PATCH 11/19] Bump kr.motd.maven:os-maven-plugin from 1.7.0 to 1.7.1 (#7) Bumps [kr.motd.maven:os-maven-plugin](https://github.com/trustin/os-maven-plugin) from 1.7.0 to 1.7.1. - [Release notes](https://github.com/trustin/os-maven-plugin/releases) - [Commits](https://github.com/trustin/os-maven-plugin/compare/os-maven-plugin-1.7.0...os-maven-plugin-1.7.1) --- updated-dependencies: - dependency-name: kr.motd.maven:os-maven-plugin dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 984490b..e0e67c2 100644 --- a/pom.xml +++ b/pom.xml @@ -57,7 +57,7 @@ 17 - 1.7.0 + 1.7.1 3.6.0 1.3.2 0.6.1 From f1f6757769dea1c325f72f38bbdad70a704859a3 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 29 May 2024 03:15:27 -0400 Subject: [PATCH 12/19] Bump com.google.code.maven-replacer-plugin:maven-replacer-plugin (#9) Bumps com.google.code.maven-replacer-plugin:maven-replacer-plugin from 1.3.2 to 1.4.1. --- updated-dependencies: - dependency-name: com.google.code.maven-replacer-plugin:maven-replacer-plugin dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index e0e67c2..54d0e3e 100644 --- a/pom.xml +++ b/pom.xml @@ -59,7 +59,7 @@ 1.7.1 3.6.0 - 1.3.2 + 1.4.1 0.6.1 From 0ea519b8ba43155d6d8b038710da23adcd1aa8a0 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 14 Jun 2024 00:25:33 -0400 Subject: [PATCH 13/19] Bump org.apache.maven.plugins:maven-javadoc-plugin (#11) Bumps the standard-plugins group with 1 update: [org.apache.maven.plugins:maven-javadoc-plugin](https://github.com/apache/maven-javadoc-plugin). Updates `org.apache.maven.plugins:maven-javadoc-plugin` from 3.6.3 to 3.7.0 - [Release notes](https://github.com/apache/maven-javadoc-plugin/releases) - [Commits](https://github.com/apache/maven-javadoc-plugin/compare/maven-javadoc-plugin-3.6.3...maven-javadoc-plugin-3.7.0) --- updated-dependencies: - dependency-name: org.apache.maven.plugins:maven-javadoc-plugin dependency-type: direct:production update-type: version-update:semver-minor dependency-group: standard-plugins ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 54d0e3e..0b1d27e 100644 --- a/pom.xml +++ b/pom.xml @@ -67,7 +67,7 @@ 3.2.5 3.2.5 3.3.1 - 3.6.3 + 3.7.0 3.2.4 0.4.0 From e3807c644b0983de54db986b5274686454309a91 Mon Sep 17 00:00:00 2001 From: bischoffz Date: Fri, 14 Jun 2024 13:48:54 -0400 Subject: [PATCH 14/19] Merge branch 'main' of https://github.com/HHS/ASPR-ms-gcm-pipeline into dev --- pom.xml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index 0b1d27e..f43b09c 100644 --- a/pom.xml +++ b/pom.xml @@ -49,7 +49,7 @@ - 1.1.0-SNAPSHOT + 1.1.0 UTF-8 @@ -72,7 +72,7 @@ 0.4.0 - 2.8.2-SNAPSHOT + 2.8.3 3.25.2 0.8.12 5.10.2 @@ -276,6 +276,8 @@ central true ASPR MS GCM Pipeline + true + published From 55e939954e237ec49b48f7e49c365cd909d8eccf Mon Sep 17 00:00:00 2001 From: bischoffz Date: Fri, 14 Jun 2024 13:58:37 -0400 Subject: [PATCH 15/19] fix for workflow error --- .github/workflows/dev_build.yml | 1 + .github/workflows/dev_pr_build.yml | 1 + 2 files changed, 2 insertions(+) diff --git a/.github/workflows/dev_build.yml b/.github/workflows/dev_build.yml index 05d0ca2..5944309 100644 --- a/.github/workflows/dev_build.yml +++ b/.github/workflows/dev_build.yml @@ -39,6 +39,7 @@ jobs: ref: dev - name: Get GCM and Taskit Version + if: ${{ endsWith(env.gcm_taskit_version, 'SNAPSHOT') }} run: | echo "gcm_version=v$(mvn help:evaluate -Dexpression=gcm.version -q -DforceStdout --file gcm-taskit/pom.xml)" >> "$GITHUB_ENV" echo "taskit_version=v$(mvn help:evaluate -Dexpression=taskit.version -q -DforceStdout --file gcm-taskit/pom.xml)" >> "$GITHUB_ENV" diff --git a/.github/workflows/dev_pr_build.yml b/.github/workflows/dev_pr_build.yml index d5e8071..d904a12 100644 --- a/.github/workflows/dev_pr_build.yml +++ b/.github/workflows/dev_pr_build.yml @@ -39,6 +39,7 @@ jobs: ref: dev - name: Get GCM and Taskit Version + if: ${{ endsWith(env.gcm_taskit_version, 'SNAPSHOT') }} run: | echo "gcm_version=v$(mvn help:evaluate -Dexpression=gcm.version -q -DforceStdout --file gcm-taskit/pom.xml)" >> "$GITHUB_ENV" echo "taskit_version=v$(mvn help:evaluate -Dexpression=taskit.version -q -DforceStdout --file gcm-taskit/pom.xml)" >> "$GITHUB_ENV" From aac9689956f54f45155c9fd56d582ddccabff86d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 17 Jun 2024 12:58:18 -0400 Subject: [PATCH 16/19] Bump the standard-plugins group with 2 updates (#14) Bumps the standard-plugins group with 2 updates: [org.apache.maven.plugins:maven-surefire-plugin](https://github.com/apache/maven-surefire) and [org.apache.maven.plugins:maven-failsafe-plugin](https://github.com/apache/maven-surefire). Updates `org.apache.maven.plugins:maven-surefire-plugin` from 3.2.5 to 3.3.0 - [Release notes](https://github.com/apache/maven-surefire/releases) - [Commits](https://github.com/apache/maven-surefire/compare/surefire-3.2.5...surefire-3.3.0) Updates `org.apache.maven.plugins:maven-failsafe-plugin` from 3.2.5 to 3.3.0 - [Release notes](https://github.com/apache/maven-surefire/releases) - [Commits](https://github.com/apache/maven-surefire/compare/surefire-3.2.5...surefire-3.3.0) --- updated-dependencies: - dependency-name: org.apache.maven.plugins:maven-surefire-plugin dependency-type: direct:production update-type: version-update:semver-minor dependency-group: standard-plugins - dependency-name: org.apache.maven.plugins:maven-failsafe-plugin dependency-type: direct:production update-type: version-update:semver-minor dependency-group: standard-plugins ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index f43b09c..204d3af 100644 --- a/pom.xml +++ b/pom.xml @@ -64,8 +64,8 @@ 1.6.0 - 3.2.5 - 3.2.5 + 3.3.0 + 3.3.0 3.3.1 3.7.0 3.2.4 From 8205b157b528ce46d588a3edc4528bb4d8129321 Mon Sep 17 00:00:00 2001 From: bischoffz Date: Mon, 17 Jun 2024 13:06:42 -0400 Subject: [PATCH 17/19] remove SNAPSHOT --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index bad9c31..204d3af 100644 --- a/pom.xml +++ b/pom.xml @@ -49,7 +49,7 @@ - 1.1.0-SNAPSHOT + 1.1.0 UTF-8 From f5d480117117166d339ac5360a514651f3b95134 Mon Sep 17 00:00:00 2001 From: bischoffz Date: Mon, 17 Jun 2024 13:13:34 -0400 Subject: [PATCH 18/19] remove dependency --- pom.xml | 7 ------- 1 file changed, 7 deletions(-) diff --git a/pom.xml b/pom.xml index 204d3af..2e79d55 100644 --- a/pom.xml +++ b/pom.xml @@ -295,13 +295,6 @@ ${maven-javadoc-plugin.version} all,-missing - - - gov.hhs.aspr.ms.gcm - simulation - ${gcm.version} - - false -Xmaxerrs From e28b4ff8eb399fce3270e66ca7b38b1e51822353 Mon Sep 17 00:00:00 2001 From: bischoffz Date: Mon, 17 Jun 2024 13:32:22 -0400 Subject: [PATCH 19/19] fix javadoc --- .../aspr/ms/gcm/pipeline/testsupport/PipelineTestSupport.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/gov/hhs/aspr/ms/gcm/pipeline/testsupport/PipelineTestSupport.java b/src/main/java/gov/hhs/aspr/ms/gcm/pipeline/testsupport/PipelineTestSupport.java index 755fc28..534b01c 100644 --- a/src/main/java/gov/hhs/aspr/ms/gcm/pipeline/testsupport/PipelineTestSupport.java +++ b/src/main/java/gov/hhs/aspr/ms/gcm/pipeline/testsupport/PipelineTestSupport.java @@ -63,7 +63,7 @@ public class PipelineTestSupport { * Takes in a string for the test output directory so that it can be created for * you when getting a resolved pipeline input. * - * @param translationEngineBuilder + * @param translationEngine * @param pipelineInputInstance * @param pipelineInputClassRef * @param resolverFunction