@Test
public void isOperational_must_log_once_when_master_is_not_elected() {
MemoryAppender<ILoggingEvent> memoryAppender = new MemoryAppender<>();
LoggerContext lc = (LoggerContext) LoggerFactory.getILoggerFactory();
lc.reset();
memoryAppender.setContext(lc);
memoryAppender.start();
lc.getLogger(EsProcessMonitor.class).addAppender(memoryAppender);
EsConnector esConnector = mock(EsConnector.class);
when(esConnector.getClusterHealthStatus())
.thenThrow(new MasterNotDiscoveredException("Master not elected -test-"));
EsProcessMonitor underTest = new EsProcessMonitor(mock(Process.class), ProcessId.ELASTICSEARCH, esConnector);
assertThat(underTest.isOperational()).isFalse();
assertThat(memoryAppender.events).isNotEmpty();
assertThat(memoryAppender.events)
.extracting(ILoggingEvent::getLevel, ILoggingEvent::getMessage)
.containsOnlyOnce(
tuple(Level.INFO, "Elasticsearch is waiting for a master to be elected. Did you start all the search nodes ?")
);
assertThat(underTest.isOperational()).isFalse();
assertThat(memoryAppender.events)
.extracting(ILoggingEvent::getLevel, ILoggingEvent::getMessage)
.containsOnlyOnce(
tuple(Level.INFO, "Elasticsearch is waiting for a master to be elected. Did you start all the search nodes ?")
);
}