diff options
author | Simon Brandhof <simon.brandhof@gmail.com> | 2012-10-26 16:21:02 +0200 |
---|---|---|
committer | Simon Brandhof <simon.brandhof@gmail.com> | 2012-10-26 16:21:02 +0200 |
commit | 67d38621f157c770f61a07e27fd776d446c2c8f9 (patch) | |
tree | 672590f8885df2721419478061d250e8d6d6f126 | |
parent | b71b3673e91930aac3fff828d628279b5dee7616 (diff) | |
download | sonarqube-67d38621f157c770f61a07e27fd776d446c2c8f9.tar.gz sonarqube-67d38621f157c770f61a07e27fd776d446c2c8f9.zip |
SONAR-3895 do not download JDBC driver on dry run
6 files changed, 46 insertions, 9 deletions
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 @@ <groupId>commons-lang</groupId> <artifactId>commons-lang</artifactId> </dependency> + <dependency> + <!-- local database --> + <groupId>com.h2database</groupId> + <artifactId>h2</artifactId> + </dependency> <!-- unit tests --> <dependency> 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 { * </p> */ 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(); + } } |