use of org.neo4j.kernel.impl.coreapi.InternalTransaction in project neo4j by neo4j.
the class Neo4jTransactionalContextTest method shouldBePossibleToTerminateWithoutActiveTransaction.
@Test
void shouldBePossibleToTerminateWithoutActiveTransaction() {
InternalTransaction tx = mock(InternalTransaction.class);
Neo4jTransactionalContext context = newContext(tx);
context.close();
context.terminate();
verify(tx, never()).terminate();
}
use of org.neo4j.kernel.impl.coreapi.InternalTransaction in project neo4j by neo4j.
the class Neo4jTransactionalContextTest method contextRollbackClosesAndRollbackTransaction.
@Test
void contextRollbackClosesAndRollbackTransaction() {
ExecutingQuery executingQuery = mock(ExecutingQuery.class);
InternalTransaction internalTransaction = mock(InternalTransaction.class, new ReturnsDeepStubs());
KernelTransaction kernelTransaction = mockTransaction(statement);
when(internalTransaction.kernelTransaction()).thenReturn(kernelTransaction);
Neo4jTransactionalContext transactionalContext = new Neo4jTransactionalContext(null, internalTransaction, statement, executingQuery, transactionFactory);
transactionalContext.rollback();
verify(internalTransaction).rollback();
assertFalse(transactionalContext.isOpen());
}
use of org.neo4j.kernel.impl.coreapi.InternalTransaction in project neo4j by neo4j.
the class Neo4jTransactionalContextTest method accumulateExecutionStatisticOverCommitAndRestart.
@Test
void accumulateExecutionStatisticOverCommitAndRestart() {
InternalTransaction userTransaction = mock(InternalTransaction.class, new ReturnsDeepStubs());
when(userTransaction.terminationReason()).thenReturn(Optional.empty());
var statementMock = mock(KernelStatement.class, new ReturnsDeepStubs());
var transaction = mockTransaction(statementMock);
when(userTransaction.kernelTransaction()).thenReturn(transaction);
when(transactionFactory.beginKernelTransaction(any(), any(), any())).thenReturn(transaction);
ExecutingQuery executingQuery = mock(ExecutingQuery.class);
when(executingQuery.databaseId()).thenReturn(Optional.of(namedDatabaseId));
Neo4jTransactionalContext transactionalContext = new Neo4jTransactionalContext(queryService, userTransaction, statement, executingQuery, transactionFactory);
statistics.setFaults(2);
statistics.setHits(5);
transactionalContext.commitAndRestartTx();
statistics.setFaults(2);
statistics.setHits(5);
transactionalContext.commitAndRestartTx();
statistics.setFaults(2);
statistics.setHits(5);
StatisticProvider statisticProvider = transactionalContext.kernelStatisticProvider();
assertEquals(6, statisticProvider.getPageCacheMisses(), "Expect to see accumulated number of page cache misses.");
assertEquals(15, statisticProvider.getPageCacheHits(), "Expected to see accumulated number of page cache hits.");
}
use of org.neo4j.kernel.impl.coreapi.InternalTransaction in project neo4j by neo4j.
the class Neo4jTransactionalContextTest method shouldBeOpenAfterCreation.
@Test
void shouldBeOpenAfterCreation() {
InternalTransaction tx = mock(InternalTransaction.class);
Neo4jTransactionalContext context = newContext(tx);
assertTrue(context.isOpen());
}
use of org.neo4j.kernel.impl.coreapi.InternalTransaction in project neo4j by neo4j.
the class Neo4jTransactionalContextTest method shouldThrowWhenRestartedAfterTermination.
@Test
void shouldThrowWhenRestartedAfterTermination() {
MutableObject<Status> terminationReason = new MutableObject<>();
InternalTransaction tx = mock(InternalTransaction.class);
doAnswer(invocation -> {
terminationReason.setValue(Status.Transaction.Terminated);
return null;
}).when(tx).terminate();
when(tx.terminationReason()).then(invocation -> Optional.ofNullable(terminationReason.getValue()));
Neo4jTransactionalContext context = newContext(tx);
context.terminate();
assertThrows(TransactionTerminatedException.class, context::commitAndRestartTx);
}
Aggregations