Search in sources :

Example 1 with STORE_VERSION

use of org.neo4j.kernel.impl.store.MetaDataStore.Position.STORE_VERSION in project neo4j by neo4j.

the class MetaDataStoreTest method mustSupportScanningAllRecordsWithRecordCursor.

@Test
void mustSupportScanningAllRecordsWithRecordCursor() {
    MetaDataStore.Position[] positions = MetaDataStore.Position.values();
    long storeVersion = versionStringToLong(Standard.LATEST_RECORD_FORMATS.storeVersion());
    try (MetaDataStore store = newMetaDataStore()) {
        writeCorrectMetaDataRecord(store, positions, storeVersion);
    }
    List<Long> actualValues = new ArrayList<>();
    try (MetaDataStore store = newMetaDataStore()) {
        MetaDataRecord record = store.newRecord();
        try (PageCursor cursor = store.openPageCursorForReading(0, NULL)) {
            long highId = store.getHighId();
            for (long id = 0; id < highId; id++) {
                store.getRecordByCursor(id, record, RecordLoad.NORMAL, cursor);
                if (record.inUse()) {
                    actualValues.add(record.getValue());
                }
            }
        }
    }
    List<Long> expectedValues = Arrays.stream(positions).map(p -> {
        if (p == STORE_VERSION) {
            return storeVersion;
        } else {
            return p.ordinal() + 1L;
        }
    }).collect(Collectors.toList());
    assertThat(actualValues).isEqualTo(expectedValues);
}
Also used : BeforeEach(org.junit.jupiter.api.BeforeEach) Arrays(java.util.Arrays) PageCursor(org.neo4j.io.pagecache.PageCursor) CursorContext(org.neo4j.io.pagecache.context.CursorContext) Assertions.assertThat(org.assertj.core.api.Assertions.assertThat) Config(org.neo4j.configuration.Config) DefaultPageCacheTracer(org.neo4j.io.pagecache.tracing.DefaultPageCacheTracer) NullLogProvider(org.neo4j.logging.NullLogProvider) DatabaseLayout(org.neo4j.io.layout.DatabaseLayout) PageCacheSupportExtension(org.neo4j.test.extension.pagecache.PageCacheSupportExtension) UnderlyingStorageException(org.neo4j.exceptions.UnderlyingStorageException) PageCacheTracer(org.neo4j.io.pagecache.tracing.PageCacheTracer) NULL(org.neo4j.io.pagecache.context.CursorContext.NULL) STORE_VERSION(org.neo4j.kernel.impl.store.MetaDataStore.Position.STORE_VERSION) Path(java.nio.file.Path) PageCursorTracer(org.neo4j.io.pagecache.tracing.cursor.PageCursorTracer) Standard(org.neo4j.kernel.impl.store.format.standard.Standard) PageCache(org.neo4j.io.pagecache.PageCache) LAST_MISSING_STORE_FILES_RECOVERY_TIMESTAMP(org.neo4j.kernel.impl.store.MetaDataStore.Position.LAST_MISSING_STORE_FILES_RECOVERY_TIMESTAMP) FORCE(org.neo4j.kernel.impl.store.record.RecordLoad.FORCE) DatabaseReadOnlyChecker.writable(org.neo4j.configuration.helpers.DatabaseReadOnlyChecker.writable) IOController(org.neo4j.io.pagecache.IOController) MetaDataRecord(org.neo4j.kernel.impl.store.record.MetaDataRecord) BASE_TX_COMMIT_TIMESTAMP(org.neo4j.storageengine.api.TransactionIdStore.BASE_TX_COMMIT_TIMESTAMP) UUID(java.util.UUID) Collectors(java.util.stream.Collectors) MetaDataStore.versionStringToLong(org.neo4j.kernel.impl.store.MetaDataStore.versionStringToLong) Test(org.junit.jupiter.api.Test) List(java.util.List) EphemeralNeo4jLayoutExtension(org.neo4j.test.extension.EphemeralNeo4jLayoutExtension) LATEST_STORE_VERSION(org.neo4j.kernel.impl.store.format.standard.Standard.LATEST_STORE_VERSION) DefaultIdGeneratorFactory(org.neo4j.internal.id.DefaultIdGeneratorFactory) ExternalStoreId(org.neo4j.storageengine.api.ExternalStoreId) Assertions.assertTrue(org.junit.jupiter.api.Assertions.assertTrue) Optional(java.util.Optional) Race.throwing(org.neo4j.test.Race.throwing) Assertions.assertThrows(org.junit.jupiter.api.Assertions.assertThrows) TransactionId(org.neo4j.storageengine.api.TransactionId) System.currentTimeMillis(java.lang.System.currentTimeMillis) PagedFile(org.neo4j.io.pagecache.PagedFile) AtomicBoolean(java.util.concurrent.atomic.AtomicBoolean) KernelVersion(org.neo4j.kernel.KernelVersion) LogProvider(org.neo4j.logging.LogProvider) ArrayList(java.util.ArrayList) DelegatingPageCache(org.neo4j.io.pagecache.DelegatingPageCache) Inject(org.neo4j.test.extension.Inject) RegisterExtension(org.junit.jupiter.api.extension.RegisterExtension) StoreId(org.neo4j.storageengine.api.StoreId) Math.toIntExact(java.lang.Math.toIntExact) Assertions.assertEquals(org.junit.jupiter.api.Assertions.assertEquals) OpenOption(java.nio.file.OpenOption) IOException(java.io.IOException) Assertions.assertArrayEquals(org.junit.jupiter.api.Assertions.assertArrayEquals) AtomicLong(java.util.concurrent.atomic.AtomicLong) RecoveryCleanupWorkCollector.immediate(org.neo4j.index.internal.gbptree.RecoveryCleanupWorkCollector.immediate) AfterEach(org.junit.jupiter.api.AfterEach) PageCacheConfig.config(org.neo4j.test.rule.PageCacheConfig.config) DelegatingPageCursor(org.neo4j.io.pagecache.impl.DelegatingPageCursor) EphemeralFileSystemAbstraction(org.neo4j.io.fs.EphemeralFileSystemAbstraction) ImmutableSet(org.eclipse.collections.api.set.ImmutableSet) BitSet(java.util.BitSet) DelegatingPagedFile(org.neo4j.io.pagecache.DelegatingPagedFile) RecordLoad(org.neo4j.kernel.impl.store.record.RecordLoad) TransactionIdStore(org.neo4j.storageengine.api.TransactionIdStore) Race(org.neo4j.test.Race) SECONDS(java.util.concurrent.TimeUnit.SECONDS) MetaDataStore.versionStringToLong(org.neo4j.kernel.impl.store.MetaDataStore.versionStringToLong) AtomicLong(java.util.concurrent.atomic.AtomicLong) ArrayList(java.util.ArrayList) MetaDataRecord(org.neo4j.kernel.impl.store.record.MetaDataRecord) PageCursor(org.neo4j.io.pagecache.PageCursor) DelegatingPageCursor(org.neo4j.io.pagecache.impl.DelegatingPageCursor) Test(org.junit.jupiter.api.Test)

Aggregations

IOException (java.io.IOException)1 Math.toIntExact (java.lang.Math.toIntExact)1 System.currentTimeMillis (java.lang.System.currentTimeMillis)1 OpenOption (java.nio.file.OpenOption)1 Path (java.nio.file.Path)1 ArrayList (java.util.ArrayList)1 Arrays (java.util.Arrays)1 BitSet (java.util.BitSet)1 List (java.util.List)1 Optional (java.util.Optional)1 UUID (java.util.UUID)1 SECONDS (java.util.concurrent.TimeUnit.SECONDS)1 AtomicBoolean (java.util.concurrent.atomic.AtomicBoolean)1 AtomicLong (java.util.concurrent.atomic.AtomicLong)1 Collectors (java.util.stream.Collectors)1 Assertions.assertThat (org.assertj.core.api.Assertions.assertThat)1 ImmutableSet (org.eclipse.collections.api.set.ImmutableSet)1 AfterEach (org.junit.jupiter.api.AfterEach)1 Assertions.assertArrayEquals (org.junit.jupiter.api.Assertions.assertArrayEquals)1 Assertions.assertEquals (org.junit.jupiter.api.Assertions.assertEquals)1