diff --git a/transact/build.gradle.kts b/transact/build.gradle.kts index a33e6202..780f459e 100644 --- a/transact/build.gradle.kts +++ b/transact/build.gradle.kts @@ -45,6 +45,7 @@ dependencies { testImplementation("io.rest-assured:rest-assured:5.4.0") testImplementation("io.rest-assured:json-path:5.4.0") testImplementation("io.rest-assured:xml-path:5.4.0") + testImplementation("org.testcontainers:testcontainers-postgresql:2.0.3") testImplementation("org.apache.maven:maven-artifact:3.9.11") } 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..2889ec72 --- /dev/null +++ b/transact/src/test/java/dev/dbos/transact/DbSetupTestBase.java @@ -0,0 +1,38 @@ +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 + static void onetimeSetup() { + postgres.start(); + dbosConfig = + DBOSConfig.defaults("systemdbtest") + .withDatabaseUrl(postgres.getJdbcUrl()) + .withDbUser(postgres.getUsername()) + .withDbPassword(postgres.getPassword()) + .withMaximumPoolSize(2); + dataSource = SystemDatabase.createDataSource(dbosConfig); + } + + @AfterAll + static void afterAll() { + postgres.stop(); + } + + protected DBOSClient getDBOSClient() { + return new DBOSClient(postgres.getJdbcUrl(), postgres.getUsername(), postgres.getPassword()); + } +} 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 f5adc47f..bdf4cf81 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.utils.DBUtils; @@ -23,25 +23,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) - .withMaximumPoolSize(2); - } - @BeforeEach void beforeEachTest() throws SQLException { DBUtils.recreateDB(dbosConfig); @@ -106,7 +91,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( "dev.dbos.transact.client.ClientServiceImpl", "enqueueTest", "testQueue"); @@ -135,7 +120,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( "dev.dbos.transact.client.ClientServiceImpl", "enqueueTest", "testQueue") @@ -155,7 +140,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); } @@ -171,7 +156,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( "dev.dbos.transact.client.ClientServiceImpl", "sleep", "testQueue"); 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 878eac02..09ec7689 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.database.DBTestAccess; import dev.dbos.transact.internal.AppVersionComputer; import dev.dbos.transact.invocation.HawkService; @@ -35,7 +35,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(); @@ -45,13 +45,7 @@ public void configOverridesEnvAppVerAndExecutor() 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")) - .withAppVersion("test-app-version") - .withExecutorId("test-executor-id"); + var config = dbosConfig.withAppVersion("test-app-version").withExecutorId("test-executor-id"); DBOS.reinitialize(config); try { @@ -72,11 +66,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 = dbosConfig; DBOS.reinitialize(config); try { @@ -98,13 +88,7 @@ public void dbosCloudEnvOverridesConfigAppVerAndExecutor() 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")) - .withAppVersion("test-app-version") - .withExecutorId("test-executor-id"); + var config = dbosConfig.withAppVersion("test-app-version").withExecutorId("test-executor-id"); DBOS.reinitialize(config); try { @@ -120,11 +104,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 = dbosConfig; DBOS.reinitialize(config); try { @@ -139,10 +119,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 = dbosConfig.withConductorKey("test-conductor-key"); DBOS.reinitialize(config); try { @@ -159,10 +136,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") - .withConductorKey("test-conductor-key") - .withExecutorId("test-executor-id"); + dbosConfig.withConductorKey("test-conductor-key").withExecutorId("test-executor-id"); DBOS.reinitialize(config); try { @@ -193,11 +167,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 = dbosConfig; DBOS.reinitialize(config); try { @@ -218,9 +188,9 @@ public void calcAppVersion() throws Exception { public void configDataSource() 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); @@ -276,11 +246,9 @@ 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"); - DBUtils.recreateDB(dbosConfig); - DBOS.reinitialize(dbosConfig); + var config = dbosConfig; + DBUtils.recreateDB(config); + DBOS.reinitialize(config); var proxy = DBOS.registerWorkflows(ExecutorTestService.class, new ExecutorTestServiceImpl()); DBOS.launch(); 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 fac666ed..8b92d03c 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,12 @@ 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"); - DBUtils.recreateDB(dbosConfig); MigrationManager.runMigrations(dbosConfig); systemDatabase = new SystemDatabase(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 94ba21af..79175f8c 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); - DBOS.reinitialize(config); + DBUtils.recreateDB(dbosConfig); + DBOS.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 9a1062f9..85c96a63 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") - .withMaximumPoolSize(10); - } - @BeforeEach void beforeEachTest() throws SQLException { - DBUtils.recreateDB(config); - MigrationManager.runMigrations(config); - sysdb = new SystemDatabase(config); - dataSource = SystemDatabase.createDataSource(config); + DBUtils.recreateDB(dbosConfig); + MigrationManager.runMigrations(dbosConfig); + sysdb = new SystemDatabase(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 9ed46609..76ba43ba 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; @@ -19,24 +19,14 @@ 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; @org.junit.jupiter.api.Timeout(value = 2, unit = java.util.concurrent.TimeUnit.MINUTES) -class DBOSExecutorTest { +class DBOSExecutorTest extends DbSetupTestBase { - private static DBOSConfig dbosConfig; private static DataSource dataSource; - @BeforeAll - public static void onetimeBefore() { - DBOSExecutorTest.dbosConfig = - DBOSConfig.defaultsFromEnv("systemdbtest") - .withDatabaseUrl("jdbc:postgresql://localhost:5432/dbos_java_sys") - .withMaximumPoolSize(2); - } - @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 e2cf52a3..6013ef6a 100644 --- a/transact/src/test/java/dev/dbos/transact/execution/LifecycleTest.java +++ b/transact/src/test/java/dev/dbos/transact/execution/LifecycleTest.java @@ -4,30 +4,20 @@ 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; 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 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") - .withMaximumPoolSize(2); - } - @BeforeEach void beforeEachTest() throws SQLException { DBUtils.recreateDB(dbosConfig); 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 006c0f36..02f08559 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; @@ -21,16 +21,14 @@ 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; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @org.junit.jupiter.api.Timeout(value = 2, unit = java.util.concurrent.TimeUnit.MINUTES) -class RecoveryServiceTest { +class RecoveryServiceTest extends DbSetupTestBase { - private static DBOSConfig dbosConfig; private static DataSource dataSource; private Queue testQueue; private SystemDatabase systemDatabase; @@ -39,15 +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") - .withMaximumPoolSize(2); - } - @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 368fede8..3f2d58b5 100644 --- a/transact/src/test/java/dev/dbos/transact/execution/SingleExecutionTest.java +++ b/transact/src/test/java/dev/dbos/transact/execution/SingleExecutionTest.java @@ -5,9 +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; import dev.dbos.transact.workflow.Step; @@ -19,14 +18,12 @@ import java.sql.SQLTransientException; import java.util.UUID; -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 SingleExecutionTest { +public class SingleExecutionTest extends DbSetupTestBase { public static interface TryConcExecIfc { public void testConcStep() throws InterruptedException; @@ -251,7 +248,6 @@ public void testConcWorkflow() throws InterruptedException { } } - private static DBOSConfig dbosConfig; private static TryConcExec execImpl; private static TryConcExecIfc execIfc; private static CatchPlainException1 catchImpl; @@ -261,17 +257,6 @@ public void testConcWorkflow() throws InterruptedException { private static TryConcExec2 concImpl; private static TryConcExec2Ifc concIfc; - private static HikariDataSource dataSource; - - @BeforeAll - static void onetimeSetup() throws Exception { - dbosConfig = - DBOSConfig.defaultsFromEnv("systemdbtest") - .withDatabaseUrl("jdbc:postgresql://localhost:5432/dbos_java_sys") - .withMaximumPoolSize(2); - dataSource = SystemDatabase.createDataSource(dbosConfig); - } - @BeforeEach void beforeEachTest() throws SQLException { DBUtils.recreateDB(dbosConfig); 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 f7cda2b4..eaae29a1 100644 --- a/transact/src/test/java/dev/dbos/transact/invocation/CustomSchemaTest.java +++ b/transact/src/test/java/dev/dbos/transact/invocation/CustomSchemaTest.java @@ -6,7 +6,7 @@ import static org.junit.jupiter.api.Assertions.assertNull; import dev.dbos.transact.DBOS; -import dev.dbos.transact.config.DBOSConfig; +import dev.dbos.transact.DbSetupTestBase; import dev.dbos.transact.database.SystemDatabase; import dev.dbos.transact.utils.DBUtils; @@ -22,8 +22,7 @@ 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 = "C$+0m'"; private HawkService proxy; private HikariDataSource dataSource; @@ -32,11 +31,7 @@ public class CustomSchemaTest { @BeforeAll static void onetimeSetup() throws Exception { - dbosConfig = - DBOSConfig.defaultsFromEnv("systemdbtest") - .withDatabaseUrl("jdbc:postgresql://localhost:5432/dbos_java_sys") - .withDatabaseSchema(schema) - .withMaximumPoolSize(2); + dbosConfig = dbosConfig.withDatabaseSchema(schema); } @BeforeEach 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 c60f6efe..f6e38453 100644 --- a/transact/src/test/java/dev/dbos/transact/invocation/DirectInvocationTest.java +++ b/transact/src/test/java/dev/dbos/transact/invocation/DirectInvocationTest.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; @@ -23,26 +23,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") - .withMaximumPoolSize(2); - } - @BeforeEach void beforeEachTest() throws SQLException { DBUtils.recreateDB(dbosConfig); diff --git a/transact/src/test/java/dev/dbos/transact/invocation/MultiInstTest.java b/transact/src/test/java/dev/dbos/transact/invocation/MultiInstTest.java index c4c523da..8b471918 100644 --- a/transact/src/test/java/dev/dbos/transact/invocation/MultiInstTest.java +++ b/transact/src/test/java/dev/dbos/transact/invocation/MultiInstTest.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 MultiInstTest { - private static DBOSConfig dbosConfig; +public class MultiInstTest extends DbSetupTestBase { HawkServiceImpl himpl; BearServiceImpl bimpla; BearServiceImpl bimpl1; @@ -34,14 +32,6 @@ public class MultiInstTest { 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") - .withMaximumPoolSize(2); - } - @BeforeEach void beforeEachTest() throws SQLException { DBUtils.recreateDB(dbosConfig); @@ -160,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/StartWorkflowTest.java b/transact/src/test/java/dev/dbos/transact/invocation/StartWorkflowTest.java index 356f1f57..54887c97 100644 --- a/transact/src/test/java/dev/dbos/transact/invocation/StartWorkflowTest.java +++ b/transact/src/test/java/dev/dbos/transact/invocation/StartWorkflowTest.java @@ -6,8 +6,8 @@ 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.database.SystemDatabase; import dev.dbos.transact.utils.DBUtils; import dev.dbos.transact.workflow.Queue; @@ -21,26 +21,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 StartWorkflowTest { - private static DBOSConfig dbosConfig; +public class StartWorkflowTest 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") - .withMaximumPoolSize(2); - } - @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 dad677de..202e52ef 100644 --- a/transact/src/test/java/dev/dbos/transact/issues/Issue218.java +++ b/transact/src/test/java/dev/dbos/transact/issues/Issue218.java @@ -7,8 +7,8 @@ import static org.junit.jupiter.api.Assertions.assertTrue; 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.database.SystemDatabase; import dev.dbos.transact.utils.DBUtils; import dev.dbos.transact.workflow.Queue; @@ -21,7 +21,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; @@ -78,18 +77,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") - .withMaximumPoolSize(2); - } - @BeforeEach void beforeEachTest() throws SQLException { DBUtils.recreateDB(dbosConfig); diff --git a/transact/src/test/java/dev/dbos/transact/migrations/BackCompatTest.java b/transact/src/test/java/dev/dbos/transact/migrations/BackCompatTest.java index 9c2f2736..52e82f9b 100644 --- a/transact/src/test/java/dev/dbos/transact/migrations/BackCompatTest.java +++ b/transact/src/test/java/dev/dbos/transact/migrations/BackCompatTest.java @@ -3,7 +3,7 @@ import static org.junit.jupiter.api.Assertions.assertEquals; import dev.dbos.transact.DBOS; -import dev.dbos.transact.config.DBOSConfig; +import dev.dbos.transact.DbSetupTestBase; import dev.dbos.transact.database.SystemDatabase; import dev.dbos.transact.invocation.HawkService; import dev.dbos.transact.invocation.HawkServiceImpl; @@ -18,20 +18,14 @@ import org.junit.jupiter.api.Test; @org.junit.jupiter.api.Timeout(value = 2, unit = java.util.concurrent.TimeUnit.MINUTES) -public class BackCompatTest { - private DBOSConfig config; +public class BackCompatTest extends DbSetupTestBase { @BeforeEach void onetimeSetup() throws Exception { - - config = - DBOSConfig.defaultsFromEnv("systemdbtest") - .withDatabaseUrl("jdbc:postgresql://localhost:5432/dbos_java_sys") - .withMaximumPoolSize(2); - - var pair = MigrationManager.extractDbAndPostgresUrl(config.databaseUrl()); + var pair = MigrationManager.extractDbAndPostgresUrl(dbosConfig.databaseUrl()); var dropDbSql = String.format("DROP DATABASE IF EXISTS %s WITH (FORCE)", pair.database()); - try (var conn = DriverManager.getConnection(pair.url(), config.dbUser(), config.dbPassword()); + try (var conn = + DriverManager.getConnection(pair.url(), dbosConfig.dbUser(), dbosConfig.dbPassword()); var stmt = conn.createStatement()) { stmt.execute(dropDbSql); } @@ -42,7 +36,7 @@ void testInitialRun() throws Exception { runDbos(); - var dataSource = SystemDatabase.createDataSource(config); + var dataSource = SystemDatabase.createDataSource(dbosConfig); try (Connection conn = dataSource.getConnection()) { DatabaseMetaData metaData = conn.getMetaData(); @@ -57,7 +51,7 @@ void testInitialRun() throws Exception { void testWayFutureVersion() throws Exception { testInitialRun(); - var dataSource = SystemDatabase.createDataSource(config); + var dataSource = SystemDatabase.createDataSource(dbosConfig); try (var conn = dataSource.getConnection(); var stmt = conn.createStatement()) { stmt.executeUpdate("UPDATE \"dbos\".\"dbos_migrations\" SET \"version\" = 10000;"); @@ -70,7 +64,7 @@ void testWayFutureVersion() throws Exception { void testIdempotence() throws Exception { testWayFutureVersion(); - var dataSource = SystemDatabase.createDataSource(config); + var dataSource = SystemDatabase.createDataSource(dbosConfig); try (var conn = dataSource.getConnection(); var stmt = conn.createStatement()) { stmt.executeUpdate("UPDATE \"dbos\".\"dbos_migrations\" SET \"version\" = 0;"); @@ -81,7 +75,7 @@ void testIdempotence() throws Exception { void runDbos() { try { - DBOS.reinitialize(config); + DBOS.reinitialize(dbosConfig); var impl = new HawkServiceImpl(); var proxy = DBOS.registerWorkflows(HawkService.class, impl); impl.setProxy(proxy); 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 5938a813..573e202c 100644 --- a/transact/src/test/java/dev/dbos/transact/migrations/MigrationManagerTest.java +++ b/transact/src/test/java/dev/dbos/transact/migrations/MigrationManagerTest.java @@ -6,6 +6,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; @@ -24,18 +25,18 @@ import org.junit.jupiter.api.Test; @org.junit.jupiter.api.Timeout(value = 2, unit = java.util.concurrent.TimeUnit.MINUTES) -class MigrationManagerTest { +class MigrationManagerTest extends DbSetupTestBase { private DataSource testDataSource; - private DBOSConfig dbosConfig; @BeforeEach void setup() throws Exception { - dbosConfig = DBOSConfig.defaultsFromEnv("migrationtest") - .withDatabaseUrl("jdbc:postgresql://localhost:5432/dbos_java_sys_mm_test") - .withMaximumPoolSize(3); + .withDatabaseUrl(postgres.getJdbcUrl()) + .withDbUser(postgres.getUsername()) + .withDbPassword(postgres.getPassword()) + .withMaximumPoolSize(2); DBUtils.recreateDB(dbosConfig); testDataSource = SystemDatabase.createDataSource(dbosConfig); 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 de4e74f9..1794487b 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; @@ -29,7 +28,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; @@ -155,25 +153,16 @@ public void resetLatches() { } @org.junit.jupiter.api.Timeout(value = 2, unit = java.util.concurrent.TimeUnit.MINUTES) -public class EventsTest { +public class EventsTest extends DbSetupTestBase { - private static DBOSConfig dbosConfig; private static DataSource dataSource; 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") - .withMaximumPoolSize(2); - dataSource = SystemDatabase.createDataSource(dbosConfig); - } - @BeforeEach void beforeEachTest() throws SQLException { + dataSource = DbSetupTestBase.dataSource; DBUtils.recreateDB(dbosConfig); DBOS.reinitialize(dbosConfig); impl = new EventsServiceImpl(); 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 c7258e31..7906cdb6 100644 --- a/transact/src/test/java/dev/dbos/transact/notifications/NotificationServiceTest.java +++ b/transact/src/test/java/dev/dbos/transact/notifications/NotificationServiceTest.java @@ -3,8 +3,8 @@ import static org.junit.jupiter.api.Assertions.*; 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; import dev.dbos.transact.utils.DBUtils; import dev.dbos.transact.workflow.*; @@ -19,23 +19,11 @@ 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) -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") - .withMaximumPoolSize(2); - } +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 0a0cb35a..a1fc890d 100644 --- a/transact/src/test/java/dev/dbos/transact/queue/PartitionedQueuesTest.java +++ b/transact/src/test/java/dev/dbos/transact/queue/PartitionedQueuesTest.java @@ -7,9 +7,8 @@ import dev.dbos.transact.DBOS; import dev.dbos.transact.DBOSClient; +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; import dev.dbos.transact.workflow.Workflow; @@ -19,10 +18,7 @@ import java.util.UUID; import java.util.concurrent.CountDownLatch; -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; @@ -80,24 +76,11 @@ public String normalWorkflow() { } @org.junit.jupiter.api.Timeout(value = 2, unit = java.util.concurrent.TimeUnit.MINUTES) -public class PartitionedQueuesTest { - private static DBOSConfig dbosConfig; - 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).withMaximumPoolSize(2); - } +public class PartitionedQueuesTest extends DbSetupTestBase { @BeforeEach void beforeEachTest() throws SQLException { DBUtils.recreateDB(dbosConfig); - dataSource = SystemDatabase.createDataSource(dbosConfig); - DBOS.reinitialize(dbosConfig); } @@ -183,7 +166,8 @@ 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 = + new DBOSClient(postgres.getJdbcUrl(), postgres.getUsername(), postgres.getPassword())) { 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 f98a40ca..8da81799 100644 --- a/transact/src/test/java/dev/dbos/transact/queue/QueuesTest.java +++ b/transact/src/test/java/dev/dbos/transact/queue/QueuesTest.java @@ -5,11 +5,7 @@ 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.StartWorkflowOptions; -import dev.dbos.transact.config.DBOSConfig; +import dev.dbos.transact.*; import dev.dbos.transact.database.SystemDatabase; import dev.dbos.transact.utils.DBUtils; import dev.dbos.transact.workflow.ListWorkflowsInput; @@ -36,21 +32,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 static DataSource dataSource; - @BeforeAll - static void onetimeSetup() throws Exception { - QueuesTest.dbosConfig = - DBOSConfig.defaultsFromEnv("systemdbtest") - .withDatabaseUrl("jdbc:postgresql://localhost:5432/dbos_java_sys") - .withMaximumPoolSize(2); - } - @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 b40abc9d..100b4d67 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,23 +14,12 @@ 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; import org.junitpioneer.jupiter.RetryingTest; @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") - .withMaximumPoolSize(2); - } +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 d8aa3302..159ed476 100644 --- a/transact/src/test/java/dev/dbos/transact/step/StepsTest.java +++ b/transact/src/test/java/dev/dbos/transact/step/StepsTest.java @@ -3,7 +3,7 @@ import static org.junit.jupiter.api.Assertions.*; 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.utils.DBUtils; import dev.dbos.transact.workflow.*; @@ -14,18 +14,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") - .withMaximumPoolSize(2); - } +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 9f9c3b47..62cf5681 100644 --- a/transact/src/test/java/dev/dbos/transact/workflow/AsyncWorkflowTest.java +++ b/transact/src/test/java/dev/dbos/transact/workflow/AsyncWorkflowTest.java @@ -5,8 +5,8 @@ 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; import dev.dbos.transact.utils.DBUtils; @@ -16,19 +16,7 @@ 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") - .withMaximumPoolSize(2) - .withAdminServer(true); - } +public class AsyncWorkflowTest extends DbSetupTestBase { @BeforeEach void beforeEachTest() throws SQLException { 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 771e6022..919412f3 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,10 +21,7 @@ import java.util.UUID; import java.util.concurrent.TimeUnit; -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; import org.slf4j.Logger; @@ -169,23 +165,12 @@ 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 static DataSource 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") - .withMaximumPoolSize(2); - dataSource = SystemDatabase.createDataSource(dbosConfig); - } - @BeforeEach void beforeEachTest() throws SQLException { DBUtils.recreateDB(dbosConfig); 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 e30b4101..57399b5d 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,20 +56,11 @@ public String timeoutBlockedWorkflow() { } @org.junit.jupiter.api.Timeout(value = 2, unit = java.util.concurrent.TimeUnit.MINUTES) -public class GarbageCollectionTest { +public class GarbageCollectionTest extends DbSetupTestBase { - private static DBOSConfig dbosConfig; private GCTestServiceImpl impl; private GCTestService proxy; - @BeforeAll - static void onetimeSetup() throws Exception { - dbosConfig = - DBOSConfig.defaultsFromEnv("systemdbtest") - .withDatabaseUrl("jdbc:postgresql://localhost:5432/dbos_java_sys") - .withMaximumPoolSize(2); - } - @BeforeEach void beforeEachTest() throws SQLException { DBUtils.recreateDB(dbosConfig); 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 38c395b5..4473250b 100644 --- a/transact/src/test/java/dev/dbos/transact/workflow/QueueChildWorkflowTest.java +++ b/transact/src/test/java/dev/dbos/transact/workflow/QueueChildWorkflowTest.java @@ -3,31 +3,19 @@ import static org.junit.jupiter.api.Assertions.assertEquals; 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.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") - .withMaximumPoolSize(2); - } +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 ea38286c..c42f347a 100644 --- a/transact/src/test/java/dev/dbos/transact/workflow/SyncWorkflowTest.java +++ b/transact/src/test/java/dev/dbos/transact/workflow/SyncWorkflowTest.java @@ -3,7 +3,7 @@ import static org.junit.jupiter.api.Assertions.*; 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.utils.DBUtils; @@ -13,19 +13,7 @@ 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") - .withMaximumPoolSize(2) - .withAdminServer(true); - } +public class SyncWorkflowTest extends DbSetupTestBase { @BeforeEach void beforeEachTest() throws SQLException { 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 2a6cd6c0..ddd47d9e 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; @@ -19,25 +19,14 @@ 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; @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 static DataSource dataSource; - @BeforeAll - static void onetimeSetup() throws Exception { - - TimeoutTest.dbosConfig = - DBOSConfig.defaultsFromEnv("systemdbtest") - .withDatabaseUrl("jdbc:postgresql://localhost:5432/dbos_java_sys") - .withMaximumPoolSize(2); - } - @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 a4cf8d20..ef26dd30 100644 --- a/transact/src/test/java/dev/dbos/transact/workflow/UnifiedProxyTest.java +++ b/transact/src/test/java/dev/dbos/transact/workflow/UnifiedProxyTest.java @@ -3,8 +3,8 @@ import static org.junit.jupiter.api.Assertions.assertEquals; 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; import dev.dbos.transact.utils.DBUtils; @@ -12,23 +12,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") - .withMaximumPoolSize(2); - } +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 76c2b3f4..5e808c7c 100644 --- a/transact/src/test/java/dev/dbos/transact/workflow/WorkflowMgmtTest.java +++ b/transact/src/test/java/dev/dbos/transact/workflow/WorkflowMgmtTest.java @@ -3,8 +3,8 @@ import static org.junit.jupiter.api.Assertions.*; 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; import dev.dbos.transact.exceptions.DBOSAwaitedWorkflowCancelledException; import dev.dbos.transact.utils.DBUtils; @@ -16,7 +16,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; @@ -63,25 +62,14 @@ public void stepTimingWorkflow() throws InterruptedException { } @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") - .withMaximumPoolSize(2); - } - @BeforeEach void beforeEachTest() throws SQLException { DBUtils.recreateDB(dbosConfig);