diff --git a/service/trino-verifier/src/main/java/io/trino/verifier/Verifier.java b/service/trino-verifier/src/main/java/io/trino/verifier/Verifier.java index e9d85ae6d837..00acc695d19e 100644 --- a/service/trino-verifier/src/main/java/io/trino/verifier/Verifier.java +++ b/service/trino-verifier/src/main/java/io/trino/verifier/Verifier.java @@ -119,7 +119,7 @@ public int run(List queries) config.isExplainOnly(), config.getDoublePrecision(), isCheckCorrectness(query), - true, + config.isCheckDeterminismEnabled(), config.isVerboseResultsComparison(), config.getControlTeardownRetries(), config.getTestTeardownRetries(), @@ -243,9 +243,6 @@ private VerifierQueryEvent buildEvent(Validator validator) } } - Stream controlQueries = concat(Stream.of(control), validator.getControlPreQueryResults().stream(), validator.getControlPostQueryResults().stream()); - Stream testQueries = concat(Stream.of(test), validator.getTestPreQueryResults().stream(), validator.getTestPostQueryResults().stream()); - return new VerifierQueryEvent( queryPair.getSuite(), config.getRunId(), @@ -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(), @@ -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 queries, Function metric) + private static Double getTotalDurationInSeconds(List preQueries, QueryResult query, List postQueries, Function metric) { - OptionalDouble result = queries + OptionalDouble result = concat(preQueries.stream(), Stream.of(query), postQueries.stream()) .map(metric) .filter(Objects::nonNull) .mapToDouble(duration -> duration.getValue(SECONDS)) diff --git a/service/trino-verifier/src/main/java/io/trino/verifier/VerifierConfig.java b/service/trino-verifier/src/main/java/io/trino/verifier/VerifierConfig.java index 5d61850f500a..ca9938346c67 100644 --- a/service/trino-verifier/src/main/java/io/trino/verifier/VerifierConfig.java +++ b/service/trino-verifier/src/main/java/io/trino/verifier/VerifierConfig.java @@ -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; @@ -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; diff --git a/service/trino-verifier/src/test/java/io/trino/verifier/TestVerifierConfig.java b/service/trino-verifier/src/test/java/io/trino/verifier/TestVerifierConfig.java index 18b00679813d..ddda7a582666 100644 --- a/service/trino-verifier/src/test/java/io/trino/verifier/TestVerifierConfig.java +++ b/service/trino-verifier/src/test/java/io/trino/verifier/TestVerifierConfig.java @@ -59,6 +59,7 @@ public void testDefaults() .setAlwaysReport(false) .setSuiteRepetitions(1) .setCheckCorrectnessEnabled(true) + .setCheckDeterminismEnabled(true) .setCheckCpuEnabled(true) .setExplainOnly(false) .setSkipCorrectnessRegex("^$") @@ -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") @@ -161,6 +163,7 @@ public void testExplicitPropertyMappings() .setSuiteRepetitions(2) .setQueryRepetitions(2) .setCheckCorrectnessEnabled(false) + .setCheckDeterminismEnabled(false) .setCheckCpuEnabled(false) .setExplainOnly(true) .setSkipCorrectnessRegex("limit")