]> source.dussan.org Git - sonarqube.git/commitdiff
Fix compatibility of tests with mysql and postgresql
authorSimon Brandhof <simon.brandhof@sonarsource.com>
Thu, 22 Jan 2015 14:07:02 +0000 (15:07 +0100)
committerSimon Brandhof <simon.brandhof@sonarsource.com>
Thu, 22 Jan 2015 14:07:13 +0000 (15:07 +0100)
The schema used by dbunit is badly set. It should not be the db login on mysql and postgresql.

sonar-core/src/test/java/org/sonar/core/persistence/AbstractDaoTestCase.java
sonar-core/src/test/java/org/sonar/core/persistence/DatabaseCommands.java
sonar-core/src/test/java/org/sonar/core/persistence/DbTester.java

index bd4f2912449598f96c78c14327a9b4c2672ca931..39c3a397b78198ea7d1a2dcf5a212fd70e4a5d4e 100644 (file)
@@ -106,7 +106,7 @@ public abstract class AbstractDaoTestCase {
   @Before
   public void startDbUnit() throws Exception {
     databaseCommands.truncateDatabase(database.getDataSource());
-    databaseTester = new DataSourceDatabaseTester(database.getDataSource(), login);
+    databaseTester = new DataSourceDatabaseTester(database.getDataSource(), databaseCommands.useLoginAsSchema() ? login : null);
   }
 
   /**
index 983f539e6fafeab804375bd08e92841d801f0628..67a953c206e435eb6de5977929dfb641191af58a 100644 (file)
@@ -61,12 +61,16 @@ public abstract class DatabaseCommands {
     return dbUnitFactory;
   }
 
-  abstract List<String> resetPrimaryKey(String table, int minSequenceValue);
+  abstract List<String> resetSequenceSql(String table, int minSequenceValue);
 
-  String getTruncateCommand(String table) {
+  String truncateSql(String table) {
     return "TRUNCATE TABLE " + table;
   }
 
+  boolean useLoginAsSchema() {
+    return false;
+  }
+
   public static DatabaseCommands forDialect(Dialect dialect) {
     DatabaseCommands command = ImmutableMap.of(
       org.sonar.core.persistence.dialect.H2.ID, H2,
@@ -80,21 +84,21 @@ public abstract class DatabaseCommands {
 
   private static final DatabaseCommands H2 = new DatabaseCommands(new H2DataTypeFactory()) {
     @Override
-    List<String> resetPrimaryKey(String table, int minSequenceValue) {
+    List<String> resetSequenceSql(String table, int minSequenceValue) {
       return Arrays.asList("ALTER TABLE " + table + " ALTER COLUMN ID RESTART WITH " + minSequenceValue);
     }
   };
 
   private static final DatabaseCommands POSTGRESQL = new DatabaseCommands(new PostgresqlDataTypeFactory()) {
     @Override
-    List<String> resetPrimaryKey(String table, int minSequenceValue) {
+    List<String> resetSequenceSql(String table, int minSequenceValue) {
       return Arrays.asList("ALTER SEQUENCE " + table + "_id_seq RESTART WITH " + minSequenceValue);
     }
   };
 
   private static final DatabaseCommands ORACLE = new DatabaseCommands(new Oracle10DataTypeFactory()) {
     @Override
-    List<String> resetPrimaryKey(String table, int minSequenceValue) {
+    List<String> resetSequenceSql(String table, int minSequenceValue) {
       String sequence = StringUtils.upperCase(table) + "_SEQ";
       return Arrays.asList(
         "DROP SEQUENCE " + sequence,
@@ -102,9 +106,14 @@ public abstract class DatabaseCommands {
     }
 
     @Override
-    String getTruncateCommand(String table) {
+    String truncateSql(String table) {
       return "TRUNCATE TABLE " + table + " REUSE STORAGE";
     }
+
+    @Override
+    boolean useLoginAsSchema() {
+      return true;
+    }
   };
 
   private static final DatabaseCommands MSSQL = new DatabaseCommands(new MsSqlDataTypeFactory()) {
@@ -113,7 +122,7 @@ public abstract class DatabaseCommands {
     }
 
     @Override
-    List<String> resetPrimaryKey(String table, int minSequenceValue) {
+    List<String> resetSequenceSql(String table, int minSequenceValue) {
       return null;
     }
 
@@ -130,7 +139,7 @@ public abstract class DatabaseCommands {
     }
 
     @Override
-    List<String> resetPrimaryKey(String table, int minSequenceValue) {
+    List<String> resetSequenceSql(String table, int minSequenceValue) {
       return null;
     }
   };
@@ -144,7 +153,7 @@ public abstract class DatabaseCommands {
       for (String table : DatabaseVersion.TABLES) {
         try {
           if (shouldTruncate(connection, table)) {
-            statement.executeUpdate(getTruncateCommand(table));
+            statement.executeUpdate(truncateSql(table));
             connection.commit();
           }
         } catch (Exception e) {
@@ -188,7 +197,7 @@ public abstract class DatabaseCommands {
         int maxId = result.getInt(1);
         result.close();
 
-        for (String resetCommand : resetPrimaryKey(table, maxId)) {
+        for (String resetCommand : resetSequenceSql(table, maxId)) {
           statement.executeUpdate(resetCommand);
         }
         connection.commit();
index 5c2a704d42572769ba98b3c6f4af983c083b0c50..b838a10f452175dbcbba57e963c396b69f49becb 100644 (file)
@@ -122,7 +122,7 @@ public class DbTester extends ExternalResource {
     LOG.info("Test Database: " + db);
 
     commands = DatabaseCommands.forDialect(db.getDialect());
-    tester = new DataSourceDatabaseTester(db.getDataSource(), login);
+    tester = new DataSourceDatabaseTester(db.getDataSource(), commands.useLoginAsSchema() ? login : null);
 
     myBatis = new MyBatis(db, new Logback(), new NullQueue());
     myBatis.start();