static final String STATUS_MIGRATION_SUCCEEDED = "MIGRATION_SUCCEEDED";
static final String STATUS_MIGRATION_REQUIRED = "MIGRATION_REQUIRED";
+ static final String NO_CONNECTION_TO_DB = "Cannot connect to Database.";
static final String UNSUPPORTED_DATABASE_MIGRATION_STATUS = "Unsupported DatabaseMigration status";
static final String MESSAGE_NO_MIGRATION_ON_EMBEDDED_DATABASE = "Upgrade is not supported on embedded database.";
static final String MESSAGE_MIGRATION_REQUIRED = "Database migration is required. DB migration can be started using WS /api/system/migrate_db.";
import org.sonar.db.version.DatabaseMigration;
import org.sonar.db.version.DatabaseVersion;
+import static com.google.common.base.Preconditions.checkState;
+import static org.sonar.server.platform.ws.DbMigrationJsonWriter.NO_CONNECTION_TO_DB;
import static org.sonar.server.platform.ws.DbMigrationJsonWriter.UNSUPPORTED_DATABASE_MIGRATION_STATUS;
import static org.sonar.server.platform.ws.DbMigrationJsonWriter.statusDescription;
import static org.sonar.server.platform.ws.DbMigrationJsonWriter.write;
@Override
public void handle(Request request, Response response) throws Exception {
Integer currentVersion = databaseVersion.getVersion();
+ checkState(currentVersion != null, NO_CONNECTION_TO_DB);
JsonWriter json = response.newJsonWriter();
try {
import org.sonar.db.version.DatabaseMigration;
import org.sonar.db.version.DatabaseVersion;
+import static com.google.common.base.Preconditions.checkState;
+import static org.sonar.server.platform.ws.DbMigrationJsonWriter.NO_CONNECTION_TO_DB;
import static org.sonar.server.platform.ws.DbMigrationJsonWriter.UNSUPPORTED_DATABASE_MIGRATION_STATUS;
import static org.sonar.server.platform.ws.DbMigrationJsonWriter.statusDescription;
import static org.sonar.server.platform.ws.DbMigrationJsonWriter.write;
@Override
public void handle(Request request, Response response) throws Exception {
Integer currentVersion = databaseVersion.getVersion();
- if (currentVersion == null) {
- throw new IllegalStateException("Version can not be retrieved from Database. Database is either blank or corrupted");
- }
+ checkState(currentVersion != null, NO_CONNECTION_TO_DB);
JsonWriter json = response.newJsonWriter();
try {
import java.util.Date;
import javax.annotation.Nullable;
import org.junit.Before;
+import org.junit.Rule;
import org.junit.Test;
+import org.junit.rules.ExpectedException;
import org.sonar.api.server.ws.Request;
import org.sonar.api.utils.DateUtils;
import org.sonar.db.Database;
import static org.sonar.test.JsonAssert.assertJson;
public class DbMigrationStatusActionTest {
+ @Rule
+ public ExpectedException expectedException = ExpectedException.none();
private static final Date SOME_DATE = new Date();
private static final String SOME_THROWABLE_MSG = "blablabla pop !";
assertJson(response.outputAsString()).isSimilarTo(getClass().getResource("example-migrate_db.json"));
}
+ @Test
+ public void throws_ISE_when_databaseVersion_can_not_be_determined() throws Exception {
+ when(databaseVersion.getVersion()).thenReturn(null);
+
+ expectedException.expect(IllegalStateException.class);
+ expectedException.expectMessage("Cannot connect to Database.");
+
+ underTest.handle(request, response);
+ }
+
@Test
public void msg_is_operational_and_state_from_databasemigration_when_databaseversion_is_equal_to_currentversion() throws Exception {
when(databaseVersion.getVersion()).thenReturn(CURRENT_VERSION);
import java.util.Date;
import javax.annotation.Nullable;
import org.junit.Before;
+import org.junit.Rule;
import org.junit.Test;
+import org.junit.rules.ExpectedException;
import org.sonar.api.server.ws.Request;
import org.sonar.api.utils.DateUtils;
import org.sonar.db.Database;
import static org.sonar.test.JsonAssert.assertJson;
public class MigrateDbActionTest {
+ @Rule
+ public ExpectedException expectedException = ExpectedException.none();
private static final Date SOME_DATE = new Date();
private static final String SOME_THROWABLE_MSG = "blablabla pop !";
when(database.getDialect()).thenReturn(dialect);
}
- @Test(expected = IllegalStateException.class)
+ @Test
public void ISE_is_thrown_when_version_can_not_be_retrieved_from_database() throws Exception {
when(databaseVersion.getVersion()).thenReturn(null);
+ expectedException.expect(IllegalStateException.class);
+ expectedException.expectMessage("Cannot connect to Database.");
+
underTest.handle(request, response);
}