You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by aa...@apache.org on 2026/05/17 13:49:02 UTC
(cayenne) 02/03: cleaning up DB selection in tests
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 <an...@objectstyle.com>
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;