<groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId>
</dependency>
+ <dependency>
+ <!-- local database -->
+ <groupId>com.h2database</groupId>
+ <artifactId>h2</artifactId>
+ </dependency>
<!-- unit tests -->
<dependency>
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
* </p>
*/
public void stop() {
- classLoader.clearReferencesJdbc();
- classLoader = null;
+ if (classLoader != null) {
+ classLoader.clearReferencesJdbc();
+ classLoader = null;
+ }
}
static class JdbcDriverClassLoader extends URLClassLoader {
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 {
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();
+ }
}