use of org.neo4j.internal.kernel.api.Write in project neo4j by neo4j.
the class CachingExpandIntoTest method shouldComputeDegreeWithType.
@Test
void shouldComputeDegreeWithType() throws Exception {
// GIVEN
long node;
int in, out, loop;
try (KernelTransaction tx = transaction()) {
Write write = tx.dataWrite();
node = denseNode(tx);
TokenWrite tokenWrite = tx.tokenWrite();
out = tokenWrite.relationshipTypeGetOrCreateForName("OUT");
in = tokenWrite.relationshipTypeGetOrCreateForName("IN");
loop = tokenWrite.relationshipTypeGetOrCreateForName("LOOP");
write.relationshipCreate(node, out, write.nodeCreate());
write.relationshipCreate(node, out, write.nodeCreate());
write.relationshipCreate(write.nodeCreate(), in, node);
write.relationshipCreate(node, loop, node);
tx.commit();
}
try (KernelTransaction tx = transaction()) {
Read read = tx.dataRead();
CursorFactory cursors = tx.cursors();
try (NodeCursor nodes = cursors.allocateNodeCursor(tx.cursorContext())) {
CachingExpandInto expand = new CachingExpandInto(tx.dataRead(), OUTGOING, MEMORY_TRACKER);
read.singleNode(node, nodes);
assertThat(nodes.next()).isEqualTo(true);
assertThat(nodes.supportsFastDegreeLookup()).isEqualTo(true);
Degrees degrees = nodes.degrees(ALL_RELATIONSHIPS);
assertThat(degrees.outgoingDegree(out)).isEqualTo(2);
assertThat(degrees.outgoingDegree(in)).isEqualTo(0);
assertThat(degrees.outgoingDegree(loop)).isEqualTo(1);
assertThat(degrees.incomingDegree(out)).isEqualTo(0);
assertThat(degrees.incomingDegree(in)).isEqualTo(1);
assertThat(degrees.incomingDegree(loop)).isEqualTo(1);
assertThat(degrees.totalDegree(out)).isEqualTo(2);
assertThat(degrees.totalDegree(in)).isEqualTo(1);
assertThat(degrees.totalDegree(loop)).isEqualTo(1);
}
}
}
use of org.neo4j.internal.kernel.api.Write in project neo4j by neo4j.
the class ParallelNodeCursorTransactionStateTestBase method createNodes.
private MutableLongSet createNodes(int size) throws TransactionFailureException, InvalidTransactionTypeKernelException {
MutableLongSet nodes = LongSets.mutable.empty();
try (KernelTransaction tx = beginTransaction()) {
Write write = tx.dataWrite();
for (int i = 0; i < size; i++) {
nodes.add(write.nodeCreate());
}
tx.commit();
}
return nodes;
}
use of org.neo4j.internal.kernel.api.Write in project neo4j by neo4j.
the class ParallelNodeLabelScanTestBase method createTestGraph.
@Override
public void createTestGraph(GraphDatabaseService graphDb) {
MutableLongSet fooNodes = LongSets.mutable.empty();
MutableLongSet barNodes = LongSets.mutable.empty();
try (KernelTransaction tx = beginTransaction()) {
TokenWrite tokenWrite = tx.tokenWrite();
FOO_LABEL = tokenWrite.labelGetOrCreateForName("foo");
BAR_LABEL = tokenWrite.labelGetOrCreateForName("bar");
Write write = tx.dataWrite();
for (int i = 0; i < NUMBER_OF_NODES; i++) {
long node = write.nodeCreate();
if (i % 2 == 0) {
write.nodeAddLabel(node, FOO_LABEL);
fooNodes.add(node);
} else {
write.nodeAddLabel(node, BAR_LABEL);
barNodes.add(node);
}
}
FOO_NODES = fooNodes;
BAR_NODES = barNodes;
tx.commit();
} catch (KernelException e) {
throw new AssertionError(e);
}
}
use of org.neo4j.internal.kernel.api.Write in project neo4j by neo4j.
the class ParallelNodeLabelScanTransactionStateTestBase method createNodesWithLabel.
private LongList createNodesWithLabel(int label, int size) throws KernelException {
LongList ids;
try (KernelTransaction tx = beginTransaction()) {
Write write = tx.dataWrite();
ids = createNodesWithLabel(write, label, size);
tx.commit();
}
return ids;
}
use of org.neo4j.internal.kernel.api.Write in project neo4j by neo4j.
the class ParallelNodeLabelScanTransactionStateTestBase method scanShouldNotSeeDeletedNode.
@Test
void scanShouldNotSeeDeletedNode() throws Exception {
int size = 1000;
Set<Long> created = new HashSet<>(size);
Set<Long> deleted = new HashSet<>(size);
int label = label("L");
try (KernelTransaction tx = beginTransaction()) {
Write write = tx.dataWrite();
for (int i = 0; i < size; i++) {
long createId = write.nodeCreate();
long deleteId = write.nodeCreate();
write.nodeAddLabel(createId, label);
write.nodeAddLabel(deleteId, label);
created.add(createId);
deleted.add(deleteId);
}
tx.commit();
}
try (KernelTransaction tx = beginTransaction()) {
for (long delete : deleted) {
tx.dataWrite().nodeDelete(delete);
}
try (NodeLabelIndexCursor cursor = tx.cursors().allocateNodeLabelIndexCursor(tx.cursorContext())) {
Scan<NodeLabelIndexCursor> scan = tx.dataRead().nodeLabelScan(label);
Set<Long> seen = new HashSet<>();
while (scan.reserveBatch(cursor, 128)) {
while (cursor.next()) {
long nodeId = cursor.nodeReference();
assertTrue(seen.add(nodeId));
assertTrue(created.remove(nodeId));
}
}
assertTrue(created.isEmpty());
}
}
}
Aggregations