use of org.neo4j.kernel.impl.store.record.DynamicRecord in project neo4j by neo4j.
the class NodeLabelsFieldTest method shouldReallocateSomeOfPreviousDynamicRecords.
@Test
public void shouldReallocateSomeOfPreviousDynamicRecords() throws Exception {
// GIVEN
NodeRecord node = nodeRecordWithDynamicLabels(nodeStore, oneByteLongs(5));
Set<DynamicRecord> initialRecords = Iterables.asUniqueSet(node.getDynamicLabelRecords());
NodeLabels nodeLabels = NodeLabelsField.parseLabelsField(node);
// WHEN
Set<DynamicRecord> reallocatedRecords = Iterables.asUniqueSet(nodeLabels.put(fourByteLongs(100), nodeStore, nodeStore.getDynamicLabelStore()));
// THEN
assertTrue(reallocatedRecords.containsAll(initialRecords));
assertTrue(reallocatedRecords.size() > initialRecords.size());
}
use of org.neo4j.kernel.impl.store.record.DynamicRecord in project neo4j by neo4j.
the class NodeLabelsFieldTest method twoDynamicRecordsShouldShrinkToOneWhenRemovingWithoutChangingItsOwner.
@Test
public void twoDynamicRecordsShouldShrinkToOneWhenRemovingWithoutChangingItsOwner() throws Exception {
// GIVEN
// will occupy 61B of data, i.e. just two dynamic records
Long nodeId = 42L;
NodeRecord node = nodeRecordWithDynamicLabels(nodeId, nodeStore, oneByteLongs(57));
NodeLabels nodeLabels = NodeLabelsField.parseLabelsField(node);
List<DynamicRecord> changedDynamicRecords = Iterables.addToCollection(nodeLabels.remove(255, /*Initial labels go from 255 and down to 255-58*/
nodeStore), new ArrayList<DynamicRecord>());
// WHEN
Pair<Long, long[]> changedPair = DynamicNodeLabels.getDynamicLabelsArrayAndOwner(changedDynamicRecords, nodeStore.getDynamicLabelStore());
// THEN
assertEquals(nodeId, changedPair.first());
}
use of org.neo4j.kernel.impl.store.record.DynamicRecord in project neo4j by neo4j.
the class NodeLabelsFieldTest method shouldReadIdOfDynamicRecordFromDynamicLabelsField.
@Test
public void shouldReadIdOfDynamicRecordFromDynamicLabelsField() throws Exception {
// GIVEN
NodeRecord node = nodeRecordWithDynamicLabels(nodeStore, oneByteLongs(5));
DynamicRecord dynamicRecord = node.getDynamicLabelRecords().iterator().next();
// WHEN
long dynRecordId = NodeLabelsField.firstDynamicLabelRecordId(node.getLabelField());
// THEN
assertEquals(dynamicRecord.getId(), dynRecordId);
}
use of org.neo4j.kernel.impl.store.record.DynamicRecord in project neo4j by neo4j.
the class NodeLabelsFieldTest method nodeRecordWithDynamicLabels.
private NodeRecord nodeRecordWithDynamicLabels(long nodeId, NodeStore nodeStore, long... labels) {
NodeRecord node = new NodeRecord(nodeId, false, 0, 0);
Collection<DynamicRecord> initialRecords = allocateAndApply(nodeStore, node.getId(), labels);
node.setLabelField(dynamicLabelsLongRepresentation(initialRecords), initialRecords);
return node;
}
use of org.neo4j.kernel.impl.store.record.DynamicRecord in project neo4j by neo4j.
the class NodeLabelsFieldTest method maximumOfSevenInlinedLabels.
@Test
public void maximumOfSevenInlinedLabels() throws Exception {
// GIVEN
long[] labels = new long[] { 0, 1, 2, 3, 4, 5, 6 };
NodeRecord node = nodeRecordWithInlinedLabels(labels);
NodeLabels nodeLabels = NodeLabelsField.parseLabelsField(node);
// WHEN
Iterable<DynamicRecord> changedDynamicRecords = nodeLabels.add(23, nodeStore, nodeStore.getDynamicLabelStore());
// THEN
assertEquals(dynamicLabelsLongRepresentation(changedDynamicRecords), node.getLabelField());
assertEquals(1, Iterables.count(changedDynamicRecords));
}
Aggregations