Exemplo n.º 1
0
        public DirectRecordAccessSet(RecordStore <NodeRecord> nodeStore, PropertyStore propertyStore, RecordStore <RelationshipRecord> relationshipStore, RecordStore <RelationshipGroupRecord> relationshipGroupStore, RecordStore <PropertyKeyTokenRecord> propertyKeyTokenStore, RecordStore <RelationshipTypeTokenRecord> relationshipTypeTokenStore, RecordStore <LabelTokenRecord> labelTokenStore, SchemaStore schemaStore)
        {
            Loaders loaders = new Loaders(nodeStore, propertyStore, relationshipStore, relationshipGroupStore, propertyKeyTokenStore, relationshipTypeTokenStore, labelTokenStore, schemaStore);

            _nodeRecords                  = new DirectRecordAccess <NodeRecord, Void>(nodeStore, loaders.NodeLoader());
            _propertyRecords              = new DirectRecordAccess <PropertyRecord, PrimitiveRecord>(propertyStore, loaders.PropertyLoader());
            _relationshipRecords          = new DirectRecordAccess <RelationshipRecord, Void>(relationshipStore, loaders.RelationshipLoader());
            _relationshipGroupRecords     = new DirectRecordAccess <RelationshipGroupRecord, int>(relationshipGroupStore, loaders.RelationshipGroupLoader());
            _propertyKeyTokenRecords      = new DirectRecordAccess <PropertyKeyTokenRecord, Void>(propertyKeyTokenStore, loaders.PropertyKeyTokenLoader());
            _relationshipTypeTokenRecords = new DirectRecordAccess <RelationshipTypeTokenRecord, Void>(relationshipTypeTokenStore, loaders.RelationshipTypeTokenLoader());
            _labelTokenRecords            = new DirectRecordAccess <LabelTokenRecord, Void>(labelTokenStore, loaders.LabelTokenLoader());
            _all = new DirectRecordAccess[] { _nodeRecords, _propertyRecords, _relationshipRecords, _relationshipGroupRecords, _propertyKeyTokenRecords, _relationshipTypeTokenRecords, _labelTokenRecords };
        }
//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes:
//ORIGINAL LINE: @Test public void shouldAbortLoadingGroupChainIfComeTooFar()
        public virtual void ShouldAbortLoadingGroupChainIfComeTooFar()
        {
            // GIVEN a node with relationship group chain 2-->4-->10-->23
            LogProvider  logProvider  = NullLogProvider.Instance;
            StoreFactory storeFactory = new StoreFactory(_testDirectory.databaseLayout(), Config.defaults(), new DefaultIdGeneratorFactory(_fs.get()), _pageCache.getPageCache(_fs.get()), _fs.get(), logProvider, EmptyVersionContextSupplier.EMPTY);

            using (NeoStores stores = storeFactory.OpenNeoStores(true, StoreType.RELATIONSHIP_GROUP))
            {
                RecordStore <RelationshipGroupRecord> store = spy(stores.RelationshipGroupStore);

                RelationshipGroupRecord group2  = Group(0, 2);
                RelationshipGroupRecord group4  = Group(1, 4);
                RelationshipGroupRecord group10 = Group(2, 10);
                RelationshipGroupRecord group23 = Group(3, 23);
                Link(group2, group4, group10, group23);
                store.UpdateRecord(group2);
                store.UpdateRecord(group4);
                store.UpdateRecord(group10);
                store.UpdateRecord(group23);
                RelationshipGroupGetter groupGetter = new RelationshipGroupGetter(store);
                NodeRecord node = new NodeRecord(0, true, group2.Id, -1);

                // WHEN trying to find relationship group 7
                RecordAccess <RelationshipGroupRecord, int>       access = new DirectRecordAccess <RelationshipGroupRecord, int>(store, Loaders.relationshipGroupLoader(store));
                RelationshipGroupGetter.RelationshipGroupPosition result = groupGetter.GetRelationshipGroup(node, 7, access);

                // THEN only groups 2, 4 and 10 should have been loaded
                InOrder verification = inOrder(store);
                verification.verify(store).getRecord(eq(group2.Id), any(typeof(RelationshipGroupRecord)), any(typeof(RecordLoad)));
                verification.verify(store).getRecord(eq(group4.Id), any(typeof(RelationshipGroupRecord)), any(typeof(RecordLoad)));
                verification.verify(store).getRecord(eq(group10.Id), any(typeof(RelationshipGroupRecord)), any(typeof(RecordLoad)));
                verification.verify(store, never()).getRecord(eq(group23.Id), any(typeof(RelationshipGroupRecord)), any(typeof(RecordLoad)));

                // it should also be reported as not found
                assertNull(result.Group());
                // with group 4 as closes previous one
                assertEquals(group4, result.ClosestPrevious().forReadingData());
            }
        }
Exemplo n.º 3
0
 public RecordChangeSet(Loaders loaders) : this(loaders.NodeLoader(), loaders.PropertyLoader(), loaders.RelationshipLoader(), loaders.RelationshipGroupLoader(), loaders.SchemaRuleLoader(), loaders.PropertyKeyTokenLoader(), loaders.LabelTokenLoader(), loaders.RelationshipTypeTokenLoader())
 {
 }