Doh! I was responding to Gary's remark but after checking the diff in more
detail, indeed there are no fixed ports anywhere. On the contrary, this
commit addresses that issue.

On Mon, Mar 14, 2022 at 9:22 AM Piotr P. Karwasz <piotr.karw...@gmail.com>
wrote:

> On Mon, Mar 14, 2022 at 1:18 AM Gary Gregory <garydgreg...@gmail.com>
> wrote:
> >
> > Can't we use an ephemeral port here?
>
> I am not sure I understand: `AvailablePortFinder` does return a port
> in the ephemeral range.
>
> Piotr
>
> >
> > 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