From 8b9f760cb229e35e01f0da3349b427381a5d1099 Mon Sep 17 00:00:00 2001 From: rob bygrave Date: Mon, 19 Oct 2020 12:12:00 +1300 Subject: [PATCH] Update tests for DatabaseFactory.create() with shutdown --- .../EbeanServerFactory_MultiTenancy_Test.java | 19 +++--- .../config/ServerConfigSqlServerTest.java | 19 +++--- .../event/BeanPersistControllerTest.java | 4 +- .../java/io/ebean/event/BeanPostLoadTest.java | 6 +- .../deploy/BeanDescriptor_registerTest.java | 11 ++-- .../DefaultTransactionThreadLocalTest.java | 34 +++++----- .../src/test/java/org/MainMemoryLeak.java | 12 ++-- .../partition/MultiTenantPartitionTest.java | 23 ++++--- .../org/tests/changelog/TestChangeLog.java | 35 +++++------ .../java/org/tests/ddl/MainDdlWithSchema.java | 27 -------- .../TestPersistenceContextServerConfig.java | 36 +++++------ .../org/tests/readaudit/TestReadAudit.java | 36 +++++------ .../src/test/resources/ebean.properties | 2 +- .../DbMigrationDropHistoryTest.java | 14 +++-- .../dbmigration/DbMigrationGenerateTest.java | 19 +++--- .../build/ModelBuildBeanVisitorTest.java | 31 ++++----- .../build/ModelBuild_compoundKeyTest.java | 63 ++++++++++--------- .../ModelBuild_explicitSequencesTest.java | 53 +++++++++------- 18 files changed, 214 insertions(+), 230 deletions(-) delete mode 100644 ebean-core/src/test/java/org/tests/ddl/MainDdlWithSchema.java diff --git a/ebean-core/src/test/java/io/ebean/EbeanServerFactory_MultiTenancy_Test.java b/ebean-core/src/test/java/io/ebean/EbeanServerFactory_MultiTenancy_Test.java index a12db5bbb..cbf119fb2 100644 --- a/ebean-core/src/test/java/io/ebean/EbeanServerFactory_MultiTenancy_Test.java +++ b/ebean-core/src/test/java/io/ebean/EbeanServerFactory_MultiTenancy_Test.java @@ -1,7 +1,7 @@ package io.ebean; import io.ebean.config.CurrentTenantProvider; -import io.ebean.config.ServerConfig; +import io.ebean.config.DatabaseConfig; import io.ebean.config.TenantCatalogProvider; import io.ebean.config.TenantDataSourceProvider; import io.ebean.config.TenantMode; @@ -29,7 +29,7 @@ public class EbeanServerFactory_MultiTenancy_Test extends BaseTestCase { TenantDataSourceProvider dataSourceProvider = Mockito.mock(TenantDataSourceProvider.class); Mockito.doReturn(mockedDataSource).when(dataSourceProvider).dataSource(tenant); - ServerConfig config = new ServerConfig(); + DatabaseConfig config = new DatabaseConfig(); config.setName("multiTenantDb"); config.loadFromProperties(); config.setRegister(false); @@ -45,7 +45,8 @@ public class EbeanServerFactory_MultiTenancy_Test extends BaseTestCase { //config.setDdlRun(false); config.setDatabasePlatform(new PostgresPlatform()); - EbeanServerFactory.create(config); + final Database database = DatabaseFactory.create(config); + database.shutdown(); } @@ -63,9 +64,10 @@ public class EbeanServerFactory_MultiTenancy_Test extends BaseTestCase { TenantSchemaProvider schemaProvider = Mockito.mock(TenantSchemaProvider.class); Mockito.doReturn("tenant_schema").when(schemaProvider).schema(tenant); - ServerConfig config = new ServerConfig(); + DatabaseConfig config = new DatabaseConfig(); config.setName("h2"); config.loadFromProperties(); + config.setName("multi-tenancy"); config.setRegister(false); config.setDefaultServer(false); @@ -76,7 +78,8 @@ public class EbeanServerFactory_MultiTenancy_Test extends BaseTestCase { config.setDdlRun(false); config.setDatabasePlatform(new MySqlPlatform()); - EbeanServerFactory.create(config); + final Database database = DatabaseFactory.create(config); + database.shutdown(); } /** @@ -92,9 +95,10 @@ public class EbeanServerFactory_MultiTenancy_Test extends BaseTestCase { TenantCatalogProvider catalogProvider = Mockito.mock(TenantCatalogProvider.class); Mockito.doReturn("tenant_catalog").when(catalogProvider).catalog(tenant); - ServerConfig config = new ServerConfig(); + DatabaseConfig config = new DatabaseConfig(); config.setName("h2"); config.loadFromProperties(); + config.setName("multi-tenancy"); config.setRegister(false); config.setDefaultServer(false); @@ -105,6 +109,7 @@ public class EbeanServerFactory_MultiTenancy_Test extends BaseTestCase { config.setDdlRun(false); config.setDatabasePlatform(new MySqlPlatform()); - EbeanServerFactory.create(config); + final Database database = DatabaseFactory.create(config); + database.shutdown(); } } diff --git a/ebean-core/src/test/java/io/ebean/config/ServerConfigSqlServerTest.java b/ebean-core/src/test/java/io/ebean/config/ServerConfigSqlServerTest.java index 8f74deaac..4a4dd820d 100644 --- a/ebean-core/src/test/java/io/ebean/config/ServerConfigSqlServerTest.java +++ b/ebean-core/src/test/java/io/ebean/config/ServerConfigSqlServerTest.java @@ -1,8 +1,8 @@ package io.ebean.config; -import io.ebean.EbeanServer; -import io.ebean.EbeanServerFactory; +import io.ebean.Database; +import io.ebean.DatabaseFactory; import io.ebean.annotation.ForPlatform; import io.ebean.annotation.Platform; import org.junit.Ignore; @@ -26,7 +26,7 @@ public class ServerConfigSqlServerTest { // no explicit databasePlatformName set .. //props.setProperty("ebean.some_sqlserver.databasePlatformName", "sqlserver17"); - ServerConfig config = new ServerConfig(); + DatabaseConfig config = new DatabaseConfig(); config.setName("some_sqlserver"); config.loadFromProperties(props); @@ -38,9 +38,10 @@ public class ServerConfigSqlServerTest { config.setRegister(false); config.getClasses().add(EBasicVer.class); - EbeanServer sqlServer = EbeanServerFactory.create(config); + Database sqlServer = DatabaseFactory.create(config); assertThat(sqlServer).isNotNull(); + sqlServer.shutdown(); // javax.persistence.PersistenceException: java.lang.IllegalArgumentException: For SqlServer please choose the more specific sqlserver16 or sqlserver17 platform via ServerConfig.setDatabasePlatformName. Refer to issue #1340 for details // @@ -61,7 +62,7 @@ public class ServerConfigSqlServerTest { String name = "testsqlserver17"; - ServerConfig config = new ServerConfig(); + DatabaseConfig config = new DatabaseConfig(); config.setName(name); Properties props = props(name); @@ -79,9 +80,10 @@ public class ServerConfigSqlServerTest { config.loadFromProperties(props); config.getClasses().add(EBasicVer.class); - EbeanServer sqlServer = EbeanServerFactory.create(config); + Database sqlServer = DatabaseFactory.create(config); assertThat(sqlServer).isNotNull(); + sqlServer.shutdown(); } @Ignore @@ -93,7 +95,7 @@ public class ServerConfigSqlServerTest { Properties props = props(name); //props.setProperty("ebean.testsqlserver16.databasePlatformName", "sqlserver16"); - ServerConfig config = new ServerConfig(); + DatabaseConfig config = new DatabaseConfig(); config.setDefaultServer(false); config.setRegister(false); config.setDdlGenerate(true); @@ -104,9 +106,10 @@ public class ServerConfigSqlServerTest { config.loadFromProperties(props); config.getClasses().add(EBasicVer.class); - EbeanServer sqlServer = EbeanServerFactory.create(config); + Database sqlServer = DatabaseFactory.create(config); assertThat(sqlServer).isNotNull(); + sqlServer.shutdown(); } private Properties props(String dbName) { diff --git a/ebean-core/src/test/java/io/ebean/event/BeanPersistControllerTest.java b/ebean-core/src/test/java/io/ebean/event/BeanPersistControllerTest.java index f075f37c8..2d2625067 100644 --- a/ebean-core/src/test/java/io/ebean/event/BeanPersistControllerTest.java +++ b/ebean-core/src/test/java/io/ebean/event/BeanPersistControllerTest.java @@ -18,9 +18,9 @@ import static org.assertj.core.api.Assertions.assertThat; public class BeanPersistControllerTest { - private PersistAdapter continuePersistingAdapter = new PersistAdapter(true); + private final PersistAdapter continuePersistingAdapter = new PersistAdapter(true); - private PersistAdapter stopPersistingAdapter = new PersistAdapter(false); + private final PersistAdapter stopPersistingAdapter = new PersistAdapter(false); @Test public void issue_1341() { diff --git a/ebean-core/src/test/java/io/ebean/event/BeanPostLoadTest.java b/ebean-core/src/test/java/io/ebean/event/BeanPostLoadTest.java index acd604951..4b0dcde41 100644 --- a/ebean-core/src/test/java/io/ebean/event/BeanPostLoadTest.java +++ b/ebean-core/src/test/java/io/ebean/event/BeanPostLoadTest.java @@ -3,12 +3,12 @@ package io.ebean.event; import io.ebean.BaseTestCase; import io.ebean.BeanState; +import io.ebean.DB; import io.ebean.Database; import io.ebean.DatabaseFactory; -import io.ebean.Ebean; import io.ebean.config.DatabaseConfig; -import org.tests.model.basic.EBasicVer; import org.junit.Test; +import org.tests.model.basic.EBasicVer; import java.util.ArrayList; import java.util.List; @@ -91,7 +91,7 @@ public class BeanPostLoadTest extends BaseTestCase { public void postLoad(Object bean) { this.methodsCalled.add("postLoad"); this.bean = bean; - this.beanState = Ebean.getBeanState(bean); + this.beanState = DB.getBeanState(bean); } } diff --git a/ebean-core/src/test/java/io/ebeaninternal/server/deploy/BeanDescriptor_registerTest.java b/ebean-core/src/test/java/io/ebeaninternal/server/deploy/BeanDescriptor_registerTest.java index 372039a63..31721e893 100644 --- a/ebean-core/src/test/java/io/ebeaninternal/server/deploy/BeanDescriptor_registerTest.java +++ b/ebean-core/src/test/java/io/ebeaninternal/server/deploy/BeanDescriptor_registerTest.java @@ -26,10 +26,13 @@ public class BeanDescriptor_registerTest { config.getClasses().add(EBasic.class); SpiEbeanServer ebeanServer = (SpiEbeanServer)DatabaseFactory.create(config); - BeanDescriptor desc = ebeanServer.getBeanDescriptor(EBasic.class); - - persistListenerRegistrationTests(desc); - persistControllerRegistrationTests(desc); + try { + BeanDescriptor desc = ebeanServer.getBeanDescriptor(EBasic.class); + persistListenerRegistrationTests(desc); + persistControllerRegistrationTests(desc); + } finally { + ebeanServer.shutdown(); + } } private void persistControllerRegistrationTests(BeanDescriptor desc) { diff --git a/ebean-core/src/test/java/io/ebeaninternal/server/transaction/DefaultTransactionThreadLocalTest.java b/ebean-core/src/test/java/io/ebeaninternal/server/transaction/DefaultTransactionThreadLocalTest.java index 4f18a4d35..0f3da4105 100644 --- a/ebean-core/src/test/java/io/ebeaninternal/server/transaction/DefaultTransactionThreadLocalTest.java +++ b/ebean-core/src/test/java/io/ebeaninternal/server/transaction/DefaultTransactionThreadLocalTest.java @@ -105,29 +105,31 @@ public class DefaultTransactionThreadLocalTest extends BaseTestCase { @ForPlatform(Platform.H2) @Test public void usingDatabase() { - // setup Database otherDb = createOtherDatabase(); - EBasicVer bean = new EBasicVer("TestUsingDatabase"); - otherDb.save(bean); + try { + EBasicVer bean = new EBasicVer("TestUsingDatabase"); + otherDb.save(bean); - // act - final EBasicVer foundOtherDb = DB.find(EBasicVer.class) - .usingDatabase(otherDb) - .where().eq("name", "TestUsingDatabase") - .findOne(); + // act + final EBasicVer foundOtherDb = DB.find(EBasicVer.class) + .usingDatabase(otherDb) + .where().eq("name", "TestUsingDatabase") + .findOne(); - assertNotNull(foundOtherDb); - assertThat(foundOtherDb.getId()).isEqualTo(bean.getId()); + assertNotNull(foundOtherDb); + assertThat(foundOtherDb.getId()).isEqualTo(bean.getId()); - final EBasicVer foundDefaultDb = DB.find(EBasicVer.class) - .where().eq("name", "TestUsingDatabase") - .findOne(); + final EBasicVer foundDefaultDb = DB.find(EBasicVer.class) + .where().eq("name", "TestUsingDatabase") + .findOne(); - assertNull(foundDefaultDb); + assertNull(foundDefaultDb); - otherDb.delete(bean); - otherDb.shutdown(); + otherDb.delete(bean); + } finally { + otherDb.shutdown(); + } } diff --git a/ebean-core/src/test/java/org/MainMemoryLeak.java b/ebean-core/src/test/java/org/MainMemoryLeak.java index fe840df87..d3f085ef3 100644 --- a/ebean-core/src/test/java/org/MainMemoryLeak.java +++ b/ebean-core/src/test/java/org/MainMemoryLeak.java @@ -1,11 +1,11 @@ package org; -import io.ebean.EbeanServer; -import io.ebean.EbeanServerFactory; +import io.ebean.Database; +import io.ebean.DatabaseFactory; import io.ebean.Transaction; import io.ebean.annotation.Cache; +import io.ebean.config.DatabaseConfig; import io.ebean.config.PlatformNoGeneratedKeysTest; -import io.ebean.config.ServerConfig; import javax.persistence.Entity; import javax.persistence.Id; @@ -40,13 +40,13 @@ public class MainMemoryLeak { PlatformNoGeneratedKeysTest.OtherH2Platform platform = new PlatformNoGeneratedKeysTest.OtherH2Platform(); - ServerConfig config = new ServerConfig(); + DatabaseConfig config = new DatabaseConfig(); config.setDatabasePlatform(platform); config.addClass(ECachedBean.class); config.loadFromProperties(); - EbeanServer server = EbeanServerFactory.create(config); + Database server = DatabaseFactory.create(config); // create a string with 10k chars char[] c = new char[10_000]; @@ -70,6 +70,6 @@ public class MainMemoryLeak { System.out.println("Success, no mem limit detected"); txn.commit(); } - + server.shutdown(); } } diff --git a/ebean-core/src/test/java/org/multitenant/partition/MultiTenantPartitionTest.java b/ebean-core/src/test/java/org/multitenant/partition/MultiTenantPartitionTest.java index 7d74dd93e..5076ce1c1 100644 --- a/ebean-core/src/test/java/org/multitenant/partition/MultiTenantPartitionTest.java +++ b/ebean-core/src/test/java/org/multitenant/partition/MultiTenantPartitionTest.java @@ -1,11 +1,12 @@ package org.multitenant.partition; import io.ebean.BaseTestCase; -import io.ebean.EbeanServer; -import io.ebean.EbeanServerFactory; -import io.ebean.config.ServerConfig; +import io.ebean.Database; +import io.ebean.DatabaseFactory; +import io.ebean.config.DatabaseConfig; import io.ebean.config.TenantMode; import org.ebeantest.LoggedSqlCollector; +import org.junit.AfterClass; import org.junit.Test; import java.util.ArrayList; @@ -16,7 +17,7 @@ import static org.assertj.core.api.Assertions.assertThat; public class MultiTenantPartitionTest extends BaseTestCase { - private static String[] names = {"Ace", "Base", "Case", "Dae", "Eva"}; + private static final String[] names = {"Ace", "Base", "Case", "Dae", "Eva"}; static List tenants() { List tenants = new ArrayList<>(); @@ -26,12 +27,16 @@ public class MultiTenantPartitionTest extends BaseTestCase { return tenants; } - private static EbeanServer server = init(); - + private static final Database server = init(); static { server.saveAll(tenants()); } + @AfterClass + public static void shutdown() { + server.shutdown(); + } + @Test public void start() { @@ -103,9 +108,9 @@ public class MultiTenantPartitionTest extends BaseTestCase { } - private static EbeanServer init() { + private static Database init() { - ServerConfig config = new ServerConfig(); + DatabaseConfig config = new DatabaseConfig(); config.setName("h2multitenant"); config.loadFromProperties(); @@ -120,6 +125,6 @@ public class MultiTenantPartitionTest extends BaseTestCase { config.getClasses().add(MtTenant.class); config.getClasses().add(MtContent.class); - return EbeanServerFactory.create(config); + return DatabaseFactory.create(config); } } diff --git a/ebean-core/src/test/java/org/tests/changelog/TestChangeLog.java b/ebean-core/src/test/java/org/tests/changelog/TestChangeLog.java index 68f7a4505..7c1d3040c 100644 --- a/ebean-core/src/test/java/org/tests/changelog/TestChangeLog.java +++ b/ebean-core/src/test/java/org/tests/changelog/TestChangeLog.java @@ -3,9 +3,10 @@ package org.tests.changelog; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.databind.ObjectMapper; import io.ebean.BaseTestCase; -import io.ebean.EbeanServerFactory; +import io.ebean.Database; +import io.ebean.DatabaseFactory; import io.ebean.annotation.ChangeLog; -import io.ebean.config.ServerConfig; +import io.ebean.config.DatabaseConfig; import io.ebean.event.BeanPersistRequest; import io.ebean.event.changelog.BeanChange; import io.ebean.event.changelog.ChangeLogFilter; @@ -14,7 +15,6 @@ import io.ebean.event.changelog.ChangeLogPrepare; import io.ebean.event.changelog.ChangeLogRegister; import io.ebean.event.changelog.ChangeSet; import io.ebean.event.changelog.ChangeType; -import io.ebeaninternal.api.SpiEbeanServer; import org.junit.After; import org.junit.Before; import org.junit.Test; @@ -31,16 +31,16 @@ public class TestChangeLog extends BaseTestCase { TDChangeLogRegister changeLogRegister = new TDChangeLogRegister(); - SpiEbeanServer server; + Database server; @Before public void setup() { - server = getServer(); + server = createServer(); } @After public void shutdown() { - server.shutdown(true, false); + server.shutdown(); } @Test @@ -65,7 +65,7 @@ public class TestChangeLog extends BaseTestCase { assertThat(change.getEvent()).isEqualTo(ChangeType.UPDATE); assertThat(change.getOldData()).contains("\"name\":\"logBean\""); - assertThat(change.getData()) .contains("\"name\":\"ChangedName\""); + assertThat(change.getData()).contains("\"name\":\"ChangedName\""); server.delete(bean); @@ -120,31 +120,27 @@ public class TestChangeLog extends BaseTestCase { } + private Database createServer() { - private SpiEbeanServer getServer() { - - ServerConfig config = new ServerConfig(); + DatabaseConfig config = new DatabaseConfig(); config.setName("h2other"); config.loadFromProperties(); - config.setDdlGenerate(true); config.setDdlRun(true); config.setDdlExtra(false); - config.setDefaultServer(false); config.setRegister(false); config.setChangeLogAsync(false); config.addClass(EBasicChangeLog.class); - config.setChangeLogPrepare(changeLogPrepare); config.setChangeLogListener(changeLogListener); config.setChangeLogRegister(changeLogRegister); - return (SpiEbeanServer) EbeanServerFactory.create(config); + return DatabaseFactory.create(config); } - class TDChangeLogPrepare implements ChangeLogPrepare { + public static class TDChangeLogPrepare implements ChangeLogPrepare { @Override public boolean prepare(ChangeSet changes) { changes.setUserId("appUser1"); @@ -153,14 +149,12 @@ public class TestChangeLog extends BaseTestCase { } } - class TDChangeLogListener implements ChangeLogListener { + public static class TDChangeLogListener implements ChangeLogListener { ObjectMapper objectMapper = new ObjectMapper(); ChangeSet changes; - /** - */ public TDChangeLogListener() { objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL); } @@ -184,7 +178,7 @@ public class TestChangeLog extends BaseTestCase { } - class TDChangeLogRegister implements ChangeLogRegister { + public static class TDChangeLogRegister implements ChangeLogRegister { @Override public ChangeLogFilter getChangeFilter(Class beanType) { @@ -198,11 +192,10 @@ public class TestChangeLog extends BaseTestCase { } } - /** * Change log filter that includes all the inserts, updates and deletes. */ - class TDFilter implements ChangeLogFilter { + public static class TDFilter implements ChangeLogFilter { /** * Returns true including all the inserts. diff --git a/ebean-core/src/test/java/org/tests/ddl/MainDdlWithSchema.java b/ebean-core/src/test/java/org/tests/ddl/MainDdlWithSchema.java deleted file mode 100644 index 94d9aeb4a..000000000 --- a/ebean-core/src/test/java/org/tests/ddl/MainDdlWithSchema.java +++ /dev/null @@ -1,27 +0,0 @@ -package org.tests.ddl; - -import io.ebean.EbeanServer; -import io.ebean.EbeanServerFactory; -import io.ebean.config.ServerConfig; -import org.tests.model.basic.EBasic; - -public class MainDdlWithSchema { - - public static void main(String[] args) { - - ServerConfig cfg = new ServerConfig(); - cfg.setName("h2"); - cfg.loadFromProperties(); - cfg.addClass(EBasic.class); - - // .... other settings ... - //UnderscoreNamingConvention naming = new UnderscoreNamingConvention(); - //naming.setSchema("test"); - //cfg.setNamingConvention(naming); - cfg.setDdlGenerate(true); - cfg.setDdlRun(true); - EbeanServer ebean = EbeanServerFactory.create(cfg); - //ebean.createSqlUpdate("create schema foo").execute(); - System.out.println(ebean); - } -} diff --git a/ebean-core/src/test/java/org/tests/persistencecontext/TestPersistenceContextServerConfig.java b/ebean-core/src/test/java/org/tests/persistencecontext/TestPersistenceContextServerConfig.java index 608bf1317..73175fb06 100644 --- a/ebean-core/src/test/java/org/tests/persistencecontext/TestPersistenceContextServerConfig.java +++ b/ebean-core/src/test/java/org/tests/persistencecontext/TestPersistenceContextServerConfig.java @@ -1,16 +1,16 @@ package org.tests.persistencecontext; import io.ebean.BaseTestCase; -import io.ebean.EbeanServer; -import io.ebean.EbeanServerFactory; +import io.ebean.Database; +import io.ebean.DatabaseFactory; import io.ebean.PersistenceContextScope; import io.ebean.Query; import io.ebean.config.ContainerConfig; -import io.ebean.config.ServerConfig; +import io.ebean.config.DatabaseConfig; import io.ebeaninternal.api.SpiEbeanServer; import io.ebeaninternal.api.SpiQuery; -import org.tests.model.basic.EBasicVer; import org.junit.Test; +import org.tests.model.basic.EBasicVer; import java.util.Properties; @@ -20,20 +20,20 @@ public class TestPersistenceContextServerConfig extends BaseTestCase { @Test public void test_config() { - SpiEbeanServer ebeanServer = (SpiEbeanServer) create(); + try { + Query query = ebeanServer.find(EBasicVer.class); + PersistenceContextScope scope = ebeanServer.getPersistenceContextScope((SpiQuery) query); - Query query = ebeanServer.find(EBasicVer.class); - - PersistenceContextScope scope = ebeanServer.getPersistenceContextScope((SpiQuery) query); - - assertEquals(PersistenceContextScope.QUERY, scope); + assertEquals(PersistenceContextScope.QUERY, scope); + } finally { + ebeanServer.shutdown(); + } } - static EbeanServer create() { + static Database create() { - - ServerConfig config = new ServerConfig(); + DatabaseConfig config = new DatabaseConfig(); config.setName("withPCQuery"); config.setDdlExtra(false); @@ -49,15 +49,7 @@ public class TestPersistenceContextServerConfig extends BaseTestCase { config.setDefaultServer(false); config.setRegister(false); -// DataSourceConfig dataSourceConfig = new DataSourceConfig(); -// dataSourceConfig.setUsername("sa"); -// dataSourceConfig.setPassword(""); -// dataSourceConfig.setUrl("jdbc:h2:mem:withPCQuery;"); -// dataSourceConfig.setDriver("org.h2.Driver"); -// config.setDataSourceConfig(dataSourceConfig); - config.addClass(EBasicVer.class); - - return EbeanServerFactory.create(config); + return DatabaseFactory.create(config); } } diff --git a/ebean-core/src/test/java/org/tests/readaudit/TestReadAudit.java b/ebean-core/src/test/java/org/tests/readaudit/TestReadAudit.java index 764478c00..98f24353b 100644 --- a/ebean-core/src/test/java/org/tests/readaudit/TestReadAudit.java +++ b/ebean-core/src/test/java/org/tests/readaudit/TestReadAudit.java @@ -1,22 +1,22 @@ package org.tests.readaudit; import io.ebean.BaseTestCase; -import io.ebean.EbeanServerFactory; +import io.ebean.Database; +import io.ebean.DatabaseFactory; import io.ebean.FutureList; import io.ebean.cache.ServerCache; import io.ebean.cache.ServerCacheStatistics; -import io.ebean.config.ServerConfig; +import io.ebean.config.DatabaseConfig; import io.ebean.event.readaudit.ReadAuditLogger; import io.ebean.event.readaudit.ReadAuditPrepare; import io.ebean.event.readaudit.ReadAuditQueryPlan; import io.ebean.event.readaudit.ReadEvent; -import io.ebeaninternal.api.SpiEbeanServer; -import org.tests.model.basic.Country; -import org.tests.model.basic.EBasicChangeLog; import org.ebeantest.LoggedSqlCollector; import org.junit.After; import org.junit.Before; import org.junit.Test; +import org.tests.model.basic.Country; +import org.tests.model.basic.EBasicChangeLog; import java.util.ArrayList; import java.util.HashSet; @@ -30,18 +30,18 @@ import static org.assertj.core.api.Assertions.assertThat; public class TestReadAudit extends BaseTestCase { - TDReadAuditPrepare readAuditPrepare = new TDReadAuditPrepare(true); + TDReadAuditPrepare readAuditPrepare = new TDReadAuditPrepare(); - TDReadAuditLogger readAuditLogger = new TDReadAuditLogger(true); + TDReadAuditLogger readAuditLogger = new TDReadAuditLogger(); - SpiEbeanServer server; + Database server; Long id1; Long id2; @Before public void setup() { - server = getServer(); + server = createServer(); EBasicChangeLog bean = new EBasicChangeLog(); bean.setName("readAudito1"); @@ -63,7 +63,7 @@ public class TestReadAudit extends BaseTestCase { @After public void shutdown() { - server.shutdown(true, false); + server.shutdown(); } @Test @@ -304,9 +304,9 @@ public class TestReadAudit extends BaseTestCase { assertThat(readAuditLogger.many).hasSize(2); } - private SpiEbeanServer getServer() { + private Database createServer() { - ServerConfig config = new ServerConfig(); + DatabaseConfig config = new DatabaseConfig(); config.setName("h2other"); config.loadFromProperties(); @@ -323,7 +323,7 @@ public class TestReadAudit extends BaseTestCase { config.setReadAuditLogger(readAuditLogger); config.setReadAuditPrepare(readAuditPrepare); - return (SpiEbeanServer) EbeanServerFactory.create(config); + return DatabaseFactory.create(config); } private void resetCounters() { @@ -331,13 +331,10 @@ public class TestReadAudit extends BaseTestCase { readAuditPrepare.resetCounters(); } - class TDReadAuditPrepare implements ReadAuditPrepare { + static class TDReadAuditPrepare implements ReadAuditPrepare { int count; - TDReadAuditPrepare(boolean dummy) { - } - void resetCounters() { count = 0; } @@ -351,15 +348,12 @@ public class TestReadAudit extends BaseTestCase { } } - class TDReadAuditLogger implements ReadAuditLogger { + static class TDReadAuditLogger implements ReadAuditLogger { Set plans = new HashSet<>(); List beans = new ArrayList<>(); List many = new ArrayList<>(); - TDReadAuditLogger(boolean dummy) { - } - void resetCounters() { plans.clear(); beans.clear(); diff --git a/ebean-core/src/test/resources/ebean.properties b/ebean-core/src/test/resources/ebean.properties index 98df7437d..783e40eea 100644 --- a/ebean-core/src/test/resources/ebean.properties +++ b/ebean-core/src/test/resources/ebean.properties @@ -72,7 +72,7 @@ datasource.db.databaseDriver=org.h2.Driver datasource.h2.username=sa datasource.h2.password= -datasource.h2.url=jdbc:h2:mem:tests +datasource.h2.url=jdbc:h2:mem:testsMem;DB_CLOSE_ON_EXIT=FALSE #datasource.h2.driver=org.h2.Driver datasource.h2.minConnections=1 datasource.h2.maxConnections=25 diff --git a/ebean-ddlgen/src/test/java/io/ebeaninternal/dbmigration/DbMigrationDropHistoryTest.java b/ebean-ddlgen/src/test/java/io/ebeaninternal/dbmigration/DbMigrationDropHistoryTest.java index 23d034685..db91e14c9 100644 --- a/ebean-ddlgen/src/test/java/io/ebeaninternal/dbmigration/DbMigrationDropHistoryTest.java +++ b/ebean-ddlgen/src/test/java/io/ebeaninternal/dbmigration/DbMigrationDropHistoryTest.java @@ -1,8 +1,8 @@ package io.ebeaninternal.dbmigration; -import io.ebean.EbeanServer; -import io.ebean.EbeanServerFactory; -import io.ebean.config.ServerConfig; +import io.ebean.Database; +import io.ebean.DatabaseFactory; +import io.ebean.config.DatabaseConfig; import org.junit.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -42,7 +42,7 @@ public class DbMigrationDropHistoryTest { migration.setPathToResources("src/test/resources"); - ServerConfig config = new ServerConfig(); + DatabaseConfig config = new DatabaseConfig(); config.setName("migrationtest-history"); config.loadFromProperties(); config.setRegister(false); @@ -50,7 +50,7 @@ public class DbMigrationDropHistoryTest { config.setPackages(Arrays.asList("misc.migration.history.v1_0")); - EbeanServer server = EbeanServerFactory.create(config); + Database server = DatabaseFactory.create(config); migration.setServer(server); // First, we clean up the output-directory @@ -65,7 +65,8 @@ public class DbMigrationDropHistoryTest { // and now for v1_1 config.setPackages(Arrays.asList("misc.migration.history.v1_1")); - server = EbeanServerFactory.create(config); + server.shutdown(); + server = DatabaseFactory.create(config); migration.setServer(server); assertThat(migration.generateMigration()).isEqualTo("1.1"); assertThat(migration.generateMigration()).isNull(); // subsequent call @@ -82,6 +83,7 @@ public class DbMigrationDropHistoryTest { .hasMessageContaining("No 'pendingDrops'"); // subsequent call System.clearProperty("ddl.migration.pendingDropsFor"); + server.shutdown(); logger.info("end"); } diff --git a/ebean-ddlgen/src/test/java/io/ebeaninternal/dbmigration/DbMigrationGenerateTest.java b/ebean-ddlgen/src/test/java/io/ebeaninternal/dbmigration/DbMigrationGenerateTest.java index 2990dcf21..1efaacee3 100644 --- a/ebean-ddlgen/src/test/java/io/ebeaninternal/dbmigration/DbMigrationGenerateTest.java +++ b/ebean-ddlgen/src/test/java/io/ebeaninternal/dbmigration/DbMigrationGenerateTest.java @@ -1,9 +1,9 @@ package io.ebeaninternal.dbmigration; -import io.ebean.EbeanServer; -import io.ebean.EbeanServerFactory; +import io.ebean.Database; +import io.ebean.DatabaseFactory; import io.ebean.annotation.Platform; -import io.ebean.config.ServerConfig; +import io.ebean.config.DatabaseConfig; import org.junit.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -57,7 +57,7 @@ public class DbMigrationGenerateTest { migration.addPlatform(Platform.SQLSERVER17, "sqlserver17"); migration.addPlatform(Platform.HANA, "hana"); - ServerConfig config = new ServerConfig(); + DatabaseConfig config = new DatabaseConfig(); config.setName("migrationtest"); config.loadFromProperties(); config.setRegister(false); @@ -66,7 +66,7 @@ public class DbMigrationGenerateTest { config.setPackages(Arrays.asList("misc.migration.v1_0")); - EbeanServer server = EbeanServerFactory.create(config); + Database server = DatabaseFactory.create(config); migration.setServer(server); // First, we clean up the output-directory @@ -81,7 +81,8 @@ public class DbMigrationGenerateTest { // and now for v1_1 config.setPackages(Arrays.asList("misc.migration.v1_1")); - server = EbeanServerFactory.create(config); + server.shutdown(); + server = DatabaseFactory.create(config); migration.setServer(server); assertThat(migration.generateMigration()).isEqualTo("1.1"); assertThat(migration.generateMigration()).isNull(); // subsequent call @@ -100,7 +101,8 @@ public class DbMigrationGenerateTest { // and now for v1_2 with config.setPackages(Arrays.asList("misc.migration.v1_2")); - server = EbeanServerFactory.create(config); + server.shutdown(); + server = DatabaseFactory.create(config); migration.setServer(server); assertThat(migration.generateMigration()).isEqualTo("1.3"); assertThat(migration.generateMigration()).isNull(); // subsequent call @@ -108,13 +110,14 @@ public class DbMigrationGenerateTest { System.setProperty("ddl.migration.pendingDropsFor", "1.3"); assertThat(migration.generateMigration()).isEqualTo("1.4__dropsFor_1.3"); - assertThatThrownBy(()->migration.generateMigration()) + assertThatThrownBy(migration::generateMigration) .isInstanceOf(IllegalArgumentException.class) .hasMessageContaining("No 'pendingDrops'"); // subsequent call System.clearProperty("ddl.migration.pendingDropsFor"); assertThat(migration.generateMigration()).isNull(); // subsequent call + server.shutdown(); logger.info("end"); } diff --git a/ebean-ddlgen/src/test/java/io/ebeaninternal/dbmigration/model/build/ModelBuildBeanVisitorTest.java b/ebean-ddlgen/src/test/java/io/ebeaninternal/dbmigration/model/build/ModelBuildBeanVisitorTest.java index 5c19660fd..3d94d859f 100644 --- a/ebean-ddlgen/src/test/java/io/ebeaninternal/dbmigration/model/build/ModelBuildBeanVisitorTest.java +++ b/ebean-ddlgen/src/test/java/io/ebeaninternal/dbmigration/model/build/ModelBuildBeanVisitorTest.java @@ -73,27 +73,28 @@ public class ModelBuildBeanVisitorTest extends BaseTestCase { config.setDatabasePlatform(new SqlServer17Platform()); final SpiEbeanServer database = (SpiEbeanServer)DatabaseFactory.create(config); + try { + ModelBuildContext ctx = new ModelBuildContext(model, config.getDatabasePlatform(), config.getConstraintNaming(), true); + ModelBuildBeanVisitor addTable = new ModelBuildBeanVisitor(ctx); - ModelBuildContext ctx = new ModelBuildContext(model, config.getDatabasePlatform(), config.getConstraintNaming(), true); + new VisitAllUsing(addTable, database).visitAllBeans(); - ModelBuildBeanVisitor addTable = new ModelBuildBeanVisitor(ctx); + MTable parent = model.getTable("[CKeyParent]"); + assertThat(parent.getPkName()).isEqualTo("[pk_CKeyParent]"); - new VisitAllUsing(addTable, database).visitAllBeans(); + MTable detail = model.getTable("[CKeyDetail]"); + assertThat(detail.getPkName()).isEqualTo("[pk_CKeyDetail]"); - MTable parent = model.getTable("[CKeyParent]"); - assertThat(parent.getPkName()).isEqualTo("[pk_CKeyParent]"); + final List compoundKeys = detail.getCompoundKeys(); + assertThat(compoundKeys).hasSize(1); + final MCompoundForeignKey fkey = compoundKeys.get(0); + assertThat(fkey.getName()).isEqualTo("[fk_CKeyDetail_parent]"); + assertThat(fkey.getIndexName()).isEqualTo("[ix_CKeyDetail_parent]"); - MTable detail = model.getTable("[CKeyDetail]"); - assertThat(detail.getPkName()).isEqualTo("[pk_CKeyDetail]"); - - final List compoundKeys = detail.getCompoundKeys(); - assertThat(compoundKeys).hasSize(1); - final MCompoundForeignKey fkey = compoundKeys.get(0); - assertThat(fkey.getName()).isEqualTo("[fk_CKeyDetail_parent]"); - assertThat(fkey.getIndexName()).isEqualTo("[ix_CKeyDetail_parent]"); - - database.shutdown(true, false); + } finally { + database.shutdown(); + } } private void assert_compound_pk(ModelContainer model) { diff --git a/ebean-ddlgen/src/test/java/io/ebeaninternal/dbmigration/model/build/ModelBuild_compoundKeyTest.java b/ebean-ddlgen/src/test/java/io/ebeaninternal/dbmigration/model/build/ModelBuild_compoundKeyTest.java index 437d8e6ac..7db211782 100644 --- a/ebean-ddlgen/src/test/java/io/ebeaninternal/dbmigration/model/build/ModelBuild_compoundKeyTest.java +++ b/ebean-ddlgen/src/test/java/io/ebeaninternal/dbmigration/model/build/ModelBuild_compoundKeyTest.java @@ -2,20 +2,20 @@ package io.ebeaninternal.dbmigration.model.build; import io.ebean.BaseTestCase; -import io.ebean.EbeanServerFactory; -import io.ebean.config.ServerConfig; +import io.ebean.DatabaseFactory; +import io.ebean.config.DatabaseConfig; +import io.ebeaninternal.api.SpiEbeanServer; import io.ebeaninternal.dbmigration.ddlgeneration.Helper; import io.ebeaninternal.dbmigration.migration.Migration; import io.ebeaninternal.dbmigration.migrationreader.MigrationXmlReader; import io.ebeaninternal.dbmigration.model.CurrentModel; import io.ebeaninternal.dbmigration.model.MTable; import io.ebeaninternal.dbmigration.model.ModelContainer; -import io.ebeaninternal.api.SpiEbeanServer; +import org.junit.Test; import org.tests.model.basic.CKeyAssoc; import org.tests.model.basic.CKeyDetail; import org.tests.model.basic.CKeyParent; import org.tests.model.basic.CKeyParentId; -import org.junit.Test; import java.io.IOException; @@ -23,9 +23,9 @@ import static org.assertj.core.api.Assertions.assertThat; public class ModelBuild_compoundKeyTest extends BaseTestCase { - private SpiEbeanServer getServer() { + private SpiEbeanServer createServer() { - ServerConfig config = new ServerConfig(); + DatabaseConfig config = new DatabaseConfig(); config.setName("h2"); config.loadFromProperties(); config.setName("h2other"); @@ -40,46 +40,49 @@ public class ModelBuild_compoundKeyTest extends BaseTestCase { config.addClass(CKeyAssoc.class); config.addClass(CKeyParentId.class); - return (SpiEbeanServer) EbeanServerFactory.create(config); + return (SpiEbeanServer) DatabaseFactory.create(config); } @Test public void test() throws IOException { + SpiEbeanServer ebeanServer = createServer(); + try { + CurrentModel currentModel = new CurrentModel(ebeanServer); + ModelContainer model = currentModel.read(); - SpiEbeanServer ebeanServer = getServer(); + MTable parent = model.getTable("ckey_parent"); + MTable detail = model.getTable("ckey_detail"); - CurrentModel currentModel = new CurrentModel(ebeanServer); - ModelContainer model = currentModel.read(); + assertThat(parent).isNotNull(); + assertThat(detail).isNotNull(); + assertThat(parent.primaryKeyColumns()).hasSize(2); + assertThat(detail.getCompoundKeys()).hasSize(1); - MTable parent = model.getTable("ckey_parent"); - MTable detail = model.getTable("ckey_detail"); + String apply = Helper.asText(this, "/assert/ModelBuild_compoundKeyTest/apply.sql"); - assertThat(parent).isNotNull(); - assertThat(detail).isNotNull(); - assertThat(parent.primaryKeyColumns()).hasSize(2); - assertThat(detail.getCompoundKeys()).hasSize(1); - - String apply = Helper.asText(this, "/assert/ModelBuild_compoundKeyTest/apply.sql"); - - String createDdl = currentModel.getCreateDdl(); - assertThat(createDdl).startsWith("-- Generated by ebean").endsWith(apply); + String createDdl = currentModel.getCreateDdl(); + assertThat(createDdl).startsWith("-- Generated by ebean").endsWith(apply); + } finally { + ebeanServer.shutdown(); + } } - @Test public void testFromMigration() throws IOException { - Migration migration = MigrationXmlReader.read("/container/test-compoundkey.xml"); + SpiEbeanServer ebeanServer = createServer(); + try { + CurrentModel currentModel = new CurrentModel(ebeanServer); + currentModel.setChangeSet(migration.getChangeSet().get(0)); - SpiEbeanServer ebeanServer = getServer(); - CurrentModel currentModel = new CurrentModel(ebeanServer); - currentModel.setChangeSet(migration.getChangeSet().get(0)); + String createDdl = currentModel.getCreateDdl(); + String apply = Helper.asText(this, "/assert/ModelBuild_compoundKeyTest/apply.sql"); - String createDdl = currentModel.getCreateDdl(); - String apply = Helper.asText(this, "/assert/ModelBuild_compoundKeyTest/apply.sql"); - - assertThat(createDdl).startsWith("-- Generated by ebean").endsWith(apply); + assertThat(createDdl).startsWith("-- Generated by ebean").endsWith(apply); + } finally { + ebeanServer.shutdown(); + } } } diff --git a/ebean-ddlgen/src/test/java/io/ebeaninternal/dbmigration/model/build/ModelBuild_explicitSequencesTest.java b/ebean-ddlgen/src/test/java/io/ebeaninternal/dbmigration/model/build/ModelBuild_explicitSequencesTest.java index 4ffeb7d6f..b65a1b061 100644 --- a/ebean-ddlgen/src/test/java/io/ebeaninternal/dbmigration/model/build/ModelBuild_explicitSequencesTest.java +++ b/ebean-ddlgen/src/test/java/io/ebeaninternal/dbmigration/model/build/ModelBuild_explicitSequencesTest.java @@ -2,15 +2,15 @@ package io.ebeaninternal.dbmigration.model.build; import io.ebean.BaseTestCase; -import io.ebean.EbeanServerFactory; -import io.ebean.config.ServerConfig; +import io.ebean.DatabaseFactory; +import io.ebean.config.DatabaseConfig; +import io.ebeaninternal.api.SpiEbeanServer; import io.ebeaninternal.dbmigration.ddlgeneration.DdlOptions; import io.ebeaninternal.dbmigration.ddlgeneration.Helper; import io.ebeaninternal.dbmigration.model.CurrentModel; -import io.ebeaninternal.api.SpiEbeanServer; +import org.junit.Test; import org.tests.model.basic.Person; import org.tests.model.basic.Phone; -import org.junit.Test; import java.io.IOException; @@ -18,9 +18,9 @@ import static org.assertj.core.api.Assertions.assertThat; public class ModelBuild_explicitSequencesTest extends BaseTestCase { - private SpiEbeanServer getServer(boolean postgres) { + private SpiEbeanServer createServer(boolean postgres) { - ServerConfig config = new ServerConfig(); + DatabaseConfig config = new DatabaseConfig(); config.setName("h2"); config.loadFromProperties(); config.setName("h2other"); @@ -34,35 +34,40 @@ public class ModelBuild_explicitSequencesTest extends BaseTestCase { config.addClass(Person.class); config.addClass(Phone.class); - - return (SpiEbeanServer) EbeanServerFactory.create(config); + return (SpiEbeanServer) DatabaseFactory.create(config); } @Test public void test() throws IOException { + SpiEbeanServer ebeanServer = createServer(false); + try { + CurrentModel currentModel = new CurrentModel(ebeanServer); - SpiEbeanServer ebeanServer = getServer(false); - CurrentModel currentModel = new CurrentModel(ebeanServer); - - String apply = currentModel.getCreateDdl(); - assertThat(apply) - .startsWith("-- Generated by ebean") - .endsWith(Helper.asText(this, "/assert/ModelBuild_explicitSequencesTest/apply.sql")); + String apply = currentModel.getCreateDdl(); + assertThat(apply) + .startsWith("-- Generated by ebean") + .endsWith(Helper.asText(this, "/assert/ModelBuild_explicitSequencesTest/apply.sql")); + } finally { + ebeanServer.shutdown(); + } } @Test public void test_asPostgres() throws IOException { + SpiEbeanServer ebeanServer = createServer(true); + try { + CurrentModel currentModel = new CurrentModel(ebeanServer); + final DdlOptions ddlOptions = currentModel.getDdlOptions(); + ddlOptions.setForeignKeySkipCheck(true); - SpiEbeanServer ebeanServer = getServer(true); - CurrentModel currentModel = new CurrentModel(ebeanServer); - final DdlOptions ddlOptions = currentModel.getDdlOptions(); - ddlOptions.setForeignKeySkipCheck(true); - - String apply = currentModel.getCreateDdl(); - assertThat(apply) - .startsWith("-- Generated by ebean") - .endsWith(Helper.asText(this, "/assert/ModelBuild_explicitSequencesTest/pg-apply.sql")); + String apply = currentModel.getCreateDdl(); + assertThat(apply) + .startsWith("-- Generated by ebean") + .endsWith(Helper.asText(this, "/assert/ModelBuild_explicitSequencesTest/pg-apply.sql")); + } finally { + ebeanServer.shutdown(); + } } }