From 24bd8856af66bf2e1148c42279739225b254e84e Mon Sep 17 00:00:00 2001 From: lukasz-jarocki-sonarsource Date: Wed, 23 Oct 2024 09:04:30 +0200 Subject: [PATCH] NO-JIRA improved performance of tests in sonar-scanner-engine module --- sonar-scanner-engine/build.gradle | 1 + .../mediumtest/fs/FileSystemMediumIT.java | 3 +- .../org/sonar/scm/svn/SvnBlameCommandIT.java | 3 +- .../test-repos/1.7/repo-svn-with-merge.zip | Bin 29020 -> 0 bytes .../sonar/scm/svn/test-repos/1.7/repo-svn.zip | Bin 23239 -> 0 bytes .../test-repos/1.8/repo-svn-with-merge.zip | Bin 29020 -> 0 bytes .../sonar/scm/svn/test-repos/1.8/repo-svn.zip | Bin 23777 -> 0 bytes .../bootstrap/ScannerPluginJarExploder.java | 9 +++- .../scanner/qualitygate/QualityGateCheck.java | 12 +++-- .../ScannerPluginJarExploderTest.java | 1 + .../qualitygate/QualityGateCheckTest.java | 1 + .../scanner/util/ProgressReportTest.java | 20 ++++++-- .../scm/git/CompositeBlameCommandIT.java | 13 +++-- .../org/sonar/scm/svn/SvnScmProviderTest.java | 48 +++++++++--------- 14 files changed, 74 insertions(+), 37 deletions(-) delete mode 100644 sonar-scanner-engine/src/it/resources/org/sonar/scm/svn/test-repos/1.7/repo-svn-with-merge.zip delete mode 100644 sonar-scanner-engine/src/it/resources/org/sonar/scm/svn/test-repos/1.7/repo-svn.zip delete mode 100644 sonar-scanner-engine/src/it/resources/org/sonar/scm/svn/test-repos/1.8/repo-svn-with-merge.zip delete mode 100644 sonar-scanner-engine/src/it/resources/org/sonar/scm/svn/test-repos/1.8/repo-svn.zip diff --git a/sonar-scanner-engine/build.gradle b/sonar-scanner-engine/build.gradle index b8f1cee9c07..de0f9f12d19 100644 --- a/sonar-scanner-engine/build.gradle +++ b/sonar-scanner-engine/build.gradle @@ -73,6 +73,7 @@ dependencies { testImplementation project(':plugins:sonar-xoo-plugin') testImplementation 'org.wiremock:wiremock-standalone' testImplementation 'org.junit-pioneer:junit-pioneer' + testImplementation 'org.awaitility:awaitility' testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine' testRuntimeOnly 'org.junit.vintage:junit-vintage-engine' diff --git a/sonar-scanner-engine/src/it/java/org/sonar/scanner/mediumtest/fs/FileSystemMediumIT.java b/sonar-scanner-engine/src/it/java/org/sonar/scanner/mediumtest/fs/FileSystemMediumIT.java index 384e8a8a164..efae70e8f09 100644 --- a/sonar-scanner-engine/src/it/java/org/sonar/scanner/mediumtest/fs/FileSystemMediumIT.java +++ b/sonar-scanner-engine/src/it/java/org/sonar/scanner/mediumtest/fs/FileSystemMediumIT.java @@ -337,9 +337,10 @@ public class FileSystemMediumIT { int nbFiles = 100; int ruleCount = 100000; + String fileContent = StringUtils.repeat(StringUtils.repeat("a", 100) + "\n", ruleCount / 1000); for (int nb = 1; nb <= nbFiles; nb++) { File xooFile = new File(srcDir, "sample" + nb + ".xoo"); - FileUtils.write(xooFile, StringUtils.repeat(StringUtils.repeat("a", 100) + "\n", ruleCount / 1000)); + FileUtils.write(xooFile, fileContent); } AnalysisResult result = tester.newAnalysis() diff --git a/sonar-scanner-engine/src/it/java/org/sonar/scm/svn/SvnBlameCommandIT.java b/sonar-scanner-engine/src/it/java/org/sonar/scm/svn/SvnBlameCommandIT.java index c459e48523f..808b98537e5 100644 --- a/sonar-scanner-engine/src/it/java/org/sonar/scm/svn/SvnBlameCommandIT.java +++ b/sonar-scanner-engine/src/it/java/org/sonar/scm/svn/SvnBlameCommandIT.java @@ -101,7 +101,8 @@ public class SvnBlameCommandIT { @Parameters(name = "SVN server version {0}, WC version {1}") public static Iterable data() { - return Arrays.asList(new Object[][] {{"1.6", 10}, {"1.7", 29}, {"1.8", 31}, {"1.9", 31}}); + //TODO add tests for 1.14 + return Arrays.asList(new Object[][] {{"1.6", 10}, {"1.9", 31}}); } public SvnBlameCommandIT(String serverVersion, int wcVersion) { diff --git a/sonar-scanner-engine/src/it/resources/org/sonar/scm/svn/test-repos/1.7/repo-svn-with-merge.zip b/sonar-scanner-engine/src/it/resources/org/sonar/scm/svn/test-repos/1.7/repo-svn-with-merge.zip deleted file mode 100644 index d3c3ee5fa1e943397520242f5c6704cc3f1021e9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 29020 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 MNC6c-ebj&d1D^Hp#{d8T diff --git a/sonar-scanner-engine/src/it/resources/org/sonar/scm/svn/test-repos/1.7/repo-svn.zip b/sonar-scanner-engine/src/it/resources/org/sonar/scm/svn/test-repos/1.7/repo-svn.zip deleted file mode 100644 index 291d4fb86f778383fc5af65dfaf46df2ffde6206..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23239 zcmbTe1yo+i(lv}ja3{C~cXxMpcbDMq8YH;8ySsaE_uy{9-TfzXXYQSwJ2UHh|A%#0 zz*=3sPo3(jz3X%%D*+4w3GnmdtaZiv+Yi5g`v3qBU}t1wO=a(7MWdt&4KOtaF8lMk z0R#Y${o7%%e;#IFZDstIW03(M-oJjG66t@&>Nz@?y8Sx2qr!;QGA(@D69uXbLSLZ4 zDlkORrnWo?Q&bc06dtXqnNfANm~UR$V33!4P#mspOvaAq=<-KWq?p3=9CGQm zdL2NwAq+C0+M`9|2u&k(DRbolB2-tQh%3^p4f)Sbi6FMD#B{UWDzZ9)8RiN>C9
?OPMfq3=2gTZb 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 diff --git a/sonar-scanner-engine/src/it/resources/org/sonar/scm/svn/test-repos/1.8/repo-svn.zip b/sonar-scanner-engine/src/it/resources/org/sonar/scm/svn/test-repos/1.8/repo-svn.zip deleted file mode 100644 index f31352c5e03e809b48a462b71b1460e5d205c917..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23777 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 diff --git a/sonar-scanner-engine/src/main/java/org/sonar/scanner/bootstrap/ScannerPluginJarExploder.java b/sonar-scanner-engine/src/main/java/org/sonar/scanner/bootstrap/ScannerPluginJarExploder.java index 06147b4715d..251a12cc8f0 100644 --- a/sonar-scanner-engine/src/main/java/org/sonar/scanner/bootstrap/ScannerPluginJarExploder.java +++ b/sonar-scanner-engine/src/main/java/org/sonar/scanner/bootstrap/ScannerPluginJarExploder.java @@ -19,6 +19,7 @@ */ package org.sonar.scanner.bootstrap; +import com.google.common.annotations.VisibleForTesting; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; @@ -36,6 +37,7 @@ import static org.sonar.core.util.FileUtils.deleteQuietly; public class ScannerPluginJarExploder extends PluginJarExploder { + private static long lockRetrySleep = 200L; private final PluginFiles pluginFiles; public ScannerPluginJarExploder(PluginFiles pluginFiles) { @@ -76,6 +78,11 @@ public class ScannerPluginJarExploder extends PluginJarExploder { return destDir; } + @VisibleForTesting + static void setLockRetrySleep(long sleep) { + lockRetrySleep = sleep; + } + private static FileLock createLockWithRetries(FileChannel channel) throws IOException { int tryCount = 0; while (tryCount++ < 10) { @@ -85,7 +92,7 @@ public class ScannerPluginJarExploder extends PluginJarExploder { // ignore overlapping file exception } try { - Thread.sleep(200L * tryCount); + Thread.sleep(lockRetrySleep * tryCount); } catch (InterruptedException e) { Thread.currentThread().interrupt(); } diff --git a/sonar-scanner-engine/src/main/java/org/sonar/scanner/qualitygate/QualityGateCheck.java b/sonar-scanner-engine/src/main/java/org/sonar/scanner/qualitygate/QualityGateCheck.java index aa4c30d352b..31a8394dbf7 100644 --- a/sonar-scanner-engine/src/main/java/org/sonar/scanner/qualitygate/QualityGateCheck.java +++ b/sonar-scanner-engine/src/main/java/org/sonar/scanner/qualitygate/QualityGateCheck.java @@ -19,6 +19,7 @@ */ package org.sonar.scanner.qualitygate; +import com.google.common.annotations.VisibleForTesting; import java.io.InputStream; import java.time.Duration; import java.time.temporal.ChronoUnit; @@ -44,13 +45,13 @@ public class QualityGateCheck implements Startable { private static final Logger LOG = LoggerFactory.getLogger(QualityGateCheck.class); private static final EnumSet TASK_TERMINAL_STATUSES = EnumSet.of(TaskStatus.SUCCESS, TaskStatus.FAILED, TaskStatus.CANCELED); - private static final int POLLING_INTERVAL_IN_MS = 5000; private final DefaultScannerWsClient wsClient; private final GlobalAnalysisMode analysisMode; private final CeTaskReportDataHolder ceTaskReportDataHolder; private final ScanProperties properties; + private int pollingIntervalInSeconds = 5000; private long qualityGateTimeoutInMs; private boolean enabled; @@ -102,6 +103,11 @@ public class QualityGateCheck implements Startable { } } + @VisibleForTesting + void setPollingIntervalInSeconds(int pollingIntervalInSeconds) { + this.pollingIntervalInSeconds = pollingIntervalInSeconds; + } + private Ce.Task waitForCeTaskToFinish(String taskId) { GetRequest getTaskResultReq = new GetRequest("api/ce/task") .setMediaType(MediaTypes.PROTOBUF) @@ -116,8 +122,8 @@ public class QualityGateCheck implements Startable { return task; } - Thread.sleep(POLLING_INTERVAL_IN_MS); - currentTime += POLLING_INTERVAL_IN_MS; + Thread.sleep(pollingIntervalInSeconds); + currentTime += pollingIntervalInSeconds; } catch (HttpException e) { throw MessageException.of(String.format("Failed to get CE Task status - %s", DefaultScannerWsClient.createErrorMessage(e))); } catch (InterruptedException e) { diff --git a/sonar-scanner-engine/src/test/java/org/sonar/scanner/bootstrap/ScannerPluginJarExploderTest.java b/sonar-scanner-engine/src/test/java/org/sonar/scanner/bootstrap/ScannerPluginJarExploderTest.java index d300d025570..4ded7fb0901 100644 --- a/sonar-scanner-engine/src/test/java/org/sonar/scanner/bootstrap/ScannerPluginJarExploderTest.java +++ b/sonar-scanner-engine/src/test/java/org/sonar/scanner/bootstrap/ScannerPluginJarExploderTest.java @@ -50,6 +50,7 @@ public class ScannerPluginJarExploderTest { PluginFiles pluginFiles = mock(PluginFiles.class); when(pluginFiles.createTempDir()).thenReturn(tempDir); underTest = new ScannerPluginJarExploder(pluginFiles); + underTest.setLockRetrySleep(5L); } @Test diff --git a/sonar-scanner-engine/src/test/java/org/sonar/scanner/qualitygate/QualityGateCheckTest.java b/sonar-scanner-engine/src/test/java/org/sonar/scanner/qualitygate/QualityGateCheckTest.java index 0e7e67cb5c5..b31249ff815 100644 --- a/sonar-scanner-engine/src/test/java/org/sonar/scanner/qualitygate/QualityGateCheckTest.java +++ b/sonar-scanner-engine/src/test/java/org/sonar/scanner/qualitygate/QualityGateCheckTest.java @@ -71,6 +71,7 @@ class QualityGateCheckTest { @BeforeEach void before() { underTest = new QualityGateCheck(wsClient, analysisMode, reportMetadataHolder, properties); + underTest.setPollingIntervalInSeconds(200); logTester.setLevel(Level.DEBUG); } diff --git a/sonar-scanner-engine/src/test/java/org/sonar/scanner/util/ProgressReportTest.java b/sonar-scanner-engine/src/test/java/org/sonar/scanner/util/ProgressReportTest.java index 4d04a83fd22..71a3fd644a1 100644 --- a/sonar-scanner-engine/src/test/java/org/sonar/scanner/util/ProgressReportTest.java +++ b/sonar-scanner-engine/src/test/java/org/sonar/scanner/util/ProgressReportTest.java @@ -20,7 +20,10 @@ package org.sonar.scanner.util; import java.util.Set; +import java.util.concurrent.TimeUnit; import java.util.regex.Pattern; +import org.awaitility.Awaitility; +import org.awaitility.core.ConditionTimeoutException; import org.junit.Rule; import org.junit.Test; import org.junit.rules.DisableOnDebug; @@ -57,18 +60,25 @@ public class ProgressReportTest { } @Test - public void do_log() throws InterruptedException { + public void do_log() { logTester.setLevel(Level.DEBUG); underTest.start("start"); underTest.message("Some message"); boolean logged = false; - Thread.sleep(2000); while (!logged) { - logged = logTester.logs().contains("Some message"); + logged = containsWithRetry("Some message"); } underTest.stop("stop"); - Thread.sleep(1000); - assertThat(logTester.logs().stream().anyMatch(s -> Pattern.matches("stop", s))).isTrue(); + assertThat(containsWithRetry("stop")).isTrue(); + } + + private boolean containsWithRetry(String message) { + try { + Awaitility.await().atMost(5, TimeUnit.SECONDS).until(() -> logTester.logs().contains(message)); + } catch (ConditionTimeoutException e) { + return false; + } + return true; } @Test diff --git a/sonar-scanner-engine/src/test/java/org/sonar/scm/git/CompositeBlameCommandIT.java b/sonar-scanner-engine/src/test/java/org/sonar/scm/git/CompositeBlameCommandIT.java index 419a205fd52..c95966d6d18 100644 --- a/sonar-scanner-engine/src/test/java/org/sonar/scm/git/CompositeBlameCommandIT.java +++ b/sonar-scanner-engine/src/test/java/org/sonar/scm/git/CompositeBlameCommandIT.java @@ -34,6 +34,7 @@ import java.util.Map; import java.util.concurrent.ConcurrentHashMap; import java.util.stream.Collectors; import java.util.stream.Stream; +import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.io.CleanupMode; import org.junit.jupiter.api.io.TempDir; import org.junit.jupiter.params.ParameterizedTest; @@ -57,19 +58,25 @@ import static org.mockito.Mockito.when; class CompositeBlameCommandIT { + private static final ProcessWrapperFactory processWrapperFactory = new ProcessWrapperFactory(); + private static final NativeGitBlameCommand nativeGitBlameCommand = new NativeGitBlameCommand(System2.INSTANCE, processWrapperFactory); + private final AnalysisWarnings analysisWarnings = mock(AnalysisWarnings.class); private final BlameCommand.BlameInput input = mock(BlameCommand.BlameInput.class); private final JGitBlameCommand jGitBlameCommand = new JGitBlameCommand(); - private final ProcessWrapperFactory processWrapperFactory = new ProcessWrapperFactory(); - private final NativeGitBlameCommand nativeGitBlameCommand = new NativeGitBlameCommand(System2.INSTANCE, processWrapperFactory); - // In JUnit4, if the cleanup cannot be performed, the test would not fail. This has changed with JUnit5 // As we cannot find the cause of failure during cleanup, we disable it for now @TempDir (cleanup = NEVER) private File temp; + @BeforeAll + public static void setUp() { + // locating the git executable is a costly operation that can be done just once for all tests in this class + nativeGitBlameCommand.checkIfEnabled(); + } + @ParameterizedTest @MethodSource("namesOfTheTestRepositoriesWithBlameAlgorithm") void testThatBlameAlgorithmOutputsTheSameDataAsGitNativeBlame(String folder, BlameAlgorithmEnum blameAlgorithm) throws Exception { diff --git a/sonar-scanner-engine/src/test/java/org/sonar/scm/svn/SvnScmProviderTest.java b/sonar-scanner-engine/src/test/java/org/sonar/scm/svn/SvnScmProviderTest.java index 70bbf25bf22..f753e31bd8f 100644 --- a/sonar-scanner-engine/src/test/java/org/sonar/scm/svn/SvnScmProviderTest.java +++ b/sonar-scanner-engine/src/test/java/org/sonar/scm/svn/SvnScmProviderTest.java @@ -86,10 +86,6 @@ public class SvnScmProviderTest { @Before public void before() throws IOException, SVNException { svnTester = new SvnTester(temp.newFolder().toPath()); - - Path worktree = temp.newFolder().toPath(); - svnTester.checkout(worktree, "trunk"); - createAndCommitFile(worktree, "file-in-first-commit.xoo"); } @Test @@ -119,33 +115,36 @@ public class SvnScmProviderTest { } @Test - public void branchChangedFiles_and_lines_from_diverged() throws IOException, SVNException { + public void branchChangedFiles_and_lines_from_diverged() throws IOException, SVNException, InterruptedException { Path trunk = temp.newFolder().toPath(); svnTester.checkout(trunk, "trunk"); - createAndCommitFile(trunk, "file-m1.xoo"); - createAndCommitFile(trunk, "file-m2.xoo"); - createAndCommitFile(trunk, "file-m3.xoo"); - createAndCommitFile(trunk, "lao.txt", CONTENT_LAO); + createFile(trunk, "file-m1.xoo"); + createFile(trunk, "file-m2.xoo"); + createFile(trunk, "file-m3.xoo"); + createFile(trunk, "lao.txt", CONTENT_LAO); + svnTester.commit(trunk); // create branch from trunk svnTester.createBranch("b1"); // still on trunk - appendToAndCommitFile(trunk, "file-m3.xoo"); - createAndCommitFile(trunk, "file-m4.xoo"); + svnTester.appendToFile(trunk, "file-m3.xoo"); + createFile(trunk, "file-m4.xoo"); + svnTester.commit(trunk); Path b1 = temp.newFolder().toPath(); svnTester.checkout(b1, "branches/b1"); Files.createDirectories(b1.resolve("sub")); - createAndCommitFile(b1, "sub/file-b1.xoo"); - appendToAndCommitFile(b1, "file-m1.xoo"); - deleteAndCommitFile(b1, "file-m2.xoo"); + createFile(b1, "sub/file-b1.xoo"); + svnTester.appendToFile(b1, "file-m1.xoo"); + deleteFile(b1, "file-m2.xoo"); createAndCommitFile(b1, "file-m5.xoo"); - deleteAndCommitFile(b1, "file-m5.xoo"); + deleteFile(b1, "file-m5.xoo"); svnCopyAndCommitFile(b1, "file-m1.xoo", "file-m1-copy.xoo"); - appendToAndCommitFile(b1, "file-m1.xoo"); + svnTester.appendToFile(b1, "file-m1.xoo"); + svnTester.commit(b1); // modify file without committing it -> should not be included (think generated files) svnTester.appendToFile(b1, "file-m3.xoo"); @@ -268,8 +267,7 @@ public class SvnScmProviderTest { } private void createAndCommitFile(Path worktree, String filename, String content) throws IOException, SVNException { - svnTester.createFile(worktree, filename, content); - svnTester.add(worktree, filename); + createFile(worktree, filename, content); svnTester.commit(worktree); } @@ -277,14 +275,18 @@ public class SvnScmProviderTest { createAndCommitFile(worktree, filename, filename + "\n"); } - private void appendToAndCommitFile(Path worktree, String filename) throws IOException, SVNException { - svnTester.appendToFile(worktree, filename); - svnTester.commit(worktree); + private void createFile(Path worktree, String filename) throws IOException, SVNException { + svnTester.createFile(worktree, filename, filename + "\n"); + svnTester.add(worktree, filename); + } + + private void createFile(Path worktree, String filename, String content) throws IOException, SVNException { + svnTester.createFile(worktree, filename, content); + svnTester.add(worktree, filename); } - private void deleteAndCommitFile(Path worktree, String filename) throws SVNException { + private void deleteFile(Path worktree, String filename) throws SVNException { svnTester.deleteFile(worktree, filename); - svnTester.commit(worktree); } private void svnCopyAndCommitFile(Path worktree, String src, String dst) throws SVNException { -- 2.39.5