From b4554120104591db96cb7a2295f786496289675b Mon Sep 17 00:00:00 2001 From: Andrew Tolbert Date: Tue, 15 Sep 2015 16:01:05 -0500 Subject: [PATCH] Support cassandra.directory and cassandra.branch props for CCMBridge. Adds optional cassandra.directory and cassandra.branch properties as a means of running cassandra with CCM beyond deployed cassandra versions. The order of precedence for what is used is: 1. cassandra.directory 2. cassandra.branch 3. cassandra.version cassandra.version is still required for @CassandraVersion annotation checks for tests, but won't be used to launch CCM if either cassandra.directory or cassandra.branch is present. --- .../com/datastax/driver/core/CCMBridge.java | 25 ++++++++++--------- .../datastax/driver/core/TestListener.java | 2 +- 2 files changed, 14 insertions(+), 13 deletions(-) diff --git a/driver-core/src/test/java/com/datastax/driver/core/CCMBridge.java b/driver-core/src/test/java/com/datastax/driver/core/CCMBridge.java index 7bf7aa3256b..aae991ea4d2 100644 --- a/driver-core/src/test/java/com/datastax/driver/core/CCMBridge.java +++ b/driver-core/src/test/java/com/datastax/driver/core/CCMBridge.java @@ -53,10 +53,10 @@ public class CCMBridge { public static final String IP_PREFIX; - private static final String CASSANDRA_VERSION_REGEXP = "\\d\\.\\d\\.\\d+(-\\w+)?"; - static final File CASSANDRA_DIR; static final String CASSANDRA_VERSION; + static final String CASSANDRA_INSTALL_ARGS; + public static final String DEFAULT_CLIENT_TRUSTSTORE_PASSWORD = "cassandra1sfun"; public static final String DEFAULT_CLIENT_TRUSTSTORE_PATH = "/client.truststore"; @@ -89,13 +89,15 @@ public class CCMBridge { private static final String CCM_COMMAND; static { - String version = System.getProperty("cassandra.version"); - if (version.matches(CASSANDRA_VERSION_REGEXP)) { - CASSANDRA_DIR = null; - CASSANDRA_VERSION = "-v " + version; + CASSANDRA_VERSION = System.getProperty("cassandra.version"); + String installDirectory = System.getProperty("cassandra.directory"); + String branch = System.getProperty("cassandra.branch"); + if (installDirectory != null && !installDirectory.trim().isEmpty()) { + CASSANDRA_INSTALL_ARGS = "--install-dir=" + new File(installDirectory).getAbsolutePath(); + } else if(branch != null && !branch.trim().isEmpty()) { + CASSANDRA_INSTALL_ARGS = "-v git:" + branch; } else { - CASSANDRA_DIR = new File(version); - CASSANDRA_VERSION = ""; + CASSANDRA_INSTALL_ARGS = "-v " + CASSANDRA_VERSION; } String ip_prefix = System.getProperty("ipprefix"); @@ -286,7 +288,6 @@ private void execute(String command, Object... args) { logger.debug("Executing: " + fullCommand); CommandLine cli = CommandLine.parse(fullCommand); Executor executor = new DefaultExecutor(); - executor.setWorkingDirectory(CASSANDRA_DIR); LogOutputStream outStream = new LogOutputStream() { @Override protected void processLine(String line, int logLevel) { @@ -594,7 +595,7 @@ public static class Builder { private final String clusterName; private Integer[] nodes = { 1 }; private boolean start = true; - private String cassandraVersion = CASSANDRA_VERSION; + private String cassandraInstallArgs = CASSANDRA_INSTALL_ARGS; private String[] startOptions = new String[0]; private Map cassandraConfiguration = Maps.newHashMap(); @@ -634,7 +635,7 @@ public Builder notStarted() { /** Defaults to system property cassandra.version */ public Builder withCassandraVersion(String cassandraVersion) { - this.cassandraVersion = "-v " + cassandraVersion; + this.cassandraInstallArgs = "-v " + cassandraVersion; return this; } @@ -663,7 +664,7 @@ private String buildCreateCommand() { StringBuilder result = new StringBuilder(CCM_COMMAND + " create"); result.append(" " + clusterName); result.append(" -i" + IP_PREFIX); - result.append(" " + cassandraVersion); + result.append(" " + cassandraInstallArgs); if (nodes.length > 0) result.append(" -n " + Joiner.on(":").join(nodes)); if (startOptions.length > 0) diff --git a/driver-core/src/test/java/com/datastax/driver/core/TestListener.java b/driver-core/src/test/java/com/datastax/driver/core/TestListener.java index 4d9501a9e57..fc1a15e19a5 100644 --- a/driver-core/src/test/java/com/datastax/driver/core/TestListener.java +++ b/driver-core/src/test/java/com/datastax/driver/core/TestListener.java @@ -30,7 +30,7 @@ public class TestListener extends TestListenerAdapter implements IInvokedMethodL private int test_index = 0; static { - System.out.println("[CCMBridge] Using Cassandra version: " + CCMBridge.CASSANDRA_VERSION); + System.out.println("[CCMBridge] Using Cassandra version: " + CCMBridge.CASSANDRA_VERSION + " (install arguments: " + CCMBridge.CASSANDRA_INSTALL_ARGS + ")"); } @Override