Beispiel #1
0
 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;
 }
Beispiel #2
0
        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);
        }
Beispiel #3
0
 internal RecordRelationshipTraversalCursor(RelationshipStore relationshipStore, RelationshipGroupStore groupStore) : base(relationshipStore)
 {
     this._group = new RecordRelationshipGroupCursor(relationshipStore, groupStore);
 }
Beispiel #4
0
        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));
        }