use of org.neo4j.kernel.impl.store.NodeStore in project neo4j by neo4j.
the class StoreProcessorTaskTest method singlePassShouldOnlyProcessTheStoreOnce.
@Test
public void singlePassShouldOnlyProcessTheStoreOnce() throws Exception {
// given
StoreProcessor singlePassProcessor = mock(StoreProcessor.class);
when(singlePassProcessor.getStage()).thenReturn(Stage.SEQUENTIAL_FORWARD);
NodeStore store = mock(NodeStore.class);
when(store.getStorageFileName()).thenReturn(new File("node-store"));
StoreProcessorTask<NodeRecord> task = new StoreProcessorTask<>("nodes", Statistics.NONE, 1, store, null, "nodes", ProgressMonitorFactory.NONE.multipleParts("check"), CacheAccess.EMPTY, singlePassProcessor, QueueDistribution.ROUND_ROBIN);
// when
task.run();
// then
verify(singlePassProcessor).applyFiltered(same(store), any(ProgressListener.class));
}
use of org.neo4j.kernel.impl.store.NodeStore in project neo4j by neo4j.
the class NodeRecordCheckTest method shouldReportOutOfOrderLabels.
@Test
public void shouldReportOutOfOrderLabels() throws Exception {
// given
final NodeRecord node = inUse(new NodeRecord(42, false, NONE, NONE));
// We need to do this override so we can put the labels unsorted, since InlineNodeLabels always sorts on insert
new InlineNodeLabels(node) {
@Override
public Collection<DynamicRecord> put(long[] labelIds, NodeStore nodeStore, DynamicRecordAllocator allocator) {
return putSorted(node, labelIds, nodeStore, allocator);
}
}.put(new long[] { 3, 1, 2 }, null, null);
LabelTokenRecord label1 = inUse(new LabelTokenRecord(1));
LabelTokenRecord label2 = inUse(new LabelTokenRecord(2));
LabelTokenRecord label3 = inUse(new LabelTokenRecord(3));
add(label1);
add(label2);
add(label3);
add(node);
// when
ConsistencyReport.NodeConsistencyReport report = check(node);
// then
verify(report).labelsOutOfOrder(3, 1);
}
use of org.neo4j.kernel.impl.store.NodeStore in project neo4j by neo4j.
the class ReadRecordsStepTest method reservedIdIsSkipped.
@Test
public void reservedIdIsSkipped() {
long highId = 5;
int batchSize = (int) highId;
org.neo4j.unsafe.impl.batchimport.Configuration config = withBatchSize(DEFAULT, batchSize);
NodeStore store = StoreWithReservedId.newNodeStoreMock(highId);
when(store.getHighId()).thenReturn(highId);
when(store.getRecordsPerPage()).thenReturn(10);
ReadRecordsStep<NodeRecord> step = new ReadRecordsStep<>(mock(StageControl.class), config, store, allIn(store, config));
step.start(0);
Object batch = step.nextBatchOrNull(0, batchSize);
assertNotNull(batch);
NodeRecord[] records = (NodeRecord[]) batch;
boolean hasRecordWithReservedId = Stream.of(records).anyMatch(recordWithReservedId());
assertFalse("Batch contains record with reserved id " + Arrays.toString(records), hasRecordWithReservedId);
}
use of org.neo4j.kernel.impl.store.NodeStore in project neo4j by neo4j.
the class NodeIdReuseStressIT method highestNodeId.
private static long highestNodeId(GraphDatabaseService db) {
DependencyResolver resolver = dependencyResolver(db);
NeoStores neoStores = resolver.resolveDependency(RecordStorageEngine.class).testAccessNeoStores();
NodeStore nodeStore = neoStores.getNodeStore();
return nodeStore.getHighestPossibleIdInUse();
}
use of org.neo4j.kernel.impl.store.NodeStore in project neo4j by neo4j.
the class NodeRecordCheckTest method shouldProperlyReportOutOfOrderLabelsThatAreFarAway.
@Test
public void shouldProperlyReportOutOfOrderLabelsThatAreFarAway() throws Exception {
// given
final NodeRecord node = inUse(new NodeRecord(42, false, NONE, NONE));
// We need to do this override so we can put the labels unsorted, since InlineNodeLabels always sorts on insert
new InlineNodeLabels(node) {
@Override
public Collection<DynamicRecord> put(long[] labelIds, NodeStore nodeStore, DynamicRecordAllocator allocator) {
return putSorted(node, labelIds, nodeStore, allocator);
}
}.put(new long[] { 1, 18, 13, 14, 15, 16, 12 }, null, null);
LabelTokenRecord label1 = inUse(new LabelTokenRecord(1));
LabelTokenRecord label12 = inUse(new LabelTokenRecord(12));
LabelTokenRecord label13 = inUse(new LabelTokenRecord(13));
LabelTokenRecord label14 = inUse(new LabelTokenRecord(14));
LabelTokenRecord label15 = inUse(new LabelTokenRecord(15));
LabelTokenRecord label16 = inUse(new LabelTokenRecord(16));
LabelTokenRecord label18 = inUse(new LabelTokenRecord(18));
add(label1);
add(label12);
add(label13);
add(label14);
add(label15);
add(label16);
add(label18);
add(node);
// when
ConsistencyReport.NodeConsistencyReport report = check(node);
// then
verify(report).labelsOutOfOrder(18, 13);
verify(report).labelsOutOfOrder(16, 12);
}
Aggregations