public class UpdateStatusJobTest extends AbstractDbUnitTestCase {
@Test
- public void shouldUnflagPenultimateLastSnapshot() throws Exception {
+ public void shouldUnflagPenultimateLastSnapshot() {
assertAnalysis(11, "shouldUnflagPenultimateLastSnapshot");
}
@Test
- public void doNotFailIfNoPenultimateLast() throws Exception {
+ public void doNotFailIfNoPenultimateLast() {
assertAnalysis(5, "doNotFailIfNoPenultimateLast");
}
private void assertAnalysis(int snapshotId, String fixture) {
setupData("sharedFixture", fixture);
+
DatabaseSession session = getSession();
UpdateStatusJob sensor = new UpdateStatusJob(mock(ServerMetadata.class), session, new DefaultResourcePersister(session), loadSnapshot(snapshotId));
sensor.execute();
- getSession().stop();
checkTables(fixture, "snapshots");
}
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;
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;
}
}
public void truncateDatabase(Connection connection) throws SQLException {
+ connection.setAutoCommit(false);
+
Statement statement = connection.createStatement();
for (String table : DatabaseUtils.TABLE_NAMES) {
// 1. truncate
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;
*/
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());
}
}
}
- @AfterClass
- public static void stopDatabase() {
- if (database != null) {
- database.stop();
- }
- }
-
protected DatabaseSession getSession() {
return session;
}
}
}
}
+ databaseSession.commit();
}
private void clearProperties() {
FileUtils.readFileToString(
TestUtils.getResource(getClass(), "backup-with-multiline-property.xml"), CharEncoding.UTF_8));
- getSession().commit();
-
Property property = getSession().getSingleResult(Property.class, "key", "sonar.multiline.secured");
assertThat(property.getValue(), startsWith("ONQwdcwcwwdadalkdmaiQGMqMVnhtAbhxwjjoVkHbWgx"));
assertThat(property.getValue(), endsWith("mmmm"));