From 03600bf4518a409bb9d962ce80f68e0145fc6775 Mon Sep 17 00:00:00 2001 From: Matthew Adams Date: Wed, 22 Jan 2014 09:46:50 -0600 Subject: [PATCH] DATACASS-73 - no longer assuming any port numbers are available --- pom.xml | 48 +++++++++++++++++++ shared/test/resources/build.properties | 2 + ...tractEmbeddedCassandraIntegrationTest.java | 5 +- .../test/integration/config/java/Config.java | 4 +- .../java/KeyspaceCreatingJavaConfig.java | 4 +- .../integration/config/xml/XmlConfigTest.java | 2 +- .../support/AbstractTestJavaConfig.java | 16 +++++++ .../integration/support/BuildProperties.java | 45 +++++++++++++++++ .../src/test/resources/logback-test.xml | 2 +- ...dKeyspaceCreatingXmlConfigTest-context.xml | 4 +- ...lKeyspaceCreatingXmlConfigTest-context.xml | 5 +- .../xml/MinimalXmlConfigTest-context.xml | 5 +- .../config/xml/XmlConfigTest-context.xml | 5 +- .../src/test/resources/spring-cassandra.yaml | 8 ++-- .../CassandraNamespaceTests-context.xml | 2 +- .../integration/config/cassandra.properties | 6 +-- ...UserRepositoryIntegrationTests-context.xml | 2 +- .../repository/cassandra.properties | 6 +-- 18 files changed, 143 insertions(+), 28 deletions(-) create mode 100644 shared/test/resources/build.properties create mode 100644 spring-cassandra/src/test/java/org/springframework/cassandra/test/integration/support/AbstractTestJavaConfig.java create mode 100644 spring-cassandra/src/test/java/org/springframework/cassandra/test/integration/support/BuildProperties.java diff --git a/pom.xml b/pom.xml index 1dad257bd..e2a6daf93 100644 --- a/pom.xml +++ b/pom.xml @@ -230,6 +230,28 @@ + + org.codehaus.mojo + build-helper-maven-plugin + 1.8 + + + reserve-network-port + + reserve-network-port + + process-resources + + + cassandra.native_transport_port + cassandra.rpc_port + cassandra.storage_port + cassandra.ssl_storage_port + + + + + org.apache.maven.plugins maven-dependency-plugin @@ -285,5 +307,31 @@ + + + + src/main/resources + true + + **/* + + + + + + src/test/resources + true + + **/* + + + + ../shared/test/resources + true + + **/* + + + diff --git a/shared/test/resources/build.properties b/shared/test/resources/build.properties new file mode 100644 index 000000000..94b576b8a --- /dev/null +++ b/shared/test/resources/build.properties @@ -0,0 +1,2 @@ +cassandra.native_transport_port=@cassandra.native_transport_port@ +cassandra.rpc_port=@cassandra.rpc_port@ diff --git a/spring-cassandra/src/test/java/org/springframework/cassandra/test/integration/AbstractEmbeddedCassandraIntegrationTest.java b/spring-cassandra/src/test/java/org/springframework/cassandra/test/integration/AbstractEmbeddedCassandraIntegrationTest.java index 3315c021a..12c3dc4ed 100644 --- a/spring-cassandra/src/test/java/org/springframework/cassandra/test/integration/AbstractEmbeddedCassandraIntegrationTest.java +++ b/spring-cassandra/src/test/java/org/springframework/cassandra/test/integration/AbstractEmbeddedCassandraIntegrationTest.java @@ -8,6 +8,7 @@ import org.cassandraunit.utils.EmbeddedCassandraServerHelper; import org.junit.BeforeClass; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.cassandra.test.integration.support.BuildProperties; import org.springframework.cassandra.test.unit.support.Utils; import com.datastax.driver.core.Cluster; @@ -22,9 +23,11 @@ public class AbstractEmbeddedCassandraIntegrationTest { static Logger log = LoggerFactory.getLogger(AbstractEmbeddedCassandraIntegrationTest.class); + protected static final BuildProperties PROPS = new BuildProperties("/build.properties"); + protected static final String CASSANDRA_CONFIG = "spring-cassandra.yaml"; protected static final String CASSANDRA_HOST = "localhost"; - protected static final int CASSANDRA_NATIVE_PORT = 9042; + protected static final int CASSANDRA_NATIVE_PORT = PROPS.getInt("cassandra.native_transport_port"); /** * The session connected to the system keyspace. diff --git a/spring-cassandra/src/test/java/org/springframework/cassandra/test/integration/config/java/Config.java b/spring-cassandra/src/test/java/org/springframework/cassandra/test/integration/config/java/Config.java index 7768526a0..502fc574d 100644 --- a/spring-cassandra/src/test/java/org/springframework/cassandra/test/integration/config/java/Config.java +++ b/spring-cassandra/src/test/java/org/springframework/cassandra/test/integration/config/java/Config.java @@ -1,10 +1,10 @@ package org.springframework.cassandra.test.integration.config.java; -import org.springframework.cassandra.config.java.AbstractCassandraConfiguration; import org.springframework.context.annotation.Configuration; +import org.springframework.cassandra.test.integration.support.AbstractTestJavaConfig; @Configuration -public class Config extends AbstractCassandraConfiguration { +public class Config extends AbstractTestJavaConfig { @Override protected String getKeyspaceName() { diff --git a/spring-cassandra/src/test/java/org/springframework/cassandra/test/integration/config/java/KeyspaceCreatingJavaConfig.java b/spring-cassandra/src/test/java/org/springframework/cassandra/test/integration/config/java/KeyspaceCreatingJavaConfig.java index 4b0f9be88..3db7d94f4 100644 --- a/spring-cassandra/src/test/java/org/springframework/cassandra/test/integration/config/java/KeyspaceCreatingJavaConfig.java +++ b/spring-cassandra/src/test/java/org/springframework/cassandra/test/integration/config/java/KeyspaceCreatingJavaConfig.java @@ -4,13 +4,13 @@ import java.util.ArrayList; import java.util.List; import org.springframework.cassandra.config.KeyspaceAttributes; -import org.springframework.cassandra.config.java.AbstractCassandraConfiguration; import org.springframework.cassandra.core.keyspace.CreateKeyspaceSpecification; import org.springframework.cassandra.core.keyspace.KeyspaceOption; +import org.springframework.cassandra.test.integration.support.AbstractTestJavaConfig; import org.springframework.context.annotation.Configuration; @Configuration -public class KeyspaceCreatingJavaConfig extends AbstractCassandraConfiguration { +public class KeyspaceCreatingJavaConfig extends AbstractTestJavaConfig { public static final String KEYSPACE_NAME = "foo"; diff --git a/spring-cassandra/src/test/java/org/springframework/cassandra/test/integration/config/xml/XmlConfigTest.java b/spring-cassandra/src/test/java/org/springframework/cassandra/test/integration/config/xml/XmlConfigTest.java index 28300bb12..7f77c3791 100644 --- a/spring-cassandra/src/test/java/org/springframework/cassandra/test/integration/config/xml/XmlConfigTest.java +++ b/spring-cassandra/src/test/java/org/springframework/cassandra/test/integration/config/xml/XmlConfigTest.java @@ -12,7 +12,7 @@ import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import com.datastax.driver.core.Session; @RunWith(SpringJUnit4ClassRunner.class) -@ContextConfiguration +@ContextConfiguration(locations = "classpath:/org/springframework/cassandra/test/integration/config/xml/XmlConfigTest-context.xml") public class XmlConfigTest extends AbstractKeyspaceCreatingIntegrationTest { public static final String KEYSPACE = "xmlconfigtest"; diff --git a/spring-cassandra/src/test/java/org/springframework/cassandra/test/integration/support/AbstractTestJavaConfig.java b/spring-cassandra/src/test/java/org/springframework/cassandra/test/integration/support/AbstractTestJavaConfig.java new file mode 100644 index 000000000..6a3cfacd1 --- /dev/null +++ b/spring-cassandra/src/test/java/org/springframework/cassandra/test/integration/support/AbstractTestJavaConfig.java @@ -0,0 +1,16 @@ +package org.springframework.cassandra.test.integration.support; + +import org.springframework.cassandra.config.java.AbstractCassandraConfiguration; +import org.springframework.context.annotation.Configuration; + +@Configuration +public abstract class AbstractTestJavaConfig extends AbstractCassandraConfiguration { + + public static BuildProperties PROPS = new BuildProperties("/build.properties"); + public static final int PORT = PROPS.getInt("cassandra.native_transport_port"); + + @Override + protected int getPort() { + return PORT; + } +} diff --git a/spring-cassandra/src/test/java/org/springframework/cassandra/test/integration/support/BuildProperties.java b/spring-cassandra/src/test/java/org/springframework/cassandra/test/integration/support/BuildProperties.java new file mode 100644 index 000000000..acee7c001 --- /dev/null +++ b/spring-cassandra/src/test/java/org/springframework/cassandra/test/integration/support/BuildProperties.java @@ -0,0 +1,45 @@ +package org.springframework.cassandra.test.integration.support; + +import java.io.InputStream; +import java.util.Properties; + +@SuppressWarnings("serial") +public class BuildProperties extends Properties { + + public BuildProperties() { + this("build.properties"); + } + + public BuildProperties(String resourceName) { + + InputStream in = null; + try { + in = getClass().getResourceAsStream(resourceName); + if (in == null) { + return; + } + load(in); + + } catch (Exception x) { + throw new RuntimeException(x); + + } finally { + if (in != null) { + try { + in.close(); + } catch (Exception e) { + // gulp + } + } + } + } + + public int getInt(String key) { + String property = getProperty(key); + return Integer.parseInt(property); + } + + public boolean getBoolean(String key) { + return Boolean.parseBoolean(getProperty(key)); + } +} diff --git a/spring-cassandra/src/test/resources/logback-test.xml b/spring-cassandra/src/test/resources/logback-test.xml index 7db55523f..94db3089c 100644 --- a/spring-cassandra/src/test/resources/logback-test.xml +++ b/spring-cassandra/src/test/resources/logback-test.xml @@ -9,7 +9,7 @@ - + diff --git a/spring-cassandra/src/test/resources/org/springframework/cassandra/test/integration/config/xml/FullySpecifiedKeyspaceCreatingXmlConfigTest-context.xml b/spring-cassandra/src/test/resources/org/springframework/cassandra/test/integration/config/xml/FullySpecifiedKeyspaceCreatingXmlConfigTest-context.xml index 24b776df2..d8074169c 100644 --- a/spring-cassandra/src/test/resources/org/springframework/cassandra/test/integration/config/xml/FullySpecifiedKeyspaceCreatingXmlConfigTest-context.xml +++ b/spring-cassandra/src/test/resources/org/springframework/cassandra/test/integration/config/xml/FullySpecifiedKeyspaceCreatingXmlConfigTest-context.xml @@ -8,9 +8,9 @@ http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd"> + location="classpath:build.properties,classpath:/org/springframework/cassandra/test/integration/config/xml/FullySpecifiedKeyspaceCreatingXmlConfigTest.properties" /> - + - + + + diff --git a/spring-cassandra/src/test/resources/org/springframework/cassandra/test/integration/config/xml/MinimalXmlConfigTest-context.xml b/spring-cassandra/src/test/resources/org/springframework/cassandra/test/integration/config/xml/MinimalXmlConfigTest-context.xml index e0939fdc3..7b8d56381 100644 --- a/spring-cassandra/src/test/resources/org/springframework/cassandra/test/integration/config/xml/MinimalXmlConfigTest-context.xml +++ b/spring-cassandra/src/test/resources/org/springframework/cassandra/test/integration/config/xml/MinimalXmlConfigTest-context.xml @@ -6,7 +6,10 @@ http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd"> - + + + diff --git a/spring-cassandra/src/test/resources/org/springframework/cassandra/test/integration/config/xml/XmlConfigTest-context.xml b/spring-cassandra/src/test/resources/org/springframework/cassandra/test/integration/config/xml/XmlConfigTest-context.xml index 1a31974f8..7e0d32808 100644 --- a/spring-cassandra/src/test/resources/org/springframework/cassandra/test/integration/config/xml/XmlConfigTest-context.xml +++ b/spring-cassandra/src/test/resources/org/springframework/cassandra/test/integration/config/xml/XmlConfigTest-context.xml @@ -6,8 +6,11 @@ http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd"> + + + contactPoints="localhost" port="${cassandra.native_transport_port}"> diff --git a/spring-cassandra/src/test/resources/spring-cassandra.yaml b/spring-cassandra/src/test/resources/spring-cassandra.yaml index 67c59aba4..aba533b09 100644 --- a/spring-cassandra/src/test/resources/spring-cassandra.yaml +++ b/spring-cassandra/src/test/resources/spring-cassandra.yaml @@ -303,11 +303,11 @@ trickle_fsync: false trickle_fsync_interval_in_kb: 10240 # TCP port, for commands and data -storage_port: 7000 +storage_port: ${cassandra.storage_port} # SSL port, for encrypted communication. Unused unless enabled in # encryption_options -ssl_storage_port: 7001 +ssl_storage_port: ${cassandra.ssl_storage_port} # Address to bind to and tell other Cassandra nodes to connect to. You # _must_ change this if you want multiple nodes to be able to @@ -334,7 +334,7 @@ listen_address: localhost # same as the rpc_address. The port however is different and specified below. start_native_transport: true # port for the CQL native transport to listen for clients on -native_transport_port: 9042 +native_transport_port: ${cassandra.native_transport_port} # The minimum and maximum threads for handling requests when the native # transport is used. They are similar to rpc_min_threads and rpc_max_threads, # though the defaults differ slightly. @@ -352,7 +352,7 @@ start_rpc: true # (i.e. it will be based on the configured hostname of the node). rpc_address: localhost # port for Thrift to listen for clients on -rpc_port: 9160 +rpc_port: ${cassandra.rpc_port} # enable or disable keepalive on rpc connections rpc_keepalive: true diff --git a/spring-data-cassandra/src/test/resources/org/springframework/data/cassandra/test/integration/config/CassandraNamespaceTests-context.xml b/spring-data-cassandra/src/test/resources/org/springframework/data/cassandra/test/integration/config/CassandraNamespaceTests-context.xml index 56723073e..9bbfdf681 100644 --- a/spring-data-cassandra/src/test/resources/org/springframework/data/cassandra/test/integration/config/CassandraNamespaceTests-context.xml +++ b/spring-data-cassandra/src/test/resources/org/springframework/data/cassandra/test/integration/config/CassandraNamespaceTests-context.xml @@ -11,7 +11,7 @@ location="classpath:/org/springframework/data/cassandra/test/integration/config/cassandra.properties" />