From 2050033a0d126dc0289c20ae2a0fc00d775e28f4 Mon Sep 17 00:00:00 2001
From: Maxim Thomas <maxim.thomas@gmail.com>
Date: Mon, 03 Feb 2025 18:31:01 +0000
Subject: [PATCH] [#466] JDBC: added tests for Oracle, MySQL, MSSQL (#472)

---
 opendj-server-legacy/src/test/java/org/opends/server/backends/jdbc/TestCase.java |   35 +++++++++++++++++++----------------
 1 files changed, 19 insertions(+), 16 deletions(-)

diff --git a/opendj-server-legacy/src/test/java/org/opends/server/backends/jdbc/TestCase.java b/opendj-server-legacy/src/test/java/org/opends/server/backends/jdbc/TestCase.java
index 0b01008..b645ee1 100644
--- a/opendj-server-legacy/src/test/java/org/opends/server/backends/jdbc/TestCase.java
+++ b/opendj-server-legacy/src/test/java/org/opends/server/backends/jdbc/TestCase.java
@@ -11,18 +11,17 @@
  * Header, with the fields enclosed by brackets [] replaced by your own identifying
  * information: "Portions Copyright [year] [name of copyright owner]".
  *
- * Copyright 2024 3A Systems, LLC.
+ * Copyright 2024-2025 3A Systems, LLC.
  */
 package org.opends.server.backends.jdbc;
 
 import org.forgerock.opendj.server.config.server.JDBCBackendCfg;
 import org.opends.server.backends.pluggable.PluggableBackendImplTestCase;
 import org.testcontainers.DockerClientFactory;
-import org.testcontainers.containers.PostgreSQLContainer;
+import org.testcontainers.containers.JdbcDatabaseContainer;
 import org.testng.SkipException;
 import org.testng.annotations.AfterClass;
 import org.testng.annotations.BeforeClass;
-import org.testng.annotations.Test;
 
 import java.sql.Connection;
 import java.sql.DriverManager;
@@ -30,27 +29,23 @@
 import static org.forgerock.opendj.config.ConfigurationMock.mockCfg;
 import static org.mockito.Mockito.when;
 
-//docker run --rm -it -p 5432:5432 -e POSTGRES_PASSWORD=password --name postgres postgres
 
-@Test
-public class TestCase extends PluggableBackendImplTestCase<JDBCBackendCfg> {
 
-	PostgreSQLContainer container;
+public abstract class TestCase extends PluggableBackendImplTestCase<JDBCBackendCfg> {
+
+	JdbcDatabaseContainer container;
 
 	@BeforeClass
 	@Override
 	public void setUp() throws Exception {
 		if(DockerClientFactory.instance().isDockerAvailable()) {
-			container = new PostgreSQLContainer<>("postgres:latest")
-					.withExposedPorts(5432)
-					.withUsername("postgres")
-					.withPassword("password")
-					.withDatabaseName("database_name");
+			container = getContainer();
 			container.start();
 		}
-		try(Connection con= DriverManager.getConnection(createBackendCfg().getDBDirectory())){
+		try(Connection ignored = DriverManager.getConnection(createBackendCfg().getDBDirectory())){
+
 		} catch (Exception e) {
-			throw new SkipException("run before test: docker run --rm -it -p 5432:5432 -e POSTGRES_DB=database_name -e POSTGRES_PASSWORD=password --name postgres postgres");
+			throw new SkipException(getContainerDockerCommand());
 		}
 		super.setUp();
 	}
@@ -63,8 +58,8 @@
 	@Override
 	protected JDBCBackendCfg createBackendCfg() {
 		JDBCBackendCfg backendCfg = mockCfg(JDBCBackendCfg.class);
-		when(backendCfg.getBackendId()).thenReturn("PsqlTestCase");
-		when(backendCfg.getDBDirectory()).thenReturn("jdbc:postgresql://localhost:"+ ((container==null)?"5432":container.getMappedPort(5432))+"/database_name?user=postgres&password=password");
+		when(backendCfg.getBackendId()).thenReturn(getBackendId());
+		when(backendCfg.getDBDirectory()).thenReturn(getJdbcUrl());
 		return backendCfg;
 	}
 
@@ -76,4 +71,12 @@
 			container.close();
 		}
 	}
+
+	protected abstract JdbcDatabaseContainer<?> getContainer();
+
+	protected abstract String getContainerDockerCommand();
+
+	protected abstract String getBackendId();
+
+	protected abstract String getJdbcUrl();
 }

--
Gitblit v1.10.0