import java.util.Set;
import java.util.stream.Stream;
import org.elasticsearch.action.admin.indices.mapping.get.GetMappingsResponse;
+import org.sonar.api.utils.log.Loggers;
import org.sonar.server.platform.db.migration.es.MigrationEsClient;
public class MigrationEsClientImpl implements MigrationEsClient {
Stream.concat(Stream.of(name), Arrays.stream(otherNames))
.distinct()
.filter(existingIndices::contains)
- .forEach(index -> client.nativeClient().admin().indices().prepareDelete(index).get());
+ .forEach(this::deleteIndex);
+ }
+
+ private void deleteIndex(String index) {
+ Loggers.get(getClass()).info("Drop Elasticsearch index [{}]", index);
+ client.nativeClient().admin().indices().prepareDelete(index).get();
}
}
import org.junit.Rule;
import org.junit.Test;
import org.sonar.api.config.internal.MapSettings;
+import org.sonar.api.utils.log.LogTester;
+import org.sonar.api.utils.log.LoggerLevel;
import org.sonar.server.platform.db.migration.es.MigrationEsClient;
import static org.assertj.core.api.Assertions.assertThat;
import static org.sonar.server.es.NewIndex.SettingsConfiguration.newBuilder;
public class MigrationEsClientImplTest {
+ @Rule
+ public LogTester logTester = new LogTester();
@Rule
public EsTester es = EsTester.createCustom(
new SimpleIndexDefinition("a"),
assertThat(loadExistingIndices())
.doesNotContain("a")
.contains("b", "c");
+ assertThat(logTester.logs(LoggerLevel.INFO))
+ .contains("Drop Elasticsearch index [a]");
}
@Test
assertThat(loadExistingIndices())
.doesNotContain("a", "c")
.contains("b");
+ assertThat(logTester.logs(LoggerLevel.INFO))
+ .contains("Drop Elasticsearch index [a]", "Drop Elasticsearch index [c]")
+ .doesNotContain("Drop Elasticsearch index [xxx]");
}
private Iterator<String> loadExistingIndices() {