private IndexEntryUpdate<?> createIndexEntryUpdate( LabelSchemaDescriptor schemaDescriptor ) { return add( 1, schemaDescriptor, "theValue" ); }
public static IndexQuery exact( int propertyKeyId, Object value ) { return exact( propertyKeyId, Values.of( value ) ); }
@Test void nodePropertyUpdatesIncludedInSample() throws Exception { UniqueIndexSampler sampler = new UniqueIndexSampler(); UniqueLuceneIndexPopulatingUpdater updater = newUpdater( sampler ); updater.process( add( 1, descriptor, "foo" ) ); updater.process( change( 1, descriptor, "foo", "bar" ) ); updater.process( add( 2, descriptor, "baz" ) ); updater.process( add( 3, descriptor, "qux" ) ); updater.process( remove( 4, descriptor, "qux" ) ); verifySamplingResult( sampler, 2 ); }
@Test void removedNodePropertyIncludedInSample() throws Exception { NonUniqueIndexSampler sampler = newSampler(); NonUniqueLuceneIndexPopulatingUpdater updater = newUpdater( sampler ); updater.process( add( 1, SCHEMA_DESCRIPTOR, "foo" ) ); updater.process( add( 2, SCHEMA_DESCRIPTOR, "bar" ) ); updater.process( add( 3, SCHEMA_DESCRIPTOR, "baz" ) ); updater.process( add( 4, SCHEMA_DESCRIPTOR, "qux" ) ); updater.process( remove( 1, SCHEMA_DESCRIPTOR, "foo" ) ); updater.process( remove( 2, SCHEMA_DESCRIPTOR, "bar" ) ); updater.process( remove( 4, SCHEMA_DESCRIPTOR, "qux" ) ); verifySamplingResult( sampler, 1, 1, 1 ); }
@Test void changedNodePropertiesIncludedInSample() throws Exception { NonUniqueIndexSampler sampler = newSampler(); NonUniqueLuceneIndexPopulatingUpdater updater = newUpdater( sampler ); updater.process( add( 1, SCHEMA_DESCRIPTOR, "initial1" ) ); updater.process( add( 2, SCHEMA_DESCRIPTOR, "initial2" ) ); updater.process( add( 3, SCHEMA_DESCRIPTOR, "new2" ) ); updater.process( change( 1, SCHEMA_DESCRIPTOR, "initial1", "new1" ) ); updater.process( change( 1, SCHEMA_DESCRIPTOR, "initial2", "new2" ) ); verifySamplingResult( sampler, 3, 2, 3 ); }
private IndexEntryUpdate<?> change( long nodeId, Object oldValue, Object newValue ) { return IndexQueryHelper.change( nodeId, index.schema(), oldValue, newValue ); }
private IndexEntryUpdate<?> remove( long nodeId, Object removedValue ) { return IndexQueryHelper.remove( nodeId, index.schema(), removedValue ); }
@Test void changedNodeCompositePropertiesIncludedInSample() throws Exception { NonUniqueIndexSampler sampler = newSampler(); NonUniqueLuceneIndexPopulatingUpdater updater = newUpdater( sampler ); updater.process( add( 1, COMPOSITE_SCHEMA_DESCRIPTOR, "bit", "initial1" ) ); updater.process( add( 2, COMPOSITE_SCHEMA_DESCRIPTOR, "bit", "initial2" ) ); updater.process( add( 3, COMPOSITE_SCHEMA_DESCRIPTOR, "bit", "new2" ) ); updater.process( change( 1, COMPOSITE_SCHEMA_DESCRIPTOR, new Object[]{"bit", "initial1"}, new Object[]{"bit", "new1"} ) ); updater.process( change( 1, COMPOSITE_SCHEMA_DESCRIPTOR, new Object[]{"bit", "initial2"}, new Object[]{"bit", "new2"} ) ); verifySamplingResult( sampler, 3, 2, 3 ); }
@Test void removedNodeCompositePropertyIncludedInSample() throws Exception { NonUniqueIndexSampler sampler = newSampler(); NonUniqueLuceneIndexPopulatingUpdater updater = newUpdater( sampler ); updater.process( add( 1, COMPOSITE_SCHEMA_DESCRIPTOR, "bit", "foo" ) ); updater.process( add( 2, COMPOSITE_SCHEMA_DESCRIPTOR, "bit", "bar" ) ); updater.process( add( 3, COMPOSITE_SCHEMA_DESCRIPTOR, "bit", "baz" ) ); updater.process( add( 4, COMPOSITE_SCHEMA_DESCRIPTOR, "bit", "qux" ) ); updater.process( remove( 1, COMPOSITE_SCHEMA_DESCRIPTOR, "bit", "foo" ) ); updater.process( remove( 2, COMPOSITE_SCHEMA_DESCRIPTOR, "bit", "bar" ) ); updater.process( remove( 4, COMPOSITE_SCHEMA_DESCRIPTOR, "bit", "qux" ) ); verifySamplingResult( sampler, 1, 1, 1 ); }
private IndexEntryUpdate<?> change( long nodeId, Object[] valuesBefore, Object[] valuesAfter ) { return IndexQueryHelper.change( nodeId, SCHEMA_INDEX_DESCRIPTOR.schema(), valuesBefore, valuesAfter ); }
private IndexEntryUpdate<?> remove( long nodeId, Object... values ) { return IndexQueryHelper.remove( nodeId, SCHEMA_INDEX_DESCRIPTOR.schema(), values ); }
public static IndexEntryUpdate<SchemaDescriptor> add( long nodeId, SchemaDescriptor schema, Object... objects ) { return IndexEntryUpdate.add( nodeId, schema, toValues( objects ) ); }
private IndexEntryUpdate<?> add( long nodeId, Object value ) { return IndexQueryHelper.add( nodeId, index.schema(), value ); }
@Test void closeVerifiesUniquenessOfAddedAndChangedValues() throws Exception { SchemaIndex index = mock( SchemaIndex.class ); UniqueLuceneIndexPopulatingUpdater updater = newUpdater( index ); updater.process( add( 1, descriptor, "added1" ) ); updater.process( add( 2, descriptor, "added2" ) ); updater.process( change( 3, descriptor, "before1", "after1" ) ); updater.process( change( 4, descriptor, "before2", "after2" ) ); updater.process( remove( 5, descriptor, "removed1" ) ); verifyZeroInteractions( index ); updater.close(); verifyVerifyUniqueness( index, descriptor, "added1", "added2", "after1", "after2" ); }
@Test public void shouldNotRejectDuplicateEntryOnSameNodeIdAfterUsingPopulatingUpdater() throws Exception { // given populator = newPopulator(); when( nodePropertyAccessor.getNodePropertyValue( 1, PROPERTY_KEY_ID ) ).thenReturn( Values.of( "value1" ) ); IndexUpdater updater = populator.newPopulatingUpdater( nodePropertyAccessor ); updater.process( add( 1, schemaDescriptor, "value1" ) ); updater.process( change( 1, schemaDescriptor, "value1", "value1" ) ); updater.close(); addUpdate( populator, 2, "value2" ); addUpdate( populator, 3, "value3" ); // when populator.verifyDeferredConstraints( nodePropertyAccessor ); populator.close( true ); // then assertEquals( asList( 1L ), getAllNodes( getDirectory(), "value1" ) ); assertEquals( asList( 2L ), getAllNodes( getDirectory(), "value2" ) ); assertEquals( asList( 3L ), getAllNodes( getDirectory(), "value3" ) ); }
@Test public void shouldUpdateEntryForNodeThatHasPropertyRemovedAndThenAddedAgain() throws Exception { // given populator = newPopulator(); addUpdate( populator, 1, "value1" ); // when IndexUpdater updater = populator.newPopulatingUpdater( nodePropertyAccessor ); updater.process( remove( 1, schemaDescriptor, "value1" ) ); updater.process( add( 1, schemaDescriptor, "value1" ) ); populator.close( true ); // then assertEquals( asList(1L), getAllNodes( getDirectory(), "value1" ) ); }
private void testIndexScanAndSeekExactWithExact( Value a, Value b ) throws Exception { updateAndCommit( asList( add( 1L, descriptor.schema(), a, a ), add( 2L, descriptor.schema(), b, b ), add( 3L, descriptor.schema(), a, b ) ) ); assertThat( query( exact( 0, a ), exact( 1, a ) ), equalTo( singletonList( 1L ) ) ); assertThat( query( exact( 0, b ), exact( 1, b ) ), equalTo( singletonList( 2L ) ) ); assertThat( query( exact( 0, a ), exact( 1, b ) ), equalTo( singletonList( 3L ) ) ); assertThat( query( exists( 1 ) ), equalTo( asList( 1L, 2L, 3L ) ) ); }
private IndexEntryUpdate<?> change( long nodeId, Object valueBefore, Object valueAfter ) { return IndexQueryHelper.change( nodeId, index.schema(), valueBefore, valueAfter ); }
private IndexEntryUpdate<?> remove( long nodeId, Object oldValue ) { return IndexQueryHelper.remove( nodeId, index.schema(), oldValue ); }