Can't we use an ephemeral port here?

Gary

On Sun, Mar 13, 2022, 19:14 <pkarw...@apache.org> wrote:

> This is an automated email from the ASF dual-hosted git repository.
>
> pkarwasz pushed a commit to branch release-2.x
> in repository https://gitbox.apache.org/repos/asf/logging-log4j2.git
>
>
> The following commit(s) were added to refs/heads/release-2.x by this push:
>      new 10460ec  Switches Cassandra to random port
> 10460ec is described below
>
> commit 10460ec5200aa7eafb33b200f0f349a66e16c708
> Author: Piotr P. Karwasz <piotr.git...@karwasz.org>
> AuthorDate: Mon Mar 14 00:13:41 2022 +0100
>
>     Switches Cassandra to random port
> ---
>  .../org/apache/logging/log4j/cassandra/CassandraRule.java | 15
> ++++++++++++---
>  .../src/test/resources/CassandraAppenderTest.xml          |  2 +-
>  2 files changed, 13 insertions(+), 4 deletions(-)
>
> diff --git
> a/log4j-cassandra/src/test/java/org/apache/logging/log4j/cassandra/CassandraRule.java
> b/log4j-cassandra/src/test/java/org/apache/logging/log4j/cassandra/CassandraRule.java
> index 2939d07..ad39dd6 100644
> ---
> a/log4j-cassandra/src/test/java/org/apache/logging/log4j/cassandra/CassandraRule.java
> +++
> b/log4j-cassandra/src/test/java/org/apache/logging/log4j/cassandra/CassandraRule.java
> @@ -18,22 +18,25 @@ package org.apache.logging.log4j.cassandra;
>
>  import java.io.IOException;
>  import java.net.InetAddress;
> +import java.net.InetSocketAddress;
>  import java.nio.file.Files;
>  import java.nio.file.Path;
>  import java.security.Permission;
>  import java.util.concurrent.CountDownLatch;
>  import java.util.concurrent.ThreadFactory;
>
> -import com.datastax.driver.core.Cluster;
> -import com.datastax.driver.core.Session;
>  import org.apache.cassandra.service.CassandraDaemon;
>  import org.apache.logging.log4j.LoggingException;
>  import org.apache.logging.log4j.core.util.Cancellable;
>  import org.apache.logging.log4j.core.util.Closer;
>  import org.apache.logging.log4j.core.util.Log4jThreadFactory;
> +import org.apache.logging.log4j.test.AvailablePortFinder;
>  import org.apache.logging.log4j.util.PropertiesUtil;
>  import org.junit.rules.ExternalResource;
>
> +import com.datastax.driver.core.Cluster;
> +import com.datastax.driver.core.Session;
> +
>  /**
>   * JUnit rule to set up and tear down a Cassandra database instance.
>   */
> @@ -66,12 +69,18 @@ public class CassandraRule extends ExternalResource {
>          Files.createDirectories(root.resolve("data"));
>          final Path config = root.resolve("cassandra.yml");
>          Files.copy(getClass().getResourceAsStream("/cassandra.yaml"),
> config);
> +        final int nativePort = AvailablePortFinder.getNextAvailable();
> +        System.setProperty("cassandra.native_transport_port",
> Integer.toString(nativePort));
> +        System.setProperty("cassandra.storage_port",
> Integer.toString(AvailablePortFinder.getNextAvailable()));
>          System.setProperty("cassandra.config", "file:" +
> config.toString());
>          System.setProperty("cassandra.storagedir", root.toString());
>          System.setProperty("cassandra-foreground", "true"); // prevents
> Cassandra from closing stdout/stderr
>          THREAD_FACTORY.newThread(embeddedCassandra).start();
>          latch.await();
> -        cluster =
> Cluster.builder().addContactPoints(InetAddress.getLoopbackAddress()).build();
> +        cluster = Cluster.builder()
> +                .addContactPointsWithPorts(new
> InetSocketAddress(InetAddress.getLoopbackAddress(), nativePort))
> +                .build();
> +
>          try (final Session session = cluster.connect()) {
>              session.execute("CREATE KEYSPACE " + keyspace + " WITH
> REPLICATION = " +
>                  "{ 'class': 'SimpleStrategy', 'replication_factor': 2
> };");
> diff --git a/log4j-cassandra/src/test/resources/CassandraAppenderTest.xml
> b/log4j-cassandra/src/test/resources/CassandraAppenderTest.xml
> index e1f37e9..f9ce643 100644
> --- a/log4j-cassandra/src/test/resources/CassandraAppenderTest.xml
> +++ b/log4j-cassandra/src/test/resources/CassandraAppenderTest.xml
> @@ -19,7 +19,7 @@
>  <Configuration name="CassandraAppenderTest">
>    <Appenders>
>      <Cassandra name="Cassandra" clusterName="Test Cluster"
> keyspace="test" table="logs" bufferSize="10" batched="true">
> -      <SocketAddress host="localhost" port="9042"/>
> +      <SocketAddress host="localhost"
> port="${sys:cassandra.native_transport_port}"/>
>        <ColumnMapping name="id" pattern="%uuid{TIME}"
> type="java.util.UUID"/>
>        <ColumnMapping name="timeid" literal="now()"/>
>        <ColumnMapping name="message" pattern="%message"/>
>

Reply via email to