diff options
author | David Gageot <david@gageot.net> | 2012-07-12 08:40:17 +0200 |
---|---|---|
committer | David Gageot <david@gageot.net> | 2012-07-12 17:21:01 +0200 |
commit | 8b1a57036400e89b695a2a70626b43d94ec20ac4 (patch) | |
tree | ecaafbfbcce2294eed804f646e90da64334b0fd5 /sonar-core | |
parent | ff40d72923a6b480ee0d4795ba8ed417d079baf1 (diff) | |
download | sonarqube-8b1a57036400e89b695a2a70626b43d94ec20ac4.tar.gz sonarqube-8b1a57036400e89b695a2a70626b43d94ec20ac4.zip |
Reuse database for faster unit tests
Diffstat (limited to 'sonar-core')
3 files changed, 33 insertions, 53 deletions
diff --git a/sonar-core/src/test/java/org/sonar/core/persistence/AbstractDaoTestCase.java b/sonar-core/src/test/java/org/sonar/core/persistence/AbstractDaoTestCase.java index 0c64f2ef419..131af2e70c7 100644 --- a/sonar-core/src/test/java/org/sonar/core/persistence/AbstractDaoTestCase.java +++ b/sonar-core/src/test/java/org/sonar/core/persistence/AbstractDaoTestCase.java @@ -35,10 +35,8 @@ import org.dbunit.dataset.ITable; import org.dbunit.dataset.ReplacementDataSet; import org.dbunit.dataset.filter.DefaultColumnFilter; import org.dbunit.dataset.xml.FlatXmlDataSet; -import org.junit.AfterClass; import org.junit.Assert; import org.junit.Before; -import org.junit.BeforeClass; import org.sonar.api.config.Settings; import org.sonar.core.config.Logback; @@ -54,37 +52,29 @@ public abstract class AbstractDaoTestCase { private static IDatabaseTester databaseTester; private static MyBatis myBatis; - @BeforeClass - public static void startDatabase() { - Settings settings = new Settings().setProperties(Maps.fromProperties(System.getProperties())); - - boolean hasDialect = settings.hasKey("sonar.jdbc.dialect"); - if (hasDialect) { - database = new DefaultDatabase(settings); - } else { - database = new H2Database("sonarMyBatis"); - } - database.start(); + @Before + public void startDatabase() throws SQLException { + if (database == null) { + Settings settings = new Settings().setProperties(Maps.fromProperties(System.getProperties())); + + boolean hasDialect = settings.hasKey("sonar.jdbc.dialect"); + if (hasDialect) { + database = new DefaultDatabase(settings); + } else { + database = new H2Database("sonarMyBatis"); + } + database.start(); - databaseCommands = DatabaseCommands.forDialect(database.getDialect()); - databaseTester = new DataSourceDatabaseTester(database.getDataSource()); + databaseCommands = DatabaseCommands.forDialect(database.getDialect()); + databaseTester = new DataSourceDatabaseTester(database.getDataSource()); - myBatis = new MyBatis(database, settings, new Logback()); - myBatis.start(); - } + myBatis = new MyBatis(database, settings, new Logback()); + myBatis.start(); + } - @Before - public void setupDbUnit() throws SQLException { databaseCommands.truncateDatabase(database.getDataSource().getConnection()); } - @AfterClass - public static void stopDatabase() { - if (database != null) { - database.stop(); - } - } - protected MyBatis getMyBatis() { return myBatis; } diff --git a/sonar-core/src/test/java/org/sonar/core/persistence/DatabaseCommands.java b/sonar-core/src/test/java/org/sonar/core/persistence/DatabaseCommands.java index 2c1b44fd0d5..1b787aa1bae 100644 --- a/sonar-core/src/test/java/org/sonar/core/persistence/DatabaseCommands.java +++ b/sonar-core/src/test/java/org/sonar/core/persistence/DatabaseCommands.java @@ -166,6 +166,8 @@ public abstract class DatabaseCommands { } public void truncateDatabase(Connection connection) throws SQLException { + connection.setAutoCommit(false); + Statement statement = connection.createStatement(); for (String table : DatabaseUtils.TABLE_NAMES) { // 1. truncate diff --git a/sonar-core/src/test/java/org/sonar/jpa/test/AbstractDbUnitTestCase.java b/sonar-core/src/test/java/org/sonar/jpa/test/AbstractDbUnitTestCase.java index 5aefd12e30b..01e0b25b638 100644 --- a/sonar-core/src/test/java/org/sonar/jpa/test/AbstractDbUnitTestCase.java +++ b/sonar-core/src/test/java/org/sonar/jpa/test/AbstractDbUnitTestCase.java @@ -33,9 +33,7 @@ import org.dbunit.dataset.ReplacementDataSet; import org.dbunit.dataset.filter.DefaultColumnFilter; import org.dbunit.dataset.xml.FlatXmlDataSet; import org.junit.After; -import org.junit.AfterClass; import org.junit.Before; -import org.junit.BeforeClass; import org.sonar.api.database.DatabaseSession; import org.sonar.core.persistence.Database; import org.sonar.core.persistence.DatabaseCommands; @@ -55,28 +53,25 @@ import static org.junit.Assert.fail; */ public abstract class AbstractDbUnitTestCase { private static Database database; - private static DefaultDatabaseConnector dbConnector; private static DatabaseCommands databaseCommands; private static IDatabaseTester databaseTester; private static JpaDatabaseSession session; - @BeforeClass - public static void startDatabase() { - database = new H2Database("sonarHibernate"); - database.start(); - - dbConnector = new MemoryDatabaseConnector(database); - dbConnector.start(); - - databaseCommands = DatabaseCommands.forDialect(database.getDialect()); - databaseTester = new DataSourceDatabaseTester(database.getDataSource()); - - session = new JpaDatabaseSession(dbConnector); - session.start(); - } - @Before - public void setupDbUnit() throws SQLException { + public void startDatabase() throws SQLException { + if (database == null) { + database = new H2Database("sonarHibernate"); + database.start(); + + databaseCommands = DatabaseCommands.forDialect(database.getDialect()); + databaseTester = new DataSourceDatabaseTester(database.getDataSource()); + + DefaultDatabaseConnector dbConnector = new MemoryDatabaseConnector(database); + dbConnector.start(); + session = new JpaDatabaseSession(dbConnector); + session.start(); + } + databaseCommands.truncateDatabase(database.getDataSource().getConnection()); } @@ -87,13 +82,6 @@ public abstract class AbstractDbUnitTestCase { } } - @AfterClass - public static void stopDatabase() { - if (database != null) { - database.stop(); - } - } - protected DatabaseSession getSession() { return session; } |