@Override public IndexPopulator getPopulator( StoreIndexDescriptor descriptor, IndexSamplingConfig samplingConfig ) { return indexProvider.getPopulator( descriptor, samplingConfig ); }
@Override public IndexPopulator getPopulator( StoreIndexDescriptor descriptor, IndexSamplingConfig samplingConfig ) { return actual.getPopulator( descriptor, samplingConfig ); }
private IndexPopulator populatorFromProvider( StoreIndexDescriptor descriptor, IndexSamplingConfig samplingConfig ) { IndexProvider indexProvider = providerMap.lookup( descriptor.providerDescriptor() ); return indexProvider.getPopulator( descriptor, samplingConfig ); }
private GatheringIndexWriter newWriter() throws IOException { GatheringIndexWriter writer = new GatheringIndexWriter(); when( mockedIndexProvider.getPopulator( any( StoreIndexDescriptor.class ), any( IndexSamplingConfig.class ) ) ).thenReturn( writer ); when( mockedIndexProvider.getOnlineAccessor( any( StoreIndexDescriptor.class ), any( IndexSamplingConfig.class ) ) ).thenReturn( writer ); return writer; }
@Override public IndexPopulator getPopulator( StoreIndexDescriptor descriptor, IndexSamplingConfig samplingConfig ) { EnumMap<IndexSlot,IndexPopulator> populators = providers.map( provider -> provider.getPopulator( descriptor, samplingConfig ) ); return new FusionIndexPopulator( slotSelector, new InstanceSelector<>( populators ), descriptor.getId(), dropAction, archiveFailedIndex ); }
private long dbWithIndexAndSingleIndexedNode() throws Exception { IndexPopulator populator = mock( IndexPopulator.class ); IndexProvider provider = mock( IndexProvider.class ); when( provider.getProviderDescriptor() ).thenReturn( DESCRIPTOR ); when( provider.getPopulator( any( StoreIndexDescriptor.class ), any( IndexSamplingConfig.class ) ) ) .thenReturn( populator ); when( provider.bless( any( IndexDescriptor.class ) ) ).thenCallRealMethod(); BatchInserter inserter = newBatchInserterWithIndexProvider( singleInstanceIndexProviderFactory( KEY, provider ), provider.getProviderDescriptor() ); inserter.createDeferredSchemaIndex( label("Hacker") ).on( "handle" ).create(); long nodeId = inserter.createNode( map( "handle", "Jakewins" ), label( "Hacker" ) ); inserter.shutdown(); return nodeId; }
@Before public void setup() throws IOException, EntityNotFoundException { indexProvider = providerCreator.apply( this ); rules.fileSystem().mkdirs( indexProvider.directoryStructure().rootDirectory() ); populator = indexProvider.getPopulator( descriptor, samplingConfig ); when( nodePropertyAccessor.getNodePropertyValue( anyLong(), anyInt() ) ).thenThrow( UnsupportedOperationException.class ); prevAccessCheck = UnsafeUtil.exchangeNativeAccessCheckEnabled( false ); }
@Test public void shouldStorePopulationFailedForRetrievalFromProviderLater() throws Exception { // GIVEN String failure = "The contrived failure"; IndexSamplingConfig indexSamplingConfig = new IndexSamplingConfig( Config.defaults() ); // WHEN (this will attempt to call close) withPopulator( indexProvider.getPopulator( descriptor, indexSamplingConfig ), p -> p.markAsFailed( failure ), false ); // THEN assertThat( indexProvider.getPopulationFailure( descriptor ), containsString( failure ) ); }
@Test public void shouldBeAbleToDropAClosedIndexPopulator() throws Exception { // GIVEN IndexSamplingConfig indexSamplingConfig = new IndexSamplingConfig( Config.defaults() ); final IndexPopulator p = indexProvider.getPopulator( descriptor, indexSamplingConfig ); p.close( false ); // WHEN p.drop(); // THEN - no exception should be thrown (it's been known to!) }
@Test public void shouldPopulateWithAllValues() throws Exception { // GIVEN withPopulator( indexProvider.getPopulator( descriptor, indexSamplingConfig ), p -> p.add( updates( valueSet1 ) ) ); // THEN assertHasAllValues( valueSet1 ); }
private IndexPopulator indexPopulator( IndexDescriptor descriptor ) { IndexSamplingConfig samplingConfig = new IndexSamplingConfig( Config.defaults() ); IndexProvider indexProvider = db.getDependencyResolver().resolveDependency( DefaultIndexProviderMap.class ).getDefaultProvider(); return indexProvider.getPopulator( descriptor.withId( 21 ), samplingConfig ); }
@Test public void getPopulatorMustThrowIfInReadOnlyMode() { // given provider = newReadOnlyProvider(); try { // when provider.getPopulator( descriptor(), samplingConfig() ); fail( "Should have failed" ); } catch ( UnsupportedOperationException e ) { // then // good } }
@Before public void before() throws Exception { IndexSamplingConfig indexSamplingConfig = new IndexSamplingConfig( Config.defaults() ); IndexPopulator populator = indexProvider.getPopulator( descriptor, indexSamplingConfig ); populator.create(); populator.close( true ); accessor = indexProvider.getOnlineAccessor( descriptor, indexSamplingConfig ); }
@Test public void getPopulationFailureMustReturnReportedFailure() { // given provider = newProvider(); IndexPopulator populator = provider.getPopulator( descriptor(), samplingConfig() ); populator.create(); // when String failureMessage = "fail"; populator.markAsFailed( failureMessage ); populator.close( false ); // then String populationFailure = provider.getPopulationFailure( descriptor() ); assertThat( populationFailure, is( failureMessage ) ); }
@Test public void shouldUpdateWithAllValuesDuringPopulation() throws Exception { // GIVEN withPopulator( indexProvider.getPopulator( descriptor, indexSamplingConfig ), p -> { try ( IndexUpdater updater = p.newPopulatingUpdater( this::valueSet1Lookup ) ) { for ( NodeAndValue entry : valueSet1 ) { updater.process( add( entry.nodeId, descriptor.schema(), entry.value ) ); } } } ); // THEN assertHasAllValues( valueSet1 ); }
@Test public void getPopulationFailureMustPersistReportedFailure() { // given provider = newProvider(); IndexPopulator populator = provider.getPopulator( descriptor(), samplingConfig() ); populator.create(); // when String failureMessage = "fail"; populator.markAsFailed( failureMessage ); populator.close( false ); // then provider = newProvider(); String populationFailure = provider.getPopulationFailure( descriptor() ); assertThat( populationFailure, is( failureMessage ) ); }
@Test public void shouldReportInitialStateAsFailedIfPopulationFailed() throws Exception { // GIVEN IndexSamplingConfig indexSamplingConfig = new IndexSamplingConfig( Config.defaults() ); withPopulator( indexProvider.getPopulator( descriptor, indexSamplingConfig ), p -> { String failure = "The contrived failure"; // WHEN p.markAsFailed( failure ); p.close( false ); // THEN assertEquals( FAILED, indexProvider.getInitialState( descriptor ) ); }, false ); }
@Test public void shouldReportInitialStateAsPopulatingIfPopulationStartedButIncomplete() { // given provider = newProvider(); IndexPopulator populator = provider.getPopulator( descriptor(), samplingConfig() ); populator.create(); // when InternalIndexState state = provider.getInitialState( descriptor() ); // then assertEquals( InternalIndexState.POPULATING, state ); populator.close( true ); }
@Test public void shouldReportInitialStateAsOnlineIfPopulationCompletedSuccessfully() { // given provider = newProvider(); IndexPopulator populator = provider.getPopulator( descriptor(), samplingConfig() ); populator.create(); populator.close( true ); // when InternalIndexState state = provider.getInitialState( descriptor() ); // then assertEquals( InternalIndexState.ONLINE, state ); }
@Test public void shouldReportInitialStateAsFailedIfMarkedAsFailed() { // given provider = newProvider(); IndexPopulator populator = provider.getPopulator( descriptor(), samplingConfig() ); populator.create(); populator.markAsFailed( "Just some failure" ); populator.close( false ); // when InternalIndexState state = provider.getInitialState( descriptor() ); // then assertEquals( InternalIndexState.FAILED, state ); }