This is an automated email from the ASF dual-hosted git repository.

asf-gitbox-commits pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/cayenne.git

commit c34c2ae0d063a4c3ffddea783e6d7c191f9d2c21
Author: Andrus Adamchik <[email protected]>
AuthorDate: Sun May 17 09:20:45 2026 -0400

    cleaning up DB selection in tests
---
 .../unit/datasource/DataSourceConfigFile.java      |   4 +-
 .../unit/datasource/DataSourceConfigLoader.java    | 113 +++------------------
 .../DataSourceDescriptorFactory.java}              |  34 ++++---
 .../Db2DataSource.java}                            |  14 ++-
 .../DerbyDataSource.java}                          |  23 ++---
 .../H2DataSource.java}                             |  19 +---
 .../HsqlDataSource.java}                           |  23 ++---
 .../MariaDbDataSource.java}                        |  10 +-
 .../MysqlDataSource.java}                          |   9 +-
 .../OracleDataSource.java}                         |  14 +--
 .../PostgresDataSource.java}                       |  10 +-
 .../SQLiteDataSource.java}                         |  23 ++---
 .../SqlServerDataSource.java}                      |  10 +-
 .../TestContainersDataSource.java}                 |  20 +++-
 14 files changed, 130 insertions(+), 196 deletions(-)

diff --git 
a/cayenne/src/test/java/org/apache/cayenne/unit/datasource/DataSourceConfigFile.java
 
b/cayenne/src/test/java/org/apache/cayenne/unit/datasource/DataSourceConfigFile.java
index 3736d2811..540e8d8d7 100644
--- 
a/cayenne/src/test/java/org/apache/cayenne/unit/datasource/DataSourceConfigFile.java
+++ 
b/cayenne/src/test/java/org/apache/cayenne/unit/datasource/DataSourceConfigFile.java
@@ -74,14 +74,12 @@ class DataSourceConfigFile {
     }
 
     private static DataSourceDescriptor buildDataSourceDescriptor(String name, 
Properties props) {
-        DataSourceDescriptor dsi = new DataSourceDescriptor();
+        DataSourceDescriptor dsi = DataSourceDescriptorFactory.create();
 
         dsi.setUserName(props.getProperty(name + "." + USER_NAME_KEY));
         dsi.setPassword(props.getProperty(name + "." + PASSWORD_KEY));
         dsi.setDataSourceUrl(props.getProperty(name + "." + URL_KEY));
         dsi.setJdbcDriver(props.getProperty(name + "." + DRIVER_KEY));
-        dsi.setMinConnections(DataSourceConfigLoader.MIN_CONNECTIONS);
-        dsi.setMaxConnections(DataSourceConfigLoader.MAX_CONNECTIONS);
 
         return dsi;
     }
diff --git 
a/cayenne/src/test/java/org/apache/cayenne/unit/datasource/DataSourceConfigLoader.java
 
b/cayenne/src/test/java/org/apache/cayenne/unit/datasource/DataSourceConfigLoader.java
index 936d69721..4ee714fed 100644
--- 
a/cayenne/src/test/java/org/apache/cayenne/unit/datasource/DataSourceConfigLoader.java
+++ 
b/cayenne/src/test/java/org/apache/cayenne/unit/datasource/DataSourceConfigLoader.java
@@ -20,32 +20,19 @@ package org.apache.cayenne.unit.datasource;
 
 import org.apache.cayenne.ConfigurationException;
 import org.apache.cayenne.configuration.DataSourceDescriptor;
-import org.apache.cayenne.unit.testcontainers.Db2ContainerStarter;
-import org.apache.cayenne.unit.testcontainers.DbContainerStarter;
-import org.apache.cayenne.unit.testcontainers.MariaDbContainerStarter;
-import org.apache.cayenne.unit.testcontainers.MysqlContainerStarter;
-import org.apache.cayenne.unit.testcontainers.OracleContainerStarter;
-import org.apache.cayenne.unit.testcontainers.PostgresContainerStarter;
-import org.apache.cayenne.unit.testcontainers.SqlServerContainerStarter;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import org.testcontainers.containers.JdbcDatabaseContainer;
 
 public class DataSourceConfigLoader {
 
     private static final Logger LOGGER = 
LoggerFactory.getLogger(DataSourceConfigLoader.class);
 
     private static final String CONNECTION_NAME_KEY = "cayenneTestConnection";
-    private static final String CONNECTION_DB_VERSION = "cayenneTestDbVersion";
-    private static final String ADAPTER_KEY_MAVEN = "cayenneAdapter";
     private static final String USER_NAME_KEY_MAVEN = "cayenneJdbcUsername";
     private static final String PASSWORD_KEY_MAVEN = "cayenneJdbcPassword";
     private static final String URL_KEY_MAVEN = "cayenneJdbcUrl";
     private static final String DRIVER_KEY_MAVEN = "cayenneJdbcDriver";
 
-    static final int MIN_CONNECTIONS = 1;
-    static final int MAX_CONNECTIONS = 3;
-
     public static DataSourceDescriptor load() {
 
         String connectionName = System.getProperty(CONNECTION_NAME_KEY);
@@ -59,11 +46,19 @@ public class DataSourceConfigLoader {
         DataSourceDescriptor descriptor = 
DataSourceConfigFile.load().get(connectionName);
 
         if (descriptor == null) {
-            descriptor = checkInMemoryDataSource(connectionName);
-        }
-
-        if (descriptor == null) {
-            descriptor = checkTestContainersDataSource(connectionName);
+            descriptor = switch (connectionName) {
+                case "hsql" -> HsqlDataSource.start();
+                case "h2" -> H2DataSource.start();
+                case "derby" -> DerbyDataSource.start();
+                case "sqlite" -> SQLiteDataSource.start();
+                case "mysql-tc" -> MysqlDataSource.start();
+                case "mariadb-tc" -> MariaDbDataSource.start();
+                case "postgres-tc" -> PostgresDataSource.start();
+                case "sqlserver-tc" -> SqlServerDataSource.start();
+                case "oracle-tc" -> OracleDataSource.start();
+                case "db2-tc" -> Db2DataSource.start();
+                default -> null;
+            };
         }
 
         descriptor = applyOverrides(descriptor);
@@ -76,91 +71,15 @@ public class DataSourceConfigLoader {
         return descriptor;
     }
 
-    private static DataSourceDescriptor checkInMemoryDataSource(String 
connectionName) {
-        return switch (connectionName) {
-            case "hsql" -> {
-                DataSourceDescriptor descriptor = new DataSourceDescriptor();
-                descriptor.setUserName("sa");
-                descriptor.setPassword("");
-                
descriptor.setDataSourceUrl("jdbc:hsqldb:mem:aname;sql.regular_names=false");
-                descriptor.setJdbcDriver("org.hsqldb.jdbcDriver");
-                descriptor.setMinConnections(MIN_CONNECTIONS);
-                descriptor.setMaxConnections(MAX_CONNECTIONS);
-                yield descriptor;
-            }
-            case "h2" -> {
-                DataSourceDescriptor descriptor = new DataSourceDescriptor();
-                descriptor.setUserName("sa");
-                descriptor.setPassword("");
-                
descriptor.setDataSourceUrl("jdbc:h2:mem:aname;DB_CLOSE_DELAY=-1;");
-                descriptor.setJdbcDriver("org.h2.Driver");
-                descriptor.setMinConnections(MIN_CONNECTIONS);
-                descriptor.setMaxConnections(MAX_CONNECTIONS);
-                yield descriptor;
-            }
-            case "derby" -> {
-                DataSourceDescriptor descriptor = new DataSourceDescriptor();
-                descriptor.setUserName("sa");
-                descriptor.setPassword("");
-                
descriptor.setDataSourceUrl("jdbc:derby:target/testdb;create=true");
-                
descriptor.setJdbcDriver("org.apache.derby.jdbc.EmbeddedDriver");
-                descriptor.setMinConnections(MIN_CONNECTIONS);
-                descriptor.setMaxConnections(MAX_CONNECTIONS);
-                yield descriptor;
-            }
-            case "sqlite" -> {
-                DataSourceDescriptor descriptor = new DataSourceDescriptor();
-                descriptor.setUserName("sa");
-                descriptor.setPassword("");
-                
descriptor.setDataSourceUrl("jdbc:sqlite:file:memdb?mode=memory&cache=shared&date_class=text");
-                descriptor.setJdbcDriver("org.sqlite.JDBC");
-                descriptor.setMinConnections(MIN_CONNECTIONS);
-                descriptor.setMaxConnections(MAX_CONNECTIONS);
-                yield descriptor;
-            }
-            default -> null;
-        };
-    }
-
-    private static DataSourceDescriptor checkTestContainersDataSource(String 
connectionName) {
-
-        DbContainerStarter containerStarter = switch (connectionName) {
-            case "mysql-tc" -> new MysqlContainerStarter();
-            case "mariadb-tc" -> new MariaDbContainerStarter();
-            case "postgres-tc" -> new PostgresContainerStarter();
-            case "sqlserver-tc" -> new SqlServerContainerStarter();
-            case "oracle-tc" -> new OracleContainerStarter();
-            case "db2-tc" -> new Db2ContainerStarter();
-            default -> null;
-        };
-
-        if (containerStarter == null) {
-            return null;
-        }
-
-        String version = System.getProperty(CONNECTION_DB_VERSION);
-        JdbcDatabaseContainer<?> container = 
containerStarter.startContainer(version);
-
-        DataSourceDescriptor sourceInfo = new DataSourceDescriptor();
-        sourceInfo.setUserName(container.getUsername());
-        sourceInfo.setPassword(container.getPassword());
-        sourceInfo.setDataSourceUrl(container.getJdbcUrl());
-        sourceInfo.setJdbcDriver(container.getDriverClassName());
-        sourceInfo.setMinConnections(MIN_CONNECTIONS);
-        sourceInfo.setMaxConnections(MAX_CONNECTIONS);
-        return sourceInfo;
-    }
-
     private static DataSourceDescriptor applyOverrides(DataSourceDescriptor 
descriptor) {
 
-        String adapter = System.getProperty(ADAPTER_KEY_MAVEN);
         String user = System.getProperty(USER_NAME_KEY_MAVEN);
         String pass = System.getProperty(PASSWORD_KEY_MAVEN);
         String url = System.getProperty(URL_KEY_MAVEN);
         String driver = System.getProperty(DRIVER_KEY_MAVEN);
 
         // no overrides, do nothing
-        if (adapter == null && user == null && pass == null && url == null && 
driver == null) {
+        if (user == null && pass == null && url == null && driver == null) {
             return descriptor;
         }
 
@@ -170,9 +89,7 @@ public class DataSourceConfigLoader {
                 return null;
             }
 
-            descriptor = new DataSourceDescriptor();
-            descriptor.setMinConnections(MIN_CONNECTIONS);
-            descriptor.setMaxConnections(MAX_CONNECTIONS);
+            descriptor = DataSourceDescriptorFactory.create();
         }
 
         if (user != null) {
diff --git 
a/cayenne/src/test/java/org/apache/cayenne/unit/testcontainers/OracleContainerStarter.java
 
b/cayenne/src/test/java/org/apache/cayenne/unit/datasource/DataSourceDescriptorFactory.java
similarity index 52%
copy from 
cayenne/src/test/java/org/apache/cayenne/unit/testcontainers/OracleContainerStarter.java
copy to 
cayenne/src/test/java/org/apache/cayenne/unit/datasource/DataSourceDescriptorFactory.java
index 8d644fff8..dcfbf7fae 100644
--- 
a/cayenne/src/test/java/org/apache/cayenne/unit/testcontainers/OracleContainerStarter.java
+++ 
b/cayenne/src/test/java/org/apache/cayenne/unit/datasource/DataSourceDescriptorFactory.java
@@ -16,29 +16,31 @@
  *  specific language governing permissions and limitations
  *  under the License.
  ****************************************************************/
-package org.apache.cayenne.unit.testcontainers;
+package org.apache.cayenne.unit.datasource;
 
-import org.testcontainers.containers.JdbcDatabaseContainer;
-import org.testcontainers.utility.DockerImageName;
+import org.apache.cayenne.configuration.DataSourceDescriptor;
 
-import java.time.Duration;
+class DataSourceDescriptorFactory {
 
-public class OracleContainerStarter extends DbContainerStarter {
+    private static final int MIN_CONNECTIONS = 1;
+    private static final int MAX_CONNECTIONS = 3;
 
-    @Override
-    public JdbcDatabaseContainer<?> startContainer(String version) {
-        JdbcDatabaseContainer<?> container = super.startContainer(version);
-        return container;
+    private DataSourceDescriptorFactory() {
     }
 
-    @Override
-    protected JdbcDatabaseContainer<?> createContainer(DockerImageName 
dockerImageName) {
-        return new 
org.testcontainers.containers.OracleContainer(dockerImageName)
-                .withStartupTimeout(Duration.ofMinutes(5));
+    static DataSourceDescriptor create() {
+        DataSourceDescriptor descriptor = new DataSourceDescriptor();
+        descriptor.setMinConnections(MIN_CONNECTIONS);
+        descriptor.setMaxConnections(MAX_CONNECTIONS);
+        return descriptor;
     }
 
-    @Override
-    protected String dockerImage() {
-        return "gvenzl/oracle-xe:18-slim-faststart";
+    static DataSourceDescriptor create(String userName, String password, 
String url, String driver) {
+        DataSourceDescriptor descriptor = create();
+        descriptor.setUserName(userName);
+        descriptor.setPassword(password);
+        descriptor.setDataSourceUrl(url);
+        descriptor.setJdbcDriver(driver);
+        return descriptor;
     }
 }
diff --git 
a/cayenne/src/test/java/org/apache/cayenne/unit/testcontainers/Db2ContainerStarter.java
 b/cayenne/src/test/java/org/apache/cayenne/unit/datasource/Db2DataSource.java
similarity index 78%
rename from 
cayenne/src/test/java/org/apache/cayenne/unit/testcontainers/Db2ContainerStarter.java
rename to 
cayenne/src/test/java/org/apache/cayenne/unit/datasource/Db2DataSource.java
index e22d3a9fb..b8f92869f 100644
--- 
a/cayenne/src/test/java/org/apache/cayenne/unit/testcontainers/Db2ContainerStarter.java
+++ 
b/cayenne/src/test/java/org/apache/cayenne/unit/datasource/Db2DataSource.java
@@ -16,17 +16,23 @@
  *  specific language governing permissions and limitations
  *  under the License.
  ****************************************************************/
-package org.apache.cayenne.unit.testcontainers;
+package org.apache.cayenne.unit.datasource;
 
+import org.apache.cayenne.configuration.DataSourceDescriptor;
+import org.testcontainers.containers.Db2Container;
 import org.testcontainers.containers.JdbcDatabaseContainer;
 import org.testcontainers.utility.DockerImageName;
 
 import java.time.Duration;
 
-public class Db2ContainerStarter extends DbContainerStarter {
+public class Db2DataSource extends TestContainersDataSource {
+
+    public static DataSourceDescriptor start() {
+        return TestContainersDataSource.start(new Db2DataSource());
+    }
 
     @Override
-    public JdbcDatabaseContainer<?> startContainer(String version) {
+    protected JdbcDatabaseContainer<?> startContainer(String version) {
         JdbcDatabaseContainer<?> container = super.startContainer(version);
         // need to wait to ensure that DB has started
         try {
@@ -38,7 +44,7 @@ public class Db2ContainerStarter extends DbContainerStarter {
 
     @Override
     protected JdbcDatabaseContainer<?> createContainer(DockerImageName 
dockerImageName) {
-        return new org.testcontainers.containers.Db2Container(dockerImageName)
+        return new Db2Container(dockerImageName)
                 .withStartupTimeout(Duration.ofMinutes(15))
                 .withDatabaseName("testdb")
                 .acceptLicense();
diff --git 
a/cayenne/src/test/java/org/apache/cayenne/unit/testcontainers/MariaDbContainerStarter.java
 b/cayenne/src/test/java/org/apache/cayenne/unit/datasource/DerbyDataSource.java
similarity index 64%
copy from 
cayenne/src/test/java/org/apache/cayenne/unit/testcontainers/MariaDbContainerStarter.java
copy to 
cayenne/src/test/java/org/apache/cayenne/unit/datasource/DerbyDataSource.java
index 96681fbdc..4c185dc32 100644
--- 
a/cayenne/src/test/java/org/apache/cayenne/unit/testcontainers/MariaDbContainerStarter.java
+++ 
b/cayenne/src/test/java/org/apache/cayenne/unit/datasource/DerbyDataSource.java
@@ -16,22 +16,17 @@
  *  specific language governing permissions and limitations
  *  under the License.
  ****************************************************************/
-package org.apache.cayenne.unit.testcontainers;
+package org.apache.cayenne.unit.datasource;
 
-import org.testcontainers.containers.JdbcDatabaseContainer;
-import org.testcontainers.containers.MariaDBContainer;
-import org.testcontainers.utility.DockerImageName;
+import org.apache.cayenne.configuration.DataSourceDescriptor;
 
-public class MariaDbContainerStarter extends DbContainerStarter {
+public class DerbyDataSource {
 
-    @Override
-    protected JdbcDatabaseContainer<?> createContainer(DockerImageName 
dockerImageName) {
-        return new MariaDBContainer<>(dockerImageName);
+    public static DataSourceDescriptor start() {
+        return DataSourceDescriptorFactory.create(
+                "sa",
+                "",
+                "jdbc:derby:target/testdb;create=true",
+                "org.apache.derby.jdbc.EmbeddedDriver");
     }
-
-    @Override
-    protected String dockerImage() {
-        return "mariadb:10.3";
-    }
-
 }
diff --git 
a/cayenne/src/test/java/org/apache/cayenne/unit/testcontainers/MariaDbContainerStarter.java
 b/cayenne/src/test/java/org/apache/cayenne/unit/datasource/H2DataSource.java
similarity index 64%
copy from 
cayenne/src/test/java/org/apache/cayenne/unit/testcontainers/MariaDbContainerStarter.java
copy to 
cayenne/src/test/java/org/apache/cayenne/unit/datasource/H2DataSource.java
index 96681fbdc..dbc55bfa7 100644
--- 
a/cayenne/src/test/java/org/apache/cayenne/unit/testcontainers/MariaDbContainerStarter.java
+++ b/cayenne/src/test/java/org/apache/cayenne/unit/datasource/H2DataSource.java
@@ -16,22 +16,13 @@
  *  specific language governing permissions and limitations
  *  under the License.
  ****************************************************************/
-package org.apache.cayenne.unit.testcontainers;
+package org.apache.cayenne.unit.datasource;
 
-import org.testcontainers.containers.JdbcDatabaseContainer;
-import org.testcontainers.containers.MariaDBContainer;
-import org.testcontainers.utility.DockerImageName;
+import org.apache.cayenne.configuration.DataSourceDescriptor;
 
-public class MariaDbContainerStarter extends DbContainerStarter {
+public class H2DataSource {
 
-    @Override
-    protected JdbcDatabaseContainer<?> createContainer(DockerImageName 
dockerImageName) {
-        return new MariaDBContainer<>(dockerImageName);
+    public static DataSourceDescriptor start() {
+        return DataSourceDescriptorFactory.create("sa", "", 
"jdbc:h2:mem:aname;DB_CLOSE_DELAY=-1;", "org.h2.Driver");
     }
-
-    @Override
-    protected String dockerImage() {
-        return "mariadb:10.3";
-    }
-
 }
diff --git 
a/cayenne/src/test/java/org/apache/cayenne/unit/testcontainers/MariaDbContainerStarter.java
 b/cayenne/src/test/java/org/apache/cayenne/unit/datasource/HsqlDataSource.java
similarity index 64%
copy from 
cayenne/src/test/java/org/apache/cayenne/unit/testcontainers/MariaDbContainerStarter.java
copy to 
cayenne/src/test/java/org/apache/cayenne/unit/datasource/HsqlDataSource.java
index 96681fbdc..f1d0f5079 100644
--- 
a/cayenne/src/test/java/org/apache/cayenne/unit/testcontainers/MariaDbContainerStarter.java
+++ 
b/cayenne/src/test/java/org/apache/cayenne/unit/datasource/HsqlDataSource.java
@@ -16,22 +16,17 @@
  *  specific language governing permissions and limitations
  *  under the License.
  ****************************************************************/
-package org.apache.cayenne.unit.testcontainers;
+package org.apache.cayenne.unit.datasource;
 
-import org.testcontainers.containers.JdbcDatabaseContainer;
-import org.testcontainers.containers.MariaDBContainer;
-import org.testcontainers.utility.DockerImageName;
+import org.apache.cayenne.configuration.DataSourceDescriptor;
 
-public class MariaDbContainerStarter extends DbContainerStarter {
+public class HsqlDataSource {
 
-    @Override
-    protected JdbcDatabaseContainer<?> createContainer(DockerImageName 
dockerImageName) {
-        return new MariaDBContainer<>(dockerImageName);
+    public static DataSourceDescriptor start() {
+        return DataSourceDescriptorFactory.create(
+                "sa",
+                "",
+                "jdbc:hsqldb:mem:aname;sql.regular_names=false",
+                "org.hsqldb.jdbcDriver");
     }
-
-    @Override
-    protected String dockerImage() {
-        return "mariadb:10.3";
-    }
-
 }
diff --git 
a/cayenne/src/test/java/org/apache/cayenne/unit/testcontainers/MariaDbContainerStarter.java
 
b/cayenne/src/test/java/org/apache/cayenne/unit/datasource/MariaDbDataSource.java
similarity index 82%
copy from 
cayenne/src/test/java/org/apache/cayenne/unit/testcontainers/MariaDbContainerStarter.java
copy to 
cayenne/src/test/java/org/apache/cayenne/unit/datasource/MariaDbDataSource.java
index 96681fbdc..1380bb729 100644
--- 
a/cayenne/src/test/java/org/apache/cayenne/unit/testcontainers/MariaDbContainerStarter.java
+++ 
b/cayenne/src/test/java/org/apache/cayenne/unit/datasource/MariaDbDataSource.java
@@ -16,13 +16,18 @@
  *  specific language governing permissions and limitations
  *  under the License.
  ****************************************************************/
-package org.apache.cayenne.unit.testcontainers;
+package org.apache.cayenne.unit.datasource;
 
+import org.apache.cayenne.configuration.DataSourceDescriptor;
 import org.testcontainers.containers.JdbcDatabaseContainer;
 import org.testcontainers.containers.MariaDBContainer;
 import org.testcontainers.utility.DockerImageName;
 
-public class MariaDbContainerStarter extends DbContainerStarter {
+public class MariaDbDataSource extends TestContainersDataSource {
+
+    public static DataSourceDescriptor start() {
+        return TestContainersDataSource.start(new MariaDbDataSource());
+    }
 
     @Override
     protected JdbcDatabaseContainer<?> createContainer(DockerImageName 
dockerImageName) {
@@ -33,5 +38,4 @@ public class MariaDbContainerStarter extends 
DbContainerStarter {
     protected String dockerImage() {
         return "mariadb:10.3";
     }
-
 }
diff --git 
a/cayenne/src/test/java/org/apache/cayenne/unit/testcontainers/MysqlContainerStarter.java
 b/cayenne/src/test/java/org/apache/cayenne/unit/datasource/MysqlDataSource.java
similarity index 86%
rename from 
cayenne/src/test/java/org/apache/cayenne/unit/testcontainers/MysqlContainerStarter.java
rename to 
cayenne/src/test/java/org/apache/cayenne/unit/datasource/MysqlDataSource.java
index b0b480804..d62a5aeae 100644
--- 
a/cayenne/src/test/java/org/apache/cayenne/unit/testcontainers/MysqlContainerStarter.java
+++ 
b/cayenne/src/test/java/org/apache/cayenne/unit/datasource/MysqlDataSource.java
@@ -16,15 +16,20 @@
  *  specific language governing permissions and limitations
  *  under the License.
  ****************************************************************/
-package org.apache.cayenne.unit.testcontainers;
+package org.apache.cayenne.unit.datasource;
 
+import org.apache.cayenne.configuration.DataSourceDescriptor;
 import org.testcontainers.containers.JdbcDatabaseContainer;
 import org.testcontainers.containers.MySQLContainer;
 import org.testcontainers.utility.DockerImageName;
 
 import java.util.Calendar;
 
-public class MysqlContainerStarter extends DbContainerStarter {
+public class MysqlDataSource extends TestContainersDataSource {
+
+    public static DataSourceDescriptor start() {
+        return TestContainersDataSource.start(new MysqlDataSource());
+    }
 
     @Override
     protected JdbcDatabaseContainer<?> createContainer(DockerImageName 
dockerImageName) {
diff --git 
a/cayenne/src/test/java/org/apache/cayenne/unit/testcontainers/OracleContainerStarter.java
 
b/cayenne/src/test/java/org/apache/cayenne/unit/datasource/OracleDataSource.java
similarity index 77%
rename from 
cayenne/src/test/java/org/apache/cayenne/unit/testcontainers/OracleContainerStarter.java
rename to 
cayenne/src/test/java/org/apache/cayenne/unit/datasource/OracleDataSource.java
index 8d644fff8..e6635adbe 100644
--- 
a/cayenne/src/test/java/org/apache/cayenne/unit/testcontainers/OracleContainerStarter.java
+++ 
b/cayenne/src/test/java/org/apache/cayenne/unit/datasource/OracleDataSource.java
@@ -16,24 +16,24 @@
  *  specific language governing permissions and limitations
  *  under the License.
  ****************************************************************/
-package org.apache.cayenne.unit.testcontainers;
+package org.apache.cayenne.unit.datasource;
 
+import org.apache.cayenne.configuration.DataSourceDescriptor;
 import org.testcontainers.containers.JdbcDatabaseContainer;
+import org.testcontainers.containers.OracleContainer;
 import org.testcontainers.utility.DockerImageName;
 
 import java.time.Duration;
 
-public class OracleContainerStarter extends DbContainerStarter {
+public class OracleDataSource extends TestContainersDataSource {
 
-    @Override
-    public JdbcDatabaseContainer<?> startContainer(String version) {
-        JdbcDatabaseContainer<?> container = super.startContainer(version);
-        return container;
+    public static DataSourceDescriptor start() {
+        return TestContainersDataSource.start(new OracleDataSource());
     }
 
     @Override
     protected JdbcDatabaseContainer<?> createContainer(DockerImageName 
dockerImageName) {
-        return new 
org.testcontainers.containers.OracleContainer(dockerImageName)
+        return new OracleContainer(dockerImageName)
                 .withStartupTimeout(Duration.ofMinutes(5));
     }
 
diff --git 
a/cayenne/src/test/java/org/apache/cayenne/unit/testcontainers/PostgresContainerStarter.java
 
b/cayenne/src/test/java/org/apache/cayenne/unit/datasource/PostgresDataSource.java
similarity index 82%
rename from 
cayenne/src/test/java/org/apache/cayenne/unit/testcontainers/PostgresContainerStarter.java
rename to 
cayenne/src/test/java/org/apache/cayenne/unit/datasource/PostgresDataSource.java
index c96c0d4ac..c69fa2013 100644
--- 
a/cayenne/src/test/java/org/apache/cayenne/unit/testcontainers/PostgresContainerStarter.java
+++ 
b/cayenne/src/test/java/org/apache/cayenne/unit/datasource/PostgresDataSource.java
@@ -16,13 +16,19 @@
  *  specific language governing permissions and limitations
  *  under the License.
  ****************************************************************/
-package org.apache.cayenne.unit.testcontainers;
+package org.apache.cayenne.unit.datasource;
 
+import org.apache.cayenne.configuration.DataSourceDescriptor;
 import org.testcontainers.containers.JdbcDatabaseContainer;
 import org.testcontainers.containers.PostgreSQLContainer;
 import org.testcontainers.utility.DockerImageName;
 
-public class PostgresContainerStarter extends DbContainerStarter {
+public class PostgresDataSource extends TestContainersDataSource {
+
+    public static DataSourceDescriptor start() {
+        return TestContainersDataSource.start(new PostgresDataSource());
+    }
+
     @Override
     protected JdbcDatabaseContainer<?> createContainer(DockerImageName 
dockerImageName) {
         return new PostgreSQLContainer<>(dockerImageName);
diff --git 
a/cayenne/src/test/java/org/apache/cayenne/unit/testcontainers/MariaDbContainerStarter.java
 
b/cayenne/src/test/java/org/apache/cayenne/unit/datasource/SQLiteDataSource.java
similarity index 64%
rename from 
cayenne/src/test/java/org/apache/cayenne/unit/testcontainers/MariaDbContainerStarter.java
rename to 
cayenne/src/test/java/org/apache/cayenne/unit/datasource/SQLiteDataSource.java
index 96681fbdc..12e1033b5 100644
--- 
a/cayenne/src/test/java/org/apache/cayenne/unit/testcontainers/MariaDbContainerStarter.java
+++ 
b/cayenne/src/test/java/org/apache/cayenne/unit/datasource/SQLiteDataSource.java
@@ -16,22 +16,17 @@
  *  specific language governing permissions and limitations
  *  under the License.
  ****************************************************************/
-package org.apache.cayenne.unit.testcontainers;
+package org.apache.cayenne.unit.datasource;
 
-import org.testcontainers.containers.JdbcDatabaseContainer;
-import org.testcontainers.containers.MariaDBContainer;
-import org.testcontainers.utility.DockerImageName;
+import org.apache.cayenne.configuration.DataSourceDescriptor;
 
-public class MariaDbContainerStarter extends DbContainerStarter {
+public class SQLiteDataSource {
 
-    @Override
-    protected JdbcDatabaseContainer<?> createContainer(DockerImageName 
dockerImageName) {
-        return new MariaDBContainer<>(dockerImageName);
+    public static DataSourceDescriptor start() {
+        return DataSourceDescriptorFactory.create(
+                "sa",
+                "",
+                
"jdbc:sqlite:file:memdb?mode=memory&cache=shared&date_class=text",
+                "org.sqlite.JDBC");
     }
-
-    @Override
-    protected String dockerImage() {
-        return "mariadb:10.3";
-    }
-
 }
diff --git 
a/cayenne/src/test/java/org/apache/cayenne/unit/testcontainers/SqlServerContainerStarter.java
 
b/cayenne/src/test/java/org/apache/cayenne/unit/datasource/SqlServerDataSource.java
similarity index 83%
rename from 
cayenne/src/test/java/org/apache/cayenne/unit/testcontainers/SqlServerContainerStarter.java
rename to 
cayenne/src/test/java/org/apache/cayenne/unit/datasource/SqlServerDataSource.java
index 6969a7014..8453564f5 100644
--- 
a/cayenne/src/test/java/org/apache/cayenne/unit/testcontainers/SqlServerContainerStarter.java
+++ 
b/cayenne/src/test/java/org/apache/cayenne/unit/datasource/SqlServerDataSource.java
@@ -16,13 +16,19 @@
  *  specific language governing permissions and limitations
  *  under the License.
  ****************************************************************/
-package org.apache.cayenne.unit.testcontainers;
+package org.apache.cayenne.unit.datasource;
 
+import org.apache.cayenne.configuration.DataSourceDescriptor;
 import org.testcontainers.containers.JdbcDatabaseContainer;
 import org.testcontainers.containers.MSSQLServerContainer;
 import org.testcontainers.utility.DockerImageName;
 
-public class SqlServerContainerStarter extends DbContainerStarter {
+public class SqlServerDataSource extends TestContainersDataSource {
+
+    public static DataSourceDescriptor start() {
+        return TestContainersDataSource.start(new SqlServerDataSource());
+    }
+
     @Override
     protected JdbcDatabaseContainer<?> createContainer(DockerImageName 
dockerImageName) {
         return new MSSQLServerContainer<>(dockerImageName)
diff --git 
a/cayenne/src/test/java/org/apache/cayenne/unit/testcontainers/DbContainerStarter.java
 
b/cayenne/src/test/java/org/apache/cayenne/unit/datasource/TestContainersDataSource.java
similarity index 66%
rename from 
cayenne/src/test/java/org/apache/cayenne/unit/testcontainers/DbContainerStarter.java
rename to 
cayenne/src/test/java/org/apache/cayenne/unit/datasource/TestContainersDataSource.java
index 9c08bb00a..5feddb8fc 100644
--- 
a/cayenne/src/test/java/org/apache/cayenne/unit/testcontainers/DbContainerStarter.java
+++ 
b/cayenne/src/test/java/org/apache/cayenne/unit/datasource/TestContainersDataSource.java
@@ -16,14 +16,28 @@
  *  specific language governing permissions and limitations
  *  under the License.
  ****************************************************************/
-package org.apache.cayenne.unit.testcontainers;
+package org.apache.cayenne.unit.datasource;
 
+import org.apache.cayenne.configuration.DataSourceDescriptor;
 import org.testcontainers.containers.JdbcDatabaseContainer;
 import org.testcontainers.utility.DockerImageName;
 
-public abstract class DbContainerStarter {
+abstract class TestContainersDataSource {
 
-    public JdbcDatabaseContainer<?> startContainer(String version) {
+    private static final String CONNECTION_DB_VERSION = "cayenneTestDbVersion";
+
+    protected static DataSourceDescriptor start(TestContainersDataSource 
dataSource) {
+        String version = System.getProperty(CONNECTION_DB_VERSION);
+        JdbcDatabaseContainer<?> container = 
dataSource.startContainer(version);
+
+        return DataSourceDescriptorFactory.create(
+                container.getUsername(),
+                container.getPassword(),
+                container.getJdbcUrl(),
+                container.getDriverClassName());
+    }
+
+    protected JdbcDatabaseContainer<?> startContainer(String version) {
         DockerImageName baseName = DockerImageName.parse(dockerImage());
         DockerImageName fullName = version != null ? baseName.withTag(version) 
: baseName;
 

Reply via email to