]> source.dussan.org Git - sonarqube.git/commitdiff
Support embedded in memory database
authorDavid Gageot <david@gageot.net>
Thu, 12 Jul 2012 11:46:59 +0000 (13:46 +0200)
committerDavid Gageot <david@gageot.net>
Thu, 12 Jul 2012 13:59:43 +0000 (15:59 +0200)
sonar-server/src/main/java/org/sonar/server/database/EmbeddedDatabase.java
sonar-server/src/test/java/org/sonar/server/database/EmbeddedDatabaseTest.java

index 1910ef96573e186243e767e882ae0645befd6124..75fa1e40fb5ba719d62190e956e761bf8ef45a1d 100644 (file)
@@ -57,13 +57,17 @@ public class EmbeddedDatabase {
     String port = getSetting(DatabaseProperties.PROP_EMBEDDED_PORT, DatabaseProperties.PROP_EMBEDDED_PORT_DEFAULT_VALUE);
     String user = getSetting(DatabaseProperties.PROP_USER, DatabaseProperties.PROP_USER_DEFAULT_VALUE);
     String password = getSetting(DatabaseProperties.PROP_PASSWORD, DatabaseProperties.PROP_PASSWORD_DEFAULT_VALUE);
+    String url = getSetting(DatabaseProperties.PROP_URL, DatabaseProperties.PROP_USER_DEFAULT_VALUE);
 
     try {
-      createDatabase(dbHome, user, password);
-
-      server = Server.createTcpServer("-tcpPort", port, "-tcpAllowOthers", "-ifExists", "-baseDir", dbHome.getAbsolutePath());
-
-      LOG.info("Starting embedded database on port " + server.getPort());
+      if (url.contains("/mem:")) {
+        server = Server.createTcpServer("-tcpPort", port, "-tcpAllowOthers", "-baseDir", dbHome.getAbsolutePath());
+      } else {
+        createDatabase(dbHome, user, password);
+        server = Server.createTcpServer("-tcpPort", port, "-tcpAllowOthers", "-ifExists", "-baseDir", dbHome.getAbsolutePath());
+      }
+
+      LOG.info("Starting embedded database on port " + server.getPort() + " with url " + url);
       server.start();
 
       LOG.info("Embedded database started. Data stored in: " + dbHome.getAbsolutePath());
index ceace45b1f10fe465b50ad88a7f96dda3ec5a6e8..c6d43cdc6b91b16e61b8aff69dabf5ba12b7481b 100644 (file)
@@ -50,6 +50,25 @@ public class EmbeddedDatabaseTest {
     database.stop();
   }
 
+  @Test(timeout = 5000)
+  public void should_support_memory_database() throws IOException {
+    int port = freeServerPort();
+
+    EmbeddedDatabase database = new EmbeddedDatabase(settings(port)
+        .setProperty(DatabaseProperties.PROP_URL, "jdbc:h2:tcp://localhost:" + port + "/mem:sonarIT;USER=sonar;PASSWORD=sonar"));
+    database.start();
+
+    try {
+      String driverUrl = String.format("jdbc:h2:tcp://localhost:%d/mem:sonarIT;USER=sonar;PASSWORD=sonar", port);
+      DriverManager.registerDriver(new Driver());
+      DriverManager.getConnection(driverUrl).close();
+    } catch (Exception ex) {
+      fail("Unable to connect after start");
+    }
+
+    database.stop();
+  }
+
   static Settings settings(int port) {
     return new Settings()
         .setProperty(DatabaseProperties.PROP_USER, "login")