]> source.dussan.org Git - sonarqube.git/commitdiff
Improve EmbeddedDatabaseTest
authorEvgeny Mandrikov <mandrikov@gmail.com>
Wed, 9 Nov 2011 04:57:36 +0000 (08:57 +0400)
committerEvgeny Mandrikov <mandrikov@gmail.com>
Wed, 9 Nov 2011 09:23:17 +0000 (13:23 +0400)
sonar-core/src/test/java/org/sonar/persistence/InMemoryDatabase.java
sonar-server/src/test/java/org/sonar/server/database/EmbeddedDatabaseTest.java

index c806af967eb627dab259aedb20466a21b3e93f29..0d6bb6d8fd628fea576b8a88b44db5ca9f8cf974 100644 (file)
@@ -113,10 +113,11 @@ public class InMemoryDatabase implements Database {
     }
   }
 
-  void stopDatabase() {
+  public static void stopDatabase() {
     try {
       if (datasource != null) {
         datasource.close();
+        datasource = null;
       }
       DriverManager.getConnection("jdbc:derby:;shutdown=true");
 
index f9ddb06404e398a2256c57b38e749d4d02d574b7..318ef647c069226c89eee052ed183b05c36f63f7 100644 (file)
@@ -27,6 +27,7 @@ import org.junit.Before;
 import org.junit.Ignore;
 import org.junit.Test;
 import org.sonar.api.config.Settings;
+import org.sonar.persistence.InMemoryDatabase;
 
 import java.io.File;
 import java.io.IOException;
@@ -50,12 +51,18 @@ public class EmbeddedDatabaseTest {
 
   @Before
   public void setUp() throws Exception {
+    // This test doesn't work if InMemoryDatabase is active
+    try {
+      InMemoryDatabase.stopDatabase();
+    } catch (Exception e) {
+    }
+
     windowsCleanup();
     if (testPort == null) {
       testPort = Integer.toString(findFreeServerPort());
     }
     defaultProps = EmbeddedDatabase.getDefaultProperties(new Settings());
-    defaultProps.put("derby.drda.portNumber", testPort); // changing the defaut port
+    defaultProps.put("derby.drda.portNumber", testPort); // changing the default port
     driverUrl = "jdbc:derby://localhost:" + testPort + "/sonar;create=true;user=sonar;password=sonar";
   }
 
@@ -84,10 +91,9 @@ public class EmbeddedDatabaseTest {
     return port;
   }
 
-  @Ignore
   @Test
-  public void shouldStart() throws Exception {
-    database = new EmbeddedDatabase(new File(TEST_ROOT_DIR + TEST_DB_DIR_PREFIX + "Start" + testPort), defaultProps);
+  public void shouldStartAndStop() throws Exception {
+    database = new EmbeddedDatabase(new File(TEST_ROOT_DIR + TEST_DB_DIR_PREFIX + testPort), defaultProps);
     database.start();
     ClientDriver.class.newInstance();
     Connection conn;
@@ -95,12 +101,12 @@ public class EmbeddedDatabaseTest {
       conn = DriverManager.getConnection(driverUrl);
       conn.close();
     } catch (Exception ex) {
-      fail("Unable to connect");
+      fail("Unable to connect after start");
     }
     try {
       conn = DriverManager.getConnection("jdbc:derby://localhost:" + testPort + "/sonar;user=foo;password=bar");
       conn.close();
-      fail("Able to connect");
+      fail("Able to connect with wrong username and password");
     } catch (Exception ex) {
     }
 
@@ -109,26 +115,11 @@ public class EmbeddedDatabaseTest {
     assertTrue(testDb.isDirectory());
 
     database.stop();
-  }
 
-  @Test
-  public void shouldStop() throws Exception {
-    database = new EmbeddedDatabase(new File(TEST_ROOT_DIR + TEST_DB_DIR_PREFIX + "Stop" + testPort), defaultProps);
-    database.start();
-    ClientDriver.class.newInstance();
-    Connection conn;
-    try {
-      conn = DriverManager.getConnection(driverUrl);
-      conn.close();
-    } catch (Exception ex) {
-      fail("Unable to connect to " + driverUrl);
-    }
-
-    database.stop();
     try {
       conn = DriverManager.getConnection(driverUrl);
       conn.close();
-      fail("Able to connect");
+      fail("Able to connect after stop");
     } catch (Exception ex) {
     }
   }