use of org.neo4j.kernel.impl.store.InlineNodeLabels in project neo4j by neo4j.
the class NodeRecordCheckTest method shouldReportLabelNotInUse.
@Test
public void shouldReportLabelNotInUse() throws Exception {
// given
NodeRecord node = inUse(new NodeRecord(42, false, NONE, NONE));
new InlineNodeLabels(node).add(1, null, null);
LabelTokenRecord labelRecordNotInUse = notInUse(new LabelTokenRecord(1));
add(labelRecordNotInUse);
add(node);
// when
ConsistencyReport.NodeConsistencyReport report = check(node);
// then
verify(report).labelNotInUse(labelRecordNotInUse);
}
use of org.neo4j.kernel.impl.store.InlineNodeLabels 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.InlineNodeLabels in project neo4j by neo4j.
the class NodeRecordCheckTest method shouldReportDuplicateLabels.
@Test
public void shouldReportDuplicateLabels() throws Exception {
// given
NodeRecord node = inUse(new NodeRecord(42, false, NONE, NONE));
new InlineNodeLabels(node).put(new long[] { 1, 2, 1 }, null, null);
LabelTokenRecord label1 = inUse(new LabelTokenRecord(1));
LabelTokenRecord label2 = inUse(new LabelTokenRecord(2));
add(label1);
add(label2);
add(node);
// when
ConsistencyReport.NodeConsistencyReport report = check(node);
// then
verify(report).labelDuplicate(1);
}
use of org.neo4j.kernel.impl.store.InlineNodeLabels 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);
}
use of org.neo4j.kernel.impl.store.InlineNodeLabels in project neo4j by neo4j.
the class NodeCheckerTest method testDynamicRecordChain.
private <T extends ConsistencyReport> void testDynamicRecordChain(Consumer<NodeRecord> vandal, Class<T> expectedReportClass, Consumer<T> report) throws Exception {
// given
try (AutoCloseable ignored = tx()) {
long nodeId = nodeStore.nextId(CursorContext.NULL);
NodeRecord node = new NodeRecord(nodeId).initialize(true, NULL, false, NULL, 0);
new InlineNodeLabels(node).put(toLongs(otherLabels), nodeStore, nodeStore.getDynamicLabelStore(), CursorContext.NULL, INSTANCE);
assertThat(node.getDynamicLabelRecords().size()).isGreaterThanOrEqualTo(2);
nodeStore.updateRecord(node, CursorContext.NULL);
vandal.accept(node);
nodeStore.updateRecord(node, CursorContext.NULL);
}
// when
check();
// then
expect(expectedReportClass, report);
}
Aggregations