Update tests for DatabaseFactory.create() with shutdown

This commit is contained in:
rob bygrave committed 2020-10-19 12:12:00 +13:00
1 parent 1d1cf76b5e
commit 8b9f760cb2
18 files changed
+214 -230

No files matched your search

@@ -1,7 +1,7 @@
package io.ebean; package io.ebean;
import io.ebean.config.CurrentTenantProvider; import io.ebean.config.CurrentTenantProvider;
import io.ebean.config.ServerConfig; import io.ebean.config.DatabaseConfig;
import io.ebean.config.TenantCatalogProvider; import io.ebean.config.TenantCatalogProvider;
import io.ebean.config.TenantDataSourceProvider; import io.ebean.config.TenantDataSourceProvider;
import io.ebean.config.TenantMode; import io.ebean.config.TenantMode;
@@ -29,7 +29,7 @@ public class EbeanServerFactory_MultiTenancy_Test extends BaseTestCase {
TenantDataSourceProvider dataSourceProvider = Mockito.mock(TenantDataSourceProvider.class); TenantDataSourceProvider dataSourceProvider = Mockito.mock(TenantDataSourceProvider.class);
Mockito.doReturn(mockedDataSource).when(dataSourceProvider).dataSource(tenant); Mockito.doReturn(mockedDataSource).when(dataSourceProvider).dataSource(tenant);
ServerConfig config = new ServerConfig(); DatabaseConfig config = new DatabaseConfig();
config.setName("multiTenantDb"); config.setName("multiTenantDb");
config.loadFromProperties(); config.loadFromProperties();
config.setRegister(false); config.setRegister(false);
@@ -45,7 +45,8 @@ public class EbeanServerFactory_MultiTenancy_Test extends BaseTestCase {
//config.setDdlRun(false); //config.setDdlRun(false);
config.setDatabasePlatform(new PostgresPlatform()); 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); TenantSchemaProvider schemaProvider = Mockito.mock(TenantSchemaProvider.class);
Mockito.doReturn("tenant_schema").when(schemaProvider).schema(tenant); Mockito.doReturn("tenant_schema").when(schemaProvider).schema(tenant);
ServerConfig config = new ServerConfig(); DatabaseConfig config = new DatabaseConfig();
config.setName("h2"); config.setName("h2");
config.loadFromProperties(); config.loadFromProperties();
config.setName("multi-tenancy");
config.setRegister(false); config.setRegister(false);
config.setDefaultServer(false); config.setDefaultServer(false);
@@ -76,7 +78,8 @@ public class EbeanServerFactory_MultiTenancy_Test extends BaseTestCase {
config.setDdlRun(false); config.setDdlRun(false);
config.setDatabasePlatform(new MySqlPlatform()); 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); TenantCatalogProvider catalogProvider = Mockito.mock(TenantCatalogProvider.class);
Mockito.doReturn("tenant_catalog").when(catalogProvider).catalog(tenant); Mockito.doReturn("tenant_catalog").when(catalogProvider).catalog(tenant);
ServerConfig config = new ServerConfig(); DatabaseConfig config = new DatabaseConfig();
config.setName("h2"); config.setName("h2");
config.loadFromProperties(); config.loadFromProperties();
config.setName("multi-tenancy");
config.setRegister(false); config.setRegister(false);
config.setDefaultServer(false); config.setDefaultServer(false);
@@ -105,6 +109,7 @@ public class EbeanServerFactory_MultiTenancy_Test extends BaseTestCase {
config.setDdlRun(false); config.setDdlRun(false);
config.setDatabasePlatform(new MySqlPlatform()); config.setDatabasePlatform(new MySqlPlatform());
EbeanServerFactory.create(config); final Database database = DatabaseFactory.create(config);
database.shutdown();
} }
} }
@@ -1,8 +1,8 @@
package io.ebean.config; package io.ebean.config;
import io.ebean.EbeanServer; import io.ebean.Database;
import io.ebean.EbeanServerFactory; import io.ebean.DatabaseFactory;
import io.ebean.annotation.ForPlatform; import io.ebean.annotation.ForPlatform;
import io.ebean.annotation.Platform; import io.ebean.annotation.Platform;
import org.junit.Ignore; import org.junit.Ignore;
@@ -26,7 +26,7 @@ public class ServerConfigSqlServerTest {
// no explicit databasePlatformName set .. // no explicit databasePlatformName set ..
//props.setProperty("ebean.some_sqlserver.databasePlatformName", "sqlserver17"); //props.setProperty("ebean.some_sqlserver.databasePlatformName", "sqlserver17");
ServerConfig config = new ServerConfig(); DatabaseConfig config = new DatabaseConfig();
config.setName("some_sqlserver"); config.setName("some_sqlserver");
config.loadFromProperties(props); config.loadFromProperties(props);
@@ -38,9 +38,10 @@ public class ServerConfigSqlServerTest {
config.setRegister(false); config.setRegister(false);
config.getClasses().add(EBasicVer.class); config.getClasses().add(EBasicVer.class);
EbeanServer sqlServer = EbeanServerFactory.create(config); Database sqlServer = DatabaseFactory.create(config);
assertThat(sqlServer).isNotNull(); 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 // 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"; String name = "testsqlserver17";
ServerConfig config = new ServerConfig(); DatabaseConfig config = new DatabaseConfig();
config.setName(name); config.setName(name);
Properties props = props(name); Properties props = props(name);
@@ -79,9 +80,10 @@ public class ServerConfigSqlServerTest {
config.loadFromProperties(props); config.loadFromProperties(props);
config.getClasses().add(EBasicVer.class); config.getClasses().add(EBasicVer.class);
EbeanServer sqlServer = EbeanServerFactory.create(config); Database sqlServer = DatabaseFactory.create(config);
assertThat(sqlServer).isNotNull(); assertThat(sqlServer).isNotNull();
sqlServer.shutdown();
} }
@Ignore @Ignore
@@ -93,7 +95,7 @@ public class ServerConfigSqlServerTest {
Properties props = props(name); Properties props = props(name);
//props.setProperty("ebean.testsqlserver16.databasePlatformName", "sqlserver16"); //props.setProperty("ebean.testsqlserver16.databasePlatformName", "sqlserver16");
ServerConfig config = new ServerConfig(); DatabaseConfig config = new DatabaseConfig();
config.setDefaultServer(false); config.setDefaultServer(false);
config.setRegister(false); config.setRegister(false);
config.setDdlGenerate(true); config.setDdlGenerate(true);
@@ -104,9 +106,10 @@ public class ServerConfigSqlServerTest {
config.loadFromProperties(props); config.loadFromProperties(props);
config.getClasses().add(EBasicVer.class); config.getClasses().add(EBasicVer.class);
EbeanServer sqlServer = EbeanServerFactory.create(config); Database sqlServer = DatabaseFactory.create(config);
assertThat(sqlServer).isNotNull(); assertThat(sqlServer).isNotNull();
sqlServer.shutdown();
} }
private Properties props(String dbName) { private Properties props(String dbName) {
@@ -18,9 +18,9 @@ import static org.assertj.core.api.Assertions.assertThat;
public class BeanPersistControllerTest { 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 @Test
public void issue_1341() { public void issue_1341() {
@@ -3,12 +3,12 @@ package io.ebean.event;
import io.ebean.BaseTestCase; import io.ebean.BaseTestCase;
import io.ebean.BeanState; import io.ebean.BeanState;
import io.ebean.DB;
import io.ebean.Database; import io.ebean.Database;
import io.ebean.DatabaseFactory; import io.ebean.DatabaseFactory;
import io.ebean.Ebean;
import io.ebean.config.DatabaseConfig; import io.ebean.config.DatabaseConfig;
import org.tests.model.basic.EBasicVer;
import org.junit.Test; import org.junit.Test;
import org.tests.model.basic.EBasicVer;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@@ -91,7 +91,7 @@ public class BeanPostLoadTest extends BaseTestCase {
public void postLoad(Object bean) { public void postLoad(Object bean) {
this.methodsCalled.add("postLoad"); this.methodsCalled.add("postLoad");
this.bean = bean; this.bean = bean;
this.beanState = Ebean.getBeanState(bean); this.beanState = DB.getBeanState(bean);
} }
} }
@@ -26,10 +26,13 @@ public class BeanDescriptor_registerTest {
config.getClasses().add(EBasic.class); config.getClasses().add(EBasic.class);
SpiEbeanServer ebeanServer = (SpiEbeanServer)DatabaseFactory.create(config); SpiEbeanServer ebeanServer = (SpiEbeanServer)DatabaseFactory.create(config);
BeanDescriptor<EBasic> desc = ebeanServer.getBeanDescriptor(EBasic.class); try {
BeanDescriptor<EBasic> desc = ebeanServer.getBeanDescriptor(EBasic.class);
persistListenerRegistrationTests(desc); persistListenerRegistrationTests(desc);
persistControllerRegistrationTests(desc); persistControllerRegistrationTests(desc);
} finally {
ebeanServer.shutdown();
}
} }
private void persistControllerRegistrationTests(BeanDescriptor<EBasic> desc) { private void persistControllerRegistrationTests(BeanDescriptor<EBasic> desc) {
@@ -105,29 +105,31 @@ public class DefaultTransactionThreadLocalTest extends BaseTestCase {
@ForPlatform(Platform.H2) @ForPlatform(Platform.H2)
@Test @Test
public void usingDatabase() { public void usingDatabase() {
// setup // setup
Database otherDb = createOtherDatabase(); Database otherDb = createOtherDatabase();
EBasicVer bean = new EBasicVer("TestUsingDatabase"); try {
otherDb.save(bean); EBasicVer bean = new EBasicVer("TestUsingDatabase");
otherDb.save(bean);
// act // act
final EBasicVer foundOtherDb = DB.find(EBasicVer.class) final EBasicVer foundOtherDb = DB.find(EBasicVer.class)
.usingDatabase(otherDb) .usingDatabase(otherDb)
.where().eq("name", "TestUsingDatabase") .where().eq("name", "TestUsingDatabase")
.findOne(); .findOne();
assertNotNull(foundOtherDb); assertNotNull(foundOtherDb);
assertThat(foundOtherDb.getId()).isEqualTo(bean.getId()); assertThat(foundOtherDb.getId()).isEqualTo(bean.getId());
final EBasicVer foundDefaultDb = DB.find(EBasicVer.class) final EBasicVer foundDefaultDb = DB.find(EBasicVer.class)
.where().eq("name", "TestUsingDatabase") .where().eq("name", "TestUsingDatabase")
.findOne(); .findOne();
assertNull(foundDefaultDb); assertNull(foundDefaultDb);
otherDb.delete(bean); otherDb.delete(bean);
otherDb.shutdown(); } finally {
otherDb.shutdown();
}
} }
@@ -1,11 +1,11 @@
package org; package org;
import io.ebean.EbeanServer; import io.ebean.Database;
import io.ebean.EbeanServerFactory; import io.ebean.DatabaseFactory;
import io.ebean.Transaction; import io.ebean.Transaction;
import io.ebean.annotation.Cache; import io.ebean.annotation.Cache;
import io.ebean.config.DatabaseConfig;
import io.ebean.config.PlatformNoGeneratedKeysTest; import io.ebean.config.PlatformNoGeneratedKeysTest;
import io.ebean.config.ServerConfig;
import javax.persistence.Entity; import javax.persistence.Entity;
import javax.persistence.Id; import javax.persistence.Id;
@@ -40,13 +40,13 @@ public class MainMemoryLeak {
PlatformNoGeneratedKeysTest.OtherH2Platform platform = new PlatformNoGeneratedKeysTest.OtherH2Platform(); PlatformNoGeneratedKeysTest.OtherH2Platform platform = new PlatformNoGeneratedKeysTest.OtherH2Platform();
ServerConfig config = new ServerConfig(); DatabaseConfig config = new DatabaseConfig();
config.setDatabasePlatform(platform); config.setDatabasePlatform(platform);
config.addClass(ECachedBean.class); config.addClass(ECachedBean.class);
config.loadFromProperties(); config.loadFromProperties();
EbeanServer server = EbeanServerFactory.create(config); Database server = DatabaseFactory.create(config);
// create a string with 10k chars // create a string with 10k chars
char[] c = new char[10_000]; char[] c = new char[10_000];
@@ -70,6 +70,6 @@ public class MainMemoryLeak {
System.out.println("Success, no mem limit detected"); System.out.println("Success, no mem limit detected");
txn.commit(); txn.commit();
} }
server.shutdown();
} }
} }
@@ -1,11 +1,12 @@
package org.multitenant.partition; package org.multitenant.partition;
import io.ebean.BaseTestCase; import io.ebean.BaseTestCase;
import io.ebean.EbeanServer; import io.ebean.Database;
import io.ebean.EbeanServerFactory; import io.ebean.DatabaseFactory;
import io.ebean.config.ServerConfig; import io.ebean.config.DatabaseConfig;
import io.ebean.config.TenantMode; import io.ebean.config.TenantMode;
import org.ebeantest.LoggedSqlCollector; import org.ebeantest.LoggedSqlCollector;
import org.junit.AfterClass;
import org.junit.Test; import org.junit.Test;
import java.util.ArrayList; import java.util.ArrayList;
@@ -16,7 +17,7 @@ import static org.assertj.core.api.Assertions.assertThat;
public class MultiTenantPartitionTest extends BaseTestCase { 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<MtTenant> tenants() { static List<MtTenant> tenants() {
List<MtTenant> tenants = new ArrayList<>(); List<MtTenant> tenants = new ArrayList<>();
@@ -26,12 +27,16 @@ public class MultiTenantPartitionTest extends BaseTestCase {
return tenants; return tenants;
} }
private static EbeanServer server = init(); private static final Database server = init();
static { static {
server.saveAll(tenants()); server.saveAll(tenants());
} }
@AfterClass
public static void shutdown() {
server.shutdown();
}
@Test @Test
public void start() { 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.setName("h2multitenant");
config.loadFromProperties(); config.loadFromProperties();
@@ -120,6 +125,6 @@ public class MultiTenantPartitionTest extends BaseTestCase {
config.getClasses().add(MtTenant.class); config.getClasses().add(MtTenant.class);
config.getClasses().add(MtContent.class); config.getClasses().add(MtContent.class);
return EbeanServerFactory.create(config); return DatabaseFactory.create(config);
} }
} }
@@ -3,9 +3,10 @@ package org.tests.changelog;
import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectMapper;
import io.ebean.BaseTestCase; import io.ebean.BaseTestCase;
import io.ebean.EbeanServerFactory; import io.ebean.Database;
import io.ebean.DatabaseFactory;
import io.ebean.annotation.ChangeLog; import io.ebean.annotation.ChangeLog;
import io.ebean.config.ServerConfig; import io.ebean.config.DatabaseConfig;
import io.ebean.event.BeanPersistRequest; import io.ebean.event.BeanPersistRequest;
import io.ebean.event.changelog.BeanChange; import io.ebean.event.changelog.BeanChange;
import io.ebean.event.changelog.ChangeLogFilter; 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.ChangeLogRegister;
import io.ebean.event.changelog.ChangeSet; import io.ebean.event.changelog.ChangeSet;
import io.ebean.event.changelog.ChangeType; import io.ebean.event.changelog.ChangeType;
import io.ebeaninternal.api.SpiEbeanServer;
import org.junit.After; import org.junit.After;
import org.junit.Before; import org.junit.Before;
import org.junit.Test; import org.junit.Test;
@@ -31,16 +31,16 @@ public class TestChangeLog extends BaseTestCase {
TDChangeLogRegister changeLogRegister = new TDChangeLogRegister(); TDChangeLogRegister changeLogRegister = new TDChangeLogRegister();
SpiEbeanServer server; Database server;
@Before @Before
public void setup() { public void setup() {
server = getServer(); server = createServer();
} }
@After @After
public void shutdown() { public void shutdown() {
server.shutdown(true, false); server.shutdown();
} }
@Test @Test
@@ -65,7 +65,7 @@ public class TestChangeLog extends BaseTestCase {
assertThat(change.getEvent()).isEqualTo(ChangeType.UPDATE); assertThat(change.getEvent()).isEqualTo(ChangeType.UPDATE);
assertThat(change.getOldData()).contains("\"name\":\"logBean\""); assertThat(change.getOldData()).contains("\"name\":\"logBean\"");
assertThat(change.getData()) .contains("\"name\":\"ChangedName\""); assertThat(change.getData()).contains("\"name\":\"ChangedName\"");
server.delete(bean); server.delete(bean);
@@ -120,31 +120,27 @@ public class TestChangeLog extends BaseTestCase {
} }
private Database createServer() {
private SpiEbeanServer getServer() { DatabaseConfig config = new DatabaseConfig();
ServerConfig config = new ServerConfig();
config.setName("h2other"); config.setName("h2other");
config.loadFromProperties(); config.loadFromProperties();
config.setDdlGenerate(true); config.setDdlGenerate(true);
config.setDdlRun(true); config.setDdlRun(true);
config.setDdlExtra(false); config.setDdlExtra(false);
config.setDefaultServer(false); config.setDefaultServer(false);
config.setRegister(false); config.setRegister(false);
config.setChangeLogAsync(false); config.setChangeLogAsync(false);
config.addClass(EBasicChangeLog.class); config.addClass(EBasicChangeLog.class);
config.setChangeLogPrepare(changeLogPrepare); config.setChangeLogPrepare(changeLogPrepare);
config.setChangeLogListener(changeLogListener); config.setChangeLogListener(changeLogListener);
config.setChangeLogRegister(changeLogRegister); config.setChangeLogRegister(changeLogRegister);
return (SpiEbeanServer) EbeanServerFactory.create(config); return DatabaseFactory.create(config);
} }
class TDChangeLogPrepare implements ChangeLogPrepare { public static class TDChangeLogPrepare implements ChangeLogPrepare {
@Override @Override
public boolean prepare(ChangeSet changes) { public boolean prepare(ChangeSet changes) {
changes.setUserId("appUser1"); 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(); ObjectMapper objectMapper = new ObjectMapper();
ChangeSet changes; ChangeSet changes;
/**
*/
public TDChangeLogListener() { public TDChangeLogListener() {
objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL); 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 @Override
public ChangeLogFilter getChangeFilter(Class<?> beanType) { 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. * 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. * Returns true including all the inserts.
@@ -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);
}
}
@@ -1,16 +1,16 @@
package org.tests.persistencecontext; package org.tests.persistencecontext;
import io.ebean.BaseTestCase; import io.ebean.BaseTestCase;
import io.ebean.EbeanServer; import io.ebean.Database;
import io.ebean.EbeanServerFactory; import io.ebean.DatabaseFactory;
import io.ebean.PersistenceContextScope; import io.ebean.PersistenceContextScope;
import io.ebean.Query; import io.ebean.Query;
import io.ebean.config.ContainerConfig; import io.ebean.config.ContainerConfig;
import io.ebean.config.ServerConfig; import io.ebean.config.DatabaseConfig;
import io.ebeaninternal.api.SpiEbeanServer; import io.ebeaninternal.api.SpiEbeanServer;
import io.ebeaninternal.api.SpiQuery; import io.ebeaninternal.api.SpiQuery;
import org.tests.model.basic.EBasicVer;
import org.junit.Test; import org.junit.Test;
import org.tests.model.basic.EBasicVer;
import java.util.Properties; import java.util.Properties;
@@ -20,20 +20,20 @@ public class TestPersistenceContextServerConfig extends BaseTestCase {
@Test @Test
public void test_config() { public void test_config() {
SpiEbeanServer ebeanServer = (SpiEbeanServer) create(); SpiEbeanServer ebeanServer = (SpiEbeanServer) create();
try {
Query<EBasicVer> query = ebeanServer.find(EBasicVer.class);
PersistenceContextScope scope = ebeanServer.getPersistenceContextScope((SpiQuery<?>) query);
Query<EBasicVer> query = ebeanServer.find(EBasicVer.class); assertEquals(PersistenceContextScope.QUERY, scope);
} finally {
PersistenceContextScope scope = ebeanServer.getPersistenceContextScope((SpiQuery<?>) query); ebeanServer.shutdown();
}
assertEquals(PersistenceContextScope.QUERY, scope);
} }
static EbeanServer create() { static Database create() {
DatabaseConfig config = new DatabaseConfig();
ServerConfig config = new ServerConfig();
config.setName("withPCQuery"); config.setName("withPCQuery");
config.setDdlExtra(false); config.setDdlExtra(false);
@@ -49,15 +49,7 @@ public class TestPersistenceContextServerConfig extends BaseTestCase {
config.setDefaultServer(false); config.setDefaultServer(false);
config.setRegister(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); config.addClass(EBasicVer.class);
return DatabaseFactory.create(config);
return EbeanServerFactory.create(config);
} }
} }
@@ -1,22 +1,22 @@
package org.tests.readaudit; package org.tests.readaudit;
import io.ebean.BaseTestCase; import io.ebean.BaseTestCase;
import io.ebean.EbeanServerFactory; import io.ebean.Database;
import io.ebean.DatabaseFactory;
import io.ebean.FutureList; import io.ebean.FutureList;
import io.ebean.cache.ServerCache; import io.ebean.cache.ServerCache;
import io.ebean.cache.ServerCacheStatistics; 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.ReadAuditLogger;
import io.ebean.event.readaudit.ReadAuditPrepare; import io.ebean.event.readaudit.ReadAuditPrepare;
import io.ebean.event.readaudit.ReadAuditQueryPlan; import io.ebean.event.readaudit.ReadAuditQueryPlan;
import io.ebean.event.readaudit.ReadEvent; 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.ebeantest.LoggedSqlCollector;
import org.junit.After; import org.junit.After;
import org.junit.Before; import org.junit.Before;
import org.junit.Test; import org.junit.Test;
import org.tests.model.basic.Country;
import org.tests.model.basic.EBasicChangeLog;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashSet; import java.util.HashSet;
@@ -30,18 +30,18 @@ import static org.assertj.core.api.Assertions.assertThat;
public class TestReadAudit extends BaseTestCase { 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 id1;
Long id2; Long id2;
@Before @Before
public void setup() { public void setup() {
server = getServer(); server = createServer();
EBasicChangeLog bean = new EBasicChangeLog(); EBasicChangeLog bean = new EBasicChangeLog();
bean.setName("readAudito1"); bean.setName("readAudito1");
@@ -63,7 +63,7 @@ public class TestReadAudit extends BaseTestCase {
@After @After
public void shutdown() { public void shutdown() {
server.shutdown(true, false); server.shutdown();
} }
@Test @Test
@@ -304,9 +304,9 @@ public class TestReadAudit extends BaseTestCase {
assertThat(readAuditLogger.many).hasSize(2); assertThat(readAuditLogger.many).hasSize(2);
} }
private SpiEbeanServer getServer() { private Database createServer() {
ServerConfig config = new ServerConfig(); DatabaseConfig config = new DatabaseConfig();
config.setName("h2other"); config.setName("h2other");
config.loadFromProperties(); config.loadFromProperties();
@@ -323,7 +323,7 @@ public class TestReadAudit extends BaseTestCase {
config.setReadAuditLogger(readAuditLogger); config.setReadAuditLogger(readAuditLogger);
config.setReadAuditPrepare(readAuditPrepare); config.setReadAuditPrepare(readAuditPrepare);
return (SpiEbeanServer) EbeanServerFactory.create(config); return DatabaseFactory.create(config);
} }
private void resetCounters() { private void resetCounters() {
@@ -331,13 +331,10 @@ public class TestReadAudit extends BaseTestCase {
readAuditPrepare.resetCounters(); readAuditPrepare.resetCounters();
} }
class TDReadAuditPrepare implements ReadAuditPrepare { static class TDReadAuditPrepare implements ReadAuditPrepare {
int count; int count;
TDReadAuditPrepare(boolean dummy) {
}
void resetCounters() { void resetCounters() {
count = 0; count = 0;
} }
@@ -351,15 +348,12 @@ public class TestReadAudit extends BaseTestCase {
} }
} }
class TDReadAuditLogger implements ReadAuditLogger { static class TDReadAuditLogger implements ReadAuditLogger {
Set<ReadAuditQueryPlan> plans = new HashSet<>(); Set<ReadAuditQueryPlan> plans = new HashSet<>();
List<ReadEvent> beans = new ArrayList<>(); List<ReadEvent> beans = new ArrayList<>();
List<ReadEvent> many = new ArrayList<>(); List<ReadEvent> many = new ArrayList<>();
TDReadAuditLogger(boolean dummy) {
}
void resetCounters() { void resetCounters() {
plans.clear(); plans.clear();
beans.clear(); beans.clear();
@@ -72,7 +72,7 @@ datasource.db.databaseDriver=org.h2.Driver
datasource.h2.username=sa datasource.h2.username=sa
datasource.h2.password= 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.driver=org.h2.Driver
datasource.h2.minConnections=1 datasource.h2.minConnections=1
datasource.h2.maxConnections=25 datasource.h2.maxConnections=25
@@ -1,8 +1,8 @@
package io.ebeaninternal.dbmigration; package io.ebeaninternal.dbmigration;
import io.ebean.EbeanServer; import io.ebean.Database;
import io.ebean.EbeanServerFactory; import io.ebean.DatabaseFactory;
import io.ebean.config.ServerConfig; import io.ebean.config.DatabaseConfig;
import org.junit.Test; import org.junit.Test;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@@ -42,7 +42,7 @@ public class DbMigrationDropHistoryTest {
migration.setPathToResources("src/test/resources"); migration.setPathToResources("src/test/resources");
ServerConfig config = new ServerConfig(); DatabaseConfig config = new DatabaseConfig();
config.setName("migrationtest-history"); config.setName("migrationtest-history");
config.loadFromProperties(); config.loadFromProperties();
config.setRegister(false); config.setRegister(false);
@@ -50,7 +50,7 @@ public class DbMigrationDropHistoryTest {
config.setPackages(Arrays.asList("misc.migration.history.v1_0")); config.setPackages(Arrays.asList("misc.migration.history.v1_0"));
EbeanServer server = EbeanServerFactory.create(config); Database server = DatabaseFactory.create(config);
migration.setServer(server); migration.setServer(server);
// First, we clean up the output-directory // First, we clean up the output-directory
@@ -65,7 +65,8 @@ public class DbMigrationDropHistoryTest {
// and now for v1_1 // and now for v1_1
config.setPackages(Arrays.asList("misc.migration.history.v1_1")); config.setPackages(Arrays.asList("misc.migration.history.v1_1"));
server = EbeanServerFactory.create(config); server.shutdown();
server = DatabaseFactory.create(config);
migration.setServer(server); migration.setServer(server);
assertThat(migration.generateMigration()).isEqualTo("1.1"); assertThat(migration.generateMigration()).isEqualTo("1.1");
assertThat(migration.generateMigration()).isNull(); // subsequent call assertThat(migration.generateMigration()).isNull(); // subsequent call
@@ -82,6 +83,7 @@ public class DbMigrationDropHistoryTest {
.hasMessageContaining("No 'pendingDrops'"); // subsequent call .hasMessageContaining("No 'pendingDrops'"); // subsequent call
System.clearProperty("ddl.migration.pendingDropsFor"); System.clearProperty("ddl.migration.pendingDropsFor");
server.shutdown();
logger.info("end"); logger.info("end");
} }
@@ -1,9 +1,9 @@
package io.ebeaninternal.dbmigration; package io.ebeaninternal.dbmigration;
import io.ebean.EbeanServer; import io.ebean.Database;
import io.ebean.EbeanServerFactory; import io.ebean.DatabaseFactory;
import io.ebean.annotation.Platform; import io.ebean.annotation.Platform;
import io.ebean.config.ServerConfig; import io.ebean.config.DatabaseConfig;
import org.junit.Test; import org.junit.Test;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@@ -57,7 +57,7 @@ public class DbMigrationGenerateTest {
migration.addPlatform(Platform.SQLSERVER17, "sqlserver17"); migration.addPlatform(Platform.SQLSERVER17, "sqlserver17");
migration.addPlatform(Platform.HANA, "hana"); migration.addPlatform(Platform.HANA, "hana");
ServerConfig config = new ServerConfig(); DatabaseConfig config = new DatabaseConfig();
config.setName("migrationtest"); config.setName("migrationtest");
config.loadFromProperties(); config.loadFromProperties();
config.setRegister(false); config.setRegister(false);
@@ -66,7 +66,7 @@ public class DbMigrationGenerateTest {
config.setPackages(Arrays.asList("misc.migration.v1_0")); config.setPackages(Arrays.asList("misc.migration.v1_0"));
EbeanServer server = EbeanServerFactory.create(config); Database server = DatabaseFactory.create(config);
migration.setServer(server); migration.setServer(server);
// First, we clean up the output-directory // First, we clean up the output-directory
@@ -81,7 +81,8 @@ public class DbMigrationGenerateTest {
// and now for v1_1 // and now for v1_1
config.setPackages(Arrays.asList("misc.migration.v1_1")); config.setPackages(Arrays.asList("misc.migration.v1_1"));
server = EbeanServerFactory.create(config); server.shutdown();
server = DatabaseFactory.create(config);
migration.setServer(server); migration.setServer(server);
assertThat(migration.generateMigration()).isEqualTo("1.1"); assertThat(migration.generateMigration()).isEqualTo("1.1");
assertThat(migration.generateMigration()).isNull(); // subsequent call assertThat(migration.generateMigration()).isNull(); // subsequent call
@@ -100,7 +101,8 @@ public class DbMigrationGenerateTest {
// and now for v1_2 with // and now for v1_2 with
config.setPackages(Arrays.asList("misc.migration.v1_2")); config.setPackages(Arrays.asList("misc.migration.v1_2"));
server = EbeanServerFactory.create(config); server.shutdown();
server = DatabaseFactory.create(config);
migration.setServer(server); migration.setServer(server);
assertThat(migration.generateMigration()).isEqualTo("1.3"); assertThat(migration.generateMigration()).isEqualTo("1.3");
assertThat(migration.generateMigration()).isNull(); // subsequent call assertThat(migration.generateMigration()).isNull(); // subsequent call
@@ -108,13 +110,14 @@ public class DbMigrationGenerateTest {
System.setProperty("ddl.migration.pendingDropsFor", "1.3"); System.setProperty("ddl.migration.pendingDropsFor", "1.3");
assertThat(migration.generateMigration()).isEqualTo("1.4__dropsFor_1.3"); assertThat(migration.generateMigration()).isEqualTo("1.4__dropsFor_1.3");
assertThatThrownBy(()->migration.generateMigration()) assertThatThrownBy(migration::generateMigration)
.isInstanceOf(IllegalArgumentException.class) .isInstanceOf(IllegalArgumentException.class)
.hasMessageContaining("No 'pendingDrops'"); // subsequent call .hasMessageContaining("No 'pendingDrops'"); // subsequent call
System.clearProperty("ddl.migration.pendingDropsFor"); System.clearProperty("ddl.migration.pendingDropsFor");
assertThat(migration.generateMigration()).isNull(); // subsequent call assertThat(migration.generateMigration()).isNull(); // subsequent call
server.shutdown();
logger.info("end"); logger.info("end");
} }
@@ -73,27 +73,28 @@ public class ModelBuildBeanVisitorTest extends BaseTestCase {
config.setDatabasePlatform(new SqlServer17Platform()); config.setDatabasePlatform(new SqlServer17Platform());
final SpiEbeanServer database = (SpiEbeanServer)DatabaseFactory.create(config); 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]"); final List<MCompoundForeignKey> compoundKeys = detail.getCompoundKeys();
assertThat(parent.getPkName()).isEqualTo("[pk_CKeyParent]"); 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]"); } finally {
assertThat(detail.getPkName()).isEqualTo("[pk_CKeyDetail]"); database.shutdown();
}
final List<MCompoundForeignKey> 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);
} }
private void assert_compound_pk(ModelContainer model) { private void assert_compound_pk(ModelContainer model) {
@@ -2,20 +2,20 @@ package io.ebeaninternal.dbmigration.model.build;
import io.ebean.BaseTestCase; import io.ebean.BaseTestCase;
import io.ebean.EbeanServerFactory; import io.ebean.DatabaseFactory;
import io.ebean.config.ServerConfig; import io.ebean.config.DatabaseConfig;
import io.ebeaninternal.api.SpiEbeanServer;
import io.ebeaninternal.dbmigration.ddlgeneration.Helper; import io.ebeaninternal.dbmigration.ddlgeneration.Helper;
import io.ebeaninternal.dbmigration.migration.Migration; import io.ebeaninternal.dbmigration.migration.Migration;
import io.ebeaninternal.dbmigration.migrationreader.MigrationXmlReader; import io.ebeaninternal.dbmigration.migrationreader.MigrationXmlReader;
import io.ebeaninternal.dbmigration.model.CurrentModel; import io.ebeaninternal.dbmigration.model.CurrentModel;
import io.ebeaninternal.dbmigration.model.MTable; import io.ebeaninternal.dbmigration.model.MTable;
import io.ebeaninternal.dbmigration.model.ModelContainer; 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.CKeyAssoc;
import org.tests.model.basic.CKeyDetail; import org.tests.model.basic.CKeyDetail;
import org.tests.model.basic.CKeyParent; import org.tests.model.basic.CKeyParent;
import org.tests.model.basic.CKeyParentId; import org.tests.model.basic.CKeyParentId;
import org.junit.Test;
import java.io.IOException; import java.io.IOException;
@@ -23,9 +23,9 @@ import static org.assertj.core.api.Assertions.assertThat;
public class ModelBuild_compoundKeyTest extends BaseTestCase { public class ModelBuild_compoundKeyTest extends BaseTestCase {
private SpiEbeanServer getServer() { private SpiEbeanServer createServer() {
ServerConfig config = new ServerConfig(); DatabaseConfig config = new DatabaseConfig();
config.setName("h2"); config.setName("h2");
config.loadFromProperties(); config.loadFromProperties();
config.setName("h2other"); config.setName("h2other");
@@ -40,46 +40,49 @@ public class ModelBuild_compoundKeyTest extends BaseTestCase {
config.addClass(CKeyAssoc.class); config.addClass(CKeyAssoc.class);
config.addClass(CKeyParentId.class); config.addClass(CKeyParentId.class);
return (SpiEbeanServer) EbeanServerFactory.create(config); return (SpiEbeanServer) DatabaseFactory.create(config);
} }
@Test @Test
public void test() throws IOException { 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); assertThat(parent).isNotNull();
ModelContainer model = currentModel.read(); assertThat(detail).isNotNull();
assertThat(parent.primaryKeyColumns()).hasSize(2);
assertThat(detail.getCompoundKeys()).hasSize(1);
MTable parent = model.getTable("ckey_parent"); String apply = Helper.asText(this, "/assert/ModelBuild_compoundKeyTest/apply.sql");
MTable detail = model.getTable("ckey_detail");
assertThat(parent).isNotNull(); String createDdl = currentModel.getCreateDdl();
assertThat(detail).isNotNull(); assertThat(createDdl).startsWith("-- Generated by ebean").endsWith(apply);
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);
} finally {
ebeanServer.shutdown();
}
} }
@Test @Test
public void testFromMigration() throws IOException { public void testFromMigration() throws IOException {
Migration migration = MigrationXmlReader.read("/container/test-compoundkey.xml"); 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(); String createDdl = currentModel.getCreateDdl();
CurrentModel currentModel = new CurrentModel(ebeanServer); String apply = Helper.asText(this, "/assert/ModelBuild_compoundKeyTest/apply.sql");
currentModel.setChangeSet(migration.getChangeSet().get(0));
String createDdl = currentModel.getCreateDdl(); assertThat(createDdl).startsWith("-- Generated by ebean").endsWith(apply);
String apply = Helper.asText(this, "/assert/ModelBuild_compoundKeyTest/apply.sql"); } finally {
ebeanServer.shutdown();
assertThat(createDdl).startsWith("-- Generated by ebean").endsWith(apply); }
} }
} }
@@ -2,15 +2,15 @@ package io.ebeaninternal.dbmigration.model.build;
import io.ebean.BaseTestCase; import io.ebean.BaseTestCase;
import io.ebean.EbeanServerFactory; import io.ebean.DatabaseFactory;
import io.ebean.config.ServerConfig; import io.ebean.config.DatabaseConfig;
import io.ebeaninternal.api.SpiEbeanServer;
import io.ebeaninternal.dbmigration.ddlgeneration.DdlOptions; import io.ebeaninternal.dbmigration.ddlgeneration.DdlOptions;
import io.ebeaninternal.dbmigration.ddlgeneration.Helper; import io.ebeaninternal.dbmigration.ddlgeneration.Helper;
import io.ebeaninternal.dbmigration.model.CurrentModel; 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.Person;
import org.tests.model.basic.Phone; import org.tests.model.basic.Phone;
import org.junit.Test;
import java.io.IOException; import java.io.IOException;
@@ -18,9 +18,9 @@ import static org.assertj.core.api.Assertions.assertThat;
public class ModelBuild_explicitSequencesTest extends BaseTestCase { 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.setName("h2");
config.loadFromProperties(); config.loadFromProperties();
config.setName("h2other"); config.setName("h2other");
@@ -34,35 +34,40 @@ public class ModelBuild_explicitSequencesTest extends BaseTestCase {
config.addClass(Person.class); config.addClass(Person.class);
config.addClass(Phone.class); config.addClass(Phone.class);
return (SpiEbeanServer) DatabaseFactory.create(config);
return (SpiEbeanServer) EbeanServerFactory.create(config);
} }
@Test @Test
public void test() throws IOException { public void test() throws IOException {
SpiEbeanServer ebeanServer = createServer(false);
try {
CurrentModel currentModel = new CurrentModel(ebeanServer);
SpiEbeanServer ebeanServer = getServer(false); String apply = currentModel.getCreateDdl();
CurrentModel currentModel = new CurrentModel(ebeanServer); assertThat(apply)
.startsWith("-- Generated by ebean")
String apply = currentModel.getCreateDdl(); .endsWith(Helper.asText(this, "/assert/ModelBuild_explicitSequencesTest/apply.sql"));
assertThat(apply)
.startsWith("-- Generated by ebean")
.endsWith(Helper.asText(this, "/assert/ModelBuild_explicitSequencesTest/apply.sql"));
} finally {
ebeanServer.shutdown();
}
} }
@Test @Test
public void test_asPostgres() throws IOException { 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); String apply = currentModel.getCreateDdl();
CurrentModel currentModel = new CurrentModel(ebeanServer); assertThat(apply)
final DdlOptions ddlOptions = currentModel.getDdlOptions(); .startsWith("-- Generated by ebean")
ddlOptions.setForeignKeySkipCheck(true); .endsWith(Helper.asText(this, "/assert/ModelBuild_explicitSequencesTest/pg-apply.sql"));
} finally {
String apply = currentModel.getCreateDdl(); ebeanServer.shutdown();
assertThat(apply) }
.startsWith("-- Generated by ebean")
.endsWith(Helper.asText(this, "/assert/ModelBuild_explicitSequencesTest/pg-apply.sql"));
} }
} }