From 118d637d62114d96a224e72d2fec563ead55b8e6 Mon Sep 17 00:00:00 2001 From: Pavel Anihimovsky <47742067+pavelanihimovsky@users.noreply.github.com> Date: Thu, 7 May 2020 11:06:28 +0300 Subject: [PATCH] Bugfix/47 fix action retrier (#48) * Fix action retrier * Update pom * Update pipeline * Fix sonar issue --- azure-pipelines.yml | 45 ++- pom.xml | 264 ++++++++---------- .../core/utilities/ActionRetrier.java | 7 +- .../tests/utilities/ActionRetrierTests.java | 7 +- .../utilities/ElementActionRetrierTests.java | 8 +- 5 files changed, 169 insertions(+), 162 deletions(-) diff --git a/azure-pipelines.yml b/azure-pipelines.yml index bdabf17..5268db1 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -1,13 +1,16 @@ -# Maven - trigger: - master pool: vmImage: 'windows-latest' -steps: +jobs: +- job: sonar + displayName: Analyse code with SonarQube + + steps: - task: SonarCloudPrepare@1 + displayName: 'Prepare SonarCloud analysis' inputs: SonarCloud: 'SonarCloud' organization: 'aqualityautomation' @@ -15,7 +18,34 @@ steps: configMode: 'file' extraProperties: | sonar.coverage.exclusions=**/** + + - task: Maven@3 + displayName: 'Build project' + inputs: + mavenPomFile: 'pom.xml' + mavenOptions: '-Xmx3072m' + javaHomeOption: 'JDKVersion' + jdkVersionOption: '1.8' + jdkArchitectureOption: 'x64' + publishJUnitResults: true + testResultsFiles: '**/surefire-reports/TEST-*.xml' + goals: 'clean' + + - task: SonarCloudAnalyze@1 + displayName: 'Run SonarCloud code analysis' + continueOnError: true + + - task: SonarCloudPublish@1 + displayName: 'Publish SonarCloud quality gate results' + inputs: + pollingTimeoutSec: '300' + +- job: tests + displayName: Run tests + + steps: - task: ScreenResolutionUtility@1 + displayName: 'Set optimal screen resolution' inputs: displaySettings: 'optimal' @@ -25,6 +55,7 @@ steps: OperationType: 'Start' - task: Maven@3 + displayName: 'Run tests' inputs: mavenPomFile: 'pom.xml' mavenOptions: '-Xmx3072m' @@ -35,13 +66,7 @@ steps: testResultsFiles: '**/surefire-reports/TEST-*.xml' goals: 'clean test -Dprofile=local' - - task: SonarCloudAnalyze@1 - - - task: SonarCloudPublish@1 - inputs: - pollingTimeoutSec: '300' - - task: Windows Application Driver@0 - displayName: stop WinAppDriver + displayName: 'Stop WinAppDriver' inputs: OperationType: 'Stop' diff --git a/pom.xml b/pom.xml index e64e784..ff55168 100644 --- a/pom.xml +++ b/pom.xml @@ -3,13 +3,16 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 + com.github.aquality-automation aquality-selenium-core - 1.0.0 + 1.0.1 + jar Aquality Selenium Core Library with core functions simplifying work with Selenium-controlled applications. https://github.com/aquality-automation/aquality-selenium-core-java + UTF-8 UTF-8 @@ -113,155 +116,124 @@ test - - - default - - true - - - - - org.apache.maven.plugins - maven-compiler-plugin - 3.1 + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.1 + + 1.8 + 1.8 + + + + org.jacoco + jacoco-maven-plugin + 0.8.4 + + + pre-unit-test + + prepare-agent + - 1.8 - 1.8 + ${project.build.directory}/jacoco/jacoco-ut.exec + surefireArgLine - - - org.jacoco - jacoco-maven-plugin - 0.8.4 - - - pre-unit-test - - prepare-agent - - - ${project.build.directory}/jacoco/jacoco-ut.exec - surefireArgLine - - - - post-unit-test - test - - report - - - ${project.build.directory}/jacoco/jacoco-ut.exec - ${project.build.directory}/coverage-report - - - - - - org.apache.maven.plugins - maven-surefire-plugin - 2.20 + + + post-unit-test + test + + report + - ${surefireArgLine} -Dfile.encoding=UTF-8 - false - - src/test/resources/TestSuite.xml - + ${project.build.directory}/jacoco/jacoco-ut.exec + ${project.build.directory}/coverage-report - - - org.apache.maven.plugins - maven-assembly-plugin - - - - attached - - package - - - jar-with-dependencies - - - - - - - org.apache.maven.plugins - maven-source-plugin - - - attach-sources - - jar - - - - - - org.apache.maven.plugins - maven-javadoc-plugin - - - attach-javadocs - - jar - - - - - - org.apache.maven.plugins - maven-gpg-plugin - 1.6 - - - sign-artifacts - verify - - sign - - - - - - org.sonatype.plugins - nexus-staging-maven-plugin - 1.6.8 - true + + + + + org.apache.maven.plugins + maven-surefire-plugin + 2.20 + + ${surefireArgLine} -Dfile.encoding=UTF-8 + false + + src/test/resources/TestSuite.xml + + + + + org.apache.maven.plugins + maven-assembly-plugin + + + + attached + + package - ossrh - https://oss.sonatype.org/ - true + + jar-with-dependencies + - - - - - - sonar - - - - - org.sonarsource.scanner.maven - sonar-maven-plugin - 3.6.0.1398 - - - - - - http://172.20.68.34:9000 - a9d71a45706333578fa9d518a0aa82d89ecbe3ce - sonar.selenium-core-java - src/main - src/test - java - . - UTF-8 - - - + + + + + org.apache.maven.plugins + maven-source-plugin + + + attach-sources + + jar + + + + + + org.apache.maven.plugins + maven-javadoc-plugin + + + attach-javadocs + + jar + + + + + + org.apache.maven.plugins + maven-gpg-plugin + 1.6 + + + sign-artifacts + verify + + sign + + + + + + org.sonatype.plugins + nexus-staging-maven-plugin + 1.6.8 + true + + ossrh + https://oss.sonatype.org/ + true + + + + diff --git a/src/main/java/aquality/selenium/core/utilities/ActionRetrier.java b/src/main/java/aquality/selenium/core/utilities/ActionRetrier.java index 16d8415..0a50450 100644 --- a/src/main/java/aquality/selenium/core/utilities/ActionRetrier.java +++ b/src/main/java/aquality/selenium/core/utilities/ActionRetrier.java @@ -4,7 +4,6 @@ import com.google.inject.Inject; import java.util.Collection; -import java.util.Optional; import java.util.function.Supplier; public class ActionRetrier implements IActionRetrier { @@ -28,10 +27,10 @@ public void doWithRetry(Runnable runnable, Collection @Override public T doWithRetry(Supplier function, Collection> handledExceptions) { int retryAttemptsLeft = retryConfiguration.getNumber(); - Optional result = Optional.empty(); + T result = null; while (retryAttemptsLeft >= 0) { try { - result = Optional.of(function.get()); + result = function.get(); break; } catch (Exception exception) { if (isExceptionHandled(handledExceptions, exception) && retryAttemptsLeft != 0) { @@ -46,7 +45,7 @@ public T doWithRetry(Supplier function, Collection> handledExceptions, Exception exception) { diff --git a/src/test/java/tests/utilities/ActionRetrierTests.java b/src/test/java/tests/utilities/ActionRetrierTests.java index 5331a1e..e854f00 100644 --- a/src/test/java/tests/utilities/ActionRetrierTests.java +++ b/src/test/java/tests/utilities/ActionRetrierTests.java @@ -17,9 +17,14 @@ public class ActionRetrierTests extends RetrierTest { private static final Collection> handledExceptions = Collections.singleton(IllegalStateException.class); private static final ActionRetrier ACTION_RETRIER = new ActionRetrier(RETRY_CONFIGURATION); + @Test + public void testRetrierShouldWorkWhenSupplierReturnsNull() { + Assert.assertNull(ACTION_RETRIER.doWithRetry(() -> null, Collections.emptyList())); + } + @Test public void testRetrierShouldWorkOnceIfMethodSucceeded() { - checkRetrierShouldWorkOnceIfMethodSucceeded(() -> ACTION_RETRIER.doWithRetry(() -> "", Collections.emptyList())); + checkRetrierShouldWorkOnceIfMethodSucceeded(() -> ACTION_RETRIER.doWithRetry(() -> System.out.println(""), Collections.emptyList())); } @Test diff --git a/src/test/java/tests/utilities/ElementActionRetrierTests.java b/src/test/java/tests/utilities/ElementActionRetrierTests.java index 92eccb7..0e4de9e 100644 --- a/src/test/java/tests/utilities/ElementActionRetrierTests.java +++ b/src/test/java/tests/utilities/ElementActionRetrierTests.java @@ -8,6 +8,7 @@ import org.testng.annotations.DataProvider; import org.testng.annotations.Test; +import java.util.Collections; import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicInteger; @@ -25,9 +26,14 @@ private Object[][] handledExceptions() { }; } + @Test + public void testElementRetrierShouldWorkWhenSupplierReturnsNull() { + Assert.assertNull(ELEMENT_ACTION_RETRIER.doWithRetry(() -> null, Collections.emptyList())); + } + @Test public void testElementRetrierShouldWorkOnceIfMethodSucceeded() { - checkRetrierShouldWorkOnceIfMethodSucceeded(() -> ELEMENT_ACTION_RETRIER.doWithRetry(() -> "")); + checkRetrierShouldWorkOnceIfMethodSucceeded(() -> ELEMENT_ACTION_RETRIER.doWithRetry(() -> System.out.println(""))); } @Test