diff --git a/modules/yugabytedb/src/main/java/org/testcontainers/containers/YCQLSessionDelegate.java b/modules/yugabytedb/src/main/java/org/testcontainers/containers/YCQLSessionDelegate.java
new file mode 100644
index 00000000000..844260e80fe
--- /dev/null
+++ b/modules/yugabytedb/src/main/java/org/testcontainers/containers/YCQLSessionDelegate.java
@@ -0,0 +1,25 @@
+package org.testcontainers.containers;
+
+import com.datastax.oss.driver.api.core.CqlSession;
+
+/**
+ * A builder abstraction to construct {@link CqlSession} instance from
+ * {@link YugabyteDBYCQLContainer} instance.
+ *
+ * @author srinivasa-vasu
+ */
+public interface YCQLSessionDelegate {
+
+ /**
+ * Constructs a {@link CqlSession} instance from {@link YugabyteDBYCQLContainer}
+ * instance.
+ * @param container YCQL container instance
+ * @return {@link CqlSession} instance
+ */
+ default CqlSession builder(YugabyteDBYCQLContainer container) {
+ return CqlSession.builder().withLocalDatacenter(container.getLocalDc()).withKeyspace(container.getKeyspace())
+ .withAuthCredentials(container.getUsername(), container.getPassword())
+ .addContactPoint(container.getContactPoint()).build();
+ }
+
+}
diff --git a/modules/yugabytedb/src/main/java/org/testcontainers/containers/YugabyteDBYCQLContainer.java b/modules/yugabytedb/src/main/java/org/testcontainers/containers/YugabyteDBYCQLContainer.java
index 0e2783297c2..1d3a5f18f8e 100644
--- a/modules/yugabytedb/src/main/java/org/testcontainers/containers/YugabyteDBYCQLContainer.java
+++ b/modules/yugabytedb/src/main/java/org/testcontainers/containers/YugabyteDBYCQLContainer.java
@@ -3,8 +3,6 @@
import java.net.InetSocketAddress;
import java.time.Duration;
-import com.datastax.oss.driver.api.core.CqlSession;
-import com.datastax.oss.driver.api.core.CqlSessionBuilder;
import com.github.dockerjava.api.command.InspectContainerResponse;
import org.testcontainers.containers.delegate.YugabyteDBYCQLDelegate;
import org.testcontainers.containers.strategy.YugabyteDBYCQLWaitStrategy;
@@ -15,7 +13,7 @@
* YugabyteDB YCQL (Cloud Query Language) API container
*
* @author srinivasa-vasu
- * @see YCQL API
+ * @see YCQL API
*/
public class YugabyteDBYCQLContainer extends GenericContainer {
@@ -116,26 +114,24 @@ public YugabyteDBYCQLContainer withPassword(final String password) {
@Override
protected void containerIsStarted(InspectContainerResponse containerInfo) {
if (initScript != null) {
- ScriptUtils.runInitScript(new YugabyteDBYCQLDelegate(getSessionBuilder()), initScript);
+ ScriptUtils.runInitScript(new YugabyteDBYCQLDelegate(this), initScript);
}
}
/**
- * Builds a {@link CqlSession} instance
- * @return {@link CqlSession} instance
+ * Returns a {@link InetSocketAddress} representation of YCQL's contact point info
+ * @return contactpoint
*/
- public CqlSession getSession() {
- return getSessionBuilder().build();
+ public InetSocketAddress getContactPoint() {
+ return new InetSocketAddress(getHost(), getMappedPort(YCQL_PORT));
}
/**
- * Builder method for {#com.datastax.oss.driver.api.core.CqlSession}
- * @return {@link CqlSessionBuilder}
+ * Returns the local datacenter name
+ * @return localdc name
*/
- public CqlSessionBuilder getSessionBuilder() {
- return CqlSession.builder().withLocalDatacenter(LOCAL_DC).withKeyspace(this.getKeyspace())
- .withAuthCredentials(this.getUsername(), this.getPassword())
- .addContactPoint(new InetSocketAddress(this.getHost(), this.getMappedPort(YCQL_PORT)));
+ public String getLocalDc() {
+ return LOCAL_DC;
}
/**
diff --git a/modules/yugabytedb/src/main/java/org/testcontainers/containers/YugabyteDBYSQLContainer.java b/modules/yugabytedb/src/main/java/org/testcontainers/containers/YugabyteDBYSQLContainer.java
index 4c6ec44b784..6f3d83f49b0 100644
--- a/modules/yugabytedb/src/main/java/org/testcontainers/containers/YugabyteDBYSQLContainer.java
+++ b/modules/yugabytedb/src/main/java/org/testcontainers/containers/YugabyteDBYSQLContainer.java
@@ -12,7 +12,7 @@
* YugabyteDB YSQL (Structured Query Language) API container
*
* @author srinivasa-vasu
- * @see YSQL API
+ * @see YSQL API
*/
public class YugabyteDBYSQLContainer extends JdbcDatabaseContainer {
diff --git a/modules/yugabytedb/src/main/java/org/testcontainers/containers/delegate/YugabyteDBYCQLDelegate.java b/modules/yugabytedb/src/main/java/org/testcontainers/containers/delegate/YugabyteDBYCQLDelegate.java
index 11b8d27a6df..1502d0b3250 100644
--- a/modules/yugabytedb/src/main/java/org/testcontainers/containers/delegate/YugabyteDBYCQLDelegate.java
+++ b/modules/yugabytedb/src/main/java/org/testcontainers/containers/delegate/YugabyteDBYCQLDelegate.java
@@ -1,10 +1,8 @@
package org.testcontainers.containers.delegate;
import com.datastax.oss.driver.api.core.CqlSession;
-import com.datastax.oss.driver.api.core.CqlSessionBuilder;
-import com.datastax.oss.driver.api.core.session.Session;
import lombok.RequiredArgsConstructor;
-import lombok.extern.slf4j.Slf4j;
+import org.testcontainers.containers.YCQLSessionDelegate;
import org.testcontainers.containers.YugabyteDBYCQLContainer;
import org.testcontainers.delegate.AbstractDatabaseDelegate;
@@ -14,25 +12,24 @@
* @author srinivasa-vasu
* @see YugabyteDBYCQLContainer
*/
-@Slf4j
@RequiredArgsConstructor
-public final class YugabyteDBYCQLDelegate extends AbstractDatabaseDelegate {
+public final class YugabyteDBYCQLDelegate extends AbstractDatabaseDelegate implements YCQLSessionDelegate {
- private final CqlSessionBuilder builder;
+ private final YugabyteDBYCQLContainer container;
@Override
- protected Session createNewConnection() {
- return builder.build();
+ protected CqlSession createNewConnection() {
+ return builder(container);
}
@Override
public void execute(String statement, String scriptPath, int lineNumber, boolean continueOnError,
boolean ignoreFailedDrops) {
- ((CqlSession) getConnection()).execute(statement);
+ getConnection().execute(statement);
}
@Override
- protected void closeConnectionQuietly(Session session) {
+ protected void closeConnectionQuietly(CqlSession session) {
if (session != null) {
session.close();
}
diff --git a/modules/yugabytedb/src/main/java/org/testcontainers/containers/strategy/YugabyteDBYCQLWaitStrategy.java b/modules/yugabytedb/src/main/java/org/testcontainers/containers/strategy/YugabyteDBYCQLWaitStrategy.java
index 3dbcec51226..73274dfc562 100644
--- a/modules/yugabytedb/src/main/java/org/testcontainers/containers/strategy/YugabyteDBYCQLWaitStrategy.java
+++ b/modules/yugabytedb/src/main/java/org/testcontainers/containers/strategy/YugabyteDBYCQLWaitStrategy.java
@@ -4,6 +4,7 @@
import com.datastax.oss.driver.api.core.CqlSession;
import lombok.RequiredArgsConstructor;
+import org.testcontainers.containers.YCQLSessionDelegate;
import org.testcontainers.containers.YugabyteDBYCQLContainer;
import org.testcontainers.containers.wait.strategy.AbstractWaitStrategy;
import org.testcontainers.containers.wait.strategy.WaitStrategyTarget;
@@ -24,7 +25,7 @@
* @author srinivasa-vasu
*/
@RequiredArgsConstructor
-public final class YugabyteDBYCQLWaitStrategy extends AbstractWaitStrategy {
+public final class YugabyteDBYCQLWaitStrategy extends AbstractWaitStrategy implements YCQLSessionDelegate {
private static final String YCQL_TEST_QUERY = "SELECT release_version FROM system.local";
@@ -35,7 +36,7 @@ public void waitUntilReady(WaitStrategyTarget target) {
YugabyteDBYCQLContainer container = (YugabyteDBYCQLContainer) target;
retryUntilSuccess((int) startupTimeout.getSeconds(), TimeUnit.SECONDS, () -> {
getRateLimiter().doWhenReady(() -> {
- try (CqlSession session = container.getSession()) {
+ try (CqlSession session = builder(container)) {
session.execute(YCQL_TEST_QUERY);
}
});
diff --git a/modules/yugabytedb/src/test/java/org/testcontainers/junit/yugabytedb/YugabyteDBYCQLUnitTest.java b/modules/yugabytedb/src/test/java/org/testcontainers/junit/yugabytedb/YugabyteDBYCQLTest.java
similarity index 98%
rename from modules/yugabytedb/src/test/java/org/testcontainers/junit/yugabytedb/YugabyteDBYCQLUnitTest.java
rename to modules/yugabytedb/src/test/java/org/testcontainers/junit/yugabytedb/YugabyteDBYCQLTest.java
index 6e959a30362..2f097797fe7 100644
--- a/modules/yugabytedb/src/test/java/org/testcontainers/junit/yugabytedb/YugabyteDBYCQLUnitTest.java
+++ b/modules/yugabytedb/src/test/java/org/testcontainers/junit/yugabytedb/YugabyteDBYCQLTest.java
@@ -14,7 +14,7 @@
*
* @author srinivasa-vasu
*/
-public class YugabyteDBYCQLUnitTest {
+public class YugabyteDBYCQLTest {
private static final String IMAGE_NAME = "yugabytedb/yugabyte:2.14.0.0-b94";
diff --git a/modules/yugabytedb/src/test/java/org/testcontainers/junit/yugabytedb/YugabyteDBYSQLUnitTest.java b/modules/yugabytedb/src/test/java/org/testcontainers/junit/yugabytedb/YugabyteDBYSQLTest.java
similarity index 97%
rename from modules/yugabytedb/src/test/java/org/testcontainers/junit/yugabytedb/YugabyteDBYSQLUnitTest.java
rename to modules/yugabytedb/src/test/java/org/testcontainers/junit/yugabytedb/YugabyteDBYSQLTest.java
index 98f01b34858..0480343546c 100644
--- a/modules/yugabytedb/src/test/java/org/testcontainers/junit/yugabytedb/YugabyteDBYSQLUnitTest.java
+++ b/modules/yugabytedb/src/test/java/org/testcontainers/junit/yugabytedb/YugabyteDBYSQLTest.java
@@ -15,7 +15,7 @@
*
* @author srinivasa-vasu
*/
-public class YugabyteDBYSQLUnitTest extends AbstractContainerDatabaseTest {
+public class YugabyteDBYSQLTest extends AbstractContainerDatabaseTest {
private static final String IMAGE_NAME = "yugabytedb/yugabyte:2.14.0.0-b94";