Skip to content

Commit

Permalink
Reformat code style, clarify comments, fixed spacing and provided mor…
Browse files Browse the repository at this point in the history
…e documentation detail
  • Loading branch information
Christopher-Ho committed Feb 14, 2024
1 parent eba2ce0 commit 0e3cb7f
Show file tree
Hide file tree
Showing 4 changed files with 32 additions and 23 deletions.
11 changes: 8 additions & 3 deletions admin-guide.md
Original file line number Diff line number Diff line change
Expand Up @@ -270,9 +270,14 @@ validator supported is `"script"`, which runs a calculate script on the output
files and then runs a comparison script that checks that the calculate script's
output matches the reference data.

Users have an option to provide a directory filepath for the provisioned out file. If none is provided then
the provisioned out file will be symlinked into a temporary directory. The
`"metrics_calculate"` script will be run in that directory receiving the path
Users have an option to provide a filepath to a directory where they would like
the provisioned out file. For example, adding the argument:
`-o /scratch2/groups/gsi/development/`
will provision the output file to the gsi scratch2 development directory.

If none is provided then the provisioned out file will be symlinked into a
temporary directory. The `"metrics_calculate"` script will be run in that
directory receiving the path
to that directory as the first argument. Anything it writes to standard output
will be captured. Then `"metrics_calculate"` will be called with the
`"output_metrics"` as the first argument and the file generated in the previous
Expand Down
2 changes: 1 addition & 1 deletion changes/add_optional_output_directory_argument.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
Add an optional output directory argument
Add an optional output directory argument specifically for vidarr-cli
* Allows user to choose output directory for test outputs
* This is an optional argument
* Default behaviour is to output to tmp directory
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,12 @@
import java.util.stream.Collectors;
import picocli.CommandLine;

/** Subcommand to running unit tests */
/**
* Subcommand to running unit tests
*/
@CommandLine.Command(name = "test", description = "Run a test suite for a workflow")
public class CommandTest implements Callable<Integer> {

private static ObjectNode read(String argument) throws IOException {
if (argument.startsWith("@")) {
return MAPPER.readValue(new File(argument.substring(1)), ObjectNode.class);
Expand Down Expand Up @@ -112,7 +115,9 @@ public Integer call() throws Exception {
c -> {
// Will use output directory if provided, otherwise "null" is passed into createValidator
final var validator =
Validator.all(c.getValidators().stream().map(TestValidator -> TestValidator.createValidator(outputDirectory, c.getId())));
Validator.all(c.getValidators().stream().map(
TestValidator -> TestValidator.createValidator(outputDirectory,
c.getId())));

final var run =
runner.startAsync(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,9 +22,12 @@ public final class TestValidatorScript extends TestValidator {
public Validator createValidator(String outputDirectory, String id) {
try {
// If output directory provided, use that else we create temporary directory /tmp
final var finalDir = (outputDirectory != null) ? Path.of(outputDirectory) : Files.createTempDirectory("vidarr-test-script");
final var finalCalculateScript = (outputDirectory != null) ? Path.of(outputDirectory, id) : finalDir.resolve("calculate");
final var finalCalculateDir = (outputDirectory != null) ? Path.of(outputDirectory, "output") : finalDir.resolve("output");
final var finalDir = (outputDirectory != null) ? Path.of(outputDirectory)
: Files.createTempDirectory("vidarr-test-script");
final var finalCalculateScript =
(outputDirectory != null) ? Path.of(outputDirectory, id) : finalDir.resolve("calculate");
final var finalCalculateDir = (outputDirectory != null) ? Path.of(outputDirectory, "output")
: finalDir.resolve("output");
final var finalOutputFile = (outputDirectory != null) ? id + ".output" : "calculate.output";

// Directory creation
Expand Down Expand Up @@ -72,14 +75,16 @@ public boolean validate(String id) {
System.err.printf("Location of output metrics %s \n", outputMetrics);

// Directory where output file will be located
final var output = Path.of(String.valueOf(finalDir), finalOutputFile).toAbsolutePath().toFile();
final var output = Path.of(String.valueOf(finalDir), finalOutputFile).toAbsolutePath()
.toFile();

System.err.printf("%s: [%s] Calculating output to %s...%n", id, Instant.now(), output);
final var calculateProcess =
new ProcessBuilder()
.inheritIO()
.directory(finalCalculateDir.toFile())
.command(finalCalculateScript.toAbsolutePath().toString(), finalCalculateDir.toString())
.command(finalCalculateScript.toAbsolutePath().toString(),
finalCalculateDir.toString())
.redirectOutput(output)
.start();
calculateProcess.waitFor();
Expand Down Expand Up @@ -112,35 +117,29 @@ public boolean validate(String id) {
}

@JsonProperty("metrics_calculate")
public String getMetricsCalculate()
{
public String getMetricsCalculate() {
return metricsCalculate;
}

@JsonProperty("metrics_compare")
public String getMetricsCompare()
{
public String getMetricsCompare() {
return metricsCompare;
}

@JsonProperty("output_metrics")
public String getOutputMetrics()
{
public String getOutputMetrics() {
return outputMetrics;
}

public void setMetricsCalculate(String metricsCalculate)
{
public void setMetricsCalculate(String metricsCalculate) {
this.metricsCalculate = metricsCalculate;
}

public void setMetricsCompare(String metricsCompare)
{
public void setMetricsCompare(String metricsCompare) {
this.metricsCompare = metricsCompare;
}

public void setOutputMetrics(String outputMetrics)
{
public void setOutputMetrics(String outputMetrics) {
this.outputMetrics = outputMetrics;
}
}

0 comments on commit 0e3cb7f

Please sign in to comment.