use of org.neo4j.storageengine.api.Degrees in project neo4j by neo4j.
the class RelationshipTransactionStateTestBase method shouldAddToCountFromTxState.
@Test
void shouldAddToCountFromTxState() throws Exception {
long start;
long existingRelationship;
int type;
try (KernelTransaction tx = beginTransaction()) {
Write write = tx.dataWrite();
start = write.nodeCreate();
type = tx.tokenWrite().relationshipTypeGetOrCreateForName("OUT");
existingRelationship = write.relationshipCreate(start, type, write.nodeCreate());
tx.commit();
}
try (KernelTransaction tx = beginTransaction()) {
Write write = tx.dataWrite();
long newRelationship = write.relationshipCreate(start, type, write.nodeCreate());
try (NodeCursor node = tx.cursors().allocateNodeCursor(NULL);
RelationshipTraversalCursor traversal = tx.cursors().allocateRelationshipTraversalCursor(NULL)) {
org.neo4j.internal.kernel.api.Read read = tx.dataRead();
read.singleNode(start, node);
assertTrue(node.next());
Degrees degrees = node.degrees(selection(type, BOTH));
assertEquals(2, degrees.outgoingDegree(type));
assertEquals(0, degrees.incomingDegree(type));
assertRelationships(OUTGOING, node, type, traversal, newRelationship, existingRelationship);
}
}
}
use of org.neo4j.storageengine.api.Degrees in project neo4j by neo4j.
the class RelationshipTransactionStateTestBase method shouldSeeNewTypes.
@Test
void shouldSeeNewTypes() throws Exception {
try (KernelTransaction tx = beginTransaction()) {
Write write = tx.dataWrite();
long start = write.nodeCreate();
int outgoing = tx.tokenWrite().relationshipTypeGetOrCreateForName("OUT");
int incoming = tx.tokenWrite().relationshipTypeGetOrCreateForName("IN");
int looping = tx.tokenWrite().relationshipTypeGetOrCreateForName("LOOP");
long out = write.relationshipCreate(start, outgoing, write.nodeCreate());
long in1 = write.relationshipCreate(write.nodeCreate(), incoming, start);
long in2 = write.relationshipCreate(write.nodeCreate(), incoming, start);
long loop = write.relationshipCreate(start, looping, start);
try (NodeCursor node = tx.cursors().allocateNodeCursor(NULL);
RelationshipTraversalCursor traversal = tx.cursors().allocateRelationshipTraversalCursor(NULL)) {
org.neo4j.internal.kernel.api.Read read = tx.dataRead();
read.singleNode(start, node);
assertTrue(node.next());
Degrees degrees = node.degrees(ALL_RELATIONSHIPS);
for (int t : degrees.types()) {
if (t == outgoing) {
assertEquals(1, degrees.outgoingDegree(t));
assertEquals(0, degrees.incomingDegree(t));
assertRelationships(OUTGOING, node, t, traversal, out);
assertNoRelationships(INCOMING, node, t, traversal);
} else if (t == incoming) {
assertEquals(0, degrees.outgoingDegree(t));
assertEquals(2, degrees.incomingDegree(t));
assertRelationships(INCOMING, node, t, traversal, in1, in2);
assertNoRelationships(OUTGOING, node, t, traversal);
} else if (t == looping) {
assertEquals(1, degrees.outgoingDegree(t));
assertEquals(1, degrees.incomingDegree(t));
assertRelationships(BOTH, node, t, traversal, loop);
assertRelationships(OUTGOING, node, t, traversal, loop);
assertRelationships(INCOMING, node, t, traversal, loop);
} else {
fail(t + " is not the type you're looking for ");
}
}
}
}
}
use of org.neo4j.storageengine.api.Degrees in project neo4j by neo4j.
the class RelationshipTransactionStateTestBase method shouldSeeBothOldAndNewRelationshipsFromSparseNode.
@Test
void shouldSeeBothOldAndNewRelationshipsFromSparseNode() throws Exception {
long start;
long existingRelationship;
int one;
try (KernelTransaction tx = beginTransaction()) {
Write write = tx.dataWrite();
start = write.nodeCreate();
one = tx.tokenWrite().relationshipTypeGetOrCreateForName("ONE");
existingRelationship = write.relationshipCreate(start, one, write.nodeCreate());
tx.commit();
}
try (KernelTransaction tx = beginTransaction()) {
Write write = tx.dataWrite();
int two = tx.tokenWrite().relationshipTypeGetOrCreateForName("TWO");
long newRelationship = write.relationshipCreate(start, two, write.nodeCreate());
try (NodeCursor node = tx.cursors().allocateNodeCursor(NULL);
RelationshipTraversalCursor traversal = tx.cursors().allocateRelationshipTraversalCursor(NULL)) {
org.neo4j.internal.kernel.api.Read read = tx.dataRead();
read.singleNode(start, node);
assertTrue(node.next());
assertFalse(node.supportsFastDegreeLookup());
Degrees degrees = node.degrees(ALL_RELATIONSHIPS);
for (int t : degrees.types()) {
if (t == one) {
assertEquals(1, degrees.outgoingDegree(t));
assertEquals(0, degrees.incomingDegree(t));
assertRelationships(OUTGOING, node, t, traversal, existingRelationship);
} else if (t == two) {
assertEquals(1, degrees.outgoingDegree(t));
assertEquals(0, degrees.incomingDegree(t));
assertRelationships(OUTGOING, node, t, traversal, newRelationship);
} else {
fail(t + " is not the type you're looking for ");
}
}
}
}
}
use of org.neo4j.storageengine.api.Degrees in project neo4j by neo4j.
the class RelationshipTransactionStateTestBase method shouldSeeBothOldAndNewRelationshipsFromDenseNode.
@Test
void shouldSeeBothOldAndNewRelationshipsFromDenseNode() throws Exception {
long start;
long existingRelationship;
int one, bulk;
try (KernelTransaction tx = beginTransaction()) {
Write write = tx.dataWrite();
start = write.nodeCreate();
one = tx.tokenWrite().relationshipTypeGetOrCreateForName("ONE");
existingRelationship = write.relationshipCreate(start, one, write.nodeCreate());
bulk = tx.tokenWrite().relationshipTypeGetOrCreateForName("BULK");
for (int i = 0; i < 100; i++) {
write.relationshipCreate(start, bulk, write.nodeCreate());
}
tx.commit();
}
try (KernelTransaction tx = beginTransaction()) {
Write write = tx.dataWrite();
int two = tx.tokenWrite().relationshipTypeGetOrCreateForName("TWO");
long newRelationship = write.relationshipCreate(start, two, write.nodeCreate());
try (NodeCursor node = tx.cursors().allocateNodeCursor(NULL);
RelationshipTraversalCursor traversal = tx.cursors().allocateRelationshipTraversalCursor(NULL)) {
org.neo4j.internal.kernel.api.Read read = tx.dataRead();
read.singleNode(start, node);
assertTrue(node.next());
assertTrue(node.supportsFastDegreeLookup());
Degrees degrees = node.degrees(ALL_RELATIONSHIPS);
for (int t : degrees.types()) {
if (t == one) {
assertEquals(1, degrees.outgoingDegree(t));
assertEquals(0, degrees.incomingDegree(t));
assertRelationships(OUTGOING, node, t, traversal, existingRelationship);
} else if (t == two) {
assertEquals(1, degrees.outgoingDegree(t));
assertEquals(0, degrees.incomingDegree(t));
assertRelationships(OUTGOING, node, t, traversal, newRelationship);
} else if (t == bulk) {
assertEquals(100, degrees.outgoingDegree(t));
assertEquals(0, degrees.incomingDegree(t));
} else {
fail(t + " is not the type you're looking for ");
}
}
}
}
}
use of org.neo4j.storageengine.api.Degrees in project neo4j by neo4j.
the class RelationshipTransactionStateTestBase method shouldNewRelationshipBetweenAlreadyConnectedDenseNodes.
@Test
void shouldNewRelationshipBetweenAlreadyConnectedDenseNodes() throws Exception {
long start;
long end;
long existingRelationship;
int type, bulk;
try (KernelTransaction tx = beginTransaction()) {
Write write = tx.dataWrite();
start = write.nodeCreate();
end = write.nodeCreate();
type = tx.tokenWrite().relationshipTypeGetOrCreateForName("R");
existingRelationship = write.relationshipCreate(start, type, end);
bulk = tx.tokenWrite().relationshipTypeGetOrCreateForName("BULK");
for (int i = 0; i < 100; i++) {
write.relationshipCreate(start, bulk, write.nodeCreate());
}
tx.commit();
}
try (KernelTransaction tx = beginTransaction()) {
Write write = tx.dataWrite();
long newRelationship = write.relationshipCreate(start, type, write.nodeCreate());
try (NodeCursor node = tx.cursors().allocateNodeCursor(NULL);
RelationshipTraversalCursor traversal = tx.cursors().allocateRelationshipTraversalCursor(NULL)) {
org.neo4j.internal.kernel.api.Read read = tx.dataRead();
read.singleNode(start, node);
assertTrue(node.next());
assertTrue(node.supportsFastDegreeLookup());
Degrees degrees = node.degrees(ALL_RELATIONSHIPS);
for (int t : degrees.types()) {
if (t == type) {
assertEquals(2, degrees.outgoingDegree(t));
assertEquals(0, degrees.incomingDegree(t));
assertRelationships(OUTGOING, node, t, traversal, existingRelationship, newRelationship);
} else if (t == bulk) {
assertEquals(bulk, t);
assertEquals(100, degrees.outgoingDegree(t));
assertEquals(0, degrees.incomingDegree(t));
} else {
fail(t + " is not the type you're looking for ");
}
}
}
}
}
Aggregations