diff --git a/transact/build.gradle.kts b/transact/build.gradle.kts index e4a2a07f..0412715d 100644 --- a/transact/build.gradle.kts +++ b/transact/build.gradle.kts @@ -52,6 +52,7 @@ dependencies { testImplementation("io.rest-assured:json-path:6.0.0") testImplementation("io.rest-assured:xml-path:6.0.0") testImplementation("org.apache.maven:maven-artifact:3.9.12") + testImplementation("org.testcontainers:testcontainers-postgresql:2.0.3") } val projectVersion = project.version.toString() diff --git a/transact/src/test/java/dev/dbos/transact/DbSetupTestBase.java b/transact/src/test/java/dev/dbos/transact/DbSetupTestBase.java new file mode 100644 index 00000000..ea0629f7 --- /dev/null +++ b/transact/src/test/java/dev/dbos/transact/DbSetupTestBase.java @@ -0,0 +1,55 @@ +package dev.dbos.transact; + +import dev.dbos.transact.config.DBOSConfig; +import dev.dbos.transact.database.SystemDatabase; + +import com.zaxxer.hikari.HikariDataSource; +import org.junit.jupiter.api.AfterAll; +import org.junit.jupiter.api.BeforeAll; +import org.testcontainers.postgresql.PostgreSQLContainer; + +public class DbSetupTestBase { + + protected static final PostgreSQLContainer postgres = new PostgreSQLContainer("postgres:18"); + + protected static DBOSConfig dbosConfig; + protected static HikariDataSource dataSource; + + @BeforeAll + protected static void onetimeSetup() throws Exception { + postgres.start(); + dbosConfig = + DBOSConfig.defaults("systemdbtest") + .withDatabaseUrl(postgres.getJdbcUrl()) + .withDbUser(postgres.getUsername()) + .withDbPassword(postgres.getPassword()); + dataSource = SystemDatabase.createDataSource(dbosConfig); + } + + @AfterAll + protected static void afterAll() throws Exception { + postgres.stop(); + } + + protected DBOSClient getDBOSClient() { + return new DBOSClient(postgres.getJdbcUrl(), postgres.getUsername(), postgres.getPassword()); + } + + protected static DBOSConfig createConfig(String appName) { + return DBOSConfig.defaults(appName) + .withDatabaseUrl(postgres.getJdbcUrl()) + .withDbUser(postgres.getUsername()) + .withDbPassword(postgres.getPassword()); + } + + protected static DBOSConfig createConfigFromEnv(String appName) { + return DBOSConfig.defaultsFromEnv(appName) + .withDatabaseUrl(postgres.getJdbcUrl()) + .withDbUser(postgres.getUsername()) + .withDbPassword(postgres.getPassword()); + } + + protected static String getJdbcUrl(String databaseName) { + return postgres.getJdbcUrl().replaceFirst("/[^/?]+(\\?.*)?$", "/" + databaseName + "$1"); + } +} diff --git a/transact/src/test/java/dev/dbos/transact/client/ClientTest.java b/transact/src/test/java/dev/dbos/transact/client/ClientTest.java index a823b178..84011e16 100644 --- a/transact/src/test/java/dev/dbos/transact/client/ClientTest.java +++ b/transact/src/test/java/dev/dbos/transact/client/ClientTest.java @@ -8,7 +8,7 @@ import dev.dbos.transact.DBOS; import dev.dbos.transact.DBOSClient; import dev.dbos.transact.DBOSTestAccess; -import dev.dbos.transact.config.DBOSConfig; +import dev.dbos.transact.DbSetupTestBase; import dev.dbos.transact.database.SystemDatabase; import dev.dbos.transact.exceptions.DBOSAwaitedWorkflowCancelledException; import dev.dbos.transact.exceptions.DBOSNonExistentWorkflowException; @@ -24,24 +24,10 @@ import org.junit.jupiter.api.*; @org.junit.jupiter.api.Timeout(value = 2, unit = java.util.concurrent.TimeUnit.MINUTES) -public class ClientTest { - private static DBOSConfig dbosConfig; - private static final String dbUrl = "jdbc:postgresql://localhost:5432/dbos_java_sys"; - private static final String dbUser = "postgres"; - private static final String dbPassword = System.getenv("PGPASSWORD"); - +public class ClientTest extends DbSetupTestBase { private ClientService service; private HikariDataSource dataSource; - @BeforeAll - static void onetimeSetup() throws Exception { - dbosConfig = - DBOSConfig.defaults("systemdbtest") - .withDatabaseUrl(dbUrl) - .withDbUser(dbUser) - .withDbPassword(dbPassword); - } - @BeforeEach void beforeEachTest() throws SQLException { DBUtils.recreateDB(dbosConfig); @@ -50,9 +36,7 @@ void beforeEachTest() throws SQLException { service = DBOS.registerWorkflows(ClientService.class, new ClientServiceImpl()); DBOS.launch(); - dataSource = - SystemDatabase.createDataSource( - dbosConfig.databaseUrl(), dbosConfig.dbUser(), dbosConfig.dbPassword()); + dataSource = SystemDatabase.createDataSource(dbosConfig); } @AfterEach @@ -108,7 +92,7 @@ public void clientEnqueue() throws Exception { var qs = DBOSTestAccess.getQueueService(); qs.pause(); - try (var client = new DBOSClient(dbUrl, dbUser, dbPassword)) { + try (var client = getDBOSClient()) { var options = new DBOSClient.EnqueueOptions("ClientServiceImpl", "enqueueTest", "testQueue"); var handle = client.enqueueWorkflow(options, new Object[] {42, "spam"}); var rows = DBUtils.getWorkflowRows(dataSource); @@ -135,7 +119,7 @@ public void clientEnqueueDeDupe() throws Exception { var qs = DBOSTestAccess.getQueueService(); qs.pause(); - try (var client = new DBOSClient(dbUrl, dbUser, dbPassword)) { + try (var client = getDBOSClient()) { var options = new DBOSClient.EnqueueOptions("ClientServiceImpl", "enqueueTest", "testQueue") .withDeduplicationId("plugh!"); @@ -154,7 +138,7 @@ public void clientSend() throws Exception { var idempotencyKey = UUID.randomUUID().toString(); - try (var client = new DBOSClient(dbUrl, dbUser, dbPassword)) { + try (var client = getDBOSClient()) { client.send(handle.workflowId(), "test.message", "test-topic", idempotencyKey); } @@ -163,7 +147,7 @@ public void clientSend() throws Exception { @Test public void clientEnqueueTimeouts() throws Exception { - try (var client = new DBOSClient(dbUrl, dbUser, dbPassword)) { + try (var client = getDBOSClient()) { var options = new DBOSClient.EnqueueOptions("ClientServiceImpl", "sleep", "testQueue"); var handle1 = @@ -198,7 +182,7 @@ public void clientEnqueueTimeouts() throws Exception { public void invalidSend() throws Exception { var invalidWorkflowId = UUID.randomUUID().toString(); - try (var client = new DBOSClient(dbUrl, dbUser, dbPassword)) { + try (var client = getDBOSClient()) { var ex = assertThrows( DBOSNonExistentWorkflowException.class, diff --git a/transact/src/test/java/dev/dbos/transact/client/PgSqlClientTest.java b/transact/src/test/java/dev/dbos/transact/client/PgSqlClientTest.java index f6712448..54eaec0c 100644 --- a/transact/src/test/java/dev/dbos/transact/client/PgSqlClientTest.java +++ b/transact/src/test/java/dev/dbos/transact/client/PgSqlClientTest.java @@ -8,7 +8,7 @@ import dev.dbos.transact.DBOS; import dev.dbos.transact.DBOSTestAccess; -import dev.dbos.transact.config.DBOSConfig; +import dev.dbos.transact.DbSetupTestBase; import dev.dbos.transact.database.SystemDatabase; import dev.dbos.transact.exceptions.DBOSAwaitedWorkflowCancelledException; import dev.dbos.transact.execution.ThrowingRunnable; @@ -25,31 +25,16 @@ import com.fasterxml.jackson.databind.ObjectMapper; import com.zaxxer.hikari.HikariDataSource; import org.junit.jupiter.api.AfterEach; -import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.postgresql.util.PSQLException; @org.junit.jupiter.api.Timeout(value = 2, unit = java.util.concurrent.TimeUnit.MINUTES) -public class PgSqlClientTest { - private static DBOSConfig dbosConfig; - private static final String dbUrl = "jdbc:postgresql://localhost:5432/dbos_java_sys"; - private static final String dbUser = "postgres"; - private static final String dbPassword = System.getenv("PGPASSWORD"); - +public class PgSqlClientTest extends DbSetupTestBase { private ClientService service; private HikariDataSource dataSource; - @BeforeAll - static void onetimeSetup() throws Exception { - dbosConfig = - DBOSConfig.defaults("systemdbtest") - .withDatabaseUrl(dbUrl) - .withDbUser(dbUser) - .withDbPassword(dbPassword); - } - @BeforeEach void beforeEachTest() throws SQLException { DBUtils.recreateDB(dbosConfig); @@ -58,9 +43,7 @@ void beforeEachTest() throws SQLException { service = DBOS.registerWorkflows(ClientService.class, new ClientServiceImpl()); DBOS.launch(); - dataSource = - SystemDatabase.createDataSource( - dbosConfig.databaseUrl(), dbosConfig.dbUser(), dbosConfig.dbPassword()); + dataSource = SystemDatabase.createDataSource(dbosConfig); } @AfterEach diff --git a/transact/src/test/java/dev/dbos/transact/config/ConfigTest.java b/transact/src/test/java/dev/dbos/transact/config/ConfigTest.java index 5aedb644..d2369f4e 100644 --- a/transact/src/test/java/dev/dbos/transact/config/ConfigTest.java +++ b/transact/src/test/java/dev/dbos/transact/config/ConfigTest.java @@ -7,9 +7,9 @@ import static org.junit.jupiter.api.Assertions.assertThrows; import static org.junit.jupiter.api.Assertions.assertTrue; -import dev.dbos.transact.Constants; import dev.dbos.transact.DBOS; import dev.dbos.transact.DBOSTestAccess; +import dev.dbos.transact.DbSetupTestBase; import dev.dbos.transact.StartWorkflowOptions; import dev.dbos.transact.database.DBTestAccess; import dev.dbos.transact.internal.AppVersionComputer; @@ -38,7 +38,7 @@ @org.junit.jupiter.api.Timeout(value = 2, unit = java.util.concurrent.TimeUnit.MINUTES) @ExtendWith(SystemStubsExtension.class) -public class ConfigTest { +public class ConfigTest extends DbSetupTestBase { @SystemStub private EnvironmentVariables envVars = new EnvironmentVariables(); @@ -49,10 +49,7 @@ public void configOverridesEnvAppVerAndExecutor() throws Exception { envVars.set("DBOS__APPID", "test-env-app-id"); var config = - DBOSConfig.defaults("config-test") - .withDatabaseUrl("jdbc:postgresql://localhost:5432/dbos_java_sys") - .withDbUser("postgres") - .withDbPassword(System.getenv("PGPASSWORD")) + createConfig("config-test") .withAppVersion("test-app-version") .withExecutorId("test-executor-id"); @@ -75,11 +72,7 @@ public void envAppVerAndExecutor() throws Exception { envVars.set("DBOS__APPVERSION", "test-env-app-version"); envVars.set("DBOS__APPID", "test-env-app-id"); - var config = - DBOSConfig.defaults("config-test") - .withDatabaseUrl("jdbc:postgresql://localhost:5432/dbos_java_sys") - .withDbUser("postgres") - .withDbPassword(System.getenv("PGPASSWORD")); + var config = createConfig("config-test"); DBOSTestAccess.reinitialize(config); try { @@ -102,10 +95,7 @@ public void dbosCloudEnvOverridesConfigAppVerAndExecutor() throws Exception { envVars.set("DBOS__APPID", "test-env-app-id"); var config = - DBOSConfig.defaults("config-test") - .withDatabaseUrl("jdbc:postgresql://localhost:5432/dbos_java_sys") - .withDbUser("postgres") - .withDbPassword(System.getenv("PGPASSWORD")) + createConfig("config-test") .withAppVersion("test-app-version") .withExecutorId("test-executor-id"); @@ -123,11 +113,7 @@ public void dbosCloudEnvOverridesConfigAppVerAndExecutor() throws Exception { @Test public void localExecutorId() throws Exception { - var config = - DBOSConfig.defaults("config-test") - .withDatabaseUrl("jdbc:postgresql://localhost:5432/dbos_java_sys") - .withDbUser("postgres") - .withDbPassword(System.getenv("PGPASSWORD")); + var config = createConfig("config-test"); DBOSTestAccess.reinitialize(config); try { @@ -142,10 +128,7 @@ public void localExecutorId() throws Exception { @Test public void conductorExecutorId() throws Exception { - var config = - DBOSConfig.defaultsFromEnv("config-test") - .withDatabaseUrl("jdbc:postgresql://localhost:5432/dbos_java_sys") - .withConductorKey("test-conductor-key"); + var config = createConfigFromEnv("config-test").withConductorKey("test-conductor-key"); DBOSTestAccess.reinitialize(config); try { @@ -162,8 +145,7 @@ public void conductorExecutorId() throws Exception { @Test public void cantSetExecutorIdWhenUsingConductor() throws Exception { var config = - DBOSConfig.defaultsFromEnv("config-test") - .withDatabaseUrl("jdbc:postgresql://localhost:5432/dbos_java_sys") + createConfigFromEnv("config-test") .withConductorKey("test-conductor-key") .withExecutorId("test-executor-id"); @@ -196,11 +178,7 @@ public void cantSetEmptyConfigFields() throws Exception { @Test public void calcAppVersion() throws Exception { - var config = - DBOSConfig.defaults("config-test") - .withDatabaseUrl("jdbc:postgresql://localhost:5432/dbos_java_sys") - .withDbUser("postgres") - .withDbPassword(System.getenv(Constants.POSTGRES_PASSWORD_ENV_VAR)); + var config = createConfig("config-test"); DBOSTestAccess.reinitialize(config); try { @@ -219,17 +197,17 @@ public void calcAppVersion() throws Exception { @Test public void configPGSimpleDataSource() throws Exception { - var url = "jdbc:postgresql://localhost:5432/dbos_java_sys"; - var user = "postgres"; - var password = System.getenv(Constants.POSTGRES_PASSWORD_ENV_VAR); + var url = dbosConfig.databaseUrl(); + var user = dbosConfig.dbUser(); + var password = dbosConfig.dbPassword(); DBUtils.recreateDB(url, user, password); PGSimpleDataSource ds = new PGSimpleDataSource(); - ds.setServerNames(new String[] {"localhost"}); - ds.setDatabaseName("dbos_java_sys"); + ds.setServerNames(new String[] {postgres.getHost()}); + ds.setDatabaseName(postgres.getDatabaseName()); ds.setUser(user); ds.setPassword(password); - ds.setPortNumbers(new int[] {5432}); + ds.setPortNumbers(new int[] {postgres.getFirstMappedPort()}); var config = DBOSConfig.defaults("config-test") @@ -263,9 +241,9 @@ public void configPGSimpleDataSource() throws Exception { public void configHikariDataSource() throws Exception { var poolName = "dbos-configDataSource"; - var url = "jdbc:postgresql://localhost:5432/dbos_java_sys"; - var user = "postgres"; - var password = System.getenv(Constants.POSTGRES_PASSWORD_ENV_VAR); + var url = dbosConfig.databaseUrl(); + var user = dbosConfig.dbUser(); + var password = dbosConfig.dbPassword(); DBUtils.recreateDB(url, user, password); @@ -330,9 +308,7 @@ public void dbosVersion() throws Exception { public void appVersion() throws Exception { try { envVars.set("DBOS__APPID", "test-env-app-id"); - var dbosConfig = - DBOSConfig.defaultsFromEnv("systemdbtest") - .withDatabaseUrl("jdbc:postgresql://localhost:5432/dbos_java_sys"); + var dbosConfig = createConfigFromEnv("systemdbtest"); DBUtils.recreateDB(dbosConfig); DBOSTestAccess.reinitialize(dbosConfig); diff --git a/transact/src/test/java/dev/dbos/transact/database/ExternalStateTest.java b/transact/src/test/java/dev/dbos/transact/database/ExternalStateTest.java index 1da9b695..e134ce55 100644 --- a/transact/src/test/java/dev/dbos/transact/database/ExternalStateTest.java +++ b/transact/src/test/java/dev/dbos/transact/database/ExternalStateTest.java @@ -4,7 +4,7 @@ import static org.junit.jupiter.api.Assertions.assertNull; import static org.junit.jupiter.api.Assertions.assertTrue; -import dev.dbos.transact.config.DBOSConfig; +import dev.dbos.transact.DbSetupTestBase; import dev.dbos.transact.migrations.MigrationManager; import dev.dbos.transact.utils.DBUtils; @@ -16,17 +16,11 @@ import org.junit.jupiter.api.Test; @org.junit.jupiter.api.Timeout(value = 2, unit = java.util.concurrent.TimeUnit.MINUTES) -public class ExternalStateTest { +public class ExternalStateTest extends DbSetupTestBase { private static SystemDatabase systemDatabase; - private static DBOSConfig dbosConfig; @BeforeAll - static void onetimeSetup() throws Exception { - - dbosConfig = - DBOSConfig.defaultsFromEnv("systemdbtest") - .withDatabaseUrl("jdbc:postgresql://localhost:5432/dbos_java_sys"); - + protected static void onetimeSetup() throws Exception { DBUtils.recreateDB(dbosConfig); MigrationManager.runMigrations(dbosConfig); systemDatabase = SystemDatabase.create(dbosConfig); diff --git a/transact/src/test/java/dev/dbos/transact/database/MetricsTest.java b/transact/src/test/java/dev/dbos/transact/database/MetricsTest.java index 1bc8847c..868c11e6 100644 --- a/transact/src/test/java/dev/dbos/transact/database/MetricsTest.java +++ b/transact/src/test/java/dev/dbos/transact/database/MetricsTest.java @@ -4,7 +4,7 @@ import dev.dbos.transact.DBOS; import dev.dbos.transact.DBOSTestAccess; -import dev.dbos.transact.config.DBOSConfig; +import dev.dbos.transact.DbSetupTestBase; import dev.dbos.transact.utils.DBUtils; import dev.dbos.transact.workflow.Workflow; @@ -13,7 +13,6 @@ import java.util.stream.Collectors; import org.junit.jupiter.api.AfterEach; -import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -42,21 +41,13 @@ public String testWorkflowB() { } @org.junit.jupiter.api.Timeout(value = 2, unit = java.util.concurrent.TimeUnit.MINUTES) -public class MetricsTest { - private static DBOSConfig config; +public class MetricsTest extends DbSetupTestBase { private MetricsService proxy; - @BeforeAll - static void onetimeSetup() throws Exception { - config = - DBOSConfig.defaultsFromEnv("systemdbtest") - .withDatabaseUrl("jdbc:postgresql://localhost:5432/dbos_java_sys"); - } - @BeforeEach void beforeEachTest() throws SQLException { - DBUtils.recreateDB(config); - DBOSTestAccess.reinitialize(config); + DBUtils.recreateDB(dbosConfig); + DBOSTestAccess.reinitialize(dbosConfig); proxy = DBOS.registerWorkflows(MetricsService.class, new MetricsServiceImpl()); DBOS.launch(); } diff --git a/transact/src/test/java/dev/dbos/transact/database/SystemDatabaseTest.java b/transact/src/test/java/dev/dbos/transact/database/SystemDatabaseTest.java index a77bdef9..208ed649 100644 --- a/transact/src/test/java/dev/dbos/transact/database/SystemDatabaseTest.java +++ b/transact/src/test/java/dev/dbos/transact/database/SystemDatabaseTest.java @@ -7,7 +7,7 @@ import dev.dbos.transact.DBOS; import dev.dbos.transact.DBOSTestAccess; -import dev.dbos.transact.config.DBOSConfig; +import dev.dbos.transact.DbSetupTestBase; import dev.dbos.transact.exceptions.DBOSMaxRecoveryAttemptsExceededException; import dev.dbos.transact.exceptions.DBOSQueueDuplicatedException; import dev.dbos.transact.migrations.MigrationManager; @@ -20,30 +20,20 @@ import com.zaxxer.hikari.HikariDataSource; import org.junit.jupiter.api.AfterEach; -import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @org.junit.jupiter.api.Timeout(value = 2, unit = java.util.concurrent.TimeUnit.MINUTES) -public class SystemDatabaseTest { - private static DBOSConfig config; +public class SystemDatabaseTest extends DbSetupTestBase { private SystemDatabase sysdb; private HikariDataSource dataSource; - @BeforeAll - static void onetimeSetup() throws Exception { - config = - DBOSConfig.defaultsFromEnv("systemdbtest") - .withDatabaseUrl("jdbc:postgresql://localhost:5432/dbos_java_sys"); - } - @BeforeEach void beforeEachTest() throws SQLException { - DBUtils.recreateDB(config); - MigrationManager.runMigrations(config); - sysdb = SystemDatabase.create(config); - dataSource = - SystemDatabase.createDataSource(config.databaseUrl(), config.dbUser(), config.dbPassword()); + DBUtils.recreateDB(dbosConfig); + MigrationManager.runMigrations(dbosConfig); + sysdb = SystemDatabase.create(dbosConfig); + dataSource = SystemDatabase.createDataSource(dbosConfig); } @AfterEach diff --git a/transact/src/test/java/dev/dbos/transact/execution/DBOSExecutorTest.java b/transact/src/test/java/dev/dbos/transact/execution/DBOSExecutorTest.java index a2c5a12e..dac69759 100644 --- a/transact/src/test/java/dev/dbos/transact/execution/DBOSExecutorTest.java +++ b/transact/src/test/java/dev/dbos/transact/execution/DBOSExecutorTest.java @@ -4,7 +4,7 @@ import dev.dbos.transact.DBOS; import dev.dbos.transact.DBOSTestAccess; -import dev.dbos.transact.config.DBOSConfig; +import dev.dbos.transact.DbSetupTestBase; import dev.dbos.transact.context.WorkflowOptions; import dev.dbos.transact.database.SystemDatabase; import dev.dbos.transact.exceptions.DBOSNonExistentWorkflowException; @@ -18,7 +18,6 @@ import com.zaxxer.hikari.HikariDataSource; import org.junit.jupiter.api.AfterEach; -import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.condition.DisabledForJreRange; @@ -27,18 +26,9 @@ import org.junit.jupiter.api.condition.JRE; @org.junit.jupiter.api.Timeout(value = 2, unit = java.util.concurrent.TimeUnit.MINUTES) -class DBOSExecutorTest { - - private static DBOSConfig dbosConfig; +class DBOSExecutorTest extends DbSetupTestBase { private HikariDataSource dataSource; - @BeforeAll - public static void onetimeBefore() { - DBOSExecutorTest.dbosConfig = - DBOSConfig.defaultsFromEnv("systemdbtest") - .withDatabaseUrl("jdbc:postgresql://localhost:5432/dbos_java_sys"); - } - @BeforeEach void setUp() throws SQLException { DBUtils.recreateDB(dbosConfig); diff --git a/transact/src/test/java/dev/dbos/transact/execution/LifecycleTest.java b/transact/src/test/java/dev/dbos/transact/execution/LifecycleTest.java index d2a98a45..782e142d 100644 --- a/transact/src/test/java/dev/dbos/transact/execution/LifecycleTest.java +++ b/transact/src/test/java/dev/dbos/transact/execution/LifecycleTest.java @@ -4,8 +4,8 @@ import dev.dbos.transact.DBOS; import dev.dbos.transact.DBOSTestAccess; +import dev.dbos.transact.DbSetupTestBase; import dev.dbos.transact.StartWorkflowOptions; -import dev.dbos.transact.config.DBOSConfig; import dev.dbos.transact.utils.DBUtils; import dev.dbos.transact.workflow.Workflow; @@ -19,7 +19,6 @@ import java.util.UUID; import org.junit.jupiter.api.AfterEach; -import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -115,22 +114,15 @@ public int runThemAll() throws Exception { } @org.junit.jupiter.api.Timeout(value = 2, unit = java.util.concurrent.TimeUnit.MINUTES) -public class LifecycleTest { - private static DBOSConfig dbosConfig; +public class LifecycleTest extends DbSetupTestBase { private static LifecycleTestWorkflowsImpl impl; private static TestLifecycleService svc; - @BeforeAll - static void onetimeSetup() throws Exception { - dbosConfig = - DBOSConfig.defaultsFromEnv("lifecycletest") - .withDatabaseUrl("jdbc:postgresql://localhost:5432/dbos_java_sys"); - } - @BeforeEach void beforeEachTest() throws SQLException { - DBUtils.recreateDB(dbosConfig); - DBOSTestAccess.reinitialize(dbosConfig); + var config = createConfigFromEnv("lifecycletest"); + DBUtils.recreateDB(config); + DBOSTestAccess.reinitialize(config); impl = new LifecycleTestWorkflowsImpl(); DBOS.registerWorkflows(LifecycleTestWorkflows.class, impl, "inst1"); diff --git a/transact/src/test/java/dev/dbos/transact/execution/RecoveryServiceTest.java b/transact/src/test/java/dev/dbos/transact/execution/RecoveryServiceTest.java index a2ff2e1b..572e25c1 100644 --- a/transact/src/test/java/dev/dbos/transact/execution/RecoveryServiceTest.java +++ b/transact/src/test/java/dev/dbos/transact/execution/RecoveryServiceTest.java @@ -4,8 +4,8 @@ import dev.dbos.transact.DBOS; import dev.dbos.transact.DBOSTestAccess; +import dev.dbos.transact.DbSetupTestBase; import dev.dbos.transact.StartWorkflowOptions; -import dev.dbos.transact.config.DBOSConfig; import dev.dbos.transact.context.WorkflowOptions; import dev.dbos.transact.database.SystemDatabase; import dev.dbos.transact.utils.DBUtils; @@ -22,16 +22,13 @@ import com.zaxxer.hikari.HikariDataSource; import org.junit.jupiter.api.AfterEach; -import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @org.junit.jupiter.api.Timeout(value = 2, unit = java.util.concurrent.TimeUnit.MINUTES) -class RecoveryServiceTest { - - private static DBOSConfig dbosConfig; +class RecoveryServiceTest extends DbSetupTestBase { private HikariDataSource dataSource; private Queue testQueue; private SystemDatabase systemDatabase; @@ -40,14 +37,6 @@ class RecoveryServiceTest { private ExecutingService executingService; private static final Logger logger = LoggerFactory.getLogger(RecoveryServiceTest.class); - @BeforeAll - public static void onetimeBefore() { - - RecoveryServiceTest.dbosConfig = - DBOSConfig.defaultsFromEnv("systemdbtest") - .withDatabaseUrl("jdbc:postgresql://localhost:5432/dbos_java_sys"); - } - @BeforeEach void setUp() throws SQLException { DBUtils.recreateDB(dbosConfig); diff --git a/transact/src/test/java/dev/dbos/transact/execution/ScaleTest.java b/transact/src/test/java/dev/dbos/transact/execution/ScaleTest.java index 79e3a0ec..cd9b7fd6 100644 --- a/transact/src/test/java/dev/dbos/transact/execution/ScaleTest.java +++ b/transact/src/test/java/dev/dbos/transact/execution/ScaleTest.java @@ -4,7 +4,7 @@ import dev.dbos.transact.DBOS; import dev.dbos.transact.DBOSTestAccess; -import dev.dbos.transact.config.DBOSConfig; +import dev.dbos.transact.DbSetupTestBase; import dev.dbos.transact.utils.DBUtils; import dev.dbos.transact.workflow.Workflow; import dev.dbos.transact.workflow.WorkflowHandle; @@ -14,7 +14,6 @@ import java.util.ArrayList; import org.junit.jupiter.api.AfterEach; -import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.condition.EnabledIfEnvironmentVariable; @@ -40,18 +39,9 @@ public String workflow(String input) { } @org.junit.jupiter.api.Timeout(value = 5, unit = java.util.concurrent.TimeUnit.MINUTES) -public class ScaleTest { +public class ScaleTest extends DbSetupTestBase { private static final Logger logger = LoggerFactory.getLogger(ScaleTest.class); - private static DBOSConfig dbosConfig; - - @BeforeAll - public static void onetimeBefore() { - dbosConfig = - DBOSConfig.defaultsFromEnv("systemdbtest") - .withDatabaseUrl("jdbc:postgresql://localhost:5432/dbos_java_sys"); - } - @BeforeEach void setUp() throws SQLException { DBUtils.recreateDB(dbosConfig); diff --git a/transact/src/test/java/dev/dbos/transact/execution/SingleExecutionTest.java b/transact/src/test/java/dev/dbos/transact/execution/SingleExecutionTest.java index fbbe985d..3fa98e64 100644 --- a/transact/src/test/java/dev/dbos/transact/execution/SingleExecutionTest.java +++ b/transact/src/test/java/dev/dbos/transact/execution/SingleExecutionTest.java @@ -5,8 +5,8 @@ import dev.dbos.transact.DBOS; import dev.dbos.transact.DBOSTestAccess; +import dev.dbos.transact.DbSetupTestBase; import dev.dbos.transact.StartWorkflowOptions; -import dev.dbos.transact.config.DBOSConfig; import dev.dbos.transact.database.SystemDatabase; import dev.dbos.transact.internal.DebugTriggers; import dev.dbos.transact.utils.DBUtils; @@ -20,14 +20,12 @@ import java.util.UUID; import com.zaxxer.hikari.HikariDataSource; -import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.AfterEach; -import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @org.junit.jupiter.api.Timeout(value = 2, unit = java.util.concurrent.TimeUnit.MINUTES) -public class SingleExecutionTest { +public class SingleExecutionTest extends DbSetupTestBase { public static interface TryConcExecIfc { public void testConcStep() throws InterruptedException; @@ -252,7 +250,6 @@ public void testConcWorkflow() throws InterruptedException { } } - private static DBOSConfig dbosConfig; private static TryConcExec execImpl; private static TryConcExecIfc execIfc; private static CatchPlainException1 catchImpl; @@ -264,22 +261,10 @@ public void testConcWorkflow() throws InterruptedException { private static HikariDataSource dataSource; - @BeforeAll - static void onetimeSetup() throws Exception { - dbosConfig = - DBOSConfig.defaultsFromEnv("systemdbtest") - .withDatabaseUrl("jdbc:postgresql://localhost:5432/dbos_java_sys"); - dataSource = SystemDatabase.createDataSource(dbosConfig); - } - - @AfterAll - static void onetimeShutdown() throws Exception { - dataSource.close(); - } - @BeforeEach void beforeEachTest() throws SQLException { DBUtils.recreateDB(dbosConfig); + dataSource = SystemDatabase.createDataSource(dbosConfig); DBOSTestAccess.reinitialize(dbosConfig); execImpl = new TryConcExec(); @@ -303,6 +288,7 @@ void beforeEachTest() throws SQLException { @AfterEach void afterEachTest() throws Exception { + dataSource.close(); DBOS.shutdown(); } diff --git a/transact/src/test/java/dev/dbos/transact/invocation/CustomSchemaTest.java b/transact/src/test/java/dev/dbos/transact/invocation/CustomSchemaTest.java index 01b1419b..6bb00f45 100644 --- a/transact/src/test/java/dev/dbos/transact/invocation/CustomSchemaTest.java +++ b/transact/src/test/java/dev/dbos/transact/invocation/CustomSchemaTest.java @@ -7,7 +7,7 @@ import dev.dbos.transact.DBOS; import dev.dbos.transact.DBOSTestAccess; -import dev.dbos.transact.config.DBOSConfig; +import dev.dbos.transact.DbSetupTestBase; import dev.dbos.transact.database.SystemDatabase; import dev.dbos.transact.utils.DBUtils; @@ -18,38 +18,28 @@ import com.zaxxer.hikari.HikariDataSource; import org.junit.jupiter.api.AfterEach; -import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @org.junit.jupiter.api.Timeout(value = 2, unit = java.util.concurrent.TimeUnit.MINUTES) -public class CustomSchemaTest { - private static DBOSConfig dbosConfig; +public class CustomSchemaTest extends DbSetupTestBase { private static final String schema = "F8nny_sCHem@-n@m3"; private HawkService proxy; private HikariDataSource dataSource; private String localDate = LocalDate.now().format(DateTimeFormatter.ISO_DATE); - @BeforeAll - static void onetimeSetup() throws Exception { - - dbosConfig = - DBOSConfig.defaultsFromEnv("systemdbtest") - .withDatabaseUrl("jdbc:postgresql://localhost:5432/dbos_java_sys") - .withDatabaseSchema(schema); - } - @BeforeEach void beforeEachTest() throws SQLException { - DBUtils.recreateDB(dbosConfig); - DBOSTestAccess.reinitialize(dbosConfig); + var config = dbosConfig.withDatabaseSchema(schema); + DBUtils.recreateDB(config); + DBOSTestAccess.reinitialize(config); var impl = new HawkServiceImpl(); proxy = DBOS.registerWorkflows(HawkService.class, impl); impl.setProxy(proxy); DBOS.launch(); - dataSource = SystemDatabase.createDataSource(dbosConfig); + dataSource = SystemDatabase.createDataSource(config); } @AfterEach diff --git a/transact/src/test/java/dev/dbos/transact/invocation/DirectInvocationTest.java b/transact/src/test/java/dev/dbos/transact/invocation/DirectInvocationTest.java index 7d6bd191..952b836e 100644 --- a/transact/src/test/java/dev/dbos/transact/invocation/DirectInvocationTest.java +++ b/transact/src/test/java/dev/dbos/transact/invocation/DirectInvocationTest.java @@ -8,7 +8,7 @@ import dev.dbos.transact.DBOS; import dev.dbos.transact.DBOSTestAccess; -import dev.dbos.transact.config.DBOSConfig; +import dev.dbos.transact.DbSetupTestBase; import dev.dbos.transact.context.WorkflowOptions; import dev.dbos.transact.database.SystemDatabase; import dev.dbos.transact.exceptions.DBOSAwaitedWorkflowCancelledException; @@ -24,25 +24,15 @@ import com.zaxxer.hikari.HikariDataSource; import org.junit.jupiter.api.AfterEach; -import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @org.junit.jupiter.api.Timeout(value = 2, unit = java.util.concurrent.TimeUnit.MINUTES) -public class DirectInvocationTest { - private static DBOSConfig dbosConfig; +public class DirectInvocationTest extends DbSetupTestBase { private HawkService proxy; private HikariDataSource dataSource; private String localDate = LocalDate.now().format(DateTimeFormatter.ISO_DATE); - @BeforeAll - static void onetimeSetup() throws Exception { - - dbosConfig = - DBOSConfig.defaultsFromEnv("systemdbtest") - .withDatabaseUrl("jdbc:postgresql://localhost:5432/dbos_java_sys"); - } - @BeforeEach void beforeEachTest() throws SQLException { DBUtils.recreateDB(dbosConfig); diff --git a/transact/src/test/java/dev/dbos/transact/invocation/InstanceTest.java b/transact/src/test/java/dev/dbos/transact/invocation/InstanceTest.java index 9bbb3941..0ac1736f 100644 --- a/transact/src/test/java/dev/dbos/transact/invocation/InstanceTest.java +++ b/transact/src/test/java/dev/dbos/transact/invocation/InstanceTest.java @@ -7,7 +7,7 @@ import static org.junit.jupiter.api.Assertions.assertThrows; import dev.dbos.transact.DBOS; -import dev.dbos.transact.config.DBOSConfig; +import dev.dbos.transact.DbSetupTestBase; import dev.dbos.transact.context.WorkflowOptions; import dev.dbos.transact.database.SystemDatabase; import dev.dbos.transact.exceptions.DBOSAwaitedWorkflowCancelledException; @@ -25,7 +25,6 @@ import com.zaxxer.hikari.HikariDataSource; import org.junit.jupiter.api.AfterEach; -import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -112,21 +111,12 @@ public String illegalWorkflow() { } @org.junit.jupiter.api.Timeout(value = 2, unit = java.util.concurrent.TimeUnit.MINUTES) -public class InstanceTest { - private static DBOSConfig dbosConfig; +public class InstanceTest extends DbSetupTestBase { private DBOS.Instance dbos; private HawkService proxy; private HikariDataSource dataSource; private String localDate = LocalDate.now().format(DateTimeFormatter.ISO_DATE); - @BeforeAll - static void onetimeSetup() throws Exception { - - dbosConfig = - DBOSConfig.defaultsFromEnv("systemdbtest") - .withDatabaseUrl("jdbc:postgresql://localhost:5432/dbos_java_sys"); - } - @BeforeEach void beforeEachTest() throws SQLException { DBUtils.recreateDB(dbosConfig); diff --git a/transact/src/test/java/dev/dbos/transact/invocation/MultiClassInstanceTest.java b/transact/src/test/java/dev/dbos/transact/invocation/MultiClassInstanceTest.java index e8a1523f..1c5573dc 100644 --- a/transact/src/test/java/dev/dbos/transact/invocation/MultiClassInstanceTest.java +++ b/transact/src/test/java/dev/dbos/transact/invocation/MultiClassInstanceTest.java @@ -5,7 +5,7 @@ import dev.dbos.transact.DBOS; import dev.dbos.transact.DBOSClient; import dev.dbos.transact.DBOSTestAccess; -import dev.dbos.transact.config.DBOSConfig; +import dev.dbos.transact.DbSetupTestBase; import dev.dbos.transact.database.SystemDatabase; import dev.dbos.transact.utils.DBUtils; import dev.dbos.transact.workflow.ListWorkflowsInput; @@ -19,13 +19,11 @@ import java.time.format.DateTimeFormatter; import org.junit.jupiter.api.AfterEach; -import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @org.junit.jupiter.api.Timeout(value = 2, unit = java.util.concurrent.TimeUnit.MINUTES) -public class MultiClassInstanceTest { - private static DBOSConfig dbosConfig; +public class MultiClassInstanceTest extends DbSetupTestBase { HawkServiceImpl himpl; BearServiceImpl bimpla; BearServiceImpl bimpl1; @@ -34,13 +32,6 @@ public class MultiClassInstanceTest { private BearService bproxy1; private String localDate = LocalDate.now().format(DateTimeFormatter.ISO_DATE); - @BeforeAll - static void onetimeSetup() throws Exception { - dbosConfig = - DBOSConfig.defaultsFromEnv("systemdbtest") - .withDatabaseUrl("jdbc:postgresql://localhost:5432/dbos_java_sys"); - } - @BeforeEach void beforeEachTest() throws SQLException { DBUtils.recreateDB(dbosConfig); @@ -159,13 +150,9 @@ void startWorkflow() throws Exception { assertEquals(1, browsjust1.size()); } - private static final String dbUrl = "jdbc:postgresql://localhost:5432/dbos_java_sys"; - private static final String dbUser = "postgres"; - private static final String dbPassword = System.getenv("PGPASSWORD"); - @Test public void enqueueForSpecificInstance() throws Exception { - try (var client = new DBOSClient(dbUrl, dbUser, dbPassword)) { + try (var client = getDBOSClient()) { var options = new DBOSClient.EnqueueOptions( "dev.dbos.transact.invocation.BearServiceImpl", "stepWorkflow", "testQueue") diff --git a/transact/src/test/java/dev/dbos/transact/invocation/MultiDbosInstanceTest.java b/transact/src/test/java/dev/dbos/transact/invocation/MultiDbosInstanceTest.java index f1cdfacd..6a0bebed 100644 --- a/transact/src/test/java/dev/dbos/transact/invocation/MultiDbosInstanceTest.java +++ b/transact/src/test/java/dev/dbos/transact/invocation/MultiDbosInstanceTest.java @@ -4,6 +4,7 @@ import static org.junit.jupiter.api.Assertions.assertThrows; import dev.dbos.transact.DBOS; +import dev.dbos.transact.DbSetupTestBase; import dev.dbos.transact.StartWorkflowOptions; import dev.dbos.transact.config.DBOSConfig; import dev.dbos.transact.context.WorkflowOptions; @@ -16,7 +17,6 @@ import java.util.UUID; import org.junit.jupiter.api.AfterEach; -import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -39,7 +39,7 @@ public String testWorkflow(String name) { } @org.junit.jupiter.api.Timeout(value = 2, unit = java.util.concurrent.TimeUnit.MINUTES) -public class MultiDbosInstanceTest { +public class MultiDbosInstanceTest extends DbSetupTestBase { private static DBOSConfig dbosConfigA; private DBOS.Instance dbosA; @@ -53,18 +53,14 @@ public class MultiDbosInstanceTest { private TestService proxyB; private Queue queueB; - @BeforeAll - static void onetimeSetup() throws Exception { - dbosConfigA = - DBOSConfig.defaultsFromEnv("MultiDbosInstanceTestA") - .withDatabaseUrl("jdbc:postgresql://localhost:5432/dbos_java_multi_a"); - dbosConfigB = - DBOSConfig.defaultsFromEnv("MultiDbosInstanceTestB") - .withDatabaseUrl("jdbc:postgresql://localhost:5432/dbos_java_multi_b"); - } - @BeforeEach void beforeEachTest() throws Exception { + dbosConfigA = + createConfigFromEnv("MultiDbosInstanceTestA") + .withDatabaseUrl(getJdbcUrl("dbos_java_multi_a")); + dbosConfigB = + createConfigFromEnv("MultiDbosInstanceTestB") + .withDatabaseUrl(getJdbcUrl("dbos_java_multi_b")); DBUtils.recreateDB(dbosConfigA); dbosA = new DBOS.Instance(dbosConfigA); implA = new TestServiceImpl(dbosA); diff --git a/transact/src/test/java/dev/dbos/transact/invocation/PatchTest.java b/transact/src/test/java/dev/dbos/transact/invocation/PatchTest.java index dabd470d..3d94fec1 100644 --- a/transact/src/test/java/dev/dbos/transact/invocation/PatchTest.java +++ b/transact/src/test/java/dev/dbos/transact/invocation/PatchTest.java @@ -5,8 +5,8 @@ import dev.dbos.transact.DBOS; import dev.dbos.transact.DBOSTestAccess; +import dev.dbos.transact.DbSetupTestBase; import dev.dbos.transact.StartWorkflowOptions; -import dev.dbos.transact.config.DBOSConfig; import dev.dbos.transact.database.SystemDatabase; import dev.dbos.transact.exceptions.DBOSUnexpectedStepException; import dev.dbos.transact.utils.DBUtils; @@ -99,7 +99,7 @@ public int workflowB() { } @org.junit.jupiter.api.Timeout(value = 2, unit = java.util.concurrent.TimeUnit.MINUTES) -public class PatchTest { +public class PatchTest extends DbSetupTestBase { @AfterEach void afterEachTest() throws Exception { @@ -117,10 +117,7 @@ public void testPatch() throws Exception { // have the same workflow name across deployed versions. var dbosConfig = - DBOSConfig.defaultsFromEnv("systemdbtest") - .withDatabaseUrl("jdbc:postgresql://localhost:5432/dbos_java_sys") - .withEnablePatching() - .withAppVersion("test-version"); + createConfigFromEnv("systemdbtest").withEnablePatching().withAppVersion("test-version"); try (var dataSource = SystemDatabase.createDataSource(dbosConfig)) { @@ -258,10 +255,7 @@ public void testPatch() throws Exception { @Test public void patchThrowsNotConfigured() throws Exception { - var dbosConfig = - DBOSConfig.defaultsFromEnv("systemdbtest") - .withDatabaseUrl("jdbc:postgresql://localhost:5432/dbos_java_sys") - .withAppVersion("test-version"); + var dbosConfig = createConfigFromEnv("systemdbtest").withAppVersion("test-version"); DBUtils.recreateDB(dbosConfig); DBOSTestAccess.reinitialize(dbosConfig); @@ -274,10 +268,7 @@ public void patchThrowsNotConfigured() throws Exception { @Test public void deprecatePatchThrowsNotConfigured() throws Exception { - var dbosConfig = - DBOSConfig.defaultsFromEnv("systemdbtest") - .withDatabaseUrl("jdbc:postgresql://localhost:5432/dbos_java_sys") - .withAppVersion("test-version"); + var dbosConfig = createConfigFromEnv("systemdbtest").withAppVersion("test-version"); DBUtils.recreateDB(dbosConfig); DBOSTestAccess.reinitialize(dbosConfig); @@ -290,10 +281,7 @@ public void deprecatePatchThrowsNotConfigured() throws Exception { @Test public void mulipleDefinitions() throws Exception { - var dbosConfig = - DBOSConfig.defaultsFromEnv("systemdbtest") - .withDatabaseUrl("jdbc:postgresql://localhost:5432/dbos_java_sys") - .withAppVersion("test-version"); + var dbosConfig = createConfigFromEnv("systemdbtest").withAppVersion("test-version"); DBUtils.recreateDB(dbosConfig); DBOSTestAccess.reinitialize(dbosConfig); diff --git a/transact/src/test/java/dev/dbos/transact/invocation/StartWorkflowTest.java b/transact/src/test/java/dev/dbos/transact/invocation/StartWorkflowTest.java index 6c79ec92..6cd91cc3 100644 --- a/transact/src/test/java/dev/dbos/transact/invocation/StartWorkflowTest.java +++ b/transact/src/test/java/dev/dbos/transact/invocation/StartWorkflowTest.java @@ -7,8 +7,8 @@ import dev.dbos.transact.DBOS; import dev.dbos.transact.DBOSTestAccess; +import dev.dbos.transact.DbSetupTestBase; import dev.dbos.transact.StartWorkflowOptions; -import dev.dbos.transact.config.DBOSConfig; import dev.dbos.transact.utils.DBUtils; import dev.dbos.transact.workflow.Queue; @@ -20,23 +20,14 @@ import java.util.concurrent.TimeUnit; import org.junit.jupiter.api.AfterEach; -import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @org.junit.jupiter.api.Timeout(value = 2, unit = java.util.concurrent.TimeUnit.MINUTES) -public class StartWorkflowTest { - private static DBOSConfig dbosConfig; +public class StartWorkflowTest extends DbSetupTestBase { private HawkService proxy; private String localDate = LocalDate.now().format(DateTimeFormatter.ISO_DATE); - @BeforeAll - static void onetimeSetup() throws Exception { - dbosConfig = - DBOSConfig.defaultsFromEnv("systemdbtest") - .withDatabaseUrl("jdbc:postgresql://localhost:5432/dbos_java_sys"); - } - @BeforeEach void beforeEachTest() throws SQLException { DBUtils.recreateDB(dbosConfig); diff --git a/transact/src/test/java/dev/dbos/transact/issues/Issue218.java b/transact/src/test/java/dev/dbos/transact/issues/Issue218.java index 86b3a555..80a2b1c6 100644 --- a/transact/src/test/java/dev/dbos/transact/issues/Issue218.java +++ b/transact/src/test/java/dev/dbos/transact/issues/Issue218.java @@ -8,8 +8,8 @@ import dev.dbos.transact.DBOS; import dev.dbos.transact.DBOSTestAccess; +import dev.dbos.transact.DbSetupTestBase; import dev.dbos.transact.StartWorkflowOptions; -import dev.dbos.transact.config.DBOSConfig; import dev.dbos.transact.database.SystemDatabase; import dev.dbos.transact.utils.DBUtils; import dev.dbos.transact.workflow.Queue; @@ -22,7 +22,6 @@ import com.zaxxer.hikari.HikariDataSource; import org.junit.jupiter.api.AfterEach; -import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -79,17 +78,9 @@ public void parentParallel() throws Exception { } @org.junit.jupiter.api.Timeout(value = 2, unit = java.util.concurrent.TimeUnit.MINUTES) -public class Issue218 { - private static DBOSConfig dbosConfig; +public class Issue218 extends DbSetupTestBase { private HikariDataSource dataSource; - @BeforeAll - static void onetimeSetup() throws Exception { - dbosConfig = - DBOSConfig.defaultsFromEnv("systemdbtest") - .withDatabaseUrl("jdbc:postgresql://localhost:5432/dbos_java_sys"); - } - @BeforeEach void beforeEachTest() throws SQLException { DBUtils.recreateDB(dbosConfig); diff --git a/transact/src/test/java/dev/dbos/transact/json/InteropTest.java b/transact/src/test/java/dev/dbos/transact/json/InteropTest.java index cad83203..91a56a86 100644 --- a/transact/src/test/java/dev/dbos/transact/json/InteropTest.java +++ b/transact/src/test/java/dev/dbos/transact/json/InteropTest.java @@ -5,7 +5,7 @@ import dev.dbos.transact.DBOS; import dev.dbos.transact.DBOSClient; import dev.dbos.transact.DBOSTestAccess; -import dev.dbos.transact.config.DBOSConfig; +import dev.dbos.transact.DbSetupTestBase; import dev.dbos.transact.database.SystemDatabase; import dev.dbos.transact.utils.DBUtils; import dev.dbos.transact.workflow.Queue; @@ -22,7 +22,6 @@ import com.fasterxml.jackson.databind.ObjectMapper; import com.zaxxer.hikari.HikariDataSource; import org.junit.jupiter.api.AfterEach; -import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -45,11 +44,10 @@ * */ @org.junit.jupiter.api.Timeout(value = 2, unit = java.util.concurrent.TimeUnit.MINUTES) -public class InteropTest { +public class InteropTest extends DbSetupTestBase { private static final ObjectMapper mapper = new ObjectMapper(); - private static DBOSConfig dbosConfig; private HikariDataSource dataSource; // ============================================================================ @@ -100,18 +98,12 @@ public class InteropTest { // Golden event value JSON static final String GOLDEN_EVENT_JSON = "{\"flag\":true,\"num\":42,\"text\":\"hello-interop\"}"; - @BeforeAll - static void onetimeSetup() throws Exception { - InteropTest.dbosConfig = - DBOSConfig.defaultsFromEnv("interoptest") - .withDatabaseUrl("jdbc:postgresql://localhost:5432/dbos_java_sys"); - } - @BeforeEach void beforeEachTest() throws Exception { - DBUtils.recreateDB(dbosConfig); - dataSource = SystemDatabase.createDataSource(dbosConfig); - DBOSTestAccess.reinitialize(dbosConfig); + var config = createConfigFromEnv("interoptest"); + DBUtils.recreateDB(config); + dataSource = SystemDatabase.createDataSource(config); + DBOSTestAccess.reinitialize(config); } @AfterEach diff --git a/transact/src/test/java/dev/dbos/transact/json/PortableSerializationTest.java b/transact/src/test/java/dev/dbos/transact/json/PortableSerializationTest.java index cec13a17..aa795033 100644 --- a/transact/src/test/java/dev/dbos/transact/json/PortableSerializationTest.java +++ b/transact/src/test/java/dev/dbos/transact/json/PortableSerializationTest.java @@ -5,8 +5,8 @@ import dev.dbos.transact.DBOS; import dev.dbos.transact.DBOSClient; import dev.dbos.transact.DBOSTestAccess; +import dev.dbos.transact.DbSetupTestBase; import dev.dbos.transact.StartWorkflowOptions; -import dev.dbos.transact.config.DBOSConfig; import dev.dbos.transact.database.SystemDatabase; import dev.dbos.transact.utils.DBUtils; import dev.dbos.transact.utils.WorkflowStatusRow; @@ -31,7 +31,6 @@ import com.fasterxml.jackson.databind.ObjectMapper; import com.zaxxer.hikari.HikariDataSource; import org.junit.jupiter.api.AfterEach; -import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -41,23 +40,15 @@ * initiation. */ @org.junit.jupiter.api.Timeout(value = 2, unit = java.util.concurrent.TimeUnit.MINUTES) -public class PortableSerializationTest { - - private static DBOSConfig dbosConfig; +public class PortableSerializationTest extends DbSetupTestBase { private HikariDataSource dataSource; - @BeforeAll - static void onetimeSetup() throws Exception { - PortableSerializationTest.dbosConfig = - DBOSConfig.defaultsFromEnv("portablesertest") - .withDatabaseUrl("jdbc:postgresql://localhost:5432/dbos_java_sys"); - } - @BeforeEach void beforeEachTest() throws SQLException { - DBUtils.recreateDB(dbosConfig); - dataSource = SystemDatabase.createDataSource(dbosConfig); - DBOSTestAccess.reinitialize(dbosConfig); + var config = createConfigFromEnv("portablesertest"); + DBUtils.recreateDB(config); + dataSource = SystemDatabase.createDataSource(config); + DBOSTestAccess.reinitialize(config); } @AfterEach diff --git a/transact/src/test/java/dev/dbos/transact/migrations/MigrationManagerTest.java b/transact/src/test/java/dev/dbos/transact/migrations/MigrationManagerTest.java index 211f68f5..8f8ec08a 100644 --- a/transact/src/test/java/dev/dbos/transact/migrations/MigrationManagerTest.java +++ b/transact/src/test/java/dev/dbos/transact/migrations/MigrationManagerTest.java @@ -7,6 +7,7 @@ import static org.junit.jupiter.api.Assertions.assertTrue; import dev.dbos.transact.Constants; +import dev.dbos.transact.DbSetupTestBase; import dev.dbos.transact.config.DBOSConfig; import dev.dbos.transact.database.SystemDatabase; import dev.dbos.transact.utils.DBUtils; @@ -25,7 +26,7 @@ import org.junit.jupiter.params.provider.ValueSource; @org.junit.jupiter.api.Timeout(value = 2, unit = java.util.concurrent.TimeUnit.MINUTES) -class MigrationManagerTest { +class MigrationManagerTest extends DbSetupTestBase { // Expected tables after migrations static final String[] EXPECTED_TABLES = { @@ -52,8 +53,7 @@ class MigrationManagerTest { void setup() throws Exception { dbosConfig = - DBOSConfig.defaultsFromEnv("migrationtest") - .withDatabaseUrl("jdbc:postgresql://localhost:5432/dbos_java_sys_mm_test"); + createConfigFromEnv("migrationtest").withDatabaseUrl(getJdbcUrl("dbos_java_sys_mm_test")); DBUtils.recreateDB(dbosConfig); dataSource = SystemDatabase.createDataSource(dbosConfig); @@ -212,11 +212,11 @@ void testWayFutureVersion() throws Exception { @Test public void extractDbAndPostgresUrl() { - var originalUrl = "jdbc:postgresql://localhost:5432/dbos_java_sys?user=alice&ssl=true"; + var originalUrl = getJdbcUrl("dbos_java_sys") + "?user=alice&ssl=true"; var pair = MigrationManager.extractDbAndPostgresUrl(originalUrl); assertEquals("dbos_java_sys", pair.database()); - assertEquals("jdbc:postgresql://localhost:5432/postgres?user=alice&ssl=true", pair.url()); + assertEquals(getJdbcUrl("postgres") + "?user=alice&ssl=true", pair.url()); } @Test diff --git a/transact/src/test/java/dev/dbos/transact/notifications/EventsTest.java b/transact/src/test/java/dev/dbos/transact/notifications/EventsTest.java index e0743932..6307ba89 100644 --- a/transact/src/test/java/dev/dbos/transact/notifications/EventsTest.java +++ b/transact/src/test/java/dev/dbos/transact/notifications/EventsTest.java @@ -7,10 +7,9 @@ import dev.dbos.transact.DBOS; import dev.dbos.transact.DBOSTestAccess; +import dev.dbos.transact.DbSetupTestBase; import dev.dbos.transact.StartWorkflowOptions; -import dev.dbos.transact.config.DBOSConfig; import dev.dbos.transact.context.WorkflowOptions; -import dev.dbos.transact.database.SystemDatabase; import dev.dbos.transact.utils.DBUtils; import dev.dbos.transact.workflow.StepInfo; import dev.dbos.transact.workflow.Workflow; @@ -26,7 +25,6 @@ import java.util.concurrent.Future; import java.util.concurrent.TimeUnit; -import com.zaxxer.hikari.HikariDataSource; import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeAll; @@ -155,20 +153,14 @@ public void resetLatches() { } @org.junit.jupiter.api.Timeout(value = 2, unit = java.util.concurrent.TimeUnit.MINUTES) -public class EventsTest { - - private static DBOSConfig dbosConfig; - private static HikariDataSource dataSource; +public class EventsTest extends DbSetupTestBase { private EventsService proxy; private EventsServiceImpl impl; @BeforeAll - static void onetimeSetup() throws Exception { - EventsTest.dbosConfig = - DBOSConfig.defaultsFromEnv("systemdbtest") - .withDatabaseUrl("jdbc:postgresql://localhost:5432/dbos_java_sys"); - dataSource = SystemDatabase.createDataSource(dbosConfig); + protected static void onetimeSetup() throws Exception { + dataSource = DbSetupTestBase.dataSource; } @AfterAll diff --git a/transact/src/test/java/dev/dbos/transact/notifications/NotificationServiceTest.java b/transact/src/test/java/dev/dbos/transact/notifications/NotificationServiceTest.java index ef00f5d1..a5648a5b 100644 --- a/transact/src/test/java/dev/dbos/transact/notifications/NotificationServiceTest.java +++ b/transact/src/test/java/dev/dbos/transact/notifications/NotificationServiceTest.java @@ -4,8 +4,8 @@ import dev.dbos.transact.DBOS; import dev.dbos.transact.DBOSTestAccess; +import dev.dbos.transact.DbSetupTestBase; import dev.dbos.transact.StartWorkflowOptions; -import dev.dbos.transact.config.DBOSConfig; import dev.dbos.transact.context.WorkflowOptions; import dev.dbos.transact.utils.DBUtils; import dev.dbos.transact.workflow.*; @@ -21,7 +21,6 @@ import java.util.concurrent.TimeUnit; import org.junit.jupiter.api.AfterEach; -import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -138,17 +137,7 @@ public void sendFromStep(String destination, String msg, String idempotencyKey) } @org.junit.jupiter.api.Timeout(value = 2, unit = java.util.concurrent.TimeUnit.MINUTES) -class NotificationServiceTest { - - private static DBOSConfig dbosConfig; - - @BeforeAll - static void onetimeSetup() throws Exception { - - NotificationServiceTest.dbosConfig = - DBOSConfig.defaultsFromEnv("systemdbtest") - .withDatabaseUrl("jdbc:postgresql://localhost:5432/dbos_java_sys"); - } +class NotificationServiceTest extends DbSetupTestBase { @BeforeEach void beforeEachTest() throws SQLException { diff --git a/transact/src/test/java/dev/dbos/transact/queue/PartitionedQueuesTest.java b/transact/src/test/java/dev/dbos/transact/queue/PartitionedQueuesTest.java index 0e19af77..44f126d5 100644 --- a/transact/src/test/java/dev/dbos/transact/queue/PartitionedQueuesTest.java +++ b/transact/src/test/java/dev/dbos/transact/queue/PartitionedQueuesTest.java @@ -8,8 +8,8 @@ import dev.dbos.transact.DBOS; import dev.dbos.transact.DBOSClient; import dev.dbos.transact.DBOSTestAccess; +import dev.dbos.transact.DbSetupTestBase; import dev.dbos.transact.StartWorkflowOptions; -import dev.dbos.transact.config.DBOSConfig; import dev.dbos.transact.database.SystemDatabase; import dev.dbos.transact.utils.DBUtils; import dev.dbos.transact.workflow.Queue; @@ -23,7 +23,6 @@ import javax.sql.DataSource; import org.junit.jupiter.api.AfterEach; -import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -81,17 +80,8 @@ public String normalWorkflow() { } @org.junit.jupiter.api.Timeout(value = 2, unit = java.util.concurrent.TimeUnit.MINUTES) -public class PartitionedQueuesTest { - private static DBOSConfig dbosConfig; +public class PartitionedQueuesTest extends DbSetupTestBase { private static DataSource dataSource; - private static final String dbUrl = "jdbc:postgresql://localhost:5432/dbos_java_sys"; - private static final String dbUser = "postgres"; - private static final String dbPassword = System.getenv("PGPASSWORD"); - - @BeforeAll - static void onetimeSetup() throws Exception { - dbosConfig = DBOSConfig.defaultsFromEnv("systemdbtest").withDatabaseUrl(dbUrl); - } @BeforeEach void beforeEachTest() throws SQLException { @@ -182,7 +172,7 @@ public void testQueuePartitions() throws Exception { assertEquals(blockedBlockedHandle.workflowId(), blockedBlockedHandle.getResult()); assertEquals(blockedNormalHandle.workflowId(), blockedNormalHandle.getResult()); - try (var client = new DBOSClient(dbUrl, dbUser, dbPassword)) { + try (var client = getDBOSClient()) { var className = "dev.dbos.transact.queue.PartitionsTestServiceImpl"; var wfName = "normalWorkflow"; var nqOptions = diff --git a/transact/src/test/java/dev/dbos/transact/queue/QueuesTest.java b/transact/src/test/java/dev/dbos/transact/queue/QueuesTest.java index 309c2262..550df6e1 100644 --- a/transact/src/test/java/dev/dbos/transact/queue/QueuesTest.java +++ b/transact/src/test/java/dev/dbos/transact/queue/QueuesTest.java @@ -8,8 +8,8 @@ import dev.dbos.transact.Constants; import dev.dbos.transact.DBOS; import dev.dbos.transact.DBOSTestAccess; +import dev.dbos.transact.DbSetupTestBase; import dev.dbos.transact.StartWorkflowOptions; -import dev.dbos.transact.config.DBOSConfig; import dev.dbos.transact.database.SystemDatabase; import dev.dbos.transact.utils.DBUtils; import dev.dbos.transact.workflow.ListWorkflowsInput; @@ -33,20 +33,12 @@ import org.slf4j.LoggerFactory; @org.junit.jupiter.api.Timeout(value = 2, unit = java.util.concurrent.TimeUnit.MINUTES) -public class QueuesTest { +public class QueuesTest extends DbSetupTestBase { private static final Logger logger = LoggerFactory.getLogger(QueuesTest.class); - private static DBOSConfig dbosConfig; private HikariDataSource dataSource; - @BeforeAll - static void onetimeSetup() throws Exception { - QueuesTest.dbosConfig = - DBOSConfig.defaultsFromEnv("systemdbtest") - .withDatabaseUrl("jdbc:postgresql://localhost:5432/dbos_java_sys"); - } - @BeforeEach void beforeEachTest() throws SQLException { DBUtils.recreateDB(dbosConfig); diff --git a/transact/src/test/java/dev/dbos/transact/scheduled/SchedulerServiceTest.java b/transact/src/test/java/dev/dbos/transact/scheduled/SchedulerServiceTest.java index 22575a96..ae44c899 100644 --- a/transact/src/test/java/dev/dbos/transact/scheduled/SchedulerServiceTest.java +++ b/transact/src/test/java/dev/dbos/transact/scheduled/SchedulerServiceTest.java @@ -5,7 +5,7 @@ import dev.dbos.transact.Constants; import dev.dbos.transact.DBOS; import dev.dbos.transact.DBOSTestAccess; -import dev.dbos.transact.config.DBOSConfig; +import dev.dbos.transact.DbSetupTestBase; import dev.dbos.transact.utils.DBUtils; import dev.dbos.transact.workflow.ListWorkflowsInput; import dev.dbos.transact.workflow.Queue; @@ -14,21 +14,11 @@ import java.time.Duration; import org.junit.jupiter.api.AfterEach; -import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @org.junit.jupiter.api.Timeout(value = 2, unit = java.util.concurrent.TimeUnit.MINUTES) -class SchedulerServiceTest { - - private static DBOSConfig dbosConfig; - - @BeforeAll - static void onetimeSetup() throws Exception { - SchedulerServiceTest.dbosConfig = - DBOSConfig.defaultsFromEnv("systemdbtest") - .withDatabaseUrl("jdbc:postgresql://localhost:5432/dbos_java_sys"); - } +class SchedulerServiceTest extends DbSetupTestBase { @BeforeEach void beforeEachTest() throws SQLException { diff --git a/transact/src/test/java/dev/dbos/transact/step/StepsTest.java b/transact/src/test/java/dev/dbos/transact/step/StepsTest.java index 347de35a..85e799f0 100644 --- a/transact/src/test/java/dev/dbos/transact/step/StepsTest.java +++ b/transact/src/test/java/dev/dbos/transact/step/StepsTest.java @@ -4,7 +4,7 @@ import dev.dbos.transact.DBOS; import dev.dbos.transact.DBOSTestAccess; -import dev.dbos.transact.config.DBOSConfig; +import dev.dbos.transact.DbSetupTestBase; import dev.dbos.transact.context.WorkflowOptions; import dev.dbos.transact.utils.DBUtils; import dev.dbos.transact.workflow.*; @@ -15,17 +15,7 @@ import org.junit.jupiter.api.*; @org.junit.jupiter.api.Timeout(value = 2, unit = java.util.concurrent.TimeUnit.MINUTES) -public class StepsTest { - - private static DBOSConfig dbosConfig; - - @BeforeAll - static void onetimeSetup() throws Exception { - - StepsTest.dbosConfig = - DBOSConfig.defaultsFromEnv("systemdbtest") - .withDatabaseUrl("jdbc:postgresql://localhost:5432/dbos_java_sys"); - } +public class StepsTest extends DbSetupTestBase { @BeforeEach void beforeEachTest() throws SQLException { diff --git a/transact/src/test/java/dev/dbos/transact/workflow/AsyncWorkflowTest.java b/transact/src/test/java/dev/dbos/transact/workflow/AsyncWorkflowTest.java index eb45713b..f89c0acb 100644 --- a/transact/src/test/java/dev/dbos/transact/workflow/AsyncWorkflowTest.java +++ b/transact/src/test/java/dev/dbos/transact/workflow/AsyncWorkflowTest.java @@ -6,8 +6,8 @@ import dev.dbos.transact.DBOS; import dev.dbos.transact.DBOSTestAccess; +import dev.dbos.transact.DbSetupTestBase; import dev.dbos.transact.StartWorkflowOptions; -import dev.dbos.transact.config.DBOSConfig; import dev.dbos.transact.context.WorkflowOptions; import dev.dbos.transact.utils.DBUtils; @@ -17,24 +17,13 @@ import org.junit.jupiter.api.*; @org.junit.jupiter.api.Timeout(value = 2, unit = java.util.concurrent.TimeUnit.MINUTES) -public class AsyncWorkflowTest { - - private static DBOSConfig dbosConfig; - - @BeforeAll - static void onetimeSetup() throws Exception { - - AsyncWorkflowTest.dbosConfig = - DBOSConfig.defaultsFromEnv("systemdbtest") - .withDatabaseUrl("jdbc:postgresql://localhost:5432/dbos_java_sys") - .withAdminServer(true); - } +public class AsyncWorkflowTest extends DbSetupTestBase { @BeforeEach void beforeEachTest() throws SQLException { - DBUtils.recreateDB(dbosConfig); - - DBOSTestAccess.reinitialize(dbosConfig); + var config = dbosConfig.withAdminServer(true); + DBUtils.recreateDB(config); + DBOSTestAccess.reinitialize(config); } @AfterEach diff --git a/transact/src/test/java/dev/dbos/transact/workflow/ForkTest.java b/transact/src/test/java/dev/dbos/transact/workflow/ForkTest.java index a25d198d..e44bb2a4 100644 --- a/transact/src/test/java/dev/dbos/transact/workflow/ForkTest.java +++ b/transact/src/test/java/dev/dbos/transact/workflow/ForkTest.java @@ -9,10 +9,9 @@ import dev.dbos.transact.DBOS; import dev.dbos.transact.DBOSTestAccess; +import dev.dbos.transact.DbSetupTestBase; import dev.dbos.transact.StartWorkflowOptions; -import dev.dbos.transact.config.DBOSConfig; import dev.dbos.transact.context.WorkflowOptions; -import dev.dbos.transact.database.SystemDatabase; import dev.dbos.transact.exceptions.DBOSNonExistentWorkflowException; import dev.dbos.transact.utils.DBUtils; @@ -22,9 +21,7 @@ import java.util.UUID; import java.util.concurrent.TimeUnit; -import com.zaxxer.hikari.HikariDataSource; import org.junit.jupiter.api.AfterEach; -import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.slf4j.Logger; @@ -168,25 +165,14 @@ public void setEventWorkflow(String key) throws InterruptedException { } @org.junit.jupiter.api.Timeout(value = 2, unit = java.util.concurrent.TimeUnit.MINUTES) -public class ForkTest { +public class ForkTest extends DbSetupTestBase { private static final Logger logger = LoggerFactory.getLogger(ForkTest.class); - private static DBOSConfig dbosConfig; - private HikariDataSource dataSource; private ForkTestServiceImpl impl; private ForkTestService proxy; - @BeforeAll - static void onetimeSetup() throws Exception { - dbosConfig = - DBOSConfig.defaultsFromEnv("systemdbtest") - .withDatabaseUrl("jdbc:postgresql://localhost:5432/dbos_java_sys"); - } - @BeforeEach void beforeEachTest() throws SQLException { - dataSource = SystemDatabase.createDataSource(dbosConfig); - DBUtils.recreateDB(dbosConfig); DBOSTestAccess.reinitialize(dbosConfig); @@ -199,7 +185,6 @@ void beforeEachTest() throws SQLException { @AfterEach void afterEachTest() throws Exception { - dataSource.close(); DBOS.shutdown(); } diff --git a/transact/src/test/java/dev/dbos/transact/workflow/GarbageCollectionTest.java b/transact/src/test/java/dev/dbos/transact/workflow/GarbageCollectionTest.java index cdaca90c..4e85ad77 100644 --- a/transact/src/test/java/dev/dbos/transact/workflow/GarbageCollectionTest.java +++ b/transact/src/test/java/dev/dbos/transact/workflow/GarbageCollectionTest.java @@ -4,7 +4,7 @@ import dev.dbos.transact.DBOS; import dev.dbos.transact.DBOSTestAccess; -import dev.dbos.transact.config.DBOSConfig; +import dev.dbos.transact.DbSetupTestBase; import dev.dbos.transact.utils.DBUtils; import java.sql.SQLException; @@ -14,7 +14,6 @@ import java.util.concurrent.CountDownLatch; import org.junit.jupiter.api.AfterEach; -import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -57,19 +56,10 @@ public String timeoutBlockedWorkflow() { } @org.junit.jupiter.api.Timeout(value = 2, unit = java.util.concurrent.TimeUnit.MINUTES) -public class GarbageCollectionTest { - - private static DBOSConfig dbosConfig; +public class GarbageCollectionTest extends DbSetupTestBase { private GCTestServiceImpl impl; private GCTestService proxy; - @BeforeAll - static void onetimeSetup() throws Exception { - dbosConfig = - DBOSConfig.defaultsFromEnv("systemdbtest") - .withDatabaseUrl("jdbc:postgresql://localhost:5432/dbos_java_sys"); - } - @BeforeEach void beforeEachTest() throws SQLException { DBUtils.recreateDB(dbosConfig); diff --git a/transact/src/test/java/dev/dbos/transact/workflow/ListWorkflowsTest.java b/transact/src/test/java/dev/dbos/transact/workflow/ListWorkflowsTest.java index 61af0f88..afb2a919 100644 --- a/transact/src/test/java/dev/dbos/transact/workflow/ListWorkflowsTest.java +++ b/transact/src/test/java/dev/dbos/transact/workflow/ListWorkflowsTest.java @@ -4,7 +4,7 @@ import dev.dbos.transact.DBOS; import dev.dbos.transact.DBOSTestAccess; -import dev.dbos.transact.config.DBOSConfig; +import dev.dbos.transact.DbSetupTestBase; import dev.dbos.transact.utils.DBUtils; import java.sql.Connection; @@ -42,9 +42,7 @@ * Status totals: SUCCESS=7, ERROR=2, CANCELLED=1 */ @org.junit.jupiter.api.Timeout(value = 2, unit = java.util.concurrent.TimeUnit.MINUTES) -public class ListWorkflowsTest { - - private static DBOSConfig dbosConfig; +public class ListWorkflowsTest extends DbSetupTestBase { /** * Fixed base epoch-ms. All {@code created_at} values are {@code baseTime + offset}, guaranteeing @@ -53,10 +51,7 @@ public class ListWorkflowsTest { private static long baseTime; @BeforeAll - static void onetimeSetup() throws Exception { - ListWorkflowsTest.dbosConfig = - DBOSConfig.defaultsFromEnv("systemdbtest") - .withDatabaseUrl("jdbc:postgresql://localhost:5432/dbos_java_sys"); + protected static void onetimeSetup() throws Exception { DBUtils.recreateDB(dbosConfig); DBOSTestAccess.reinitialize(dbosConfig); DBOS.launch(); diff --git a/transact/src/test/java/dev/dbos/transact/workflow/QueueChildWorkflowTest.java b/transact/src/test/java/dev/dbos/transact/workflow/QueueChildWorkflowTest.java index 88dcc212..8e70fd60 100644 --- a/transact/src/test/java/dev/dbos/transact/workflow/QueueChildWorkflowTest.java +++ b/transact/src/test/java/dev/dbos/transact/workflow/QueueChildWorkflowTest.java @@ -4,30 +4,19 @@ import dev.dbos.transact.DBOS; import dev.dbos.transact.DBOSTestAccess; +import dev.dbos.transact.DbSetupTestBase; import dev.dbos.transact.StartWorkflowOptions; -import dev.dbos.transact.config.DBOSConfig; import dev.dbos.transact.utils.DBUtils; import java.sql.SQLException; import java.util.List; import org.junit.jupiter.api.AfterEach; -import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @org.junit.jupiter.api.Timeout(value = 2, unit = java.util.concurrent.TimeUnit.MINUTES) -public class QueueChildWorkflowTest { - - private static DBOSConfig dbosConfig; - - @BeforeAll - static void onetimeSetup() throws Exception { - - QueueChildWorkflowTest.dbosConfig = - DBOSConfig.defaultsFromEnv("systemdbtest") - .withDatabaseUrl("jdbc:postgresql://localhost:5432/dbos_java_sys"); - } +public class QueueChildWorkflowTest extends DbSetupTestBase { @BeforeEach void beforeEachTest() throws SQLException { diff --git a/transact/src/test/java/dev/dbos/transact/workflow/SyncWorkflowTest.java b/transact/src/test/java/dev/dbos/transact/workflow/SyncWorkflowTest.java index dc267257..ce0d7e2a 100644 --- a/transact/src/test/java/dev/dbos/transact/workflow/SyncWorkflowTest.java +++ b/transact/src/test/java/dev/dbos/transact/workflow/SyncWorkflowTest.java @@ -4,7 +4,7 @@ import dev.dbos.transact.DBOS; import dev.dbos.transact.DBOSTestAccess; -import dev.dbos.transact.config.DBOSConfig; +import dev.dbos.transact.DbSetupTestBase; import dev.dbos.transact.context.WorkflowOptions; import dev.dbos.transact.utils.DBUtils; @@ -14,24 +14,13 @@ import org.junit.jupiter.api.*; @org.junit.jupiter.api.Timeout(value = 2, unit = java.util.concurrent.TimeUnit.MINUTES) -public class SyncWorkflowTest { - - private static DBOSConfig dbosConfig; - - @BeforeAll - static void onetimeSetup() throws Exception { - - SyncWorkflowTest.dbosConfig = - DBOSConfig.defaultsFromEnv("systemdbtest") - .withDatabaseUrl("jdbc:postgresql://localhost:5432/dbos_java_sys") - .withAdminServer(true); - } +public class SyncWorkflowTest extends DbSetupTestBase { @BeforeEach void beforeEachTest() throws SQLException { - DBUtils.recreateDB(dbosConfig); - - DBOSTestAccess.reinitialize(dbosConfig); + var config = dbosConfig.withAdminServer(true); + DBUtils.recreateDB(config); + DBOSTestAccess.reinitialize(config); } @AfterEach diff --git a/transact/src/test/java/dev/dbos/transact/workflow/TimeoutTest.java b/transact/src/test/java/dev/dbos/transact/workflow/TimeoutTest.java index 24fcfea6..8559309f 100644 --- a/transact/src/test/java/dev/dbos/transact/workflow/TimeoutTest.java +++ b/transact/src/test/java/dev/dbos/transact/workflow/TimeoutTest.java @@ -4,8 +4,8 @@ import dev.dbos.transact.DBOS; import dev.dbos.transact.DBOSTestAccess; +import dev.dbos.transact.DbSetupTestBase; import dev.dbos.transact.StartWorkflowOptions; -import dev.dbos.transact.config.DBOSConfig; import dev.dbos.transact.context.WorkflowOptions; import dev.dbos.transact.database.SystemDatabase; import dev.dbos.transact.exceptions.DBOSAwaitedWorkflowCancelledException; @@ -20,26 +20,16 @@ import com.zaxxer.hikari.HikariDataSource; import org.junit.jupiter.api.AfterEach; -import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @org.junit.jupiter.api.Timeout(value = 2, unit = java.util.concurrent.TimeUnit.MINUTES) -public class TimeoutTest { +public class TimeoutTest extends DbSetupTestBase { - private static DBOSConfig dbosConfig; private HikariDataSource dataSource; - @BeforeAll - static void onetimeSetup() throws Exception { - - TimeoutTest.dbosConfig = - DBOSConfig.defaultsFromEnv("systemdbtest") - .withDatabaseUrl("jdbc:postgresql://localhost:5432/dbos_java_sys"); - } - @BeforeEach void beforeEachTest() throws SQLException { DBUtils.recreateDB(dbosConfig); diff --git a/transact/src/test/java/dev/dbos/transact/workflow/UnifiedProxyTest.java b/transact/src/test/java/dev/dbos/transact/workflow/UnifiedProxyTest.java index a7d5c6f4..230a1521 100644 --- a/transact/src/test/java/dev/dbos/transact/workflow/UnifiedProxyTest.java +++ b/transact/src/test/java/dev/dbos/transact/workflow/UnifiedProxyTest.java @@ -4,8 +4,8 @@ import dev.dbos.transact.DBOS; import dev.dbos.transact.DBOSTestAccess; +import dev.dbos.transact.DbSetupTestBase; import dev.dbos.transact.StartWorkflowOptions; -import dev.dbos.transact.config.DBOSConfig; import dev.dbos.transact.context.WorkflowOptions; import dev.dbos.transact.utils.DBUtils; @@ -13,22 +13,11 @@ import java.util.List; import org.junit.jupiter.api.AfterEach; -import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @org.junit.jupiter.api.Timeout(value = 2, unit = java.util.concurrent.TimeUnit.MINUTES) -public class UnifiedProxyTest { - - private static DBOSConfig dbosConfig; - - @BeforeAll - static void onetimeSetup() throws Exception { - - UnifiedProxyTest.dbosConfig = - DBOSConfig.defaultsFromEnv("systemdbtest") - .withDatabaseUrl("jdbc:postgresql://localhost:5432/dbos_java_sys"); - } +public class UnifiedProxyTest extends DbSetupTestBase { @BeforeEach void beforeEachTest() throws SQLException { diff --git a/transact/src/test/java/dev/dbos/transact/workflow/WorkflowMgmtTest.java b/transact/src/test/java/dev/dbos/transact/workflow/WorkflowMgmtTest.java index 300382e7..3ee6345f 100644 --- a/transact/src/test/java/dev/dbos/transact/workflow/WorkflowMgmtTest.java +++ b/transact/src/test/java/dev/dbos/transact/workflow/WorkflowMgmtTest.java @@ -4,8 +4,8 @@ import dev.dbos.transact.DBOS; import dev.dbos.transact.DBOSTestAccess; +import dev.dbos.transact.DbSetupTestBase; import dev.dbos.transact.StartWorkflowOptions; -import dev.dbos.transact.config.DBOSConfig; import dev.dbos.transact.context.WorkflowOptions; import dev.dbos.transact.exceptions.DBOSAwaitedWorkflowCancelledException; import dev.dbos.transact.utils.DBUtils; @@ -17,7 +17,6 @@ import java.util.concurrent.Executors; import org.junit.jupiter.api.AfterEach; -import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.slf4j.Logger; @@ -71,24 +70,14 @@ public String helloWorkflow(String name) { } @org.junit.jupiter.api.Timeout(value = 2, unit = java.util.concurrent.TimeUnit.MINUTES) -public class WorkflowMgmtTest { +public class WorkflowMgmtTest extends DbSetupTestBase { private static final Logger logger = LoggerFactory.getLogger(WorkflowMgmtTest.class); - private static DBOSConfig dbosConfig; - private MgmtService proxy; private MgmtServiceImpl impl; private Queue myqueue; - @BeforeAll - static void onetimeSetup() throws Exception { - - WorkflowMgmtTest.dbosConfig = - DBOSConfig.defaultsFromEnv("systemdbtest") - .withDatabaseUrl("jdbc:postgresql://localhost:5432/dbos_java_sys"); - } - @BeforeEach void beforeEachTest() throws SQLException { DBUtils.recreateDB(dbosConfig);