Search in sources :

Example 1 with TestRelationshipChain

use of org.neo4j.internal.kernel.api.helpers.TestRelationshipChain in project neo4j by neo4j.

the class PlainOperationsTest method detachDeleteNodeExclusivelyLockNodes.

@Test
void detachDeleteNodeExclusivelyLockNodes() {
    long nodeId = 1L;
    returnRelationships(transaction, new TestRelationshipChain(nodeId).outgoing(1, 2L, 42));
    when(transaction.ambientNodeCursor()).thenReturn(new StubNodeCursor(false).withNode(nodeId));
    TokenSet labels = mock(TokenSet.class);
    when(labels.all()).thenReturn(EMPTY_LONG_ARRAY);
    when(nodeCursor.labels()).thenReturn(labels);
    when(nodeCursor.next()).thenReturn(true);
    operations.nodeDetachDelete(nodeId);
    order.verify(creationContext).acquireNodeDeletionLock(txState, locks, LockTracer.NONE, nodeId);
    order.verify(locks, never()).releaseExclusive(ResourceTypes.NODE, nodeId);
    order.verify(locks, never()).releaseExclusive(ResourceTypes.NODE, 2L);
    order.verify(txState).nodeDoDelete(nodeId);
}
Also used : StubNodeCursor(org.neo4j.internal.kernel.api.helpers.StubNodeCursor) TokenSet(org.neo4j.internal.kernel.api.TokenSet) TestRelationshipChain(org.neo4j.internal.kernel.api.helpers.TestRelationshipChain) Test(org.junit.jupiter.api.Test)

Example 2 with TestRelationshipChain

use of org.neo4j.internal.kernel.api.helpers.TestRelationshipChain in project neo4j by neo4j.

the class PlainOperationsTest method shouldAcquiredSharedLabelLocksWhenDetachDeletingNode.

@Test
void shouldAcquiredSharedLabelLocksWhenDetachDeletingNode() {
    // given
    long nodeId = 1L;
    long labelId1 = 1;
    long labelId2 = 2;
    returnRelationships(transaction, new TestRelationshipChain(nodeId));
    when(transaction.ambientNodeCursor()).thenReturn(new StubNodeCursor(false).withNode(nodeId));
    when(nodeCursor.next()).thenReturn(true);
    TokenSet labels = mock(TokenSet.class);
    when(labels.all()).thenReturn(new long[] { labelId1, labelId2 });
    when(nodeCursor.labels()).thenReturn(labels);
    // when
    operations.nodeDetachDelete(nodeId);
    // then
    InOrder order = inOrder(locks, creationContext);
    order.verify(creationContext).acquireNodeDeletionLock(txState, locks, LockTracer.NONE, nodeId);
    order.verify(locks).acquireShared(LockTracer.NONE, ResourceTypes.LABEL, labelId1, labelId2);
    order.verify(locks).acquireShared(LockTracer.NONE, ResourceTypes.LABEL, TOKEN_INDEX_RESOURCE_ID);
    order.verifyNoMoreInteractions();
}
Also used : StubNodeCursor(org.neo4j.internal.kernel.api.helpers.StubNodeCursor) InOrder(org.mockito.InOrder) TokenSet(org.neo4j.internal.kernel.api.TokenSet) TestRelationshipChain(org.neo4j.internal.kernel.api.helpers.TestRelationshipChain) Test(org.junit.jupiter.api.Test)

Example 3 with TestRelationshipChain

use of org.neo4j.internal.kernel.api.helpers.TestRelationshipChain in project neo4j by neo4j.

the class PlainOperationsTest method detachDeleteNodeWithoutRelationshipsExclusivelyLockNode.

@Test
void detachDeleteNodeWithoutRelationshipsExclusivelyLockNode() {
    long nodeId = 1L;
    returnRelationships(transaction, new TestRelationshipChain(nodeId));
    when(transaction.ambientNodeCursor()).thenReturn(new StubNodeCursor(false).withNode(nodeId));
    when(nodeCursor.next()).thenReturn(true);
    TokenSet labels = mock(TokenSet.class);
    when(labels.all()).thenReturn(EMPTY_LONG_ARRAY);
    when(nodeCursor.labels()).thenReturn(labels);
    operations.nodeDetachDelete(nodeId);
    order.verify(creationContext).acquireNodeDeletionLock(txState, locks, LockTracer.NONE, nodeId);
    order.verify(locks, never()).releaseExclusive(ResourceTypes.NODE, nodeId);
    order.verify(txState).nodeDoDelete(nodeId);
}
Also used : StubNodeCursor(org.neo4j.internal.kernel.api.helpers.StubNodeCursor) TokenSet(org.neo4j.internal.kernel.api.TokenSet) TestRelationshipChain(org.neo4j.internal.kernel.api.helpers.TestRelationshipChain) Test(org.junit.jupiter.api.Test)

Aggregations

Test (org.junit.jupiter.api.Test)3 TokenSet (org.neo4j.internal.kernel.api.TokenSet)3 StubNodeCursor (org.neo4j.internal.kernel.api.helpers.StubNodeCursor)3 TestRelationshipChain (org.neo4j.internal.kernel.api.helpers.TestRelationshipChain)3 InOrder (org.mockito.InOrder)1