internal RecordStorageReader(TokenHolders tokenHolders, SchemaStorage schemaStorage, NeoStores neoStores, IndexingService indexService, SchemaCache schemaCache, System.Func <IndexReaderFactory> indexReaderFactory, System.Func <LabelScanReader> labelScanReaderSupplier, RecordStorageCommandCreationContext commandCreationContext) { this._tokenHolders = tokenHolders; this._neoStores = neoStores; this._schemaStorage = schemaStorage; this._indexService = indexService; this._nodeStore = neoStores.NodeStore; this._relationshipStore = neoStores.RelationshipStore; this._relationshipGroupStore = neoStores.RelationshipGroupStore; this._propertyStore = neoStores.PropertyStore; this._counts = neoStores.Counts; this._schemaCache = schemaCache; this._indexReaderFactorySupplier = indexReaderFactory; this._labelScanReaderSupplier = labelScanReaderSupplier; this._commandCreationContext = commandCreationContext; }
private void VerifyGroupsAreSequentiallyOrderedByNode() { RelationshipGroupStore store = _stores.RelationshipGroupStore; long firstId = store.NumberOfReservedLowIds; long groupCount = store.HighId - firstId; RelationshipGroupRecord groupRecord = store.NewRecord(); PageCursor groupCursor = store.OpenPageCursorForReading(firstId); long highGroupId = store.HighId; long currentNodeId = -1; int currentTypeId = -1; int newGroupCount = 0; int currentGroupLength = 0; for (long id = firstId; id < highGroupId; id++, newGroupCount++) { store.GetRecordByCursor(id, groupRecord, CHECK, groupCursor); if (!groupRecord.InUse()) { // This will be the case if we have double record units, just assert that fact assertTrue(Units > 1); assertTrue(currentGroupLength > 0); currentGroupLength--; continue; } long nodeId = groupRecord.OwningNode; assertTrue("Expected a group for node >= " + currentNodeId + ", but was " + nodeId + " in " + groupRecord, nodeId >= currentNodeId); if (nodeId != currentNodeId) { currentNodeId = nodeId; currentTypeId = -1; if (Units > 1) { assertEquals(0, currentGroupLength); } currentGroupLength = 0; } currentGroupLength++; assertTrue("Expected this group to have a next of current + " + Units + " OR NULL, " + "but was " + groupRecord.ToString(), groupRecord.Next == groupRecord.Id + 1 || groupRecord.Next == Record.NO_NEXT_RELATIONSHIP.intValue()); assertTrue("Expected " + groupRecord + " to have type > " + currentTypeId, groupRecord.Type > currentTypeId); currentTypeId = groupRecord.Type; } assertEquals(groupCount, newGroupCount); }
internal RecordRelationshipTraversalCursor(RelationshipStore relationshipStore, RelationshipGroupStore groupStore) : base(relationshipStore) { this._group = new RecordRelationshipGroupCursor(relationshipStore, groupStore); }
private TransactionRecordState InjectAllPossibleCommands() { RecordChangeSet recordChangeSet = mock(typeof(RecordChangeSet)); RecordChanges <LabelTokenRecord, Void> labelTokenChanges = mock(typeof(RecordChanges)); RecordChanges <RelationshipTypeTokenRecord, Void> relationshipTypeTokenChanges = mock(typeof(RecordChanges)); RecordChanges <PropertyKeyTokenRecord, Void> propertyKeyTokenChanges = mock(typeof(RecordChanges)); RecordChanges <NodeRecord, Void> nodeRecordChanges = mock(typeof(RecordChanges)); RecordChanges <RelationshipRecord, Void> relationshipRecordChanges = mock(typeof(RecordChanges)); RecordChanges <PropertyRecord, PrimitiveRecord> propertyRecordChanges = mock(typeof(RecordChanges)); RecordChanges <RelationshipGroupRecord, int> relationshipGroupChanges = mock(typeof(RecordChanges)); RecordChanges <SchemaRecord, SchemaRule> schemaRuleChanges = mock(typeof(RecordChanges)); when(recordChangeSet.LabelTokenChanges).thenReturn(labelTokenChanges); when(recordChangeSet.RelationshipTypeTokenChanges).thenReturn(relationshipTypeTokenChanges); when(recordChangeSet.PropertyKeyTokenChanges).thenReturn(propertyKeyTokenChanges); when(recordChangeSet.NodeRecords).thenReturn(nodeRecordChanges); when(recordChangeSet.RelRecords).thenReturn(relationshipRecordChanges); when(recordChangeSet.PropertyRecords).thenReturn(propertyRecordChanges); when(recordChangeSet.RelGroupRecords).thenReturn(relationshipGroupChanges); when(recordChangeSet.SchemaRuleChanges).thenReturn(schemaRuleChanges); IList <RecordAccess_RecordProxy <NodeRecord, Void> > nodeChanges = new LinkedList <RecordAccess_RecordProxy <NodeRecord, Void> >(); RecordChanges.RecordChange <NodeRecord, Void> deletedNode = mock(typeof(RecordChanges.RecordChange)); when(deletedNode.Before).thenReturn(InUseNode()); when(deletedNode.ForReadingLinkage()).thenReturn(MissingNode()); nodeChanges.Add(deletedNode); RecordChanges.RecordChange <NodeRecord, Void> createdNode = mock(typeof(RecordChanges.RecordChange)); when(createdNode.Before).thenReturn(MissingNode()); when(createdNode.ForReadingLinkage()).thenReturn(createdNode()); nodeChanges.Add(createdNode); RecordChanges.RecordChange <NodeRecord, Void> updatedNode = mock(typeof(RecordChanges.RecordChange)); when(updatedNode.Before).thenReturn(InUseNode()); when(updatedNode.ForReadingLinkage()).thenReturn(InUseNode()); nodeChanges.Add(updatedNode); when(nodeRecordChanges.Changes()).thenReturn(nodeChanges); when(nodeRecordChanges.ChangeSize()).thenReturn(3); when(recordChangeSet.ChangeSize()).thenReturn(3); when(labelTokenChanges.Changes()).thenReturn(Collections.emptyList()); when(relationshipTypeTokenChanges.Changes()).thenReturn(Collections.emptyList()); when(propertyKeyTokenChanges.Changes()).thenReturn(Collections.emptyList()); when(relationshipRecordChanges.Changes()).thenReturn(Collections.emptyList()); when(propertyRecordChanges.Changes()).thenReturn(Collections.emptyList()); when(relationshipGroupChanges.Changes()).thenReturn(Collections.emptyList()); when(schemaRuleChanges.Changes()).thenReturn(Collections.emptyList()); NeoStores neoStores = mock(typeof(NeoStores)); NodeStore store = mock(typeof(NodeStore)); when(neoStores.NodeStore).thenReturn(store); RelationshipGroupStore relationshipGroupStore = mock(typeof(RelationshipGroupStore)); when(neoStores.RelationshipGroupStore).thenReturn(relationshipGroupStore); RelationshipStore relationshipStore = mock(typeof(RelationshipStore)); when(neoStores.RelationshipStore).thenReturn(relationshipStore); return(new TransactionRecordState(neoStores, mock(typeof(IntegrityValidator)), recordChangeSet, 0, null, null, null, null, null)); }