use of org.sonar.server.platform.db.migration.step.RegisteredMigrationStep in project sonarqube by SonarSource.
the class MigrationEngineImpl method execute.
@Override
public void execute() {
MigrationContainer migrationContainer = new MigrationContainerImpl(serverContainer, MigrationStepsExecutorImpl.class);
boolean blueGreen = configuration.getBoolean(ProcessProperties.Property.BLUE_GREEN_ENABLED.getKey()).orElse(false);
try {
MigrationStepsExecutor stepsExecutor = migrationContainer.getComponentByType(MigrationStepsExecutor.class);
Optional<Long> lastMigrationNumber = migrationHistory.getLastMigrationNumber();
List<RegisteredMigrationStep> steps = lastMigrationNumber.map(i -> migrationSteps.readFrom(i + 1)).orElse(migrationSteps.readAll());
if (blueGreen) {
ensureSupportBlueGreen(steps);
}
stepsExecutor.execute(steps);
} finally {
migrationContainer.cleanup();
}
}
use of org.sonar.server.platform.db.migration.step.RegisteredMigrationStep in project sonarqube by SonarSource.
the class MigrationHistoryMeddler method meddle.
public void meddle(MigrationHistory migrationHistory) {
// change last migration number on specific cases
migrationHistory.getLastMigrationNumber().ifPresent(migrationNumber -> {
Long newMigrationNumber = meddledSteps.get(migrationNumber);
if (newMigrationNumber != null) {
RegisteredMigrationStep registeredMigrationStep = migrationSteps.readFrom(newMigrationNumber).get(0);
migrationHistory.done(registeredMigrationStep);
}
});
}
use of org.sonar.server.platform.db.migration.step.RegisteredMigrationStep in project sonarqube by SonarSource.
the class MigrationEngineImplTest method execute_execute_all_steps_of_there_is_no_last_migration_number.
@Test
public void execute_execute_all_steps_of_there_is_no_last_migration_number() {
when(migrationHistory.getLastMigrationNumber()).thenReturn(Optional.empty());
List<RegisteredMigrationStep> steps = singletonList(new RegisteredMigrationStep(1, "doo", TestMigrationStep.class));
when(migrationSteps.readAll()).thenReturn(steps);
underTest.execute();
verify(migrationSteps, times(2)).readAll();
assertThat(stepRegistry.stepRan).isTrue();
}
use of org.sonar.server.platform.db.migration.step.RegisteredMigrationStep in project sonarqube by SonarSource.
the class MigrationEngineImplTest method fail_blue_green_execution_if_some_migrations_are_not_compatible.
@Test
public void fail_blue_green_execution_if_some_migrations_are_not_compatible() {
settings.setProperty(ProcessProperties.Property.BLUE_GREEN_ENABLED.getKey(), true);
when(migrationHistory.getLastMigrationNumber()).thenReturn(Optional.of(50L));
List<RegisteredMigrationStep> steps = asList(new RegisteredMigrationStep(1, "foo", TestBlueGreenMigrationStep.class), new RegisteredMigrationStep(2, "bar", TestMigrationStep.class));
when(migrationSteps.readFrom(51)).thenReturn(steps);
try {
underTest.execute();
fail();
} catch (IllegalStateException e) {
assertThat(e).hasMessage("All migrations canceled. #2 does not support blue/green deployment: bar");
assertThat(stepRegistry.stepRan).isFalse();
}
}
use of org.sonar.server.platform.db.migration.step.RegisteredMigrationStep in project sonarqube by SonarSource.
the class MigrationEngineImplTest method execute_steps_in_blue_green_mode.
@Test
public void execute_steps_in_blue_green_mode() {
settings.setProperty(ProcessProperties.Property.BLUE_GREEN_ENABLED.getKey(), true);
when(migrationHistory.getLastMigrationNumber()).thenReturn(Optional.of(50L));
List<RegisteredMigrationStep> steps = singletonList(new RegisteredMigrationStep(1, "doo", TestBlueGreenMigrationStep.class));
when(migrationSteps.readFrom(51)).thenReturn(steps);
when(migrationSteps.readAll()).thenReturn(steps);
underTest.execute();
verify(migrationSteps).readFrom(51);
assertThat(stepRegistry.stepRan).isTrue();
}
Aggregations