@Override public IndexProviderDescriptor getProviderDescriptor() { return indexProvider.getProviderDescriptor(); }
@Override public IndexProviderDescriptor indexProviderByName( String providerName ) { return providerMap.lookup( providerName ).getProviderDescriptor(); }
private void assertProviderFound( IndexProvider provider, String providerDescriptorName ) { if ( provider == null ) { throw new IndexProviderNotFoundException( "Tried to get index provider with name " + providerDescriptorName + " whereas available providers in this session being " + indexProvidersByName.keySet() + ", and default being " + defaultIndexProvider.getProviderDescriptor().name() ); } }
@Override public void init() { Iterable<? extends IndexProvider> indexProviders = dependencies.resolveTypeDependencies( IndexProvider.class ); for ( IndexProvider provider : indexProviders ) { IndexProviderDescriptor providerDescriptor = provider.getProviderDescriptor(); requireNonNull( providerDescriptor ); IndexProvider existing = put( providerDescriptor, provider ); if ( existing != null ) { throw new IllegalArgumentException( "Tried to load multiple schema index providers with the same provider descriptor " + providerDescriptor + ". First loaded " + existing + " then " + provider ); } } initDefaultProvider(); }
private IndexProvider mockIndexProviderWithAccessor( IndexProviderDescriptor descriptor ) throws IOException { IndexProvider provider = mock( IndexProvider.class ); when( provider.getProviderDescriptor() ).thenReturn( descriptor ); IndexAccessor indexAccessor = mock( IndexAccessor.class ); when( provider.getOnlineAccessor( any( StoreIndexDescriptor.class ), any( IndexSamplingConfig.class ) ) ) .thenReturn( indexAccessor ); return provider; }
private static IndexProvider mockedIndexProvider( String name ) { IndexProvider provider = mock( IndexProvider.class ); when( provider.getProviderDescriptor() ).thenReturn( new IndexProviderDescriptor( name, "1" ) ); return provider; }
private static IndexProvider mockProvider( Class<? extends IndexProvider> providerClass, String name ) { IndexProvider mock = mock( providerClass ); when( mock.getProviderDescriptor() ).thenReturn( new IndexProviderDescriptor( name, "1" ) ); return mock; }
@Before public void setUp() throws MisconfiguredIndexException { when( mockedIndexProvider.getProviderDescriptor() ).thenReturn( PROVIDER_DESCRIPTOR ); when( mockedIndexProvider.storeMigrationParticipant( any( FileSystemAbstraction.class ), any( PageCache.class ) ) ) .thenReturn( StoreMigrationParticipant.NOT_PARTICIPATING ); when( mockedIndexProvider.bless( any( IndexDescriptor.class ) ) ).thenCallRealMethod(); }
@Test public void shouldListAllUniqueIndexes() throws Throwable { // Given givenUniqueConstraint( "User", "name" ); // When/Then assertThat( call( "db.indexes" ), contains( record( "INDEX ON :User(name)", "Unnamed index", singletonList( "User" ), singletonList( "name" ), "ONLINE", "node_unique_property", 100D, getIndexProviderDescriptorMap( EMPTY.getProviderDescriptor() ), 42L, "" ) ) ); }
@Test public void shouldListAllIndexes() throws Throwable { // Given givenIndex( "User", "name" ); // When/Then assertThat( call( "db.indexes" ), contains( record( "INDEX ON :User(name)", "Unnamed index", singletonList( "User" ), singletonList( "name" ), "ONLINE", "node_label_property", 100D, getIndexProviderDescriptorMap( EMPTY.getProviderDescriptor() ), 42L, "" ) ) ); }
private StoreIndexDescriptor[] createIndexRules( Map<String,Integer> labelNameIdMap, int propertyId ) { IndexProvider lookup = getIndexProviderMap().lookup( schemaIndex.providerName() ); IndexProviderDescriptor providerDescriptor = lookup.getProviderDescriptor(); return labelNameIdMap.values().stream() .map( index -> IndexDescriptorFactory.forSchema( SchemaDescriptorFactory.forLabel( index, propertyId ), providerDescriptor ).withId( index ) ) .toArray( StoreIndexDescriptor[]::new ); }
@Test public void schemaAndLabelIndexesRemovedAfterSuccessfulMigration() throws IOException { IndexDirectoryStructure directoryStructure = mock( IndexDirectoryStructure.class ); File indexProviderRootDirectory = databaseLayout.file( "just-some-directory" ); when( directoryStructure.rootDirectory() ).thenReturn( indexProviderRootDirectory ); when( indexProvider.directoryStructure() ).thenReturn( directoryStructure ); when( indexProvider.getProviderDescriptor() ) .thenReturn( new IndexProviderDescriptor( "key", "version" ) ); migrator.migrate( databaseLayout, migrationLayout, progressReporter, StandardV2_3.STORE_VERSION, StandardV3_0.STORE_VERSION ); migrator.moveMigratedFiles( migrationLayout, databaseLayout, StandardV2_3.STORE_VERSION, StandardV3_0.STORE_VERSION ); verify( fs ).deleteRecursively( indexProviderRootDirectory ); } }
private void givenIndex( String label, String propKey ) { int labelId = token( label, labels ); int propId = token( propKey, propKeys ); IndexReference index = IndexDescriptorFactory.forSchema( forLabel( labelId, propId ), EMPTY.getProviderDescriptor() ); indexes.add( index ); }
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; }
private void givenUniqueConstraint( String label, String propKey ) { int labelId = token( label, labels ); int propId = token( propKey, propKeys ); IndexReference index = IndexDescriptorFactory.uniqueForSchema( forLabel( labelId, propId ), EMPTY.getProviderDescriptor() ); uniqueIndexes.add( index ); constraints.add( ConstraintDescriptorFactory.uniqueForLabel( labelId, propId ) ); }
@Before public void before() throws MisconfiguredIndexException { when( mockedIndexProvider.getProviderDescriptor() ).thenReturn( PROVIDER_DESCRIPTOR ); when( mockedIndexProvider.storeMigrationParticipant( any( FileSystemAbstraction.class ), any( PageCache.class ) ) ) .thenReturn( StoreMigrationParticipant.NOT_PARTICIPATING ); when( mockedIndexProvider.bless( any( IndexDescriptor.class ) ) ).thenCallRealMethod(); TestGraphDatabaseFactory factory = new TestGraphDatabaseFactory(); factory.setFileSystem( fs.get() ); factory.setKernelExtensions( Collections.singletonList( mockedIndexProviderFactory ) ); db = (GraphDatabaseAPI) factory.newImpermanentDatabaseBuilder().setConfig( default_schema_provider, PROVIDER_DESCRIPTOR.name() ).newGraphDatabase(); ctxSupplier = db.getDependencyResolver().resolveDependency( ThreadToStatementContextBridge.class ); }
@Test void shouldThrowOnLookupOnUnknownProvider() { // given IndexProvider provider = mock( IndexProvider.class ); IndexProviderDescriptor descriptor = new IndexProviderDescriptor( "provider", "1.2" ); when( provider.getProviderDescriptor() ).thenReturn( descriptor ); Dependencies dependencies = new Dependencies(); dependencies.satisfyDependency( provider ); // when DefaultIndexProviderMap defaultIndexProviderMap = createDefaultProviderMap( dependencies, descriptor ); defaultIndexProviderMap.init(); assertThrows( IndexProviderNotFoundException.class, () -> defaultIndexProviderMap.lookup( new IndexProviderDescriptor( "provider2", "1.2" ) ) ); }
private StoreIndexDescriptor makeIndexRule( long ruleId, String label, String propertyKey ) { return forSchema( forLabel( labelId( label ), propId( propertyKey ) ), EMPTY.getProviderDescriptor() ).withId( ruleId ); }
private StoreIndexDescriptor makeIndexRuleForConstraint( long ruleId, String label, String propertyKey, long constraintId ) { return uniqueForSchema( forLabel( labelId( label ), propId( propertyKey ) ), EMPTY.getProviderDescriptor() ).withIds( ruleId, constraintId ); }
@Before public void setUp() { TestGraphDatabaseFactory dbFactory = new TestGraphDatabaseFactory(); dbFactory.setKernelExtensions( Collections.singletonList( new PredefinedIndexProviderFactory( indexProvider ) ) ); db = dbFactory.newImpermanentDatabaseBuilder( graphDbDir ) .setConfig( default_schema_provider, indexProvider.getProviderDescriptor().name() ) .newGraphDatabase(); }