From d56812632858833da896f4cdc278d3a6aea73805 Mon Sep 17 00:00:00 2001 From: pesse Date: Thu, 10 Jun 2021 23:21:09 +0200 Subject: [PATCH 1/4] Add new --catch-ora-stuck parameter Reson for this that I have the assumption that catch is too greedy, leading to more abort- and retries than necessary. --- src/main/java/org/utplsql/cli/RunAction.java | 3 ++- .../java/org/utplsql/cli/RunPicocliCommand.java | 4 ++++ .../org/utplsql/cli/config/RunCommandConfig.java | 16 +++++++++++++--- .../org/utplsql/cli/RunCommandArgumentsTest.java | 3 ++- ...andConfigParamsArePassedToTestRunnerTest.java | 10 ++++++++++ src/test/java/org/utplsql/cli/RunCommandIT.java | 10 ++++++++++ .../org/utplsql/cli/RunCommandIssue20IT.java | 3 ++- 7 files changed, 43 insertions(+), 6 deletions(-) diff --git a/src/main/java/org/utplsql/cli/RunAction.java b/src/main/java/org/utplsql/cli/RunAction.java index d91108a..ba0faf3 100644 --- a/src/main/java/org/utplsql/cli/RunAction.java +++ b/src/main/java/org/utplsql/cli/RunAction.java @@ -166,7 +166,8 @@ TestRunner newTestRunner(List reporterList) { .randomTestOrder(config.isRandomTestOrder()) .randomTestOrderSeed(config.getRandomTestOrderSeed()) .addTags(Arrays.asList(config.getTags())) - .addCoverageSchemes(Arrays.asList(config.getCoverageSchemes())); + .addCoverageSchemes(Arrays.asList(config.getCoverageSchemes())) + .catchOraStuck(config.isCatchOraStuck()); } private void outputMainInformation() { diff --git a/src/main/java/org/utplsql/cli/RunPicocliCommand.java b/src/main/java/org/utplsql/cli/RunPicocliCommand.java index a90ffd9..c024a3b 100644 --- a/src/main/java/org/utplsql/cli/RunPicocliCommand.java +++ b/src/main/java/org/utplsql/cli/RunPicocliCommand.java @@ -183,6 +183,9 @@ FileMapperConfig toFileMapperConfig() { @Option(names = "-h", usageHelp = true, description = "display this help and exit") boolean help; + @Option(names = "--catch-ora-stuck", description = "Sets a timeout around Reporter creation and retries when not ready after a while") + boolean catchOraStuck = false; + private RunAction runAction; private String[] splitOrEmpty(String value) { @@ -245,6 +248,7 @@ public RunCommandConfig getRunCommandConfig() { .randomTestOrderSeed(randomTestOrderSeed) .tags(tags.toArray(new String[0])) .coverageSchemes(coverageSchemes.toArray(new String[0])) + .catchOraStuck(catchOraStuck) .create(); } diff --git a/src/main/java/org/utplsql/cli/config/RunCommandConfig.java b/src/main/java/org/utplsql/cli/config/RunCommandConfig.java index ea66ffd..7b92dbe 100644 --- a/src/main/java/org/utplsql/cli/config/RunCommandConfig.java +++ b/src/main/java/org/utplsql/cli/config/RunCommandConfig.java @@ -23,9 +23,10 @@ public class RunCommandConfig extends ConnectionConfig { private final Integer randomTestOrderSeed; private final String[] tags; private final String[] coverageSchemes; + private final boolean catchOraStuck; - @ConstructorProperties({"connectString", "suitePaths", "reporters", "outputAnsiColor", "failureExitCode", "skipCompatibilityCheck", "includePackages", "excludePackages", "sourceMapping", "testMapping", "logConfigLevel", "timeoutInMinutes", "dbmsOutput", "randomTestOrder", "randomTestOrderSeed", "tags", "coverageSchemes"}) - public RunCommandConfig(String connectString, String[] suitePaths, ReporterConfig[] reporters, boolean outputAnsiColor, Integer failureExitCode, boolean skipCompatibilityCheck, String[] includePackages, String[] excludePackages, FileMapperConfig sourceMapping, FileMapperConfig testMapping, ConfigLevel logConfigLevel, Integer timeoutInMinutes, boolean dbmsOutput, boolean randomTestOrder, Integer randomTestOrderSeed, String[] tags, String[] coverageSchemes) { + @ConstructorProperties({"connectString", "suitePaths", "reporters", "outputAnsiColor", "failureExitCode", "skipCompatibilityCheck", "includePackages", "excludePackages", "sourceMapping", "testMapping", "logConfigLevel", "timeoutInMinutes", "dbmsOutput", "randomTestOrder", "randomTestOrderSeed", "tags", "coverageSchemes", "catchOraStuck"}) + public RunCommandConfig(String connectString, String[] suitePaths, ReporterConfig[] reporters, boolean outputAnsiColor, Integer failureExitCode, boolean skipCompatibilityCheck, String[] includePackages, String[] excludePackages, FileMapperConfig sourceMapping, FileMapperConfig testMapping, ConfigLevel logConfigLevel, Integer timeoutInMinutes, boolean dbmsOutput, boolean randomTestOrder, Integer randomTestOrderSeed, String[] tags, String[] coverageSchemes, boolean catchOraStuck) { super(connectString); this.suitePaths = suitePaths; this.reporters = reporters; @@ -43,6 +44,7 @@ public RunCommandConfig(String connectString, String[] suitePaths, ReporterConfi this.randomTestOrderSeed = randomTestOrderSeed; this.tags = tags; this.coverageSchemes = coverageSchemes; + this.catchOraStuck = catchOraStuck; } public String[] getSuitePaths() { @@ -109,6 +111,8 @@ public String[] getCoverageSchemes() { return coverageSchemes; } + public boolean isCatchOraStuck() { return catchOraStuck; } + public static class Builder { private String connectString; @@ -128,6 +132,7 @@ public static class Builder { private Integer randomTestOrderSeed; private String[] tags = new String[0]; private String[] coverageSchemes = new String[0]; + private boolean catchOraStuck; public Builder connectString(String connectString) { this.connectString = connectString; @@ -214,8 +219,13 @@ public Builder coverageSchemes(String[] coverageSchemes) { return this; } + public Builder catchOraStuck(boolean catchOraStuck) { + this.catchOraStuck = catchOraStuck; + return this; + } + public RunCommandConfig create() { - return new RunCommandConfig(connectString, suitePaths, reporters, outputAnsiColor, failureExitCode, skipCompatibilityCheck, includePackages, excludePackages, sourceMapping, testMapping, logConfigLevel, timeoutInMinutes, dbmsOutput, randomTestOrder, randomTestOrderSeed, tags, coverageSchemes); + return new RunCommandConfig(connectString, suitePaths, reporters, outputAnsiColor, failureExitCode, skipCompatibilityCheck, includePackages, excludePackages, sourceMapping, testMapping, logConfigLevel, timeoutInMinutes, dbmsOutput, randomTestOrder, randomTestOrderSeed, tags, coverageSchemes, catchOraStuck); } } } diff --git a/src/test/java/org/utplsql/cli/RunCommandArgumentsTest.java b/src/test/java/org/utplsql/cli/RunCommandArgumentsTest.java index d280c2e..af368a4 100644 --- a/src/test/java/org/utplsql/cli/RunCommandArgumentsTest.java +++ b/src/test/java/org/utplsql/cli/RunCommandArgumentsTest.java @@ -41,7 +41,8 @@ public void allArgumentsAreRecognized() { "-type_mapping=\"sql=PACKAGE BODY\"", "-owner_subexpression=0", "-type_subexpression=0", - "-name_subexpression=0" + "-name_subexpression=0", + "--catch-ora-stuck" ); TestRunner testRunner = runCmd.newTestRunner(new ArrayList<>()); diff --git a/src/test/java/org/utplsql/cli/RunCommandConfigParamsArePassedToTestRunnerTest.java b/src/test/java/org/utplsql/cli/RunCommandConfigParamsArePassedToTestRunnerTest.java index b1b34d4..2a2e3bb 100644 --- a/src/test/java/org/utplsql/cli/RunCommandConfigParamsArePassedToTestRunnerTest.java +++ b/src/test/java/org/utplsql/cli/RunCommandConfigParamsArePassedToTestRunnerTest.java @@ -8,6 +8,7 @@ import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.contains; +import static org.junit.jupiter.api.Assertions.assertTrue; public class RunCommandConfigParamsArePassedToTestRunnerTest { @@ -28,4 +29,13 @@ void coverageSchemes() { TestRunner testRunner = new RunAction(config).newTestRunner(new ArrayList<>()); assertThat( testRunner.getOptions().coverageSchemes, contains("schema1", "another_schema", "and-another-one") ); } + + @Test + void catchOraStuck() { + RunCommandConfig config = new RunCommandConfig.Builder() + .catchOraStuck(true) + .create(); + TestRunner testRunner = new RunAction(config).newTestRunner(new ArrayList<>()); + assertTrue( testRunner.getOptions().catchOraStuck ); + } } diff --git a/src/test/java/org/utplsql/cli/RunCommandIT.java b/src/test/java/org/utplsql/cli/RunCommandIT.java index e6ac671..291e980 100644 --- a/src/test/java/org/utplsql/cli/RunCommandIT.java +++ b/src/test/java/org/utplsql/cli/RunCommandIT.java @@ -89,4 +89,14 @@ void run_withOutputButNoReporterDefined() throws Exception { assertValidReturnCode(result); } + + @Test + void run_withCatchOraStuck() throws Exception { + int result = TestHelper.runApp("run", + TestHelper.getConnectionString(), + "--catch-ora-stuck", + "--failure-exit-code=2"); + + assertValidReturnCode(result); + } } diff --git a/src/test/java/org/utplsql/cli/RunCommandIssue20IT.java b/src/test/java/org/utplsql/cli/RunCommandIssue20IT.java index 0976706..9db13e0 100644 --- a/src/test/java/org/utplsql/cli/RunCommandIssue20IT.java +++ b/src/test/java/org/utplsql/cli/RunCommandIssue20IT.java @@ -24,7 +24,8 @@ void runLoop() { IRunCommand runCmd = TestHelper.createRunCommand( TestHelper.getConnectionString(), "-p=TEST_BETWNSTR.normal_case", - "-f=ut_documentation_reporter"); + "-f=ut_documentation_reporter", + "--catch-ora-stuck"); List reporterOptionsList = runCmd.getReporterOptionsList(); ReporterOptions reporterOptions1 = reporterOptionsList.get(0); assertEquals(CoreReporters.UT_DOCUMENTATION_REPORTER.name(), reporterOptions1.getReporterName()); From 322a3f0c36ff7b1a2300b9cd49f29e7f726fc455 Mon Sep 17 00:00:00 2001 From: pesse Date: Thu, 9 Jun 2022 00:21:16 +0200 Subject: [PATCH 2/4] New parameter --ora-stuck-timeout Sets a timeout around Reporter creation and retries when not ready after a while. 0 = no timeout. Fixes #199 Fixes #197 Fixes #196 Fixes #193 Fixes #191 --- README.md | 2 ++ src/main/java/org/utplsql/cli/RunAction.java | 2 +- .../org/utplsql/cli/RunPicocliCommand.java | 6 +++--- .../utplsql/cli/config/RunCommandConfig.java | 18 +++++++++--------- .../utplsql/cli/RunCommandArgumentsTest.java | 2 +- ...dConfigParamsArePassedToTestRunnerTest.java | 7 ++++--- 6 files changed, 20 insertions(+), 17 deletions(-) diff --git a/README.md b/README.md index 8e397c3..ba9fe0f 100644 --- a/README.md +++ b/README.md @@ -182,6 +182,8 @@ utplsql run "my/Username"/"myP@ssword"@connectstring --coverage-schemes - A comma separated list of schemas on which coverage should be gathered Format: --coverage-schemes=schema1[,schema2[,schema3]] + +--ora-stuck-timeout - Sets a timeout around Reporter creation and retries when not ready after a while. 0 = no timeout. ``` Parameters -f, -o, -s are correlated. That is parameters -o and -s are controlling outputs for reporter specified by the preceding -f parameter. diff --git a/src/main/java/org/utplsql/cli/RunAction.java b/src/main/java/org/utplsql/cli/RunAction.java index ba0faf3..de1be33 100644 --- a/src/main/java/org/utplsql/cli/RunAction.java +++ b/src/main/java/org/utplsql/cli/RunAction.java @@ -167,7 +167,7 @@ TestRunner newTestRunner(List reporterList) { .randomTestOrderSeed(config.getRandomTestOrderSeed()) .addTags(Arrays.asList(config.getTags())) .addCoverageSchemes(Arrays.asList(config.getCoverageSchemes())) - .catchOraStuck(config.isCatchOraStuck()); + .oraStuckTimeout(config.getOraStuckTimeout()); } private void outputMainInformation() { diff --git a/src/main/java/org/utplsql/cli/RunPicocliCommand.java b/src/main/java/org/utplsql/cli/RunPicocliCommand.java index c024a3b..0bdf33c 100644 --- a/src/main/java/org/utplsql/cli/RunPicocliCommand.java +++ b/src/main/java/org/utplsql/cli/RunPicocliCommand.java @@ -183,8 +183,8 @@ FileMapperConfig toFileMapperConfig() { @Option(names = "-h", usageHelp = true, description = "display this help and exit") boolean help; - @Option(names = "--catch-ora-stuck", description = "Sets a timeout around Reporter creation and retries when not ready after a while") - boolean catchOraStuck = false; + @Option(names = "--ora-stuck-timeout", description = "Sets a timeout around Reporter creation and retries when not ready after a while. 0 = no timeout.") + Integer oraStuckTimeout = 0; private RunAction runAction; @@ -248,7 +248,7 @@ public RunCommandConfig getRunCommandConfig() { .randomTestOrderSeed(randomTestOrderSeed) .tags(tags.toArray(new String[0])) .coverageSchemes(coverageSchemes.toArray(new String[0])) - .catchOraStuck(catchOraStuck) + .oraStuckTimeout(oraStuckTimeout) .create(); } diff --git a/src/main/java/org/utplsql/cli/config/RunCommandConfig.java b/src/main/java/org/utplsql/cli/config/RunCommandConfig.java index 7b92dbe..218466b 100644 --- a/src/main/java/org/utplsql/cli/config/RunCommandConfig.java +++ b/src/main/java/org/utplsql/cli/config/RunCommandConfig.java @@ -23,10 +23,10 @@ public class RunCommandConfig extends ConnectionConfig { private final Integer randomTestOrderSeed; private final String[] tags; private final String[] coverageSchemes; - private final boolean catchOraStuck; + private final Integer oraStuckTimeout; - @ConstructorProperties({"connectString", "suitePaths", "reporters", "outputAnsiColor", "failureExitCode", "skipCompatibilityCheck", "includePackages", "excludePackages", "sourceMapping", "testMapping", "logConfigLevel", "timeoutInMinutes", "dbmsOutput", "randomTestOrder", "randomTestOrderSeed", "tags", "coverageSchemes", "catchOraStuck"}) - public RunCommandConfig(String connectString, String[] suitePaths, ReporterConfig[] reporters, boolean outputAnsiColor, Integer failureExitCode, boolean skipCompatibilityCheck, String[] includePackages, String[] excludePackages, FileMapperConfig sourceMapping, FileMapperConfig testMapping, ConfigLevel logConfigLevel, Integer timeoutInMinutes, boolean dbmsOutput, boolean randomTestOrder, Integer randomTestOrderSeed, String[] tags, String[] coverageSchemes, boolean catchOraStuck) { + @ConstructorProperties({"connectString", "suitePaths", "reporters", "outputAnsiColor", "failureExitCode", "skipCompatibilityCheck", "includePackages", "excludePackages", "sourceMapping", "testMapping", "logConfigLevel", "timeoutInMinutes", "dbmsOutput", "randomTestOrder", "randomTestOrderSeed", "tags", "coverageSchemes", "oraStuckTimeout"}) + public RunCommandConfig(String connectString, String[] suitePaths, ReporterConfig[] reporters, boolean outputAnsiColor, Integer failureExitCode, boolean skipCompatibilityCheck, String[] includePackages, String[] excludePackages, FileMapperConfig sourceMapping, FileMapperConfig testMapping, ConfigLevel logConfigLevel, Integer timeoutInMinutes, boolean dbmsOutput, boolean randomTestOrder, Integer randomTestOrderSeed, String[] tags, String[] coverageSchemes, Integer oraStuckTimeout) { super(connectString); this.suitePaths = suitePaths; this.reporters = reporters; @@ -44,7 +44,7 @@ public RunCommandConfig(String connectString, String[] suitePaths, ReporterConfi this.randomTestOrderSeed = randomTestOrderSeed; this.tags = tags; this.coverageSchemes = coverageSchemes; - this.catchOraStuck = catchOraStuck; + this.oraStuckTimeout = oraStuckTimeout; } public String[] getSuitePaths() { @@ -111,7 +111,7 @@ public String[] getCoverageSchemes() { return coverageSchemes; } - public boolean isCatchOraStuck() { return catchOraStuck; } + public Integer getOraStuckTimeout() { return oraStuckTimeout; } public static class Builder { @@ -132,7 +132,7 @@ public static class Builder { private Integer randomTestOrderSeed; private String[] tags = new String[0]; private String[] coverageSchemes = new String[0]; - private boolean catchOraStuck; + private Integer oraStuckTimeout; public Builder connectString(String connectString) { this.connectString = connectString; @@ -219,13 +219,13 @@ public Builder coverageSchemes(String[] coverageSchemes) { return this; } - public Builder catchOraStuck(boolean catchOraStuck) { - this.catchOraStuck = catchOraStuck; + public Builder oraStuckTimeout(Integer oraStuckTimeout) { + this.oraStuckTimeout = oraStuckTimeout; return this; } public RunCommandConfig create() { - return new RunCommandConfig(connectString, suitePaths, reporters, outputAnsiColor, failureExitCode, skipCompatibilityCheck, includePackages, excludePackages, sourceMapping, testMapping, logConfigLevel, timeoutInMinutes, dbmsOutput, randomTestOrder, randomTestOrderSeed, tags, coverageSchemes, catchOraStuck); + return new RunCommandConfig(connectString, suitePaths, reporters, outputAnsiColor, failureExitCode, skipCompatibilityCheck, includePackages, excludePackages, sourceMapping, testMapping, logConfigLevel, timeoutInMinutes, dbmsOutput, randomTestOrder, randomTestOrderSeed, tags, coverageSchemes, oraStuckTimeout); } } } diff --git a/src/test/java/org/utplsql/cli/RunCommandArgumentsTest.java b/src/test/java/org/utplsql/cli/RunCommandArgumentsTest.java index af368a4..63be6e2 100644 --- a/src/test/java/org/utplsql/cli/RunCommandArgumentsTest.java +++ b/src/test/java/org/utplsql/cli/RunCommandArgumentsTest.java @@ -42,7 +42,7 @@ public void allArgumentsAreRecognized() { "-owner_subexpression=0", "-type_subexpression=0", "-name_subexpression=0", - "--catch-ora-stuck" + "--ora-stuck-timeout=2" ); TestRunner testRunner = runCmd.newTestRunner(new ArrayList<>()); diff --git a/src/test/java/org/utplsql/cli/RunCommandConfigParamsArePassedToTestRunnerTest.java b/src/test/java/org/utplsql/cli/RunCommandConfigParamsArePassedToTestRunnerTest.java index 2a2e3bb..95d146a 100644 --- a/src/test/java/org/utplsql/cli/RunCommandConfigParamsArePassedToTestRunnerTest.java +++ b/src/test/java/org/utplsql/cli/RunCommandConfigParamsArePassedToTestRunnerTest.java @@ -8,6 +8,7 @@ import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.contains; +import static org.hamcrest.Matchers.equalTo; import static org.junit.jupiter.api.Assertions.assertTrue; public class RunCommandConfigParamsArePassedToTestRunnerTest { @@ -31,11 +32,11 @@ void coverageSchemes() { } @Test - void catchOraStuck() { + void oraStuckTimeout() { RunCommandConfig config = new RunCommandConfig.Builder() - .catchOraStuck(true) + .oraStuckTimeout(2) .create(); TestRunner testRunner = new RunAction(config).newTestRunner(new ArrayList<>()); - assertTrue( testRunner.getOptions().catchOraStuck ); + assertThat( testRunner.getOptions().oraStuckTimeout, equalTo(2) ); } } From 288ca0530b3f41266832328d85583234a7de1b55 Mon Sep 17 00:00:00 2001 From: pesse Date: Thu, 9 Jun 2022 00:24:46 +0200 Subject: [PATCH 3/4] Fix failing test --- src/test/java/org/utplsql/cli/RunCommandIT.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/test/java/org/utplsql/cli/RunCommandIT.java b/src/test/java/org/utplsql/cli/RunCommandIT.java index 291e980..95effad 100644 --- a/src/test/java/org/utplsql/cli/RunCommandIT.java +++ b/src/test/java/org/utplsql/cli/RunCommandIT.java @@ -91,10 +91,10 @@ void run_withOutputButNoReporterDefined() throws Exception { } @Test - void run_withCatchOraStuck() throws Exception { + void run_withOraStuckTimeout() throws Exception { int result = TestHelper.runApp("run", TestHelper.getConnectionString(), - "--catch-ora-stuck", + "--ora-stuck-timeout=2", "--failure-exit-code=2"); assertValidReturnCode(result); From a5094839adf72c70bf41d56dddb2b820a57d0b70 Mon Sep 17 00:00:00 2001 From: pesse Date: Thu, 9 Jun 2022 00:27:57 +0200 Subject: [PATCH 4/4] Fix another test Yes I need my local setup again --- src/test/java/org/utplsql/cli/RunCommandIssue20IT.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/java/org/utplsql/cli/RunCommandIssue20IT.java b/src/test/java/org/utplsql/cli/RunCommandIssue20IT.java index 9db13e0..8162fc9 100644 --- a/src/test/java/org/utplsql/cli/RunCommandIssue20IT.java +++ b/src/test/java/org/utplsql/cli/RunCommandIssue20IT.java @@ -25,7 +25,7 @@ void runLoop() { TestHelper.getConnectionString(), "-p=TEST_BETWNSTR.normal_case", "-f=ut_documentation_reporter", - "--catch-ora-stuck"); + "--ora-stuck-timeout=3"); List reporterOptionsList = runCmd.getReporterOptionsList(); ReporterOptions reporterOptions1 = reporterOptionsList.get(0); assertEquals(CoreReporters.UT_DOCUMENTATION_REPORTER.name(), reporterOptions1.getReporterName()); pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy