aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSimon Brandhof <simon.brandhof@gmail.com>2012-10-26 16:21:02 +0200
committerSimon Brandhof <simon.brandhof@gmail.com>2012-10-26 16:21:02 +0200
commit67d38621f157c770f61a07e27fd776d446c2c8f9 (patch)
tree672590f8885df2721419478061d250e8d6d6f126
parentb71b3673e91930aac3fff828d628279b5dee7616 (diff)
downloadsonarqube-67d38621f157c770f61a07e27fd776d446c2c8f9.tar.gz
sonarqube-67d38621f157c770f61a07e27fd776d446c2c8f9.zip
SONAR-3895 do not download JDBC driver on dry run
-rw-r--r--sonar-batch/pom.xml5
-rw-r--r--sonar-batch/src/main/java/org/sonar/batch/bootstrap/BatchPluginRepository.java1
-rw-r--r--sonar-batch/src/main/java/org/sonar/batch/bootstrap/JdbcDriverHolder.java26
-rw-r--r--sonar-batch/src/main/java/org/sonar/batch/bootstrap/ProjectExclusions.java2
-rw-r--r--sonar-batch/src/main/java/org/sonar/batch/bootstrap/TempDirectories.java2
-rw-r--r--sonar-batch/src/test/java/org/sonar/batch/bootstrap/JdbcDriverHolderTest.java19
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();
+ }
}