@Override public Iterable<Node> createdNodes() { return Iterables.empty(); }
@Override public Iterable<Node> deletedNodes() { return Iterables.empty(); }
@Override public Iterable<PropertyEntry<Node>> removedNodeProperties() { return Iterables.empty(); }
@Override public Iterable<LabelEntry> removedLabels() { return Iterables.empty(); }
@Override public Iterable<Relationship> deletedRelationships() { return Iterables.empty(); }
@Override public Iterable<LabelEntry> assignedLabels() { return Iterables.empty(); }
@Override public Iterable<Relationship> createdRelationships() { return Iterables.empty(); }
@Override public Iterable<PropertyEntry<Node>> assignedNodeProperties() { return Iterables.empty(); }
@Override public Iterable<PropertyEntry<Relationship>> assignedRelationshipProperties() { return Iterables.empty(); }
@Override public Iterable<PropertyEntry<Relationship>> removedRelationshipProperties() { return Iterables.empty(); } };
@Override public Iterable<AdminCommand.Provider> getAllProviders() { return Iterables.empty(); } }
@Override public Iterable<IndexEntryUpdate<SchemaDescriptor>> convertToIndexUpdates( EntityUpdates entityUpdates, EntityType type ) { entityUpdatesList.add( entityUpdates ); return Iterables.empty(); } }
@Override public Iterable<NodeState> modifiedNodes() { return nodeStatesMap == null ? Iterables.empty() : Iterables.cast( nodeStatesMap.values() ); }
@Override public Iterable<RelationshipState> modifiedRelationships() { return relationshipStatesMap == null ? Iterables.empty() : Iterables.cast( relationshipStatesMap.values() ); }
@Override public Iterable<IndexDescriptor> constraintIndexesCreatedInTx() { if ( createdConstraintIndexesByConstraint != null && !createdConstraintIndexesByConstraint.isEmpty() ) { return map( TxState::getIndexForIndexBackedConstraint, createdConstraintIndexesByConstraint.keySet() ); } return Iterables.empty(); }
@Before public void setup() { when( transactionToApply.transactionId() ).thenReturn( 1L ); when( indexingService.convertToIndexUpdates( any(), eq( EntityType.NODE ) ) ).thenAnswer( o -> Iterables.empty() ); }
private void assertNoLabels( long nodeId ) { try ( org.neo4j.graphdb.Transaction ignore = graphDb.beginTx() ) { assertThat( graphDb.getNodeById( nodeId ).getLabels(), equalTo( Iterables.empty() ) ); } }
@Test public void shouldProvideLabelScanStoreUpdatesSortedByNodeId() throws Exception { // GIVEN IndexingService indexing = mock( IndexingService.class ); when( indexing.convertToIndexUpdates( any(), eq( EntityType.NODE ) ) ).thenAnswer( o -> Iterables.empty() ); LabelScanWriter writer = new OrderVerifyingLabelScanWriter( 10, 15, 20 ); WorkSync<Supplier<LabelScanWriter>,LabelUpdateWork> labelScanSync = spy( new WorkSync<>( singletonProvider( writer ) ) ); WorkSync<IndexingUpdateService,IndexUpdatesWork> indexUpdatesSync = new WorkSync<>( indexing ); TransactionToApply tx = mock( TransactionToApply.class ); PropertyStore propertyStore = mock( PropertyStore.class ); try ( IndexBatchTransactionApplier applier = new IndexBatchTransactionApplier( indexing, labelScanSync, indexUpdatesSync, mock( NodeStore.class ), mock( RelationshipStore.class ), new PropertyPhysicalToLogicalConverter( propertyStore ), new IndexActivator( indexing ) ) ) { try ( TransactionApplier txApplier = applier.startTx( tx ) ) { // WHEN txApplier.visitNodeCommand( node( 15 ) ); txApplier.visitNodeCommand( node( 20 ) ); txApplier.visitNodeCommand( node( 10 ) ); } } // THEN all assertions happen inside the LabelScanWriter#write and #close verify( labelScanSync ).applyAsync( any() ); }
private RecordStorageEngine get( FileSystemAbstraction fs, PageCache pageCache, IndexProvider indexProvider, DatabaseHealth databaseHealth, DatabaseLayout databaseLayout, Function<BatchTransactionApplierFacade, BatchTransactionApplierFacade> transactionApplierTransformer, Monitors monitors, LockService lockService ) { IdGeneratorFactory idGeneratorFactory = new EphemeralIdGenerator.Factory(); ExplicitIndexProvider explicitIndexProviderLookup = mock( ExplicitIndexProvider.class ); when( explicitIndexProviderLookup.allIndexProviders() ).thenReturn( Iterables.empty() ); IndexConfigStore indexConfigStore = new IndexConfigStore( databaseLayout, fs ); JobScheduler scheduler = life.add( createScheduler() ); Config config = Config.defaults( GraphDatabaseSettings.default_schema_provider, indexProvider.getProviderDescriptor().name() ); Dependencies dependencies = new Dependencies(); dependencies.satisfyDependency( indexProvider ); BufferingIdGeneratorFactory bufferingIdGeneratorFactory = new BufferingIdGeneratorFactory( idGeneratorFactory, IdReuseEligibility.ALWAYS, new CommunityIdTypeConfigurationProvider() ); DefaultIndexProviderMap indexProviderMap = new DefaultIndexProviderMap( dependencies, config ); NullLogProvider nullLogProvider = NullLogProvider.getInstance(); life.add( indexProviderMap ); return life.add( new ExtendedRecordStorageEngine( databaseLayout, config, pageCache, fs, nullLogProvider, nullLogProvider, mockedTokenHolders(), mock( SchemaState.class ), new StandardConstraintSemantics(), scheduler, mock( TokenNameLookup.class ), lockService, indexProviderMap, IndexingService.NO_MONITOR, databaseHealth, explicitIndexProviderLookup, indexConfigStore, new SynchronizedArrayIdOrderingQueue(), idGeneratorFactory, new BufferedIdController( bufferingIdGeneratorFactory, scheduler ), transactionApplierTransformer, monitors, RecoveryCleanupWorkCollector.immediate(), OperationalMode.single ) ); }
life.add( providerMap ); indexingService = IndexingServiceFactory.createIndexingService( config, scheduler, providerMap, new NeoStoreIndexStoreView( LockService.NO_LOCK_SERVICE, neoStores ), SchemaUtil.idTokenNameLookup, empty(), nullLogProvider, nullLogProvider, IndexingService.NO_MONITOR, new DatabaseSchemaState( nullLogProvider ) ); propertyPhysicalToLogicalConverter = new PropertyPhysicalToLogicalConverter( neoStores.getPropertyStore() );