From: Simon Brandhof Date: Fri, 26 Oct 2012 14:21:02 +0000 (+0200) Subject: SONAR-3895 do not download JDBC driver on dry run X-Git-Tag: 3.4~441 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=67d38621f157c770f61a07e27fd776d446c2c8f9;p=sonarqube.git SONAR-3895 do not download JDBC driver on dry run --- diff --git a/sonar-batch/pom.xml b/sonar-batch/pom.xml index ec6c38fa8aa..3000f785c94 100644 --- a/sonar-batch/pom.xml +++ b/sonar-batch/pom.xml @@ -61,6 +61,11 @@ commons-lang commons-lang + + + com.h2database + h2 + diff --git a/sonar-batch/src/main/java/org/sonar/batch/bootstrap/BatchPluginRepository.java b/sonar-batch/src/main/java/org/sonar/batch/bootstrap/BatchPluginRepository.java index 812cebf8d1e..69a74c8f91d 100644 --- a/sonar-batch/src/main/java/org/sonar/batch/bootstrap/BatchPluginRepository.java +++ b/sonar-batch/src/main/java/org/sonar/batch/bootstrap/BatchPluginRepository.java @@ -70,6 +70,7 @@ public class BatchPluginRepository implements PluginRepository { } public void start() { + LOG.info("Install plugins"); doStart(pluginDownloader.downloadPluginIndex()); } diff --git a/sonar-batch/src/main/java/org/sonar/batch/bootstrap/JdbcDriverHolder.java b/sonar-batch/src/main/java/org/sonar/batch/bootstrap/JdbcDriverHolder.java index dd6b47ab311..56f17e61354 100644 --- a/sonar-batch/src/main/java/org/sonar/batch/bootstrap/JdbcDriverHolder.java +++ b/sonar-batch/src/main/java/org/sonar/batch/bootstrap/JdbcDriverHolder.java @@ -43,17 +43,27 @@ public class JdbcDriverHolder { private ServerClient serverClient; // initialized in start() - private JdbcDriverClassLoader classLoader; + private JdbcDriverClassLoader classLoader = null; + private DryRun dryRun; - public JdbcDriverHolder(TempDirectories tempDirectories, ServerClient serverClient) { + public JdbcDriverHolder(DryRun dryRun, TempDirectories tempDirectories, ServerClient serverClient) { this.tempDirectories = tempDirectories; this.serverClient = serverClient; + this.dryRun = dryRun; } public void start() { - File jdbcDriver = new File(tempDirectories.getRoot(), "jdbc-driver.jar"); - serverClient.download("/deploy/jdbc-driver.jar", jdbcDriver); - classLoader = initClassloader(jdbcDriver); + if (!dryRun.isEnabled()) { + LOG.info("Install JDBC driver"); + File jdbcDriver = new File(tempDirectories.getRoot(), "jdbc-driver.jar"); + serverClient.download("/deploy/jdbc-driver.jar", jdbcDriver); + classLoader = initClassloader(jdbcDriver); + } + } + + @VisibleForTesting + JdbcDriverClassLoader getClassLoader() { + return classLoader; } @VisibleForTesting @@ -94,8 +104,10 @@ public class JdbcDriverHolder { *

*/ public void stop() { - classLoader.clearReferencesJdbc(); - classLoader = null; + if (classLoader != null) { + classLoader.clearReferencesJdbc(); + classLoader = null; + } } static class JdbcDriverClassLoader extends URLClassLoader { diff --git a/sonar-batch/src/main/java/org/sonar/batch/bootstrap/ProjectExclusions.java b/sonar-batch/src/main/java/org/sonar/batch/bootstrap/ProjectExclusions.java index f13a84f71be..acbc33b3c47 100644 --- a/sonar-batch/src/main/java/org/sonar/batch/bootstrap/ProjectExclusions.java +++ b/sonar-batch/src/main/java/org/sonar/batch/bootstrap/ProjectExclusions.java @@ -48,7 +48,7 @@ public class ProjectExclusions implements BatchComponent { } public void start() { - LOG.debug("Apply project exclusions"); + LOG.info("Apply project exclusions"); for (ProjectDefinition project : reactor.getProjects()) { if (isExcluded(key(project), project == reactor.getRoot())) { exclude(project); diff --git a/sonar-batch/src/main/java/org/sonar/batch/bootstrap/TempDirectories.java b/sonar-batch/src/main/java/org/sonar/batch/bootstrap/TempDirectories.java index ec1f840a69e..d397e443c52 100644 --- a/sonar-batch/src/main/java/org/sonar/batch/bootstrap/TempDirectories.java +++ b/sonar-batch/src/main/java/org/sonar/batch/bootstrap/TempDirectories.java @@ -36,7 +36,7 @@ import java.io.IOException; import java.util.Arrays; import java.util.Map; -public final class TempDirectories { +public class TempDirectories { public static final String DIR_PREFIX = "sonar-batch"; diff --git a/sonar-batch/src/test/java/org/sonar/batch/bootstrap/JdbcDriverHolderTest.java b/sonar-batch/src/test/java/org/sonar/batch/bootstrap/JdbcDriverHolderTest.java index a573dbcc3c9..fe97564a344 100644 --- a/sonar-batch/src/test/java/org/sonar/batch/bootstrap/JdbcDriverHolderTest.java +++ b/sonar-batch/src/test/java/org/sonar/batch/bootstrap/JdbcDriverHolderTest.java @@ -28,6 +28,10 @@ import java.net.URISyntaxException; import java.net.URL; import static org.fest.assertions.Assertions.assertThat; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.verifyZeroInteractions; +import static org.mockito.Mockito.when; public class JdbcDriverHolderTest { @@ -55,4 +59,19 @@ public class JdbcDriverHolderTest { assertThat(Thread.currentThread().getContextClassLoader()).isSameAs(classloader); } + @Test + public void should_be_disabled_if_dry_run() { + DryRun dryRun = mock(DryRun.class); + when(dryRun.isEnabled()).thenReturn(true); + ServerClient server = mock(ServerClient.class); + JdbcDriverHolder holder = new JdbcDriverHolder(dryRun, mock(TempDirectories.class), server); + + holder.start(); + + assertThat(holder.getClassLoader()).isNull(); + verifyZeroInteractions(server); + + // no error during stop + holder.stop(); + } }