@Test public void should_return_embedded_data_directory() throws Exception { Settings settings = testSettings(0); EmbeddedDatabase database = new EmbeddedDatabase(settings); File dataDirectory = database.getDataDirectory(settings); assertThat(dataDirectory).isNotNull(); assertThat(dataDirectory.getPath()).endsWith("testDB"); }
@Test public void should_return_sonar_home_directory() throws Exception { Settings settings = testSettings(0); settings.setProperty(CoreProperties.SONAR_HOME, "."); settings.setProperty(DatabaseProperties.PROP_EMBEDDED_DATA_DIR, ""); EmbeddedDatabase database = new EmbeddedDatabase(settings); File dataDirectory = database.getDataDirectory(settings); assertThat(dataDirectory).isNotNull(); assertThat(dataDirectory.getPath()).endsWith("data"); }
@Test public void should_fail_on_invalid_sonar_home_directory() throws Exception { throwable.expect(IllegalStateException.class); String testPath = getClass().getResource(".").getPath(); Settings settings = testSettings(0); settings.setProperty(CoreProperties.SONAR_HOME, testPath + "/unmatched_directory"); settings.setProperty(DatabaseProperties.PROP_EMBEDDED_DATA_DIR, ""); EmbeddedDatabase database = new EmbeddedDatabase(settings); database.getDataDirectory(settings); }
@Test public void should_fail_on_invalid_data_directory() throws Exception { throwable.expect(SonarException.class); String testPath = getClass().getResource(".").getPath(); Settings settings = testSettings(0); settings.setProperty( DatabaseProperties.PROP_EMBEDDED_DATA_DIR, testPath + "/invalid_db_data_file"); EmbeddedDatabase database = new EmbeddedDatabase(settings); database.start(); }
@Test(timeout = 10000) public void should_start_and_stop() throws IOException { int port = freeServerPort(); EmbeddedDatabase database = new EmbeddedDatabase(testSettings(port)); database.start(); try { String driverUrl = String.format("jdbc:h2:tcp://localhost:%d/sonar;USER=login;PASSWORD=pwd", port); DriverManager.registerDriver(new Driver()); DriverManager.getConnection(driverUrl).close(); } catch (Exception ex) { fail("Unable to connect after start"); } database.stop(); }
@Test(timeout = 10000) public void should_support_memory_database() throws IOException { int port = freeServerPort(); EmbeddedDatabase database = new EmbeddedDatabase( testSettings(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(); }