aboutsummaryrefslogtreecommitdiffstats
path: root/sonar-core
diff options
context:
space:
mode:
authorDavid Gageot <david@gageot.net>2012-07-12 08:40:17 +0200
committerDavid Gageot <david@gageot.net>2012-07-12 17:21:01 +0200
commit8b1a57036400e89b695a2a70626b43d94ec20ac4 (patch)
treeecaafbfbcce2294eed804f646e90da64334b0fd5 /sonar-core
parentff40d72923a6b480ee0d4795ba8ed417d079baf1 (diff)
downloadsonarqube-8b1a57036400e89b695a2a70626b43d94ec20ac4.tar.gz
sonarqube-8b1a57036400e89b695a2a70626b43d94ec20ac4.zip
Reuse database for faster unit tests
Diffstat (limited to 'sonar-core')
-rw-r--r--sonar-core/src/test/java/org/sonar/core/persistence/AbstractDaoTestCase.java44
-rw-r--r--sonar-core/src/test/java/org/sonar/core/persistence/DatabaseCommands.java2
-rw-r--r--sonar-core/src/test/java/org/sonar/jpa/test/AbstractDbUnitTestCase.java40
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;
}