diff --git a/core/src/test/java/org/hibernate/ogm/utils/GridDialectTestHelper.java b/core/src/test/java/org/hibernate/ogm/utils/GridDialectTestHelper.java index ab3135e567..335333276f 100644 --- a/core/src/test/java/org/hibernate/ogm/utils/GridDialectTestHelper.java +++ b/core/src/test/java/org/hibernate/ogm/utils/GridDialectTestHelper.java @@ -79,6 +79,13 @@ public interface GridDialectTestHelper { */ boolean backendSupportsTransactions(); + /** + * Initialize the database on start-up. + * + * @param sessionFactory + */ + void prepareDatabase(SessionFactory sessionFactory); + /** * Used to clean up all the stored data. The cleaning can be done by dropping * the database and/or the schema. diff --git a/core/src/test/java/org/hibernate/ogm/utils/HashMapTestHelper.java b/core/src/test/java/org/hibernate/ogm/utils/HashMapTestHelper.java index 69528b5fb1..1647a737b8 100644 --- a/core/src/test/java/org/hibernate/ogm/utils/HashMapTestHelper.java +++ b/core/src/test/java/org/hibernate/ogm/utils/HashMapTestHelper.java @@ -75,6 +75,11 @@ public boolean backendSupportsTransactions() { return false; } + @Override + public void prepareDatabase(SessionFactory sessionFactory) { + // Nothing to do + } + @Override public void dropSchemaAndDatabase(SessionFactory sessionFactory) { // Nothing to do diff --git a/core/src/test/java/org/hibernate/ogm/utils/TestHelper.java b/core/src/test/java/org/hibernate/ogm/utils/TestHelper.java index e74510adc6..f6742f1661 100644 --- a/core/src/test/java/org/hibernate/ogm/utils/TestHelper.java +++ b/core/src/test/java/org/hibernate/ogm/utils/TestHelper.java @@ -161,6 +161,10 @@ public static Map extractEntityTuple(Session session, EntityKey return HELPER.extractEntityTuple( session, key ); } + public static long getNumberOfAssociations(EntityManager em) { + return getNumberOfAssociations( em.unwrap( Session.class ) ); + } + public static long getNumberOfAssociations(Session session) { return HELPER.getNumberOfAssociations( session ); } @@ -210,6 +214,22 @@ public static void dropSchemaAndDatabase(SessionFactory sessionFactory) { } } + public static void prepareDatabase(EntityManagerFactory emf) { + prepareDatabase( ( (HibernateEntityManagerFactory) emf ).getSessionFactory() ); + } + + public static void prepareDatabase(SessionFactory sessionFactory) { + // if the factory is closed, we don't have access to the service registry + if ( sessionFactory != null && !sessionFactory.isClosed() ) { + try { + HELPER.prepareDatabase( sessionFactory ); + } + catch ( Exception e ) { + log.warn( "Exception while preparing schema and database in test", e ); + } + } + } + public static void checkCleanCache(SessionFactory sessionFactory) { assertThat( getNumberOfEntities( sessionFactory ) ).as( "Entity cache should be empty" ).isEqualTo( 0 ); assertThat( getNumberOfAssociations( sessionFactory ) ).as( "Association cache should be empty" ).isEqualTo( 0 ); diff --git a/core/src/test/java/org/hibernate/ogm/utils/jpa/OgmJpaTestRunner.java b/core/src/test/java/org/hibernate/ogm/utils/jpa/OgmJpaTestRunner.java index 2a14ed24fe..587cc1be7a 100644 --- a/core/src/test/java/org/hibernate/ogm/utils/jpa/OgmJpaTestRunner.java +++ b/core/src/test/java/org/hibernate/ogm/utils/jpa/OgmJpaTestRunner.java @@ -127,6 +127,7 @@ public void run(RunNotifier notifier) { if ( isTestScopedEntityManagerFactoryRequired() ) { testScopedEntityManagerFactory = buildEntityManagerFactory(); injectEntityManagerFactory( null, testScopedFactoryFields, testScopedEntityManagerFactory ); + TestHelper.prepareDatabase( testScopedEntityManagerFactory ); } try { diff --git a/infinispan-remote/src/test/java/org/hibernate/ogm/datastore/infinispanremote/utils/InfinispanRemoteTestHelper.java b/infinispan-remote/src/test/java/org/hibernate/ogm/datastore/infinispanremote/utils/InfinispanRemoteTestHelper.java index 3c8da57a19..e3e823466c 100644 --- a/infinispan-remote/src/test/java/org/hibernate/ogm/datastore/infinispanremote/utils/InfinispanRemoteTestHelper.java +++ b/infinispan-remote/src/test/java/org/hibernate/ogm/datastore/infinispanremote/utils/InfinispanRemoteTestHelper.java @@ -70,6 +70,10 @@ public boolean backendSupportsTransactions() { return false; } + @Override + public void prepareDatabase(SessionFactory sessionFactory) { + } + @Override public void dropSchemaAndDatabase(SessionFactory sessionFactory) { final InfinispanRemoteDatastoreProvider datastoreProvider = getProvider( sessionFactory ); @@ -171,5 +175,4 @@ public static InfinispanRemoteDatastoreProvider getProvider(SessionFactory sessi } return InfinispanRemoteDatastoreProvider.class.cast( provider ); } - } diff --git a/infinispan/src/test/java/org/hibernate/ogm/datastore/infinispan/utils/InfinispanTestHelper.java b/infinispan/src/test/java/org/hibernate/ogm/datastore/infinispan/utils/InfinispanTestHelper.java index 7959294460..1e4c937c6c 100644 --- a/infinispan/src/test/java/org/hibernate/ogm/datastore/infinispan/utils/InfinispanTestHelper.java +++ b/infinispan/src/test/java/org/hibernate/ogm/datastore/infinispan/utils/InfinispanTestHelper.java @@ -107,6 +107,11 @@ public boolean backendSupportsTransactions() { return true; } + @Override + public void prepareDatabase(SessionFactory sessionFactory) { + // Nothing to do + } + @Override public void dropSchemaAndDatabase(SessionFactory sessionFactory) { // Nothing to do diff --git a/mongodb/src/test/java/org/hibernate/ogm/datastore/mongodb/utils/MongoDBTestHelper.java b/mongodb/src/test/java/org/hibernate/ogm/datastore/mongodb/utils/MongoDBTestHelper.java index f62dd4da33..6a43b6c26f 100644 --- a/mongodb/src/test/java/org/hibernate/ogm/datastore/mongodb/utils/MongoDBTestHelper.java +++ b/mongodb/src/test/java/org/hibernate/ogm/datastore/mongodb/utils/MongoDBTestHelper.java @@ -228,6 +228,10 @@ private static MongoDBDatastoreProvider getProvider(SessionFactory sessionFactor return MongoDBDatastoreProvider.class.cast( provider ); } + @Override + public void prepareDatabase(SessionFactory sessionFactory) { + } + @Override public void dropSchemaAndDatabase(SessionFactory sessionFactory) { MongoDBDatastoreProvider provider = getProvider( sessionFactory ); diff --git a/neo4j/src/test/java/org/hibernate/ogm/datastore/neo4j/utils/Neo4jTestHelper.java b/neo4j/src/test/java/org/hibernate/ogm/datastore/neo4j/utils/Neo4jTestHelper.java index 32d89f7a5c..9623bd8cfe 100644 --- a/neo4j/src/test/java/org/hibernate/ogm/datastore/neo4j/utils/Neo4jTestHelper.java +++ b/neo4j/src/test/java/org/hibernate/ogm/datastore/neo4j/utils/Neo4jTestHelper.java @@ -108,6 +108,10 @@ public boolean backendSupportsTransactions() { return true; } + @Override + public void prepareDatabase(SessionFactory sessionFactory) { + } + @Override public void dropSchemaAndDatabase(SessionFactory sessionFactory) { DatastoreProvider datastoreProvider = getDatastoreProvider( sessionFactory );