Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -119,7 +119,7 @@ public int run(List<QueryPair> queries)
config.isExplainOnly(),
config.getDoublePrecision(),
isCheckCorrectness(query),
true,
config.isCheckDeterminismEnabled(),
config.isVerboseResultsComparison(),
config.getControlTeardownRetries(),
config.getTestTeardownRetries(),
Expand Down Expand Up @@ -243,9 +243,6 @@ private VerifierQueryEvent buildEvent(Validator validator)
}
}

Stream<QueryResult> controlQueries = concat(Stream.of(control), validator.getControlPreQueryResults().stream(), validator.getControlPostQueryResults().stream());
Stream<QueryResult> testQueries = concat(Stream.of(test), validator.getTestPreQueryResults().stream(), validator.getTestPostQueryResults().stream());
Comment on lines -246 to -247
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

what does it change?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Turns out the stream created by the Stream.concat cannot be iterated more than once.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Oh - yeah. I think this is generally true for streams.


return new VerifierQueryEvent(
queryPair.getSuite(),
config.getRunId(),
Expand All @@ -266,8 +263,8 @@ private VerifierQueryEvent buildEvent(Validator validator)
.map(QueryResult::getQueryId)
.filter(Objects::nonNull)
.collect(toImmutableList()),
getTotalDurationInSeconds(testQueries, QueryResult::getCpuTime),
getTotalDurationInSeconds(testQueries, QueryResult::getWallTime),
getTotalDurationInSeconds(validator.getTestPreQueryResults(), validator.getTestResult(), validator.getTestPostQueryResults(), QueryResult::getCpuTime),
getTotalDurationInSeconds(validator.getTestPreQueryResults(), validator.getTestResult(), validator.getTestPostQueryResults(), QueryResult::getWallTime),
queryPair.getControl().getCatalog(),
queryPair.getControl().getSchema(),
queryPair.getControl().getPreQueries(),
Expand All @@ -282,15 +279,15 @@ private VerifierQueryEvent buildEvent(Validator validator)
.map(QueryResult::getQueryId)
.filter(Objects::nonNull)
.collect(toImmutableList()),
getTotalDurationInSeconds(controlQueries, QueryResult::getCpuTime),
getTotalDurationInSeconds(controlQueries, QueryResult::getWallTime),
getTotalDurationInSeconds(validator.getControlPreQueryResults(), validator.getControlResult(), validator.getControlPostQueryResults(), QueryResult::getCpuTime),
getTotalDurationInSeconds(validator.getControlPreQueryResults(), validator.getControlResult(), validator.getControlPostQueryResults(), QueryResult::getWallTime),
errorMessage);
}

@Nullable
private static Double getTotalDurationInSeconds(Stream<QueryResult> queries, Function<QueryResult, Duration> metric)
private static Double getTotalDurationInSeconds(List<QueryResult> preQueries, QueryResult query, List<QueryResult> postQueries, Function<QueryResult, Duration> metric)
{
OptionalDouble result = queries
OptionalDouble result = concat(preQueries.stream(), Stream.of(query), postQueries.stream())
.map(metric)
.filter(Objects::nonNull)
.mapToDouble(duration -> duration.getValue(SECONDS))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,7 @@ public class VerifierConfig
private int queryRepetitions = 1;
private String skipCorrectnessRegex = "^$";
private boolean checkCorrectness = true;
private boolean checkDeterminism = true;
private String skipCpuCheckRegex = "(?i)(?s).*LIMIT.*";
private boolean checkCpu = true;
private boolean explainOnly;
Expand Down Expand Up @@ -367,6 +368,18 @@ public VerifierConfig setCheckCorrectnessEnabled(boolean checkCorrectness)
return this;
}

public boolean isCheckDeterminismEnabled()
{
return checkDeterminism;
}

@Config("check-determinism")
public VerifierConfig setCheckDeterminismEnabled(boolean checkDeterminism)
{
this.checkDeterminism = checkDeterminism;
return this;
}

public boolean isCheckCpuEnabled()
{
return checkCpu;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,7 @@ public void testDefaults()
.setAlwaysReport(false)
.setSuiteRepetitions(1)
.setCheckCorrectnessEnabled(true)
.setCheckDeterminismEnabled(true)
.setCheckCpuEnabled(true)
.setExplainOnly(false)
.setSkipCorrectnessRegex("^$")
Expand Down Expand Up @@ -108,6 +109,7 @@ public void testExplicitPropertyMappings()
.put("suite-repetitions", "2")
.put("query-repetitions", "2")
.put("check-correctness", "false")
.put("check-determinism", "false")
.put("check-cpu", "false")
.put("explain-only", "true")
.put("skip-correctness-regex", "limit")
Expand Down Expand Up @@ -161,6 +163,7 @@ public void testExplicitPropertyMappings()
.setSuiteRepetitions(2)
.setQueryRepetitions(2)
.setCheckCorrectnessEnabled(false)
.setCheckDeterminismEnabled(false)
.setCheckCpuEnabled(false)
.setExplainOnly(true)
.setSkipCorrectnessRegex("limit")
Expand Down