Refine search
public IndexDefinitionRepresentation createSchemaIndex( String labelName, Iterable<String> propertyKey ) { IndexCreator indexCreator = graphDb.schema().indexFor( label( labelName ) ); for ( String key : propertyKey ) { indexCreator = indexCreator.on( key ); } return new IndexDefinitionRepresentation( indexCreator.create() ); }
@Test public void shouldNotAllowCreationOfDuplicateIndex() { // GIVEN BatchInserter inserter = globalInserter; String labelName = "Hacker1-" + denseNodeThreshold; // WHEN inserter.createDeferredSchemaIndex( label( labelName ) ).on( "handle" ).create(); try { inserter.createDeferredSchemaIndex( label( labelName ) ).on( "handle" ).create(); fail( "Should have thrown exception." ); } catch ( ConstraintViolationException e ) { // THEN Good } }
@Test public void batchInserterShouldUseConfiguredIndexProvider() throws Exception { Config config = Config.defaults( stringMap( default_schema_provider.name(), schemaIndex.providerName() ) ); BatchInserter inserter = newBatchInserter( config ); inserter.createDeferredSchemaIndex( TestLabels.LABEL_ONE ).on( "key" ).create(); inserter.shutdown(); GraphDatabaseService db = graphDatabaseService( config ); awaitIndexesOnline( db ); try ( Transaction tx = db.beginTx() ) { DependencyResolver dependencyResolver = ((GraphDatabaseAPI) db).getDependencyResolver(); ThreadToStatementContextBridge threadToStatementContextBridge = dependencyResolver.resolveDependency( ThreadToStatementContextBridge.class ); KernelTransaction kernelTransaction = threadToStatementContextBridge.getKernelTransactionBoundToThisThread( true ); TokenRead tokenRead = kernelTransaction.tokenRead(); SchemaRead schemaRead = kernelTransaction.schemaRead(); int labelId = tokenRead.nodeLabel( TestLabels.LABEL_ONE.name() ); int propertyId = tokenRead.propertyKey( "key" ); IndexReference index = schemaRead.index( labelId, propertyId ); assertTrue( unexpectedIndexProviderMessage( index ), schemaIndex.providerName().contains( index.providerKey() ) ); assertTrue( unexpectedIndexProviderMessage( index ), schemaIndex.providerName().contains( index.providerVersion() ) ); tx.success(); } finally { db.shutdown(); } }
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; }
@Test public void shouldNotAllowDuplicatedIndexes() { // Given Label label = label( "Person3-" + denseNodeThreshold ); String property = "name"; BatchInserter inserter = globalInserter; // When inserter.createDeferredSchemaIndex( label ).on( property ).create(); try { inserter.createDeferredSchemaIndex( label ).on( property ).create(); fail( "Exception expected" ); } catch ( ConstraintViolationException e ) { // Then assertEquals( "Index for given {label;property} already exists", e.getMessage() ); } }
@Test public void shouldNotAllowCreationOfDeferredSchemaIndexAfterConstraintOnSameKeys() { // GIVEN BatchInserter inserter = globalInserter; String labelName = "Hacker4-" + denseNodeThreshold; // WHEN inserter.createDeferredConstraint( label( labelName ) ).assertPropertyIsUnique( "handle" ).create(); try { inserter.createDeferredSchemaIndex( label( labelName ) ).on( "handle" ).create(); fail( "Should have thrown exception." ); } catch ( ConstraintViolationException e ) { // THEN Good } }
@Test public void shouldNotAllowCreationOfDeferredSchemaConstraintAfterIndexOnSameKeys() { // GIVEN BatchInserter inserter = globalInserter; String labelName = "Hacker3-" + denseNodeThreshold; // WHEN inserter.createDeferredSchemaIndex( label( labelName ) ).on( "handle" ).create(); try { inserter.createDeferredConstraint( label( labelName ) ).assertPropertyIsUnique( "handle" ).create(); fail( "Should have thrown exception." ); } catch ( ConstraintViolationException e ) { // THEN Good } }
@Test public void shouldNotAllowCreationOfUniquenessConstraintAndIndexOnSameLabelAndProperty() { // Given Label label = label( "Person1-" + denseNodeThreshold ); String property = "name"; BatchInserter inserter = globalInserter; // When inserter.createDeferredConstraint( label ).assertPropertyIsUnique( property ).create(); try { inserter.createDeferredSchemaIndex( label ).on( property ).create(); fail( "Exception expected" ); } catch ( ConstraintViolationException e ) { // Then assertEquals( "Index for given {label;property} already exists", e.getMessage() ); } }
public static IndexDefinition createIndexNoWait( GraphDatabaseService beansAPI, Label label, String... properties ) { IndexDefinition indexDef; try ( Transaction tx = beansAPI.beginTx() ) { IndexCreator indexCreator = beansAPI.schema().indexFor( label ); for ( String property : properties ) { indexCreator = indexCreator.on( property ); } indexDef = indexCreator.create(); tx.success(); } return indexDef; }