@Test public void shouldLogIndexStateOnStart() throws Exception { // given TestLogger logger = new TestLogger(); SchemaIndexProvider provider = mock(SchemaIndexProvider.class); when(provider.getProviderDescriptor()).thenReturn(PROVIDER_DESCRIPTOR); SchemaIndexProviderMap providerMap = new DefaultSchemaIndexProviderMap(provider); TokenNameLookup mockLookup = mock(TokenNameLookup.class); IndexingService indexingService = new IndexingService( mock(JobScheduler.class), providerMap, mock(IndexStoreView.class), mockLookup, mock(UpdateableSchemaState.class), mockLogging(logger)); IndexRule onlineIndex = indexRule(1, 1, 1, PROVIDER_DESCRIPTOR); IndexRule populatingIndex = indexRule(2, 1, 2, PROVIDER_DESCRIPTOR); IndexRule failedIndex = indexRule(3, 2, 2, PROVIDER_DESCRIPTOR); when(provider.getInitialState(onlineIndex.getId())).thenReturn(ONLINE); when(provider.getInitialState(populatingIndex.getId())) .thenReturn(InternalIndexState.POPULATING); when(provider.getInitialState(failedIndex.getId())).thenReturn(InternalIndexState.FAILED); indexingService.initIndexes(asList(onlineIndex, populatingIndex, failedIndex).iterator()); when(mockLookup.labelGetName(1)).thenReturn("LabelOne"); when(mockLookup.labelGetName(2)).thenReturn("LabelTwo"); when(mockLookup.propertyKeyGetName(1)).thenReturn("propertyOne"); when(mockLookup.propertyKeyGetName(2)).thenReturn("propertyTwo"); logger.clear(); // when indexingService.start(); // then verify(provider).getPopulationFailure(3); logger.assertAtLeastOnce( info("IndexingService.start: index on :LabelOne(propertyOne) is ONLINE")); logger.assertAtLeastOnce( info("IndexingService.start: index on :LabelOne(propertyTwo) is POPULATING")); logger.assertAtLeastOnce( info("IndexingService.start: index on :LabelTwo(propertyTwo) is FAILED")); }