diff --git a/docs/modules/databases/mariadb.md b/docs/modules/databases/mariadb.md
index 2968c7a7e13..01d66139f1a 100644
--- a/docs/modules/databases/mariadb.md
+++ b/docs/modules/databases/mariadb.md
@@ -7,7 +7,7 @@ Testcontainers module for [MariaDB](https://hub.docker.com/_/mariadb)
You can start a MySQL container instance from any Java application by using:
-[Container definition](../../../modules/mariadb/src/test/java/org/testcontainers/junit/mariadb/SimpleMariaDBTest.java) inside_block:container
+[Container definition](../../../modules/mariadb/src/test/java/org/testcontainers/mariadb/MariaDBContainerTest.java) inside_block:container
See [Database containers](./index.md) for documentation and usage that is common to all relational database container types.
diff --git a/modules/mariadb/src/main/java/org/testcontainers/containers/MariaDBContainer.java b/modules/mariadb/src/main/java/org/testcontainers/containers/MariaDBContainer.java
index bff0faf9d03..6c9ffda7722 100644
--- a/modules/mariadb/src/main/java/org/testcontainers/containers/MariaDBContainer.java
+++ b/modules/mariadb/src/main/java/org/testcontainers/containers/MariaDBContainer.java
@@ -12,7 +12,10 @@
* Supported image: {@code mariadb}
*
* Exposed ports: 3306
+ *
+ * @deprecated use {@link org.testcontainers.mariadb.MariaDBContainer} instead.
*/
+@Deprecated
public class MariaDBContainer> extends JdbcDatabaseContainer {
private static final DockerImageName DEFAULT_IMAGE_NAME = DockerImageName.parse("mariadb");
diff --git a/modules/mariadb/src/main/java/org/testcontainers/mariadb/MariaDBContainer.java b/modules/mariadb/src/main/java/org/testcontainers/mariadb/MariaDBContainer.java
new file mode 100644
index 00000000000..957754c946b
--- /dev/null
+++ b/modules/mariadb/src/main/java/org/testcontainers/mariadb/MariaDBContainer.java
@@ -0,0 +1,136 @@
+package org.testcontainers.mariadb;
+
+import com.google.common.collect.Sets;
+import org.testcontainers.containers.ContainerLaunchException;
+import org.testcontainers.containers.JdbcDatabaseContainer;
+import org.testcontainers.images.builder.Transferable;
+import org.testcontainers.utility.DockerImageName;
+
+import java.util.Set;
+
+/**
+ * Testcontainers implementation for MariaDB.
+ *
+ * Supported image: {@code mariadb}
+ *
+ * Exposed ports: 3306
+ */
+public class MariaDBContainer extends JdbcDatabaseContainer {
+
+ private static final DockerImageName DEFAULT_IMAGE_NAME = DockerImageName.parse("mariadb");
+
+ public static final String NAME = "mariadb";
+
+ static final String DEFAULT_USER = "test";
+
+ static final String DEFAULT_PASSWORD = "test";
+
+ static final Integer MARIADB_PORT = 3306;
+
+ private String databaseName = "test";
+
+ private String username = DEFAULT_USER;
+
+ private String password = DEFAULT_PASSWORD;
+
+ private static final String MARIADB_ROOT_USER = "root";
+
+ private static final String MY_CNF_CONFIG_OVERRIDE_PARAM_NAME = "TC_MY_CNF";
+
+ public MariaDBContainer(String dockerImageName) {
+ this(DockerImageName.parse(dockerImageName));
+ }
+
+ public MariaDBContainer(final DockerImageName dockerImageName) {
+ super(dockerImageName);
+ dockerImageName.assertCompatibleWith(DEFAULT_IMAGE_NAME);
+
+ addExposedPort(MARIADB_PORT);
+ }
+
+ @Override
+ public Set getLivenessCheckPortNumbers() {
+ return Sets.newHashSet(MARIADB_PORT);
+ }
+
+ @Override
+ protected void configure() {
+ optionallyMapResourceParameterAsVolume(
+ MY_CNF_CONFIG_OVERRIDE_PARAM_NAME,
+ "/etc/mysql/conf.d",
+ "mariadb-default-conf",
+ Transferable.DEFAULT_DIR_MODE
+ );
+
+ addEnv("MYSQL_DATABASE", databaseName);
+
+ if (!MARIADB_ROOT_USER.equalsIgnoreCase(this.username)) {
+ addEnv("MYSQL_USER", username);
+ }
+ if (password != null && !password.isEmpty()) {
+ addEnv("MYSQL_PASSWORD", password);
+ addEnv("MYSQL_ROOT_PASSWORD", password);
+ } else if (MARIADB_ROOT_USER.equalsIgnoreCase(username)) {
+ addEnv("MYSQL_ALLOW_EMPTY_PASSWORD", "yes");
+ } else {
+ throw new ContainerLaunchException("Empty password can be used only with the root user");
+ }
+ setStartupAttempts(3);
+ }
+
+ @Override
+ public String getDriverClassName() {
+ return "org.mariadb.jdbc.Driver";
+ }
+
+ @Override
+ public String getJdbcUrl() {
+ String additionalUrlParams = constructUrlParameters("?", "&");
+ return (
+ "jdbc:mariadb://" + getHost() + ":" + getMappedPort(MARIADB_PORT) + "/" + databaseName + additionalUrlParams
+ );
+ }
+
+ @Override
+ public String getDatabaseName() {
+ return databaseName;
+ }
+
+ @Override
+ public String getUsername() {
+ return username;
+ }
+
+ @Override
+ public String getPassword() {
+ return password;
+ }
+
+ @Override
+ public String getTestQueryString() {
+ return "SELECT 1";
+ }
+
+ public MariaDBContainer withConfigurationOverride(String s) {
+ parameters.put(MY_CNF_CONFIG_OVERRIDE_PARAM_NAME, s);
+ return self();
+ }
+
+ @Override
+ public MariaDBContainer withDatabaseName(final String databaseName) {
+ this.databaseName = databaseName;
+ return self();
+ }
+
+ @Override
+ public MariaDBContainer withUsername(final String username) {
+ this.username = username;
+ return self();
+ }
+
+ @Override
+ public MariaDBContainer withPassword(final String password) {
+ this.password = password;
+ return self();
+ }
+}
diff --git a/modules/mariadb/src/test/java/org/testcontainers/junit/mariadb/SimpleMariaDBTest.java b/modules/mariadb/src/test/java/org/testcontainers/mariadb/MariaDBContainerTest.java
similarity index 85%
rename from modules/mariadb/src/test/java/org/testcontainers/junit/mariadb/SimpleMariaDBTest.java
rename to modules/mariadb/src/test/java/org/testcontainers/mariadb/MariaDBContainerTest.java
index 4e88c8981eb..99348f9168d 100644
--- a/modules/mariadb/src/test/java/org/testcontainers/junit/mariadb/SimpleMariaDBTest.java
+++ b/modules/mariadb/src/test/java/org/testcontainers/mariadb/MariaDBContainerTest.java
@@ -1,9 +1,8 @@
-package org.testcontainers.junit.mariadb;
+package org.testcontainers.mariadb;
import org.apache.commons.lang3.SystemUtils;
import org.junit.jupiter.api.Test;
import org.testcontainers.MariaDBTestImages;
-import org.testcontainers.containers.MariaDBContainer;
import org.testcontainers.db.AbstractContainerDatabaseTest;
import java.io.File;
@@ -20,12 +19,12 @@
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assumptions.assumeThat;
-class SimpleMariaDBTest extends AbstractContainerDatabaseTest {
+class MariaDBContainerTest extends AbstractContainerDatabaseTest {
@Test
void testSimple() throws SQLException {
try ( // container {
- MariaDBContainer> mariadb = new MariaDBContainer<>("mariadb:10.3.39")
+ MariaDBContainer mariadb = new MariaDBContainer("mariadb:10.3.39")
// }
) {
mariadb.start();
@@ -40,7 +39,7 @@ void testSimple() throws SQLException {
@Test
void testSpecificVersion() throws SQLException {
try (
- MariaDBContainer> mariadbOldVersion = new MariaDBContainer<>(
+ MariaDBContainer mariadbOldVersion = new MariaDBContainer(
MariaDBTestImages.MARIADB_IMAGE.withTag("10.3.39")
)
) {
@@ -60,7 +59,7 @@ void testMariaDBWithCustomIniFile() throws SQLException {
assumeThat(SystemUtils.IS_OS_WINDOWS).isFalse();
try (
- MariaDBContainer> mariadbCustomConfig = new MariaDBContainer<>(
+ MariaDBContainer mariadbCustomConfig = new MariaDBContainer(
MariaDBTestImages.MARIADB_IMAGE.withTag("10.3.39")
)
.withConfigurationOverride("somepath/mariadb_conf_override")
@@ -74,7 +73,7 @@ void testMariaDBWithCustomIniFile() throws SQLException {
@Test
void testMariaDBWithCommandOverride() throws SQLException {
try (
- MariaDBContainer> mariadbCustomConfig = new MariaDBContainer<>(MariaDBTestImages.MARIADB_IMAGE)
+ MariaDBContainer mariadbCustomConfig = new MariaDBContainer(MariaDBTestImages.MARIADB_IMAGE)
.withCommand("mysqld --auto_increment_increment=10")
) {
mariadbCustomConfig.start();
@@ -87,7 +86,7 @@ void testMariaDBWithCommandOverride() throws SQLException {
@Test
void testWithAdditionalUrlParamInJdbcUrl() {
- MariaDBContainer> mariaDBContainer = new MariaDBContainer<>(MariaDBTestImages.MARIADB_IMAGE)
+ MariaDBContainer mariaDBContainer = new MariaDBContainer(MariaDBTestImages.MARIADB_IMAGE)
.withUrlParam("connectTimeout", "40000")
.withUrlParam("rewriteBatchedStatements", "true");
@@ -108,7 +107,7 @@ void testWithOnlyUserReadableCustomIniFile() throws Exception {
assumeThat(FileSystems.getDefault().supportedFileAttributeViews().contains("posix")).isTrue();
try (
- MariaDBContainer> mariadbCustomConfig = new MariaDBContainer<>(
+ MariaDBContainer mariadbCustomConfig = new MariaDBContainer(
MariaDBTestImages.MARIADB_IMAGE.withTag("10.3.39")
)
.withConfigurationOverride("somepath/mariadb_conf_override")
@@ -136,7 +135,7 @@ void testWithOnlyUserReadableCustomIniFile() throws Exception {
@Test
void testEmptyPasswordWithRootUser() throws SQLException {
- try (MariaDBContainer> mysql = new MariaDBContainer<>("mariadb:11.2.4").withUsername("root")) {
+ try (MariaDBContainer mysql = new MariaDBContainer("mariadb:11.2.4").withUsername("root")) {
mysql.start();
ResultSet resultSet = performQuery(mysql, "SELECT 1");
@@ -146,7 +145,7 @@ void testEmptyPasswordWithRootUser() throws SQLException {
}
}
- private void assertThatCustomIniFileWasUsed(MariaDBContainer> mariadb) throws SQLException {
+ private void assertThatCustomIniFileWasUsed(MariaDBContainer mariadb) throws SQLException {
try (ResultSet resultSet = performQuery(mariadb, "SELECT @@GLOBAL.innodb_max_undo_log_size")) {
long result = resultSet.getLong(1);
assertThat(result)